第4章 软件测试架构师的知识能力模型
4.1 软件产品质量模型
4.1.1 软件产品质量六属性
4.1.2 功能性—软件产品在指定条件下使用时,提供满足明确和隐含要求的功能的能力
4.1.3 可靠性—在特定条件下使用时,软件产品维持规定的性能级别的能力
4.1.4 易用性—用户在指定条件下使用软件产品时,产品被用户理解、学习、使用和吸引用户的能力(易懂、易学、易用、漂亮好看)
4.1.5 效率—在规定条件下,相对于所用资源的数量,软件产品可提供适当的性能的能力。通常,效率就是我们常说的产品性能
4.1.6 可维护性—软件产品可被修改的能力
4.1.7 可移植性—软件产品从一种环境迁移到另一种环境的能力。这里的环境可以理解未硬件、软件或组织等不同的环境。
4.2 测试类型
4.3 测试方法
4.3.1 产品测试车轮图
一个软件测试者要从哪些方面(测试类型)用哪些方法(测试方法)去测试产品(质量属性)。
4.3.2 功能测试方法
- 单运行正常值输入法
- 单运行边界值输入法
- 多运行顺序执行法
- 多运行相互作用法
4.3.3 可靠性测试方法
- 异常值输入法
- 故障植入法—把系统放在有问题的环境中,但是输入依然是正常值。
- 稳定性测试法—稳定性测是是在低于性能值的前提下测试的(多、并、复、异)。
- 压力测试法—压力测试是在高于性能值的前提下进行测试的,在一段时间内持续使用超过系统规格的负载进行测试的一种可靠性测试方法。
压力测试的目的:不会因为突发情况导致死机、反复重启等致命问题。 - 恢复测试法—使用持续超过规格的负载进行了测试后,再将负载降到规格以内的测试方法。
4.3.4 性能测试方法
性能测试的目的是测试产品真实规格是否和说明书中承诺的需求规格一致,我们实测出来的性能值,就是系统真正能够处理的最大容量或者能力。
4.3.5 易用性测试法
易用性测试法测试的是用户在理解、使用产品时产品的能力。
- 一致性测试:关注的是产品的用户界面
- 可用性测试法:测试对象也是用户界面,但关注的是产品提供的功能(又懂用户又懂测试)
4.4 测试设计技术
4.4.1 测试点不等于测试用例
测试点是测试者在测试时需要关注的地方,而测试用例是在测试点“加工”的基础上得到的。
4.4.2 四步测试设计法
1. 建模
将测试点分为四类:
流程类------>通过绘制流程图来建立测试模型
参数类------>通过输入输出表来建立测试模型
数据类------>通过等价类分析表来建立测试模型
组合类------>通过因子表来建立测试模型
2. 设计基础测试用例
测试用例:确定了测试条件(在什么情况下,进行什么测试)和测试数据(输入的参数值或数值)
基础测试用例:只确定了测试条件
3. 补充测试数据
4. 扩展
4.4.3 对测试点进行分类
1. 流程类
2. 参数类
特点:“参数值”的个数是有限的,可以通过遍历的方式来测试覆盖到;
系统会对不同的“参数值”作出不同的处理或响应
3. 数据类
特点:数据的取值是一个范围,通常不能用遍历的方式来测试覆盖;
系统对允许输入的数据作出的 处理或响应往往是一样的
4. 组合类
在测试设计时,可以把流程类、数据类和参数类的测试点组合在一起进行测试设计
4.4.4 流程类测试设计:路径分析法
路径分析法:都能够覆盖流程的各种路径进行分析,得到一个路径的集合
1. 语句覆盖------覆盖系统中所有判定和过程的最小路径集合
如果测试只按照“语句覆盖”的方式进行测试,就很容易出现遗漏。
2. 分支覆盖------覆盖系统中每个判定的所有分支所需的最小路径数
分支覆盖考虑了流程中的“判定”,但是没有考虑这些“判定”之间的关系。分支覆盖也不是一种很强的覆盖。
3. 全覆盖------100%地覆盖系统所有可能的路径的集合
4. 最小线性无关覆盖------仅保证流程图中每个路径片段能够被至少执行一次,在这种覆盖策略下得到的最少路径组合
一个系统中的线性无关路径数=边数-节点数+2
=判定数+1
=区域数+1
(“流程图”的“入口”和“出口”不作为边数计算;一个“流程图”只有一个“入口点”和一个“出口点”)
一般来说:
{
单元测试:语句覆盖
/
分支覆盖
集成测试
/
系统测试:最小线性无关覆盖
特别部分:全覆盖
不重要部分:语句覆盖
/
分支覆盖
\left\{ \begin{aligned} &单元测试 :语句覆盖/分支覆盖 \\ &集成测试/系统测试:最小线性无关覆盖\\ &特别部分:全覆盖\\ &不重要部分:语句覆盖/分支覆盖\\ \end{aligned} \right.
⎩
⎨
⎧单元测试:语句覆盖/分支覆盖集成测试/系统测试:最小线性无关覆盖特别部分:全覆盖不重要部分:语句覆盖/分支覆盖
4.4.5 参数类测试设计:“输入-输出表”分析法
“输入-输出表”是一张分析测试点在某种条件下,特定的“输入”会有怎样的“输出”的表。
4.4.6 数据类测试设计: 等价类和边界值分析法
等价类是指对输入值按照测试效果进行划分,将测试效果相同的测试数据归为一类,然后在测试时只需要在每类中选择一些测试样本来进行测试,而无需测试所有的值。
边界值是参数在输入边界上的取值。
等价类和边界值常常结合在一起使用:我们首先对“输入”进行等价类划分,然后再将每个等价类的边界值作为测试的样本点。
无效等价类不可合并,有效等价类可合并。
4.4.7 组合类测试设计:正交分析法
“因子表”是一张分析测试点需要考虑哪些方面,并且这些方面需要包含哪些内容的表。
PICT工具生成测试用例
4.4.8 控制用例粒度:测试点的组合和拆分
1. 控制用例粒度
{
控制测试点:让测试点不要过粗或者过细
策略覆盖
\left\{ \begin{aligned} &控制测试点:让测试点不要过粗或者过细\\ &策略覆盖\\ \end{aligned} \right.
{控制测试点:让测试点不要过粗或者过细策略覆盖
集成测试:是在软件系统集成过程中所进行的测试,其主要目的是检查软件单单元之间的接口是否正确。
系统测试:系统测试是基于软件需求说明书的黑盒测试,是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确。
4.4.9 错误推断法
错误推断法是测试者根据经验来判断产品在哪些地方容易出现问题,然后针对这些地方来设计测试用例的方法。
4.5 探索式测试
- 历史区测试法
历史区测试法针对的是“老代码”,即在前几个版本就已经存在的软件特性,也包括那些用于修复已知缺陷的代码。
- 商业区测试法
商业区测试法针对的是销售特性。所谓的销售特性,就是指产品的重要功能和特性,是测试时需要重点测试的对象。
- 娱乐区测试法
娱乐区测试法针对的是辅助特性,也就是那些并不是那么重要的特性的测试。
- 破旧区测试法
破旧区测试法针对的是问题高发特性。
- 旅馆区测试法
旅馆区测试法针对的是平台或维护特性。这些特性的特点容易被忽视,而旅馆区测试法就是让我们再回过头去测试一些经常被忽视的或在测试中较少描述的次要及辅助功能的方法。
- 旅游区测试法
旅游区测试法针对的是噱头特性。
- 其它区测试法
产品的一些可测试行、可维护特性,再比如对当前有代码变动的一些地方的测试等。
4.5.3 开展探索式测试
探索式测试是一边学习、一边设计、一边执行的测试,很多测试点都是我们边测试边确定的。
优势:速度快、效果好