软件测试之测试策略
第⼀部分  软件测试策略基础
为什么要编写测试策略?测试策略就是如何进⾏软件测试的计划。测试策略的⽬标包括:
取得利益相关者(⽐如管理部门、开发⼈员、测试⼈员、顾客和⽤户等)的⼀致性⽬标;
从开始阶段对期望值进⾏管理;
确保“开发⽅向正确”;
确定所有要进⾏的测试类型。
1、策略与软件测试策略
(1)策略:在⼀定的政治路线指导下,根据具体条件⽽规定的⽃争原则、⽅式和⽅法。<;新华字典>
(2)软件测试策略:在⼀定的软件测试标准、测试规范的指导下,依据测试项⽬的特定环境约束⽽规定的软件测试的原则、⽅式、⽅法的集合。
测试策略为测试提供全局分析,并确定或参考:
项⽬计划、风险和需求;
软件测试项目流程相关的规则、政策或指⽰;
所需过程、标准与模板;
⽀持准则;
利益相关者及其测试⽬标;
测试资源与评估;
测试层次与阶段;
测试环境;
各阶段的完成标准;
所需的测试⽂档与检查⽅法。
2、软件测试策略的重要性
(1)任何⼀个完全测试或穷举测试的⼯作量都是巨⼤的,在实践上是⾏不通的,因此任何实际测试都不能保证被测程序中不遗漏错误或缺陷;
(2)为了最⼤程度较少这种遗漏,同时最⼤限度发现可能存在的错误,在实施测试前必须确定合适的测试⽅法和测试策略,并以此为依据制定详细的测试案例。
3、软件测试策略的⽬的
是不是所有软件测试都要运⽤现有软件测试⽅法去测试呢?答案是否定的。依据软件本⾝性质、规模和应⽤场合的不同,我们将选择不同测试⽅案,以最少的软硬件、⼈⼒资源投⼊得到最佳的测试效果,这就是测试策略的⽬标所在。
4、软件测试策略的影响因素
软件测试策略随着软件⽣命周期的变化、软件测试⽅法、技术与⼯具的不同发⽣的变化。这就要求我们在制定测试策略时候,应该综合考虑测试策略的影响因素及其依赖关系。这些影响因素可能包括:测试项⽬资源因素、项⽬的约束和测试项⽬的特殊需要等。
5、软件测试策略的制定过程
(1)输⼊
需要的软硬件资源的详细说明;
针对测试和进度约束⽽需要的⼈⼒资源的⾓⾊和职责;
测试⽅法、测试标准和完成标准;
⽬标系统的功能性和技术性需求;
系统局限(即系统不能够提供的需求)等等。
(2)输出
已批准和签署的测试策略⽂档、测试⽤例、测试计划;
需要解决⽅案的测试项⽬;
(3)过程
1)确定测试的需求
测试需求所确定的是测试内容,即测试的具体对象。在分析测试需求时,可应⽤以下⼏条⼀般规则:
测试需求必须是可观测、可测评的⾏为。如果不能观测或测试需求,就⽆法对其进⾏评估,以确定需求是否已经满⾜。
在每个⽤例或系统的补充需求与测试需求之间不存在⼀对⼀的关系。⽤例通常具有多个测试需求;有些补充需求将派⽣⼀个或多个测试需求,⽽其他补充需求(如市场需求或包装需求)将不派⽣任何测试需求。
测试需求可能有许多来源,其中包括⽤例模型、补充需求、设计需求、业务⽤例、与最终⽤户的访谈和软件构架⽂档等。应该对所有这些来源进⾏检查,以收集可⽤于确定测试需求的信息。
2)评估风险并确定测试优先级¤
成功的测试需要在测试⼯作中成功地权衡资源约束和风险等因素。为此,应该确定测试⼯作的优先级,以便先测试最重要、最有意义或风险最⾼的⽤例或构件。为了确定测试⼯作的优先级,需执⾏风险评估和实施概要,并将其作为确定测试优先级的基础。
3)确定测试策略
⼀个好的测试策略应该包括:实施的测试类型和测试的⽬标、实施测试的阶段、技术、⽤于评估测试结果和测试是否完成的评测和标准、对测试策略所述的测试⼯作存在影响的特殊事项等内容。
如何才能确定⼀个好的测试策略呢?我们可以从基于测试技术的测试策略、基于测试⽅案的测试策略两个⽅⾯来回答这个问题。
①基于测试技术的测试策略的要点
著名测试专家给出了使⽤各种测试⽅法的综合策略:
任何情况下都必须使⽤边界值测试⽅法;
必要时使⽤等价类划分⽅法补充⼀定数量的测试⽤例;
对照程序逻辑,检查已设计出的测试⽤例的逻辑覆盖程度,看是否达到了要求;
如果程序功能规格说明中含有输⼊条的组合情况,则已开始可以选择因果图⽅法。
②基于测试⽅案的测试策略
对于基于测试⽅法的测试策略,⼀般来说应该考虑如下⽅⾯:
根据程序的重要性和⼀旦发⽣故障将造成的损失来确定它的测试等级和测试重点;
认真研究,使⽤尽可能少的测试⽤例发现尽可能多的程序错误,避免测试过度和测试不⾜!
第⼆部分  测试策略的⽅法
软件测试的策略、⽅法和技术是多种多样的。对于软件测试技术,可以从不同的⾓度加以分类:从是否需要执⾏被测软件的⾓度,可分为静态测试和动态测试。从测试是否针对系统的内部结构和具体实现算法的⾓度来看,可分为⽩盒测试和⿊盒测试。
1.  静态⽅法与动态⽅法
所谓静态⽅法是指不运⾏被测程序本⾝,仅通过分析或检查源程序的⽂法、结构、过程、接⼝等来检查程序的正确性。静态⽅法通过程序静态特性的分析,出⽋缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分⽀嵌套、不允许的递归、未使⽤过的变量、空指针的引⽤和可疑的计算等。静态测试结果可⽤于进⼀步的查错,并为测试⽤例选取提供指导。
动态⽅法是指通过运⾏被测程序,检查运⾏结果与预期结果的差异,并分析运⾏效率和健壮性等性能,这种⽅法由三部分组成:构造测试实例、执⾏程序、分析程序的输出结果。
2.  功能测试与结构测试
(1)功能测试
功能测试是指在对程序进⾏的功能抽象的基础上,将程序划分成功能单元,然后在数据抽象的基础上,对每个功能单元⽣成测试数据进⾏测试。⽤这种⽅法进⾏测试时,被测程序被当作打不开的⿊盒,因⽽⽆法了解其内部构造,因此⼜称为⿊盒测试。
⿊盒测试也称功能测试或数据测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使⽤。在测试时,把程序看作⼀个不能打开的⿊盒⼦,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接⼝进⾏测试,只检查程序功能是否按照需求规格
说明书的规定正常使⽤,程序是否能适当接收输⼊数据⽽产⽣正确的输出信息,并且保持外部信息的完整性。
在功能测试中,被测软件的输⼊域和输出域往往是⽆限域,因此穷举测试通常是不可⾏的。必须以某种策略分析软件规格说明,从⽽得出测试⽤例集,尽可能全⾯⽽⼜⾼效地对软件进⾏测试。下⾯就说明⼏种功能测试的⽅法:
a.  等价类划分
所谓等价类,就是指某个输⼊域的集合,集合中的每个输⼊对揭露程序错误来说是等效的,把程序的输⼊域划分成若⼲部分,然后从每个部分中选取少数代表性数据作为测试⽤例,这就是等价类划分⽅法。它是功能测试的基本⽅法。
b.  因果图法
因果图是⼀种形式语⾔,由⾃然语⾔写成的规范转换⽽成,这种形式语⾔实际上是⼀种使⽤简化记号表⽰数字逻辑图。因果图法是帮助⼈们系统地选择⼀组⾼效测试⽤例的⽅法,此外,它还能指出程序规范中的不完全性和⼆义性。
c.  边值分析
实践证明,软件在输⼊、输出域的边界附近容易出现差错,边值分析是考虑边界条件⽽选取测试⽤例的⼀种功能测试⽅法。所谓边界条件,是相对于输⼊和输出等价类直接在其边缘上,稍⾼于和稍低于其边界的这些状态条件。边值分析是对等价类划分的有效补充。
(2)结构测试
结构测试是根据被测程序的内部结构设计测试⽤例的⼀类测试,⼜称为⽩盒测试。⽩盒测试也称结构测试或逻辑驱动测试,它是知道产品内部⼯作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进⾏,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确⼯作,⽽不顾它的功能。其主要⽅法有逻辑驱动、基路测试等,主要⽤于软件验证。⽩盒法全⾯了解程序内部逻辑结构、对所有逻辑路径进⾏测试。⽩盒法是穷举路径测试。在使⽤这⼀⽅案时,测试者必须检
查程序的内部结构,从检查程序的逻辑着⼿,得出测试数据。贯穿程序的独⽴路径数是天⽂数字。但即使每条路径都测试了仍然可能有错误。第⼀,穷举路径测试决不能查出程序违反了设计规范,即程序本⾝错误的程序。第⼆,穷举路径测试不可能查出程序中因遗漏路径⽽出错。第三,穷举路径测试可能发现不了⼀些与数据相关的错误。
与功能测试不同的是,结构测试涉及程序内部结构。尽管⽤户更倾向于基于程序规格说明的功能测试,但是结构测试能发现潜在的逻辑错误,⽽这种错误往往是功能测试发现不了的。它们各有利弊,常常结合使⽤。
第三部分  测试策略⽂档范例
●测试⽬的:
(1)测试的范围,哪些功能要包括在内,哪些要排除在外
(2)谁是客户和最终⽤户,谁就是测试结果的验收者
(3)测试的次序和⽇程安排
(4)验收的条件,成功因素,限制
●资源需求:
(1)制定计划和运⾏测试需要哪些技术和经验
(2)相关⼈员的⾓⾊和责任
(3)谁将对测试⼯作进⾏全盘协调
(4)谁负责测试资料管理,版本控制,错误跟踪
●测试环境:
(1)⽤于测试的系统配置怎样
(2)需要什么⾃动化⼯具
(3)需要哪些测试数据(数据库和输⼊交易),如何安装
(4)您如何前调系统时钟
●测试过程:
(1)运⾏测试时要遵循哪些过程(设置、执⾏、记录)
(2)测试案例如何制定,其标准格式是什么
(3)测试案例定义的覆盖要求是什么
(4)遇到问题如何决定其严重程度,对问题如何处理

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。