笔者从事互联网工作已经满10年,其中主要经历是做测试开发,先后就职于阿里、百度等互联网公司,最近因为各种原因,想总结一下在测试开发这个方向上的经验,准备围绕“测试开发技术”写几篇文章。 文章主要是基于之前的工作和项目经验,以后端为主,希望可以给新入行的同学一些启发,有不对或者不够全面的地方也请大家留言指正。
目前互联网公司的测试开发岗位分两类。一类是专门负责测试平台、效率工具开发的岗位,这类岗位一般相对来说少一些。更多的一类是既要负责业务测试、自动化测试,同时也要去开发测试框架、效率工具来辅助业务测试。《测试开发技术》的系列文章里的测试开发主要是指后者,所以文章会以测试相关的内容开始,当然后续也会逐步涉及自动化测试框架、测试平台以及效率工具。
下面我们进入正题,测试设计。
测试设计是测试的灵魂,也是测试和测试开发人员的必修课。没有哪个开发人员可以说写过的代码没有任何 bug, 同样也没有哪个测试人员可以说从来没有漏测。测试人员要做的是考虑更多种情况,尽可能的验证系统的每个功能点,把带到线上的问题降到最少。而测试设计的目标正是这点。测试设计是项目测试整体的开始,也是测试整个过程的总纲,通常是一个测试人员对项目测试思路的体现。虽然不同的产品类的测试重点不同,不同项目也有各自的特性,但想把测试设计做好,还是有迹可循的。下面就从几个方向来介绍测试设计的思路。
一,正常功能测试
正常功能测试是项目测试基本功,需要尽可能覆盖系统的全部功能点,对线上的质量影响也最为直接,通常可以由下面几个方面入手:
输入数据
系统处理流程和分支
系统内部数据、状态和极限情况
在细节里考虑用户习惯和基本常识
考虑新旧版本兼容性
下面具体说一下:
根据输入数据的范围来做测试设计,通常来说可以使用边界值覆盖和等价类划分的方式来设计case。输入数据可以是用户提交的信息,也可以是接口调用的参数,这一点比较基础,测试人员基本都会有所了解,就不详细叙述了。
根据系统的流程和处理分支构造case, 这一点就是要熟悉系统的处理逻辑,根据处理逻辑来构造case, 尽可能额覆盖所有的处理流程和分支,有的时候可能会和上面的根据输入数据设计的case有重合。
根据系统内部数据和状态入手,主要是要考虑系统已有数据或者状态对系统功能的