软件测试策略基础

  第一部分  软件测试策略基础

  为什么要编写测试策略?测试策略就是如何进行软件测试的计划。测试策略的目标包括:

  取得利益相关者(比如管理部门、开发人员、测试人员、顾客和用户等)的一致性目标;

  从开始阶段对期望值进行管理;

  确保“开发方向正确”;

  确定所有要进行的测试类型。

  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) 遇到问题如何决定其严重程度,对问题如何处理

 

 软件测试通常是指实际运行被测程序,输入相应的测试用例,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性。软件测试可采取的方法和技术是多种多样的, 但通常情况下不论采用什么方法和技术,其测试都是不彻底的,也是不完全的,因为任何一次完全测试或者叫穷举测试(即让被测程序在一切可能的操作情况下,包括正确的操作,也包括错误的操作情况下全部执行一遍)的工作量太大,在实践上是行不通的,因此任何实际测试都不能够保证被测试程序中不存在遗留的错误。

  为了最大程度的减少这种遗留的错误,同时也为了最大限度的发现已经存在的错误,在测试实施之前,软件测试工程师必须确定将要采用的测试策略和测试方法,并以此为依据制定详细的测试案例。而一个好的测试策略和测试方法必将给软件测试带来事半功倍的效果,它可以充分利用有限的人力和物力资源,高效率、高质量地完成测试。

  那么,究竟如何才能确定一个好的测试策略和测试方法呢,一般来说,在确定测试方法时,应该遵循以下原则:

  第一,要根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级和测试重点;

  第二,要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可能多的程序错误,因为一次完整的软件测试过后,如果程序中遗留的错误过多并且很严重,则表明本次测试是失败的,是不足的,而测试不足意味着让用户承担隐藏错误带来的危险,同时反过来说如果过度测试则又会浪费许多宝贵的资源。我们需要在这两点上进行权衡,找到一 个最佳平衡点。

  以下是Myers提出的使用各种测试方法的综合策略,相信会对大家有所帮助:

  (1)在任何情况下都必须使用边界值分析方法。经验表明用这种方法设计出测试用例发现 程序错误的能力最强。

  (2)必要时用等价类划分方法补充一些测试用例。

  (3)用错误推测法再追加一些测试用例。

  (4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖 标准,应当再补充足够的测试用例。

  (5)如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。

 

 

软件测试策略
文章出处:本站原创 作者:青竹居士 发布时间:2007-04-28
 

 软件测试的策略、方法和技术是多种多样的。对于软件测试技术,可以从不同的角度加以分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试。从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。 
  1.静态方法与动态方法
 
  所谓静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。
 
  动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。
 
  2.功能测试与结构测试
 
  (1)功能测试
 
  功能测试是指在对程序进行的功能抽象的基础上,将程序划分成功能单元,然后在数据抽象的基础上,对每个功能单元生成测试数据进行测试。用这种方法进行测试时,被测程序被当作打不开的黑盒,因而无法了解其内部构造,因此又称为黑盒测试。
 
  黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当接收输入数据而产生正确的输出信息,并且保持外部信息的完整性。
 
  在功能测试中,被测软件的输入域和输出域往往是无限域,因此穷举测试通常是不可行的。必须以某种策略分析软件规格说明,从而得出测试用例集,尽可能全面而又高效地对软件进行测试。下面就说明几种功能测试的方法:
 
  a.等价类划分
 
  所谓等价类,就是指某个输入域的集合,集合中的每个输入对揭露程序错误来说是等效的,把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例,这就是等价类划分方法。它是功能测试的基本方法。
 
  b.因果图法
 
  因果图是一种形式语言,由自然语言写成的规范转换而成,这种形式语言实际上是一种使用简化记号表示数字逻辑图。因果图法是帮助人们系统地选择一组高效测试用例的方法,此外,它还能指出程序规范中的不完全性和二义性。
 
  c.边值分析
 
  实践证明,软件在输入、输出域的边界附近容易出现差错,边值分析是考虑边界条件而选取测试用例的一种功能测试方法。所谓边界条件,是相对于输入和输出等价类直接在其边缘上,稍高于和稍低于其边界的这些状态条件。边值分析是对等价类划分的有效补充。
 
  (2)结构测试
 
  结构测试是根据被测程序的内部结构设计测试用例的一类测试,又称为白盒测试。白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。其主要方法有逻辑驱动、基路测试等,主要用于软件验证。白盒法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。白盒法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。
 
  与功能测试不同的是,结构测试涉及程序内部结构。尽管用户更倾向于基于程序规格说明的功能测试,但是结构测试能发现潜在的逻辑错误,而这种错误往往是功能测试发现不了的。它们各有利弊,常常结合使用。


穷酸秀才

软件测试策略基础

浏览 209创建时间 2007-06-21 11:50:49
 
第1节软件测试策略基础
1、策略与软件测试策略
(1)策略:在一定的政治路线指导下,根据具体条件而规定的斗争原则、方式和方法。<新华字典>
(2)软件测试策略:在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。
2、软件测试策略的重要性
1) 任何一个完全测试或穷举测试的工作量都是巨大的,在实践上是行不通的,因此任何实际测试都不能保证被测程序中不遗漏错误或缺陷;
2) 为了最大程度较少这种遗漏,同时最大限度发现可能存在的错误,在实施测试前必须确定合适的测试方法和测试策略,并以此为依据制定详细的测试案例。
3、软件测试策略的目的
是不是所有软件测试都要运用现有软件测试方法去测试呢?答案是否定的。依据软件本身性质、规模和应用场合的不同,我们将选择不同测试方案,以最少的软硬件、人力资源投入得到最佳的测试效果,这就是测试策略的目标所在。
3、软件测试策略的影响因素
软件测试策略随着软件生命周期的变化、软件测试方法、技术与工具的不同发生的变化。这就要求我们在制定测试策略时候,应该综合考虑测试策略的影响因素及其依赖关系。这些影响因素可能包括:测试项目资源因素、项目的约束和测试项目的特殊需要等。
4、软件测试策略的制定过程
(1)输入
需要的软硬件资源的详细说明;
针对测试和进度约束而需要的人力资源的角色和职责;
测试方法、测试标准和完成标准;
目标系统的功能性和技术性需求;
系统局限(即系统不能够提供的需求)等等。
(2)输出
已批准和签署的测试策略文档、测试用例、测试计划;
需要解决方案的测试项目;
(3)过程
1)确定测试的需求¤
测试需求所确定的是测试内容,即测试的具体对象。在分析测试需求时,可应用以下几条一般规则: 
测试需求必须是可观测、可测评的行为。如果不能观测或测评测试需求,就无法对其进行评估,以确定需求是否已经满足。 
在每个用例或系统的补充需求与测试需求之间不存在一对一的关系。用例通常具有多个测试需求;有些补充需求将派生一个或多个测试需求,而其他补充需求(如市场需求或包装需求)将不派生任何测试需求。

