资源描述
Chapter 5提纲提纲导言导言 单元测试单元测试单元测试考虑事项单元测试考虑事项单元测试规程单元测试规程 单元测试局限性单元测试局限性 集成测试集成测试自顶向下集成自顶向下集成自底向上集成自底向上集成 混合式集成混合式集成 端到端集成测试端到端集成测试 0C202 Software Testing5-1Chapter 5导言导言(1/2)按阶段进行测试是一种基本的测试策略。按阶段进行测试是一种基本的测试策略。单元测试(大量使用白盒测试)。单元测试(大量使用白盒测试)。集成测试(大量使用黑盒测试,白盒测试辅助);集成测试(大量使用黑盒测试,白盒测试辅助);系统测试(软、硬件环境)系统测试(软、硬件环境)确认测试(按照需求确认)确认测试(按照需求确认)0C202 Software Testing5-2Chapter 5提纲提纲导言导言 单元测试单元测试单元测试考虑事项单元测试考虑事项单元测试规程单元测试规程 单元测试局限性单元测试局限性 集成测试集成测试自顶向下集成自顶向下集成自底向上集成自底向上集成 混合式集成混合式集成 端到端集成测试端到端集成测试 0C202 Software Testing5-3Chapter 5单元测试单元测试 单元测试(单元测试(Unit testing)是对最小的软件设)是对最小的软件设计单元(模块或源程序单元)的验证工作。计单元(模块或源程序单元)的验证工作。面向过程的设计:一个单元可能是单独的程面向过程的设计:一个单元可能是单独的程序、函数、过程、网页以及菜单等。序、函数、过程、网页以及菜单等。面向对象的设计面向对象的设计:单元是类,可能是基单元是类,可能是基/父类、父类、抽象类或派生抽象类或派生/子类。子类。0C202 Software Testing5-4Chapter 5单元测试单元测试 使用构件级别的设计规格说明书作为指南,使用构件级别的设计规格说明书作为指南,对重要的控制路径进行测试以发现模块内的对重要的控制路径进行测试以发现模块内的错误。错误。重点放到内部处理逻辑和构件边界内的数据重点放到内部处理逻辑和构件边界内的数据结构。这种测试可以对多个构件并行进行。结构。这种测试可以对多个构件并行进行。通常情况下,由开发者执行测试而不是由最通常情况下,由开发者执行测试而不是由最终用户执行测试,主要使用白盒测试技术,终用户执行测试,主要使用白盒测试技术,并辅助使用黑盒测试技术,如边界值分析法。并辅助使用黑盒测试技术,如边界值分析法。0C202 Software Testing5-5Chapter 5单元测试考虑事项单元测试考虑事项 单元测试对构件的五方面进行测试:单元测试对构件的五方面进行测试:模块或构件接口;模块或构件接口;局部数据结构;局部数据结构;边界条件;边界条件;独立路径;独立路径;处理错误的路径。处理错误的路径。0C202 Software Testing5-6Chapter 5模块或构件接口模块或构件接口对模块接口的测试保证在测试时进出程序对模块接口的测试保证在测试时进出程序单元的数据流是正确的,单元的数据流是正确的,接口名称,传入参数的个数、类型、顺序等是接口名称,传入参数的个数、类型、顺序等是否与模块接口匹配;否与模块接口匹配;模块输出或返回值或类型是否正确。模块输出或返回值或类型是否正确。重点关注模块之间的数据输入与输出,优先开重点关注模块之间的数据输入与输出,优先开展穿越模块接口的数据流的测试。展穿越模块接口的数据流的测试。0C202 Software Testing5-7Chapter 5局部数据结构局部数据结构对局部数据结构的检查保证临时存储的数对局部数据结构的检查保证临时存储的数据在算法执行的整个过程中都能维持其完据在算法执行的整个过程中都能维持其完整性。整性。另外,应该测试局部数据结构,并在单元另外,应该测试局部数据结构,并在单元测试时确认对于全局数据的局部影响执行。测试时确认对于全局数据的局部影响执行。0C202 Software Testing5-8Chapter 5边界条件边界条件保证模块在所限定或约束处理的条件边界上能够保证模块在所限定或约束处理的条件边界上能够正确执行。正确执行。边界条件的测试是利用黑盒测试技术中的边界值边界条件的测试是利用黑盒测试技术中的边界值分析法。分析法。0C202 Software Testing5-9Chapter 5独立路径独立路径 (1/3)覆盖控制结构中的独立路径覆盖控制结构中的独立路径(基本路径基本路径)。关注循环测试。关注循环测试。0C202 Software Testing5-10Chapter 5独立路径独立路径(2/3)计算中常见的错误有:计算中常见的错误有:(1)误解的或者不正确的算术优先级;误解的或者不正确的算术优先级;(2)混合模式的操作;混合模式的操作;(3)不正确的初始化;不正确的初始化;(4)精度不够精确;精度不够精确;(5)表达式的不正确符号表示。表达式的不正确符号表示。0C202 Software Testing5-11Chapter 5独立路径独立路径(3/3)比较和控制流是紧密地耦合在一起的比较和控制流是紧密地耦合在一起的(也就是说,也就是说,控制流的转移是在比较之后发生的控制流的转移是在比较之后发生的),测试用例应,测试用例应当能够发现下列错误:当能够发现下列错误:(1)不同数据类型的比较;不同数据类型的比较;(2)不正确的逻辑操作或优先级;不正确的逻辑操作或优先级;(3)应该相等的地方由于精度的错误而不能相等;应该相等的地方由于精度的错误而不能相等;(4)不正确的比较或者变量;不正确的比较或者变量;(5)不正常的或者不存在的循环中止;不正常的或者不存在的循环中止;(6)当遇到分支循环的时候不能退出;当遇到分支循环的时候不能退出;(7)不适当地修改循环变量。不适当地修改循环变量。0C202 Software Testing5-12Chapter 5处理错误的路径处理错误的路径 (1/2)对所有处理错误的路径进行测试(对所有处理错误的路径进行测试(Try Catch,Throw处理机制)。好的软件设计处理机制)。好的软件设计中错误条件是可以预料的,而且当错误真中错误条件是可以预料的,而且当错误真的发生的时候,错误处理路径被建立,以的发生的时候,错误处理路径被建立,以重定向或者干脆终止处理。重定向或者干脆终止处理。但要避免把错误处理过程加到软件中去,但从但要避免把错误处理过程加到软件中去,但从不进行测试。不进行测试。0C202 Software Testing5-13Chapter 5处理错误的路径处理错误的路径 (2/2)在错误处理部分应当考虑的潜在错误:在错误处理部分应当考虑的潜在错误:(1)对错误描述费解。)对错误描述费解。(2)所报的错误与真正遇到的错误不一致。)所报的错误与真正遇到的错误不一致。(3)在错误处理之前错误条件先引起系统干)在错误处理之前错误条件先引起系统干涉造成系统异常。涉造成系统异常。(4)例外条件处理不正确。)例外条件处理不正确。(5)错误描述没有提供足够的信息来帮助确)错误描述没有提供足够的信息来帮助确定错误发生的位置(程序设计中建立错误日志、定错误发生的位置(程序设计中建立错误日志、运行日志、出错信息表)。运行日志、出错信息表)。0C202 Software Testing5-14Chapter 5单元测试规程单元测试规程 (1/5)单元测试通常看成为是附属于编码步骤。单元测试通常看成为是附属于编码步骤。在源代码级的代码被开发、复审、和语法在源代码级的代码被开发、复审、和语法正确性验证之后,单元测试用例设计就开正确性验证之后,单元测试用例设计就开始了。始了。对设计信息的复审可能能够为建立前面讨对设计信息的复审可能能够为建立前面讨论过的每一类错误的测试用例提供指导,论过的每一类错误的测试用例提供指导,每一个测试用例都应当和一系列的预期结每一个测试用例都应当和一系列的预期结果联系在一起。果联系在一起。0C202 Software Testing5-15Chapter 5单元测试规程单元测试规程 (2/5)开发驱动器(开发驱动器(driver)或)或/和程序桩和程序桩(stub)。在面向对象的程序里,模仿对象(在面向对象的程序里,模仿对象(mock objects)技术取代程序)技术取代程序桩桩(stub)。模仿对象是以一种可控方式来模拟真实对象行为的仿。模仿对象是以一种可控方式来模拟真实对象行为的仿真对象。真对象。(模仿外接数据源)(模仿外接数据源)0C202 Software Testing5-16Chapter 5单元测试规程单元测试规程 (3/5)驱动器和程序桩都是单元测试中的额外的驱动器和程序桩都是单元测试中的额外的开销,必须开发但又不和最终软件一起交开销,必须开发但又不和最终软件一起交付。付。驱动器和程序桩的简单程度反映了模块设驱动器和程序桩的简单程度反映了模块设计高内聚、低耦合的程度。计高内聚、低耦合的程度。0C202 Software Testing5-17Chapter 5单元测试规程单元测试规程 (4/5)单元测试通常是被自动执行,但可能仍由手工进单元测试通常是被自动执行,但可能仍由手工进行的。行的。自动化方法能有效地实现隔离一个单元并验证其自动化方法能有效地实现隔离一个单元并验证其正确性。正确性。0C202 Software Testing5-18Chapter 5单元测试规程单元测试规程 (5/5)成为程序员创建具有松偶合高内聚代码体成为程序员创建具有松偶合高内聚代码体的一个动力。的一个动力。设计模式、单元测试和重构常结合使用以设计模式、单元测试和重构常结合使用以便形成最理想解决方案。便形成最理想解决方案。0C202 Software Testing5-19Chapter 5单元测试局限性单元测试局限性 单元测试不能捕获程序中的每一个错误。单元测试不能捕获程序中的每一个错误。根据定义,单元测试只测试单元自身的功根据定义,单元测试只测试单元自身的功能。能。因此它不捕获集成错误、性能问题或其它任何因此它不捕获集成错误、性能问题或其它任何系统范围的问题。系统范围的问题。另外,要预料现实中被测程序可能接受到的输另外,要预料现实中被测程序可能接受到的输入的所有特殊情况是一项不易之事。入的所有特殊情况是一项不易之事。对于任何非平凡的软件块要测试所用的输入组对于任何非平凡的软件块要测试所用的输入组合是不现实的。合是不现实的。0C202 Software Testing5-20Chapter 5提纲提纲导言导言 单元测试单元测试单元测试考虑事项单元测试考虑事项单元测试规程单元测试规程 单元测试局限性单元测试局限性 集成测试集成测试自顶向下集成自顶向下集成自底向上集成自底向上集成 混合式集成混合式集成 端到端集成测试端到端集成测试 0C202 Software Testing5-21Chapter 5集成测试集成测试 (1/3)单独的软件模块被结合在一起,作为一个群接受单独的软件模块被结合在一起,作为一个群接受测试。测试。什么时候进行集成测试什么时候进行集成测试?(1)由若干单元或模块要组成一个构件;)由若干单元或模块要组成一个构件;(2)由若干构件组成为一个工件;)由若干构件组成为一个工件;(3)由若干工件组成为一个系统。集成测试被定义为)由若干工件组成为一个系统。集成测试被定义为在单元测试与系统测试之间级别的测试。在单元测试与系统测试之间级别的测试。0C202 Software Testing5-22Chapter 5集成测试集成测试 (2/3)接口连接问题:接口连接问题:数据可能在通过接口的时候丢失;数据可能在通过接口的时候丢失;一个模块可能对另外一个模块产生无法预料的副作用;一个模块可能对另外一个模块产生无法预料的副作用;当子函数被联到一起的时候,可能不能达到期望中的当子函数被联到一起的时候,可能不能达到期望中的功能;功能;累计单个模块中可以接受的不精确性;累计单个模块中可以接受的不精确性;全局数据结构可能也会存在问题。全局数据结构可能也会存在问题。0C202 Software Testing5-23Chapter 5集成测试集成测试 (3/3)集成测试构造程序并实施测试以发现与接集成测试构造程序并实施测试以发现与接口连接有关的错误,口连接有关的错误,目标是把通过了单元测试的模块拿来,构造一目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构。个在设计中所描述的程序结构。有两种集成测试策略:有两种集成测试策略:瞬时集成测试和增量集成测试。瞬时集成测试和增量集成测试。0C202 Software Testing5-24Chapter 5瞬时集成测试瞬时集成测试 (1/2)经历单元测试阶段,把模块组合成一个最终系统,经历单元测试阶段,把模块组合成一个最终系统,并观察它是否运转正常。并观察它是否运转正常。难于定位错误。难于定位错误。错误修正过程中错误无限循环。错误修正过程中错误无限循环。0C202 Software Testing5-25Chapter 5瞬时集成测试瞬时集成测试 (2/2)开发小程序的时候都会用到瞬时集成测试技术,开发小程序的时候都会用到瞬时集成测试技术,但对大型程序不太适用。但对大型程序不太适用。瞬时集成方法有这样几个缺点:瞬时集成方法有这样几个缺点:(1)对独立组件测试需要驱动程序和树桩程序的支持;)对独立组件测试需要驱动程序和树桩程序的支持;(2)由于组件一次性结合,很难找出错误的原因;)由于组件一次性结合,很难找出错误的原因;(3)不容易辨别接口错误和其他类型的错误。)不容易辨别接口错误和其他类型的错误。所以,我们推荐使用增量集成策略。所以,我们推荐使用增量集成策略。0C202 Software Testing5-26Chapter 5增量集成增量集成程序先分成小的部分进行构造和测试,这程序先分成小的部分进行构造和测试,这个时候错误比较容易分离和修正;接口也个时候错误比较容易分离和修正;接口也更容易进行彻底地测试;而且也可以应用更容易进行彻底地测试;而且也可以应用一种系统化的测试方法。一种系统化的测试方法。增量集成测试会有格外的开销,但会大大减少增量集成测试会有格外的开销,但会大大减少发现和改正错误的时间。发现和改正错误的时间。0C202 Software Testing5-27Chapter 5 0C202 Software Testing5-28自顶向下的集成集成方式:深度优先、广度优先 Chapter 5自顶向下集成自顶向下集成 在现实中一般是结合使用深度优先、宽度优先进在现实中一般是结合使用深度优先、宽度优先进行测试。行测试。初始阶段所有的模块可能只是提供部分功能,这初始阶段所有的模块可能只是提供部分功能,这可以用宽度优先技术进行测试。可以用宽度优先技术进行测试。当模块越来越精化,模块的功能也越来越全,可当模块越来越精化,模块的功能也越来越全,可以对一个模块进行深度优先测试而同时所有的模以对一个模块进行深度优先测试而同时所有的模块进行宽度优先测试。块进行宽度优先测试。0C202 Software Testing5-29Chapter 5自顶向下集成自顶向下集成 集成过程:集成过程:1.1.主控模块作为测试驱动器,所有的程序桩由直接隶属主控模块作为测试驱动器,所有的程序桩由直接隶属于主控模块的各模块替换。于主控模块的各模块替换。2.2.根据深度或广度优先,子模块的程序桩依次地被替换根据深度或广度优先,子模块的程序桩依次地被替换为真正的模块。为真正的模块。3.3.在每一个模块集成的时候都要进行测试。在每一个模块集成的时候都要进行测试。4.4.在完成了每一次测试之后,又一个程序桩被真正的模在完成了每一次测试之后,又一个程序桩被真正的模块替换。块替换。5.5.可以用回归测试来保证没有引进新的错误。可以用回归测试来保证没有引进新的错误。循环继续进行,直至这个系统结构被构造完成。循环继续进行,直至这个系统结构被构造完成。0C202 Software Testing5-30Chapter 5自顶向下集成自顶向下集成自顶向下的优点:自顶向下的优点:(1)对高层行为进行早期确认:)对高层行为进行早期确认:(2)至多只需一个驱动程序;)至多只需一个驱动程序;(3)每步可以只加一个模块;)每步可以只加一个模块;(4)支持深度优先和宽度优先。)支持深度优先和宽度优先。自顶向下的缺点:自顶向下的缺点:(1)对低层行为确认比较晚;)对低层行为确认比较晚;(2)对缺少的元素需要编写树桩程序;)对缺少的元素需要编写树桩程序;(3)测试案例的输入和输出可能很难明确表示。)测试案例的输入和输出可能很难明确表示。0C202 Software Testing5-31Chapter 5自底向上集成自底向上集成 (1/3)一旦各个独立的模块测试完毕,把它们组合起来一旦各个独立的模块测试完毕,把它们组合起来形成一组模块,称为造件(形成一组模块,称为造件(build)。)。一组造件再由第二个测试装置进行测试。这个过一组造件再由第二个测试装置进行测试。这个过程将继续直到造件中包括整个应用系统。程将继续直到造件中包括整个应用系统。因为自底向上集成,在进行时要求所有隶属于某因为自底向上集成,在进行时要求所有隶属于某个给定层次的模块已经开发,不再需要程序桩。个给定层次的模块已经开发,不再需要程序桩。0C202 Software Testing5-32Chapter 5自底向上集成自底向上集成 (2/3)步骤:步骤:1.1.低层模块组合成能够实现软件特定子功能的低层模块组合成能够实现软件特定子功能的造件(造件(builds),有时也称为簇(),有时也称为簇(clusters)。)。2.2.编写测试装置编写测试装置(供测试用的控制程序供测试用的控制程序)来协调测来协调测试用例的输入输出。试用例的输入输出。3.3.对簇进行测试。对簇进行测试。4.4.撤去测试装置,沿着程序结构的层次向上对撤去测试装置,沿着程序结构的层次向上对造件进行组合。造件进行组合。0C202 Software Testing5-33Chapter 5 0C202 Software Testing5-34自底向上的集成示例 Chapter 5自底向上集成自底向上集成 (3/3)优点:优点:(1)对底层行为早期进行确认;)对底层行为早期进行确认;(2)不需要写程序桩;)不需要写程序桩;(3)对一些子树而言比较容易明确表示输入,比较容)对一些子树而言比较容易明确表示输入,比较容易解释对其他的输出。易解释对其他的输出。缺点:缺点:(1)推迟对高层行为的确认;)推迟对高层行为的确认;(2)需要驱动程序;)需要驱动程序;(3)当组合子树的时候,一大堆元素要进行集成。)当组合子树的时候,一大堆元素要进行集成。0C202 Software Testing5-35Chapter 5混合式集成混合式集成 (1/2)结合了自顶向下和自底向上。结合了自顶向下和自底向上。如:小组或个人可以对自己开发的模块采如:小组或个人可以对自己开发的模块采用自底向上测试,然后再由集成小组进行用自底向上测试,然后再由集成小组进行自顶向下测试。自顶向下测试。0C202 Software Testing5-36Chapter 5混合式集成混合式集成 (2/2)步骤:步骤:1.1.用程序桩独立地测试用户界面。用程序桩独立地测试用户界面。2.2.用驱动程序测试最低层功能模块。用驱动程序测试最低层功能模块。3.3.集成整个系统对中间层进行测试。集成整个系统对中间层进行测试。0C202 Software Testing5-37Chapter 5 0C202 Software Testing5-38混合式集成示例 Chapter 5三种增量测试策略的比较三种增量测试策略的比较 0C202 Software Testing5-39自顶向下自底向上混合式形成基本可工作程序所需时间早晚早是否需要构件驱动器否是是是否需要程序桩是否是集成开始时可否平行工作低中等中等测试特殊路径的能力难易中等计划和控制顺序的能力难易难Chapter 5混和增量集成混和增量集成风险驱动:从最关键或最复杂的模块开始风险驱动:从最关键或最复杂的模块开始进行集成,逐步加入它们调用或被调用的进行集成,逐步加入它们调用或被调用的模块。模块。进度驱动:一旦模块就绪,比如,以某种进度驱动:一旦模块就绪,比如,以某种方式可以获得或编码完成,就马上进行集方式可以获得或编码完成,就马上进行集成。成。功能或线程驱动:选择跟某一个功能或线功能或线程驱动:选择跟某一个功能或线程有关的模块进行集成,逐步加入其他功程有关的模块进行集成,逐步加入其他功能或线程。能或线程。0C202 Software Testing5-40Chapter 5端到端集成测试端到端集成测试 (1/3)端到端集成测试从最终用户的角度出发,强调对端到端集成测试从最终用户的角度出发,强调对系统或应用程序进行端到端的功能测试。系统或应用程序进行端到端的功能测试。这一测试过程用于验证由一组相互连接的系统形成的这一测试过程用于验证由一组相互连接的系统形成的集成系统是否正常运行,其中每个被连接的系统现在集成系统是否正常运行,其中每个被连接的系统现在是集成系统的一个子系统。是集成系统的一个子系统。一般是面向大型系统。假设子系统的模块(或单一般是面向大型系统。假设子系统的模块(或单元)测试和集成测试都已被执行并得到认可,但元)测试和集成测试都已被执行并得到认可,但可能依然存在未被观察到的错误其中集成测试可可能依然存在未被观察到的错误其中集成测试可能包括多层次的集成测试。能包括多层次的集成测试。0C202 Software Testing5-41Chapter 5端到端(端到端(E2E)集成测试)集成测试 (2/3)提供以下功能:提供以下功能:辅助生成测试用例,改进软件项目的生产率辅助生成测试用例,改进软件项目的生产率支持风险分析,通过确定风险领域从而进行全支持风险分析,通过确定风险领域从而进行全面的测试面的测试支持变化管理,使回归测试和波漪效应测试可支持变化管理,使回归测试和波漪效应测试可以被正确和有效的执行以被正确和有效的执行支持数据质量评估,决策者可以从数量上客观支持数据质量评估,决策者可以从数量上客观的评估测试成果的评估测试成果支持远程项目管理和分布式协作,工程师和项支持远程项目管理和分布式协作,工程师和项目经理可以通过网络一起工作目经理可以通过网络一起工作 0C202 Software Testing5-42Chapter 5端到端集成测试端到端集成测试 (3/3)终端到终端(终端到终端(E2E)的测试过程:)的测试过程:测试计划:确定主要任务及与其相关的进度安测试计划:确定主要任务及与其相关的进度安排和资源排和资源测试设计:开发测试规范、测试场景、测试案测试设计:开发测试规范、测试场景、测试案例和测试进度表例和测试进度表测试执行:执行测试案例和文档结果测试执行:执行测试案例和文档结果测试结果分析:分析测试结果覆盖率,评估测测试结果分析:分析测试结果覆盖率,评估测试并确定过失试并确定过失重新测试和回归测试:在改进后的系统上进行重新测试和回归测试:在改进后的系统上进行附加测试附加测试 0C202 Software Testing5-43Chapter 5E2E集成测试计划集成测试计划E集成测试计划的核心是确定集成系统的范集成测试计划的核心是确定集成系统的范围,包括系统构架和功能;确定处理方法围,包括系统构架和功能;确定处理方法和工具以便于完成集成测试,并在实际测和工具以便于完成集成测试,并在实际测试之前制定结果评估标准。(试之前制定结果评估标准。(P94)0C202 Software Testing5-44Chapter 5E2E集成测试设计集成测试设计E2E测试设计包括在测试环境下定义集成系测试设计包括在测试环境下定义集成系统的任务和定义测试程序的任务。统的任务和定义测试程序的任务。可以通过如下两种观点来定义被测的集成可以通过如下两种观点来定义被测的集成系统:系统:(1)E2E功能视图;功能视图;(2)结构视图,包括物理结构和逻辑结构。)结构视图,包括物理结构和逻辑结构。通过一个细线程树及所附条件来给出被测通过一个细线程树及所附条件来给出被测系统规范。系统规范。0C202 Software Testing5-45Chapter 5细线程细线程 (thin thread)(1/2)定义:一个完整的数据或消息的踪迹定义:一个完整的数据或消息的踪迹,使用最低限使用最低限度的具有代表性质的外部输入数据样本度的具有代表性质的外部输入数据样本,通过系统通过系统的内部的相互连接部分的转换的内部的相互连接部分的转换,产生最低限度的具产生最低限度的具有代表性质的外部输出数据样本有代表性质的外部输出数据样本.使用细线主要是使用细线主要是用来阐释某一方法具有指定的功能的用来阐释某一方法具有指定的功能的.细线程是集成的系统中最小的场景,从最终用户细线程是集成的系统中最小的场景,从最终用户角度看角度看,它是一个完整的场景,系统接受输入数据它是一个完整的场景,系统接受输入数据,经过计算经过计算,并输出处理的结果。它描述了整个场景并输出处理的结果。它描述了整个场景,而且只描述一个功能。而且只描述一个功能。0C202 Software Testing5-46Chapter 5细线程细线程 (thin thread)(2/2)细线程间的关系,组细线程间的关系,组/子组,一些共享某些子组,一些共享某些公共数据的细线可以组成一个细线组。公共数据的细线可以组成一个细线组。这些组是具有层次结构的。细线组中的所有细这些组是具有层次结构的。细线组中的所有细线和子细线组可以构成一棵细线树。线和子细线组可以构成一棵细线树。树的根是整个被测的集成系统,它的分支节点树的根是整个被测的集成系统,它的分支节点代表相关的细线集合代表相关的细线集合,它的叶子代表一个具体的它的叶子代表一个具体的细线。细线。0C202 Software Testing5-47Chapter 5E2E集成测试规格书集成测试规格书E2E测试规格书是测试规格书是E2E测试的核心,表述系测试的核心,表述系统需求,从最终用户的角度出发的使用情统需求,从最终用户的角度出发的使用情景,测试观点出发的详细系统行为描述:景,测试观点出发的详细系统行为描述:正常的输入,非正常输入,常规案例和特正常的输入,非正常输入,常规案例和特殊处理。殊处理。E2E测试规格书是一种半规范化,等级的构测试规格书是一种半规范化,等级的构架,案例生成的相关数据,追溯到其他软架,案例生成的相关数据,追溯到其他软件工件上,主要有两部分信息:细线程和件工件上,主要有两部分信息:细线程和条件。条件。0C202 Software Testing5-48Chapter 5细线程的定义模版:细线程的定义模版:ID、名字、描述、输、名字、描述、输入入/输出、前提条件输出、前提条件/后续条件、隐藏的成后续条件、隐藏的成分、状态、代理以及风险。分、状态、代理以及风险。细线程组:一组具有特定公共部分的细线细线程组:一组具有特定公共部分的细线程的集合,递归分组,重组为一个树结构。程的集合,递归分组,重组为一个树结构。细线程树:自顶向下构建,按功能性进行细线程树:自顶向下构建,按功能性进行分解;自低向上构建,利用提取和合成。分解;自低向上构建,利用提取和合成。0C202 Software Testing5-49Chapter 5细线程的发现方法细线程的发现方法通过条件分析发现新的细线程,通过发现通过条件分析发现新的细线程,通过发现不完全不完全/不一致的条件,发现附属于矛盾条不一致的条件,发现附属于矛盾条件的细线程。件的细线程。0C202 Software Testing5-50Chapter 5条件定义模版:条件定义模版:ID、名字、描述、受影响、名字、描述、受影响的细线程等。的细线程等。条件组:具有特定公共属性的条件的集合。条件组:具有特定公共属性的条件的集合。递归分组,重组为一个树结构。递归分组,重组为一个树结构。条件树,自顶向下分解,自底向上提取和条件树,自顶向下分解,自底向上提取和合成。合成。条件间的关系:条件间的关系:独立条件,互斥条件,引发独立条件,互斥条件,引发/被引发的条件。被引发的条件。相关条件。相关条件。0C202 Software Testing5-51Chapter 5E2E集成测试风险分析集成测试风险分析风险分析是系统和软件开发中的一项重要风险分析是系统和软件开发中的一项重要活动。基于风险分析,系统的临界条件可活动。基于风险分析,系统的临界条件可以被彻底的测试。当资源有限的时候,测以被彻底的测试。当资源有限的时候,测试应该把那些重要的线程放在首位。一种试应该把那些重要的线程放在首位。一种排列细线程的方法是至少基于以下两种因排列细线程的方法是至少基于以下两种因素给每一个细线程分配一个风险。系统可素给每一个细线程分配一个风险。系统可能舍弃一个已给定的细线程。能舍弃一个已给定的细线程。0C202 Software Testing5-52Chapter 5下面几个构件常有很高的失败可能性:下面几个构件常有很高的失败可能性:在先前的模块或综合测试中就显现出不可靠性在先前的模块或综合测试中就显现出不可靠性的成分的成分具有复杂的实现过程或者具有合并的复杂功能具有复杂的实现过程或者具有合并的复杂功能的成分的成分与许多其他成分相连的成分与许多其他成分相连的成分由于错误或功能的变更而最近刚刚修改过的成由于错误或功能的变更而最近刚刚修改过的成分分 0C202 Software Testing5-53Chapter 5E2E测试执行测试执行测试执行准备。识别出以下组件:要测的子系统;测试执行准备。识别出以下组件:要测的子系统;支持系统:包括硬件,固件,数据库,第支持系统:包括硬件,固件,数据库,第3方组件,方组件,确保子系统合适地执行。确保子系统合适地执行。备份系统和程序,保持系统可恢复性;测试数据,备份系统和程序,保持系统可恢复性;测试数据,包括测试输入数据,数据库,执行测试案例所需包括测试输入数据,数据库,执行测试案例所需要的文件;测试工具,包括自动输入数据生成工要的文件;测试工具,包括自动输入数据生成工具,测试驱动,测试结果记录工具;测试组;具,测试驱动,测试结果记录工具;测试组;0C202 Software Testing5-54Chapter 5模仿环境下进行模仿环境下进行E2E测试测试在模仿环境下的步骤:在模仿环境下的步骤:开发或取得模拟程序,把模拟程序的参数调成开发或取得模拟程序,把模拟程序的参数调成跟要测试的系统一样;跟要测试的系统一样;执行应用系统;执行应用系统;选择测试案例,生成输入数据,记录执行结果;选择测试案例,生成输入数据,记录执行结果;重复选择和执行测试案例的过程,在必要的时重复选择和执行测试案例的过程,在必要的时候恢复系统和模拟状态,直到所有安排的测试候恢复系统和模拟状态,直到所有安排的测试案例执行了为止。案例执行了为止。0C202 Software Testing5-55Chapter 5操作环境中进行操作环境中进行E2E测试测试在操作环境中进行在操作环境中进行E2E测试包括以下步骤:测试包括以下步骤:建立环境,调用应用系统,选择测试案例,根建立环境,调用应用系统,选择测试案例,根据系统外部接口生成输入数据;据系统外部接口生成输入数据;重复选择和执行测试案例的过程,在必要的时重复选择和执行测试案例的过程,在必要的时候恢复系统和模拟状态,直到所有安排的测试候恢复系统和模拟状态,直到所有安排的测试案例执行了为止。案例执行了为止。退出标准,所有的测试用例都被执行,测退出标准,所有的测试用例都被执行,测试覆盖率要求被满足试覆盖率要求被满足 0C202 Software Testing5-56Chapter 5测试结果分析测试结果分析缺陷识别和改正,缺陷是当执行的时候可缺陷识别和改正,缺陷是当执行的时候可能会产生不正确结果的代码错误。要找出能会产生不正确结果的代码错误。要找出缺陷,测试输出要跟预期输出进行比较。缺陷,测试输出要跟预期输出进行比较。在测试过程中缺陷识别可以被优先并改正。在测试过程中缺陷识别可以被优先并改正。评估波漪效应,软件工件的一部分改动会评估波漪效应,软件工件的一部分改动会影响其他相关部分的现象叫做波漪效应,影响其他相关部分的现象叫做波漪效应,而迭代的分析而且去除改变的副作用的过而迭代的分析而且去除改变的副作用的过程就叫做波漪效应分析。程就叫做波漪效应分析。0C202 Software Testing5-57Chapter 5波漪效应分析波漪效应分析波漪效应分析过程包括以下步骤:波漪效应分析过程包括以下步骤:提出软件修改提出软件修改识别依赖于被改变部分的其他模块识别依赖于被改变部分的其他模块决定是否要改变依赖部分来保持一致性决定是否要改变依赖部分来保持一致性如果需要改变,从第一步开始循环进行如果需要改变,从第一步开始循环进行REA如果不需要改变,停止并等待修改软件如果不需要改变,停止并等待修改软件 0C202 Software Testing5-58Chapter 5远程测试远程测试(Remote Testing)0C202 Software Testing5-59Chapter 5回归测试回归测试回归测试是在修改过的软件上重新运行测回归测试是在修改过的软件上重新运行测试用例,普遍用于软件程序被修改的情况试用例,普遍用于软件程序被修改的情况 一个要点就是回归测试只能保证这些应该一个要点就是回归测试只能保证这些应该保留的部分保持不变。需要在不同的层面保留的部分保持不变。需要在不同的层面上进行回归测试,首先是模块测试层面,上进行回归测试,首先是模块测试层面,之后是在集成测试层面,最后是终端到终之后是在集成测试层面,最后是终端到终端测试层面。在回归分析的每一个层面,端测试层面。在回归分析的每一个层面,测试人员有不同的任务。测试人员有不同的任务。0C202 Software Testing5-60Chapter 5总结总结单元测试是测试的基础级别。单元测试着眼于程单元测试是测试的基础级别。单元测试着眼于程序或系统的较小组件模块,执行每个模块以证实序或系统的较小组件模块,执行每个模块以证实其履行了指定功能。其履行了指定功能。单元测试的优势在于它容许对小单元的测试和调单元测试的优势在于它容许对小单元的测试和调试,从小单元到大单元的集成过程提供了更好的试,从小单元到大单元的集成过程提供了更好的管理方式。管理方式。把组件聚合后,必须通过测试确认所有的组件之把组件聚合后,必须通过测试确认所有的组件之间能够正确地协作运行。因此集成测试的目标是间能够正确地协作运行。因此集成测试的目标是暴露接口的缺陷,以及聚合后的组件之间相互作暴露接口的缺陷,以及聚合后的组件之间相互作用的缺陷。用的缺陷。0C202 Software Testing5-61
展开阅读全文