书中使用 ‘产品测试车轮图’ 来分析提取测试点。
产品测试车轮图(测试点分析):测试员要从哪些方面(测试类型)用哪些方法(测试方法)去测试产品(质量属性)。
产品测试两个关键问题:测试验证的全面性(质量属性)和测试的深度(多种测试方法)。
产品质量属性:功能性、可靠性、易用性、效率性、可维护性、可移植性。
测试策略:根据产品的质量目标、风险分析来确定测试的重点和难点、深度和广度。
一、测试类型
解决测试要从哪些角度去分析和测试产品,确定了测试思路。
1. 理解:
让测试组员对测试类型的理解保持一致,可借助软件产品质量模型来快速定义、理解测试类型(把质量属性中的 “××性” 换成 “××测试”,并在质量属性的定义前加上 “验证” 二字,质量属性就变成了测试类型)。
质量属性:解决从哪些角度去设计产品才能满足用户需求。
2. 测试类型
- 功能测试:验证产品能否满足用户特定功能要求并作出正确响应(功能性);
- 安全性测试:验证产品是否有保护数据的能力,并能在合适的范围内承受恶意攻击(功能性);
- 兼容性测试:验证产品是否能够和其他相关产品顺利对接(功能性);
- 配置测试:验证产品在不同软件和硬件条件中运行的情况(功能性、易用性)
- 可靠性测试:验证产品在长时间运行下能否满足保证系统的性能水平;在存在异常情况下系统是否依然可靠(可靠性);
- 易用性测试:验证产品是否易于理解、学习和操作(易用性);
- 性能测试:测试产品提供某项功能时的时间和资源的使用情况(效率);
- 安装测试:测试产品能否被正常安装并运行(可移植性);
二、测试方法
软件产品有很多质量属性,这些都需要测试去验证,所以软件测试会有如此多的测试类型。每一种测试类型又包含了很多测试方法,去验证确认产品的这种质量属性。
1. 功能测试方法
运行是指软件测试中,测试人员模拟用户的 “操作” 或 “行为”;
单运行正常值输入法:系统允许的 “正常值” 的测试方法;
单运行边界值输入法:测试系统的 “边界值” 的测试方法;
多运行顺序执行法:按照一定顺序来进行多个运行操作的测试方法;
多运行相互作用法:多个存在相互关系的运行组合在一起进行测试;
2. 可靠性测试方法
可靠性测试顺利进行的前提:基本功能先正确。
2.1. 异常值输入法
使用系统不允许用户输入的数值(异常值)作为测试输入。如 ip 地址只输入 3 个数字。
测试系统容错性,系统处理各种错误输入的能力。是最基本的可靠性测试方法;
特征:系统正常,输入异常;
单运行边界值输入法中边界值的非法输入值,也可以归入异常值输入法。
2.2. 故障植入法
把系统放在有问题环境中进行测试的一种可靠性测试方法;要能够测试到的质量属性是容错性和成熟性;
特征:系统异常 - 故障模拟,正常输入;
2.3. 稳定性测试法
长时间、大容量运行某种业务。测试系统的成熟性。
特征:多、并、复、异四字要诀;
- 多:增加用户对功能的操作数量。测试用户发送 500 封邮件下的稳定性;
- 并:让多个用户同时操作某个功能(并发测试)。500 个用户同时向服务器发送邮件;
- 复:让一个或多个用户,反复进行新建、刷新、删除、同步、备份之类的操作。在一段时间内(1 天)反复进行 500 个用户登录邮箱、编写邮件、发送邮件、退出邮箱操作的测试;
- 异:让一个或者多个用户,反复进行异常操作。用户长时间(1 周)在网络故障的情况下持续发送邮件;
稳定性测试、压力测试和性能测试关系:关系纽带是产品规格(产品承诺的能够处理的最大容量或能力)
- 性能测试:测试产品真实规格是否与说明书承诺的规格一致;实测出来的性能值,就是系统真正能够处理的最大容量或者能力。
- 压力测试:在高于性能值的前提下测试,测试时负载超过了系统能处理的最大能力,但不等于在这种情况下系统的功能都会失效,需要根据实际情况分析系统的表现是否合理。
- 稳定性测试:低于性能值的前提下测试,控制测试中的负载量,使其和用户的实际使用情况尽量接近,使得测试能够更为准确,更有价值。
2.4. 压力测试法
在一段时间内持续使用超过系统规格的负载进行测试的一种可靠性测试方法;
特征有以下两点:
- 突发负载模型的压力测试:希望系统运行正常。(以每 5 分钟为一个周期,在一个周期里,前 4 分钟为 400 个用户同时发送电子邮件,后 1 分钟为 1100 个用户同时发送电子邮件,持续测试 1 天)
- 持续负载模型的压力测试:系统可能被打死。
2.5、恢复测试法
使用持续超过规格的负载进行了测试后,再将负载降到规格以内的测试方法;
特征:普通版(高 - 低)、加强版(高 - 低-高 - 低...);测试系统的可恢复性;
预期结果均为:
- 持续进行超过规格的负载测试时,允许规格内的业务不是 100% 正确。产品在可靠性方面的要求不高,甚至允许系统出现死机、重启等情况。
- 负载降到规格值之内后,业务必须能恢复到 100% 的正确。就是产品在负载高时出现的死机、重启等问题,在负载降低后能够 “自愈”。
压力测试法的预期结果:超过规格的负载,允许业务失败;规格内的负载,不允许出现业务失败。
3. 性能测试方法
3.1. 目的
产品真实规格与承诺规格是否一致,实测出来的性能值,就是系统真正能够处理的最大容量或者能力;除确认规格之外,还希望发现系统的瓶颈;
3.2. 测试流程
- 测试出系统最好的性能值:
正确处理新业务的最大能力:测试的是系统为一个新业务从分配资源到完成处理流程的速度。业务处理流程和资源的总量都会对其有影响:已经完成或异常的业务需要被及时拆除,占用的资源要能够被回收,用于新的业务;系统拆除业务的速度应该高于新建业务的速度。
同时正确处理的最大业务能力。
- 分析会影响性能值的各种因素,测试他们对性能的影响:
影响因素、影响趋势、最坏值;
- 以场景为单位来测试性能:
评估产品在用户使用环境中的性能表现,更有实际意义;
测试某场景中的典型配置、典型业务下的性能值:在 200 条过滤策略,1KB、10KB 和 2MB 的邮件大小以 1:2:1 混合的情况下,邮件系统每秒能够接收并正确处理的最大邮件数。
4. 易用性测试法
定义:测试用户理解、使用产品时产品的能力。测试时,避免审美疲劳,推荐交叉测试法。
- 一致性测试法:
测试对象:用户界面
风格、布局、元素上是否一致、统一;布局操作合理性、提示等是否符合 UI 设计规范
目的是证实
- 可用性测试法:
测试对象:用户界面
是否易于理解、使用,需要与功能测试结合,以场景作为测试粒度,以用户视角进行测试;
三、车轮图的应用
使用车轮图分析提取 ‘用户发送电子邮件’ 的测试点: