软件测试层次中的策略 软件测试工具
对特定的测试层次,测试策略的目标是对测试什么,如何彻底地测试,采用哪些测试技术做出选择。对所有相关的部分,测试策略必须向各方做出解释,为什么考虑到时间压力和稀缺资源。采用这种方式来测试系统是可能的最佳选择。选择不是随意做出的,而是和组织认为的最重要的(依据商业风险)事情相关。正确的观点是,测试策略的开发不仅仅是一项技术工作,而且也非常受行政因素的影响:它必须向产品权益人保证测试本身并不是目标,而是为了整个组织的利益。同时要让他们知道,他们得到的并不是“最完美的测试”,而是“考虑各种环境因素后的最佳测试”。
测试策略的最终结果是,详细阐述应用于系统特定部分的特定测试技术。每种测试技术可以被看做一个具体的测试活动,可以单独计划和监督。这使得测试策略成为测试经理一个重要的管理工具。
该环节需要进行下面的步骤:
l选择质量特性;
2确定质量特性的相对重要性;
3将系统分解成子系统;
4确定子系统的相对重要性;
5对每个子系统,质量特性联合体,确定测试的重要性;
6确定将被使用的测试技术。
如果已经制定了包含测试策略的主测试计划,则必须基于主测试计划来为某个特定测试层次制定测试策略。这种情况下,步骤1和步骤2相对比较容易实现,只要将整体上已经研究和决定的内容简单转换就可以了。可以将不同测试层次的测试策略看做是对主测试策略中整体目标更为具体的细化。如果主测试计划中没有包含测试策略,则特定测试层次的测试经理将不得不在组织中发起和协调关于商业风险和质量特性的讨论,就像为主测试计划所做的一样。7 4 6确定要使用的测试技术
最后一步是选择测试技术,这些技术将用于测试子系统相关的测试特性。从前面步骤得到的矩阵(见表7 5中的例子)可以看做是一个“合同”:按照组织已经定义好的重要事情,测试团队要组织和执行测试过程。依据矩阵中所指定的,对某个方面进行更为严格的测试,而对另一个方面进行更全面的测试。
通常,多数系统功能通过用例来进行测试,这些用例专门为目标(子系统或功能)而设计(动态直接测试),有许多测试设计技术可以采用(见第13章)。在开发和测试过程中,也可以通过收集数据来进行测试(动态间接测试),或者基于一个审查清单来评估以进行测试(静态测试)。例如在测试功能时,可以用秒表来测量响应时间以测试性能。这里没有设计直接的测试用例来测试性能,而是间接地测试。又比如对于安全性,可以通过对安全性规章的静态检查来进行测试。
现在测试经理的职责是建立一套能够胜任工作的测试技术。矩阵中表明有高度重要性,就需要采用严格技术或者使用多项技术来实现高百分比覆盖。次重要性就采用实现低百分比覆盖的技术,或者是动态间接测试。至于哪些技术是最佳选择,则依赖于许多因素。这些因素包括:
■被测试的质量特性。例如某项技术也许能够很好地模拟系统真实情况,但对于功能行为的变化却无能为力。
一应用的领域。有些技术是用来测试人机交互的,而有些技术则适合测试特定部件内部的所有功能性变化。
一需要的测试基础。有些技术要求有特定类型的系统文档。比如状态转换图、 伪代码或图表。
一需要的资源。技术的应用需要一定数量的人员和机器能力方面的资源。这一点通常也依赖于“需要的知识和技能”。
一需要的知识和技能。测试成员的知识和技能影响着技术的选择。技术的有效使用有时要求测试人员具备特定的知识和域技能。资深的行业专家可 能是首先要具备的,有些技术甚至需要有受过训练的(数学)分析天才在介绍测试设计技术的第13章中,将有这些方面更为详细的信息。在选择所需要的测试技术时,测试经理对于各种测试设计技术及其优缺点的经验和知识,将是至关重要的。为了适用于特定的测试项目,常常将现成的测试技术调整或组合成“新”的测试技术。技术的选择和调整必须在测试过程的早期就完成,以便对测试团队进行相关领域的培训。
这一步骤的结果是确定测试每个子系统所用到的技术。见表7 6中的例子。每个“+”号表示相应的技术将用于系统的特定部分。从管理角度来讲,这是一个非常有用的表,因为可把每个“+”号看成一个单独的实体.独立地进行计划和监督。可以把每个“+”号分配给一个测试人员,他将对所有必要的恬动负责,比如设计测试用例、执行测试等。对大型系统而言,可以通过将其分解为单个测试人员能完全控制的更小单元的方法,来将该表进一步细化。一般只有到准备阶段才会将测试策略分解得这么详细,尤其在大型测试项目中。表7 6确定哪些技术用于系统的哪些部分为了确保尽可能早地执行那些最为重要的测试,在该步骤中还需要确定测试技术一子系统联合体)的优先级顺序。