按照是否查看代码分为白盒测试、黑盒测试及灰盒测试。
黑盒测试
将代码放在一个黑色的盒子里边进行测试。就是不关心代码内部实现过程,不用分析代码内部具体机构。只需要把代码看成是一个黑色的盒子。只关心代码运行的最终结果。又称功能测试或者基于需求的测试。黑盒测试方法有等价类、边界值、因果图、正交法、场景设计法、错误猜测法。
主要的测试方法为边界值分析法、等价类划分法、错误推断法。黑盒测试过程中边界值分析法是必不可少的,也是查找问题能力最强的。其次可以辅助使用等价类划分法编写一些用例。最后使用错误推断法补充一些用例。
白盒测试
白色的盒子,就是能看见里边的东西。因此就是要分析代码的实现过程,分析内部执行顺序、逻辑功能、结构设计等。又称结构测试或者逻辑驱动的测试。白盒测试方法有语句覆盖法、逻辑覆盖法、分支覆盖法、循环覆盖法、路径覆盖法等。
在白盒测试又分为静态和动态两类测试执行方式。
静态结合字面意思理解:静态就是不动,就是不运行程序本身,根据需求文档,对代码的逻辑、结构、语法等进行检查、分析、找错。是指不运行待测试的程序,通过代码检测、静态结构分析等通过工程师的逻辑思维去检查代码是否存在问题的方法。
动态就是动的,指的是程序运行起来,检查运行后的结果和预期记过是否有差别,并分析程序执行效率、正确性、健壮性分析。它由三部分组成:编写测试用例、执行程序、分析结果。是指运行待测试程序进行测试的方法统称。
白盒测试的目的:
对程序模块的所有独立的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性等。
灰盒测试
介于白盒和黑盒测试之间,不仅要关心输入输出结果。还要关心代码内部实现过程。多用于集成测试。
黑盒测试优缺点
优点:
1、比较简单,不需要了解程序内部的代码以及实现
2、在用户的角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题
3、在做软件自动化测试时较为方便
缺点:
1、不可能覆盖所有的代码,覆盖率比较低,大概只能到达总代码量的30%
2、自动化测试的复用性较低
白盒测试优缺点
优点:
1、帮助软件测试人员增大代码的覆盖率
2、提高代码的质量、发现代码中隐藏的问题
缺点:
1、程序运行会有很多不同的路径,不可能测试所有的运行路径
2、测试基于代码,只能测试开发人员做的对不对,而不能知道设计的功能需求是否正确。
3、系统庞大,测试开销会非常大
开发阶段中分为5个阶段的测试方法:
单元测试
单元测试就是对组成软件的最小单元进行测试。目的是检验构成整个软件的基本单元是否完成相应的功能,它又被叫做莫魁岸测试。形象理解:现在要组成一辆汽车,那么组成汽车的每一个螺丝就相当于软件中的一个单元。
测试阶段:编码前或者编码后
测试对象:组成整个软件中的最小模块
测试人员:开发人员或白盒测试工程师
测试依据:代码注释 + 详细设计文档
测试方法:白盒测试
测试内容:模块接口,内部逻辑、数据结构、边界测试、路径测试等
集成测试
介于单元测试和系统测试之间,验证检查各个模块接口是否能正常连接使用。集成测试是在单元测试完成之后进行测试的,主要是将程序的模块再用适当的集成策略组装起来,对系统的接口和集成后的功能进行测试,测试软件单元之间的接口是否正确。形象的理解:就是造汽车的每一个螺丝都要安装到哈市自己的位置。螺丝本身和螺口之间的匹配就相当于是一个接口,看造的螺丝是否能套到文档规定的螺口中,看看组装好的物体是否符合要求。
测试阶段:单元测试之后进行
测试对象:模块间的接口
测试人员:白盒测试工程师或开发人员
测试依据:单元测试模块 + 概要设计文档
测试方法:白盒测试 + 黑盒测试
测试内容:模块之间数据的交互、模块之间冲突性,单个模块对系统的影响等。
系统测试
通过冒烟测试后,进行功能测试以及接口测试,性能测试等,把所有的功能都运行一遍,保证整个产品的质量。将软件看成一个系统,对根据需求文档整个系统进行完整的测试。不仅包含软件还包含硬件测试,将实际运行环境搭建出来进行测试的,包含对实现的功能、性能、安全性、环境等方面的测试。系统测试里边包含冒烟测试和回归测试。形象理解:就是汽车已经造好了,下边厂家先要自己对自己汽车的性能。功能、安全性等做一个全方位的检测。
测试阶段:集成测试通过之后
测试对象:整个完整的体系
测试人员:黑盒测试工程师
测试依据:需求规格说明文档
测试方法:黑盒测试
测试内容:软件要实现的所有功能,如:功能、性能、界面、可靠性、安全性、兼容性、易用性等
验收测试
系统测试全部通过后,由产品,开发等以及最终用户体验。分为正式验收测试,alpha测试和beta测试。软件测试的最后一个阶段,为了确保软件准备就绪,按照双方规定的文档完成了客户提出的需求。它决定了客户是否接受这个软件。
测试阶段:体统测试通过后
测试对象:整个系统,包含软硬件
测试人员:需求方或最终用户
测试依据:用户需求,验收标准
测试方法:黑盒测试
测试内容:软件的所有功能,性能、固定的文档
回归测试
针对修复过的BUG,进行再一次的测试,避免bug的重现。在软件进行更新,迭代之后,新增加的内容和原来旧的功能进行测试。
冒烟测试
在测试硬件的时候最基本的操作就是,硬件插电之后会不会烧掉,冒不冒烟。要是冒烟了就没必要在详细测下去了。对应的软件中就是测试最基本的功能,通过之后在看其他的所有功能是否正确。