这些测试细节,你注意到了吗?

背景介绍

众所周知,软件测试不可能发现所有的缺陷,而且软件开发周期各个阶段仍然存在注入缺陷的可能,但是,有一些缺陷是可以避免却容易被忽略的,通过本篇文章我们主要谈谈笔者最近测试期间发现的一些容易忽视问题。

前端

01 浏览器“回退”和“前进”按钮

试想我们创建一个事物需要三个步骤,每一步添加完,都会先保存这一步的数据。在中间任意一步点击页面的其它按钮都会删除已经创建的部分数据,以保证数据的完整性。大部分人可能都会关注页面的按钮而很少会关注创建过程中点击浏览器“回退”按钮的情况。这样在创建中间步骤时用户根据习惯点击“回退”按钮,就可能会导致系统中存在错误的部分数据,影响系统功能。

02 js错误

在测试web系统时,浏览器最好在F12(开发者调试)模式,一方面方便查看接口的请求与响应,另一方面方便检查页面交互是否会有js错误。有些情况即使页面功能没有问题,也应该排查为什么会出现js错误。

03 修改比新增问题多

修改编辑功能一般比单独的新增、删除操作问题多,测试过程中应该多留心。

04 前端边界值测试

读者可以先看下图的两个进度条有没有什么问题,细心的同学会发现在绿色的部分显示的是白色的字,而下面的显示的是黑色的字,这样显示的原因比较明显(白色的字在白色的底是看不见的),但是大家想象下,图中第一个进度条的进度是1%或者2%是什么情况。真实情况是在1%或者2%的进度下绿色部分是不能覆盖住白色的字,到时候页面展示的可能就是个1或者2啦。

05 接口调用顺序

笔者在测试报表的时候,查询条件较多,接口返回的速度不一致。那么在切换不同的查询条件的时候,经常会出现最后查询结果是最开始的查询条件。针对返回较慢的接口一定要注意查看数据是否正确。

服务端

01 查看开发代码

测试新任务之前,至少要review下代码,不能轻易听信开发的改动点。有些服务端的改动,在前端根本看不出来。其次,最好查看开发的代码实现,现在很多项目软件架构越来越复杂,业务流程也更加的繁复,仅通过黑盒方式越来越难以控制软件质量,查看开发代码,可以帮助我们新增一些测试case,测试更充分。具体体现在下面三方面:

  • 加强业务理解,发现逻辑缺失;
  • 帮助开发定位问题,增加开发对QA同学的认可,提升专业性
  • 学习新的技术以及架构设计;

在代码走查的时候,我们也要避免这个误区,接到测试任务沉溺于查看开发代码,以致测试时间过半才开始测试系统,最终项目延期。

个人建议在接到测试任务的时候,先进行一遍冒烟测试,熟悉业务逻辑后,针对复杂业务查看开发代码,而一些简单的增删改查我们直接查看日志中的sql即可,不用每个都去分析,挑一些看起来比较重要的,抽时间去排查、定位问题代码,这个不会花费太多的时间。

02 0与空

服务端在没有数据的情况下有时会以0填充返回结果,这是很不合理的。0与空具有不同的意义,0代表的是一个数值,说明数据值为0,最好在没有数据时以“--”等特殊符号代替,而不是以一个有具体值含义的0代替。

03 难复现的bug

任何时候发现bug再次验证没有复现的一定还是bug,可以多想想测试步骤,多试几次将bug找出来;实在不能复现的,必须如实的记录发生的问题。

关系型数据库

一般来说,测试的时候我们会验证数据从输入、转换直至存储到数据库这一流程是否正确,还会根据数据库中字段的长度验证前端输入以及接口的请求,但往往容易忽略数据库中一些特殊类型的的检查。

01 timestamp类型

关注数据库中timestamp类型的数据,校验是否确实需要将timestamp设置为根据当前时间戳更新。试想一下,假如数据表中“结束时间”字段我们设置为“根据当前时间戳更新”,然后将这张表新增一个字段,那么所有的结束时间都会更新结束时间,导致系统数据出现严重问题,用户也肯定会特别纳闷吧。

02 create_time、update_time的验证

我们会遇见这种情况,明明是插入操作,数据库却都存为更新时间,没有创建时间。也会出现这种情况,更新字段的值在每次更新却没有更改,这些常见的小问题虽然在页面显示不出,但是对排查线上问题有很大帮助,都应该关注。

03 varchar、text这类型的校验和预估

验证每个字段的类型以及长度是否合理,255长度之内的一般前后端开发都要有校验,对于text类型字段,一定要预估用户可能的数据量,尤其是那种不断追加的字段,很有可能随着时间的增长,出现越界问题。

总结

测试是一个迭代反复的过程,在这个过程中再怎么认真仔细都不为过,一定要抠住细节,精确到页面每个按钮,每个功能逻辑点,最终保障我们的产品有一个好的交付质量。

原文地址:https://www.cnblogs.com/yulia/p/8616163.html

时间: 2024-11-01 11:30:15