测试需求可能有许多来源,其中包括用例模型、补充需求、设计需求、业务用例、与最终用户的访谈和软件构架文档等。应该对所有这些来源进行检查,以收集可用于确定测试需求的信息。
2)评估风险并确定测试优先级¤
成功的测试需要在测试工作中成功地权衡资源约束和风险等因素。为此,应该确定测试工作的优先级,以便先测试最重要、最有意义或风险最高的用例或构件。为了确定测试工作的优先级,需执行风险评估和实施概要,并将其作为确定测试优先级的基础。
3)确定测试策略¤
一个好的测试策略应该包括:实施的测试类型和测试的目标、实施测试的阶段、技术、用于评估测试结果和测试是否完成的评测和标准、对测试策略所述的测试工作存在影响的特殊事项等内容。
如何才能确定一个好的测试策略呢?我们可以从基于测试技术的测试策略、基于测试方案的测试策略两个方面来回答这个问题。
①基于测试技术的测试策略的要点
著名测试专家给出了使用各种测试方法的综合策略:
任何情况下都必须使用边界值测试方法;
必要时使用等价类划分方法补充一定数量的测试用例;
对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,看是否达到了要求;
如果程序功能规格说明中含有输入条的组合情况,则已开始可以选择因果图方法。
②基于测试方案的测试策略
对于基于测试方法的测试策略,一般来说应该考虑如下方面:
根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级和测试重点;
认真研究,使用尽可能少的测试用例发现尽可能多的程序错误,避免测试过度和测试不足!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值