测试的分类
根据项目流程阶段划分
- 测试“V”模型
- 单元测试:对程序的单哥子程序或独立功能的代码进行测试
- 集成测试:在单元测试的基础上,通过单元模块组装成系统或子系统进行测试,重点检查模块间的接口是否正确
- 系统测试:对整个产品系统进行的测试,验证系统的正确性和性能等是否满足需求
- 验收测试:部署软件之前的最后一个测试阶段,确保软件准备就绪,向客户展示该软件满足客户需求
白盒、黑盒、灰盒测试
- 白盒与黑盒,主要根据测试中对软件代码的可见程度进行划分
白盒测试:
- 打开盒子,研究内部源代码与执行结果
- 按照内部的结构测试程序,检查产品内部动作是否符合需求规定正常进行,检验程序的每条逻辑路径是否按要求正确工作
黑盒测试:
- 将软件看做一个黑盒子,不关心内部结构,只关心输入数据和输出结果
- 检查程序提供给用户的功能是否符合需求规格说明书的规定正确使用,程序接受数据能否返回正确信息,不考虑内部逻辑结构,针对界面和功能进行测试
灰盒测试:
- 介于白盒与黑盒之间
- 既关注输入与输出的正确性,又关注内部表现,这种关注不像白盒那样详细、完整,只是通过一些表象、标志、事件来判断内部状态,有时候输出是正确的,其实内部已经错误了,这种情况很多,如果每次都通过白盒来测试,效率会很低,因此采用灰盒测试的方法
功能测试、性能测试
- 从软件测试的不同测试面划分为功能与性能测试
功能测试:
- 主要检查实际功能是否符合用户需求,大部分工作都围绕软件的功能进行测试
- 功能测试细分有很多种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等等
性能测试:
- 通过自动化的测试工具模拟多种正常、峰值、异常负载条件对系统的各项性能指标进行测试
- 性能包括很多面,主要为时间和空间这两种性能:
- 时间性能:主要指软件的具体响应时间,比如:登录所需的时间等
- 空间性能:主要指软件运行所消耗的系统资源,比如CPU、内存、网络带宽等
手工与自动化
- 从软件测试工作的自动化程度划分
手工测试:
- 就是由测试人员一个个去执行测试用例,通过鼠标键盘等输入参数,查看返回结果是否符合预期
- 手工测试通常是系统测试阶段的动能测试,为了明显区分与自动化的区别,称为手工测试
自动化测试:
- 把以人为驱动的测试行为转化为机器执行的过程
- 通常用例设计并评审通过后,测试人员根据测试用例的描述,按照规则流程一步步执行测试,比较实际结果和预期结果,此过程中,为了节省人力、物力、时间等,提高测试效率,,便引入了自动化测试的概念
- 自动化又可以分为功能自动化和性能自动化:
- 功能自动化测试:把以人为驱动的测试行为转化为机器执行,通过工具录制、编写脚本,代替部分手工测试的工作,达到节约成本,提高侠侣的目的
- 性能自动化测试:通过性能工具,模拟成千上万的用户向系统发送请求,验证系统的处理能力
冒烟、回归、随机、探索、安全测试:
- 这是几种出现在测试周期中的测试方法
冒烟测试:
- 指对一个新版本进行系统测试之前,先验证软件的基本功能是否实现,是否具备可测性
- 比如测试一个新版本,先投入较少的时间人力物力验证主要功能,不通过便打回,节省时间人力物力,避免投入到不可测的项目
回归测试:
- 指对旧代码修改后,重新进行测试,确认修改后没有引起新的错误,没有导致其他代码错误
- 一般在进行二轮测试时开始,验证一轮测试的问题是否修复
- 回归是一个循环的过程,回归如果不通过,则需要开发再次修改,知道问题回归通过
随机测试:
- 指测试的数据是随机的,目的是模拟用户的操作,发现边缘线的错误
- 随机测试可以发现一些隐藏错误,但是缺点也很多,比如测试不完整,无法统计代码覆盖率,需求覆盖率,发现的问题难重现等等
- 一般是放在测试最后执行,更为专业的随机就是探索性测试
探索性测试:
- 是一种测试思维,没有实际的测试方法、技术和工具
- 探索性测试强调测试人员的主观能动性,抛弃复杂等等计划和用例的设计过程,强调碰到问题时及时改变测试策略
安全测试:
- 指在软件生命周期中,特别是基本开发完成到发布阶段,检验产品是否符合安全需求和质量标准的过程
- 安全测试越来越被重视,安全问题导致的后果不可估量,尤其互联网产品,最容易受到安全攻击