这些测试细节,你注意到了吗?的相关文章

测试细节整理

回想起测试工作的点点滴滴,对于在做的项目管理app ,将容易忽视的bug或细节记录出来,不断去提高自己 1.列表数据量比较大时,进入数据详情界面,返回的列表界面需要停留在用户之前停留的地方,否则体验会很差,一般开发会设置为手动刷新 (eg:项目列表中存在很多个项目,假如用户进入列表的第二页,点击其中一个项目,进入项目详情界面,返回项目列表时,页面停留在第二页) 2. 搜索记录列表上下滑动进行刷新,数据会错误显示为空 3.对于删除数据的历史数据处理 (eg:对成员a分配任务,任务列表显示成员a的任

探索性测试学习分享

一.关于测试和探索 软件测试就是与软件或系统进行交互.观察其真实行为与你的预期比较是否一致. 作者认为:在 测试之前一切都只是推测,应该以实验结果作为采取行动的依据.测试不断探索和做实验的过程.   1.测试的两面: 作者认为测试应该包括,两个方面:a.检查软件是否满足预期.b.探索风险. a.检查软件是否满足预期,就是基于传统的测试策略.测试设计与测试执行的过程,投入的人力越多可能网织得越密,测试的完备性会做的越好,然而终究是难以做到“无遗漏”的测试.总会有一些漏网之鱼. b.在a的基础上进行

探索式测试Exploratory Testing

"任何足够先进的技术,看上去都与魔法无异",出自英国著名未来学家亚瑟 克拉克,他曾于出版了经典科幻小说<2001天空漫游>. 探索式测试(Exploratory Testing,也称探索性测试)是一种软件测试方法,最先是Cem Kaner 在1983年提出的.这是一种强调个人自由与责任的测试方法,让独立测试人员可以借用不断的学习来改善测试的规划与测试的执行,而在测试的过程中也会同时改善测试案例达到相辅相成的效果.在Nortel和微软的很多项目中,都采用了这一新颖.有趣和富有

测试规范

1. 软件测试准入和准出标准 1.1测试准入标准1.开发人员编码结束,并已完成单元测试2.需求说明书规定的功能或开发人员提交的功能说明书的功能均已实现3.提交测试范围内的各菜单项.按钮功能均已功能无异常,关联页面调用.跳转正常4.系统或组件内基本流程可以正常流转5.开发人员提交被测系统的最新版本,安装测试通过.5.开发人员向测试部提交配置文件和程序包 1.2软件测试暂停.停止标准1.被测系统在进行系统测试时,发现程序存在重大bug或bug过多时,测试无法正常进行,可以暂停测试返回开发.2.被测项

视频监控GB28181测试参考

说明: 1.  需要对前端摄像机和后端NVR.解码器.平台进行GB28181测试和开发的人员.本文档提供的一些测试细节,比如测试环境,SIP消息格式说明,SDP文本信息字段说明,GB28181测试注意项,将很可能会帮到这些测试和开发人员. 2.  单纯想了解SIP消息格式和SDP文本信息字段的人员. 3.  阅读此文档,最好结合以下文档一起阅读: a)         GB28181标准文档<安全防范视频监控联网系统信息传输.交换.控制技术要求> b)         <公安机关视频监控

Guava:好用的java类库 学习小记

基础功能 google guava中定义的String操作 在google guava中为字符串操作提供了很大的便利,有老牌的判断字符串是否为空字符串或者为null,用指定字符填充字符串,以及拆分合并字符串,字符串匹配的判断等等. 1. 使用com.google.common.base.Strings类的isNullOrEmpty(input)方法判断字符串是否为空 1 //Strings.isNullOrEmpty(input) demo 2 String input = ""; 3

杨学明老师推出全新课程--《敏捷开发&amp;IPD和敏捷开发结合的实践》

课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲  师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Development)是当前国内外企业产品研发管理的最常用的3种模式.随着创新环境的快速发展,许多企业都会面临这样的问题:如何快速响应市场的变化?如何推出更有竞争力的产品?如何在竞争中脱颖而出?……是大部分研发型企业普遍面临的核心问题.另外,软件项目在产品开发中位置越来越重要,逐渐占领主导地位,这时传统的IPD流程和CMMI

core java 英文版

corejava Chapter 1:An Introduction to java /java简介 1.1 java as a programming platform /java 程序设计平台 1.2 The java "White paper" buzzword /"java" 白皮书中的口号 1.2.1 Simple 简单 1.2.2 Object-Oriented 面向对象 1.2.3 Distributed 分布式的 1.2.4 Robust 健壮的 1

MySQL auto_increment实现

http://www.cnblogs.com/xpchild/p/3825309.html 运维的时候,经常遇到auto_increment的疑惑: 机器异常crash,重启后id回退的问题 性能考虑,每次获取肯定不会持久化,内存中取值,statement复制如何保证主备一致 id的取值受binlog的保护吗 1. auto_increment相关的参数控制 1.1 innodb_autoinc_lock_mode 0: 每一个statement获取一个排他lock,直到statement结束,