软件工程-齐志昌版(14)课件.ppt

上传人(卖家):晟晟文业 文档编号:4533500 上传时间:2022-12-17 格式:PPT 页数:90 大小:832KB
下载 相关 举报
软件工程-齐志昌版(14)课件.ppt_第1页
第1页 / 共90页
软件工程-齐志昌版(14)课件.ppt_第2页
第2页 / 共90页
软件工程-齐志昌版(14)课件.ppt_第3页
第3页 / 共90页
软件工程-齐志昌版(14)课件.ppt_第4页
第4页 / 共90页
软件工程-齐志昌版(14)课件.ppt_第5页
第5页 / 共90页
点击查看更多>>
资源描述

1、2022-12-17国防科技大学计算机学院1 软件工程软件工程 Software Engineering国防科技大学计算机学院国防科技大学计算机学院 2004.072022-12-17国防科技大学计算机学院2第十四章第十四章 软件测试软件测试o尽管软件质量保证是贯穿软件开发全过程的活动尽管软件质量保证是贯穿软件开发全过程的活动,但最关键的步骤是软件测试但最关键的步骤是软件测试,软件测试是对软件规软件测试是对软件规格说明、软件设计和编码的最后复审格说明、软件设计和编码的最后复审,目的是在软目的是在软件产品交付之前尽可能发现软件中潜伏的错误。件产品交付之前尽可能发现软件中潜伏的错误。o大量统计表明

2、大量统计表明,软件测试工作量往往占软件开发总软件测试工作量往往占软件开发总工作量的工作量的40%以上以上,在极端情况下在极端情况下,甚至可能高达甚至可能高达软件工程其他步骤成本总和的三到五倍。软件工程其他步骤成本总和的三到五倍。o本章重点讨论软件测试的基本概念、关键技术和实本章重点讨论软件测试的基本概念、关键技术和实施策略施策略,指出软件测试的主要目标、如何设计测试指出软件测试的主要目标、如何设计测试用例用例(test cases)以及如何组织实施测试活动。以及如何组织实施测试活动。2022-12-17国防科技大学计算机学院314.1 基本概念基本概念o在测试之前的所有软件开发活动中在测试之前

3、的所有软件开发活动中,软件工程师们软件工程师们致力于具体实现致力于具体实现,即从事所谓即从事所谓“建设性建设性”的活动。的活动。o软件测试人员却在努力寻求程序中的错误。软件测试人员却在努力寻求程序中的错误。o发现错误是为了改正错误。测试阶段发现的错误越发现错误是为了改正错误。测试阶段发现的错误越多多,交付的软件质量越高交付的软件质量越高,后期的改正性维护工作越后期的改正性维护工作越少。少。o因此,测试亦是一项因此,测试亦是一项“建设性建设性”活动活动第十四章第十四章 软件测试软件测试2022-12-17国防科技大学计算机学院414.1.1 软件测试的目标软件测试的目标o软件测试是为了发现程序中

4、的错误。软件测试是为了发现程序中的错误。o软件测试的过程亦是程序运行的过程。软件测试的过程亦是程序运行的过程。o程序运行需要数据程序运行需要数据,为测试设计的数据称测试用例。为测试设计的数据称测试用例。o设计测试用例的原则自然是尽可能暴露错误。设计测试用例的原则自然是尽可能暴露错误。o软件测试是一个找错过程。软件测试是一个找错过程。14.1基本概念基本概念2022-12-17国防科技大学计算机学院5软件测试的目标(续)软件测试的目标(续)o大型软件系统的测试分为单元大型软件系统的测试分为单元(模块模块)测试和综合测测试和综合测试两个阶段。试两个阶段。o多数场合,设计者与测试者共同完成单元测试任

5、务;多数场合,设计者与测试者共同完成单元测试任务;专门机构负责软件产品的综合测试。有时设计人员专门机构负责软件产品的综合测试。有时设计人员也加入这个机构。也加入这个机构。o值得指出的是值得指出的是,不能保证通过测试的程序一定正确不能保证通过测试的程序一定正确,测试只能找出程序中的错误测试只能找出程序中的错误,而不能证明程序无错。而不能证明程序无错。o人们认为人们认为,软件运行期间测试活动从未间断软件运行期间测试活动从未间断,只是在只是在软件交付用户之后软件交付用户之后,o将由用户继续扮演测试角色而已。将由用户继续扮演测试角色而已。14.1基本概念基本概念2022-12-17国防科技大学计算机学

6、院614.1.2 测试阶段的信息流程测试阶段的信息流程14.1基本概念基本概念2022-12-17国防科技大学计算机学院7测试阶段的信息流程测试阶段的信息流程o输入流分软件配置和测试配置两项输入流分软件配置和测试配置两项,软件配置由需软件配置由需求说明书、设计说明书和源代码组成求说明书、设计说明书和源代码组成;测试配置中测试配置中包含测试计划、测试工具、测试用例和期望结果包含测试计划、测试工具、测试用例和期望结果,有时测试配置亦作为软件配置的一个组成部分。有时测试配置亦作为软件配置的一个组成部分。o测试人员根据上述输入信息测试程序并评价测试结测试人员根据上述输入信息测试程序并评价测试结果果,当

7、测试结果与期望结果存在差异时当测试结果与期望结果存在差异时,往往程序有往往程序有错。此时可采用排错技术定位错误并改正之。错。此时可采用排错技术定位错误并改正之。o通过对测试结果的收集和评价通过对测试结果的收集和评价,软件质量和软件可软件质量和软件可靠性的一些定性指标即能逐步确定下来。靠性的一些定性指标即能逐步确定下来。14.1基本概念基本概念2022-12-17国防科技大学计算机学院814.1.3 测试用例和场景的设计测试用例和场景的设计o任何工程化的产品都有两种测试方法任何工程化的产品都有两种测试方法:n一种方法是已知产品应该具有的功能一种方法是已知产品应该具有的功能,通过测试通过测试检验每

8、个功能是否都能正常使用检验每个功能是否都能正常使用;n另一种方法是已知产品内部工作过程另一种方法是已知产品内部工作过程,通过测试通过测试检验产品内部动作是否按照产品规格说明的规检验产品内部动作是否按照产品规格说明的规定正常进行。定正常进行。o前者称为黑盒测试前者称为黑盒测试,后者称为白盒测试。后者称为白盒测试。o测试用例和测试场景将根据这两种测试方法的特性测试用例和测试场景将根据这两种测试方法的特性制定。制定。14.1基本概念基本概念2022-12-17国防科技大学计算机学院9黑盒测试黑盒测试o黑盒测试完全不考虑程序的内部结构和处理过程。黑盒测试完全不考虑程序的内部结构和处理过程。测试仅在程序

9、界面上进行。测试仅在程序界面上进行。o设计测试用例旨在说明设计测试用例旨在说明:软件的功能是否可操作软件的功能是否可操作;程序能否适当地接收输入数据并产生正确的输出程序能否适当地接收输入数据并产生正确的输出结果或在可能的场景中事件驱动的效果是否尽结果或在可能的场景中事件驱动的效果是否尽如人意如人意;能否保持外部信息能否保持外部信息(如数据文件如数据文件)的完整性。的完整性。14.1基本概念基本概念2022-12-17国防科技大学计算机学院10白盒测试白盒测试o白盒测试法密切关注处理细节白盒测试法密切关注处理细节,针对程序的每一条针对程序的每一条逻辑路径都要分别设计测试用例逻辑路径都要分别设计测

10、试用例,检查分枝和循环检查分枝和循环的情况。的情况。o穷举测试不可取穷举测试不可取,一般选用少量一般选用少量“最有效最有效”,即最有即最有可能暴露错误的路径进行测试。可能暴露错误的路径进行测试。o测试的目的是为了找出错误测试的目的是为了找出错误,所以无论采用黑盒法所以无论采用黑盒法还是白盒法还是白盒法,设计测试用例时总是期望用尽可能少设计测试用例时总是期望用尽可能少的时间和代价发现尽可能多的错误。的时间和代价发现尽可能多的错误。14.1基本概念基本概念2022-12-17国防科技大学计算机学院11例:例:o最多有最多有1014个逻辑路径个逻辑路径,假设每运行一个测试用例平均花费假设每运行一个测

11、试用例平均花费1毫秒毫秒,总共需总共需3170年才能穷尽所有测试。年才能穷尽所有测试。14.1基本概念基本概念2022-12-17国防科技大学计算机学院1214.1.4 软件测试的步骤软件测试的步骤o软件工程的开发过程和测试过程应该是对应的。第软件工程的开发过程和测试过程应该是对应的。第一章图一章图1.3采用采用V型图表示开发型图表示开发测试的对应关系,测试的对应关系,也可以采用图也可以采用图14.3所示的螺旋型图表示。所示的螺旋型图表示。o每旋转一圈每旋转一圈,测试的范围加大一次测试的范围加大一次:n螺旋中心对应单元测试螺旋中心对应单元测试,它测试源程序的每一模块它测试源程序的每一模块;n下

12、一步是综合测试下一步是综合测试,它测试软件总体结构它测试软件总体结构;n再下一步是确认再下一步是确认(验收验收)测试测试,测试软件是否满足需求测试软件是否满足需求;n最后一步是系统测试最后一步是系统测试,检查软件与系统中其他元素是否协检查软件与系统中其他元素是否协调。调。14.1基本概念基本概念2022-12-17国防科技大学计算机学院1314.2 软件测试技术软件测试技术o本节主要讨论当用白盒或黑盒测试法测试软件时本节主要讨论当用白盒或黑盒测试法测试软件时,如何设计测试用例才能达到测试的目的。如何设计测试用例才能达到测试的目的。o此外此外,对自动测试工具也作一些简单介绍。对自动测试工具也作一

13、些简单介绍。第十四章第十四章 软件测试软件测试2022-12-17国防科技大学计算机学院1414.2.1 白盒测试白盒测试o白盒测试应该根据程序的控制结构设计测试用例白盒测试应该根据程序的控制结构设计测试用例,原则是原则是:保证模块中每一独立的路径至少执行一次保证模块中每一独立的路径至少执行一次;保证所有判断的每一分枝至少执行一次保证所有判断的每一分枝至少执行一次;保证每一循环都在边界条件和一般条件下至少各保证每一循环都在边界条件和一般条件下至少各执行一次执行一次;验证所有内部数据结构的有效性。验证所有内部数据结构的有效性。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机

14、学院151.基本路径测试基本路径测试o基本路径测试的主要思想是,根据软件过程性描述基本路径测试的主要思想是,根据软件过程性描述(详细设计或代码详细设计或代码)中的控制流程确定复杂性度量中的控制流程确定复杂性度量,然后用此度量定义基本路径集合然后用此度量定义基本路径集合,由此导出一组测由此导出一组测试用例,它们能保证每个语句至少执行一次。试用例,它们能保证每个语句至少执行一次。o为了使用图论的知识和术语为了使用图论的知识和术语,引入流图引入流图(亦称程序图亦称程序图)的概念的概念,流图即把流程图中结构化构件改用一般有流图即把流程图中结构化构件改用一般有向图的表示形式。向图的表示形式。o代表条件判

15、断的结点称为谓词结点。代表条件判断的结点称为谓词结点。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院16结构化构件在流图中的表示结构化构件在流图中的表示14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院17例:流程图例:流程图14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院18例:对应的流图例:对应的流图14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院19条件处理条件处理o若判断中含复合条件若判断中含复合条件,则需增加谓词结点。如则需增加谓词结点。如OR运运算的处理。算的处理。a b Y X

16、 X If a o r b T h en X E lse Y E n d If 14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院2014.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院21Step1 14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院22Step1 1 2 3 6 7 8 4 5 11 9 10 模块流程图模块流程图 14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院23Step2 2,3 6 7 8 9 10 4,5 11 程程序序流流图图 1 2 3 6 7 8 4 5 11 9

17、 10 模模块块流流程程图图 14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院24Step3 pV(G)=E N+2 V(G)=11-9+2=4 2,3 6 7 8 9 10 4,5 11 程程序序流流图图 14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院25Step3 14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院26Step4 14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院272.控制结构测试控制结构测试o基本路径测试是控制结构测试技术的一种基本路径测试是控制结构测试技术的一种,下面

18、介下面介绍其他形式的控制结构测试绍其他形式的控制结构测试,它们比基本路径测试它们比基本路径测试法覆盖程度更大法覆盖程度更大,进一步提高了白盒测试的质量。进一步提高了白盒测试的质量。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院28条件测试法条件测试法o条件测试主要考虑程序中的条件判断条件测试主要考虑程序中的条件判断,以期发现条以期发现条件判断内部的错误和程序中其他一些错误。件判断内部的错误和程序中其他一些错误。o程序中程序中“条件条件”分为简单条件和复合条件。简单条分为简单条件和复合条件。简单条件为一个布尔变量或一个关系表达式件为一个布尔变量或一个关系表达式(可能前

19、缀逻可能前缀逻辑非辑非),复合条件由简单条件通过逻辑运算符复合条件由简单条件通过逻辑运算符(OR、AND、NOT)和括号连接而成。和括号连接而成。o因此条件中可能出现的错误类型包括因此条件中可能出现的错误类型包括:布尔运算符布尔运算符错、布尔变量错、括号错、关系运算符错和算术表错、布尔变量错、括号错、关系运算符错和算术表达式错。达式错。o最简单的条件测试是分支测试。最简单的条件测试是分支测试。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院29分支和关系运算测试法分支和关系运算测试法BROo能用少于能用少于2n次测试发现条件中大多数错误次测试发现条件中大多数错误,采用

20、该采用该方法的前提是条件中每个布尔变量和关系运算符至方法的前提是条件中每个布尔变量和关系运算符至多出现一次并无公共变量。多出现一次并无公共变量。oBRO方法引入条件约束的概念方法引入条件约束的概念,含含n个简单条件的个简单条件的复合条件复合条件C之约束之约束D表示为表示为(D1,D2,Dn),Di(0in)一般为某种符号一般为某种符号,它指明简单条件它指明简单条件Ci在在C中出中出现的约束。现的约束。C的一次执行覆盖约束条件的一次执行覆盖约束条件D指,指,C中中出现的每个简单条件出现的每个简单条件Ci在这次执行中都满足在这次执行中都满足D中对中对应的约束应的约束Di。对于一个布尔表达式对于一个

21、布尔表达式,出现约束或为出现约束或为真真(t)或为假或为假(f);对于一个关系表达式对于一个关系表达式,出现约束用出现约束用符号、或表示。符号、或表示。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院30数据流测试法数据流测试法o数据流测试法是根据程序中变量定义和引用的位置数据流测试法是根据程序中变量定义和引用的位置选择测试路径。选择测试路径。o为说明数据流测试法为说明数据流测试法,假设程序中每个语句都被赋假设程序中每个语句都被赋与一个唯一的标号与一个唯一的标号,并且每个函数都不修改其参数并且每个函数都不修改其参数和全局变量和全局变量,对以对以S为标号的语句定义下面两

22、个集合为标号的语句定义下面两个集合:nDEF(S)=X|语句语句S中含中含X的定义的定义nUSE(S)=X|语句语句S中含对中含对X的引用的引用o当当S为分支或循环语句时为分支或循环语句时,DEF集合为空集合为空,USE集合集合由由S所含条件确定。如果从语句所含条件确定。如果从语句S到语句到语句S存在一存在一条路径并且在条路径并且在S中不存在中不存在X的再定义的再定义,则称在则称在S中定中定义的义的X在在S处活跃。处活跃。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院31数据流测试法(续)数据流测试法(续)o定义变量定义变量X的定义的定义引用链引用链(DU链链)为为

23、X,S,S,其中其中S,S为标号为标号,XDEF(S)USE(S)且且S中定中定义的义的X在在S处活跃。处活跃。o一种简单的数据流测试策略即对每条一种简单的数据流测试策略即对每条DU链至少覆链至少覆盖一次盖一次,称为称为DU测试策略测试策略,它对于测试含嵌套它对于测试含嵌套IF语语句和多重循环语句的程序特别有效。句和多重循环语句的程序特别有效。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院32循环测试循环测试o循环是大多数算法的基础循环是大多数算法的基础,循环测试的目的是检查循环测试的目的是检查循环结构的有效性。循环结构的有效性。o循环分为简单循环、并列循环、嵌套循

24、环和非结构循环分为简单循环、并列循环、嵌套循环和非结构循环四类:循环四类:14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院3314.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院34循环测试(续)循环测试(续)o对于最多为对于最多为n次的简单循环次的简单循环,应作下列测试应作下列测试:1)完全跳过循环完全跳过循环;2)仅循环一次仅循环一次;3)循环两次循环两次;4)循环循环m次次,mn;5)分别循环分别循环(n-1)次次,n次次,n+1次。次。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院35循环测试(续)循环测试(续

25、)o对于嵌套循环若生搬硬套简单循环的测试策略。可能使测对于嵌套循环若生搬硬套简单循环的测试策略。可能使测试次数成几何级数增长试次数成几何级数增长,减少测试次数的具体措施包括减少测试次数的具体措施包括:1)从最内层循环开始测试从最内层循环开始测试,此时所有外层循环都取最小值此时所有外层循环都取最小值,内层循环按简单循环的测试策略测试内层循环按简单循环的测试策略测试;2)由里向外由里向外,回退到上一层循环测试回退到上一层循环测试,这层循环的所有外层这层循环的所有外层循环仍取最小值循环仍取最小值,由该层循环嵌套的那些循环取一些典型由该层循环嵌套的那些循环取一些典型值。值。3)继续向外扩展继续向外扩展

26、,直至所有循环测试完毕。直至所有循环测试完毕。o对于并置循环分两种情况对于并置循环分两种情况,若两个循环完全独立若两个循环完全独立,采用简单循采用简单循环的测试策略环的测试策略,反之反之,若第一循环的计数器用作第二循环的初若第一循环的计数器用作第二循环的初值值,即两循环不独立即两循环不独立,需用嵌套循环测试策略测试。需用嵌套循环测试策略测试。o非结构化的循环需按结构化程序设计的思想首先将程序结非结构化的循环需按结构化程序设计的思想首先将程序结构化然后再进行测试。构化然后再进行测试。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院3614.2.2 黑盒测试黑盒测试o黑盒

27、测试旨在测试软件是否满足功能要求黑盒测试旨在测试软件是否满足功能要求,它主要它主要诊断下列几类错误诊断下列几类错误:(1)不正确或遗漏的功能不正确或遗漏的功能;(2)界面错误界面错误;(3)数据结构或外部数据库访问错误数据结构或外部数据库访问错误;(4)性能错误性能错误;(5)初始化和终止条件错误。初始化和终止条件错误。o值得指出的是值得指出的是,黑盒测试法与白盒测试法不能互相黑盒测试法与白盒测试法不能互相替代替代,相反两者应互为补充相反两者应互为补充,在测试的不同阶段为发在测试的不同阶段为发现不同类型的错误而灵活选用。现不同类型的错误而灵活选用。14.2软件测试技术软件测试技术2022-12

28、-17国防科技大学计算机学院371.等价分类法等价分类法o等价分类法的主要思想是把程序的输入数据集合按等价分类法的主要思想是把程序的输入数据集合按输入条件划分为若干个等价类输入条件划分为若干个等价类,每一等价类相对于每一等价类相对于输入条件表示为一组有效或无效的输入输入条件表示为一组有效或无效的输入,然后为每然后为每一等价类设计一个测试用例一等价类设计一个测试用例,这样即可大大减小测这样即可大大减小测试的次数又不丢失发现错误的机会。试的次数又不丢失发现错误的机会。o因此等价分类法的关键是根据输入数据的类型和程因此等价分类法的关键是根据输入数据的类型和程序的功能说明划分等价类。序的功能说明划分等

29、价类。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院38等价分类法等价分类法o常用的一些规则常用的一些规则:(1)如果能为输入条件指定一个范围如果能为输入条件指定一个范围,则可划分出一个有则可划分出一个有效的等价类效的等价类(输入值落在此范围内输入值落在此范围内)和两个无效的等价和两个无效的等价类类(大于最大值的输入和小于最小值的输入大于最大值的输入和小于最小值的输入);(2)如果能为输入条件指定一个特定值如果能为输入条件指定一个特定值,则可类似地划分则可类似地划分出一个有效等价类和两个无效等价类出一个有效等价类和两个无效等价类;(3)如果能为输入条件指定一个集合如

30、果能为输入条件指定一个集合,则可划分出一个有则可划分出一个有效等价类效等价类(此集合此集合)和一个无效等价类和一个无效等价类(此集合的补集此集合的补集);(4)如果能为输入条件指定一个布尔量如果能为输入条件指定一个布尔量,则可划分出一个则可划分出一个有效等价类有效等价类(此布尔量此布尔量)和一个无效布尔量和一个无效布尔量(此布尔量此布尔量之非之非)。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院392.边界值分析法边界值分析法o经验表明经验表明,大多数错误都发生在输入的边界值上。大多数错误都发生在输入的边界值上。为此为此,专门引入边界值分析专门引入边界值分析(Bou

31、ndary Value Analysis)技术技术,旨在选择测试用例旨在选择测试用例,强迫程序在边强迫程序在边界值上执行。界值上执行。oBVA技术是对等价分类技术的补充技术是对等价分类技术的补充,即在一个等价即在一个等价类中不是任选一个元素作为此等价类的代表进行测类中不是任选一个元素作为此等价类的代表进行测试试,而是选择此等价类边界上的值。而是选择此等价类边界上的值。o此外此外,采用采用BVA技术导出测试用例时技术导出测试用例时,不仅要考虑输不仅要考虑输入条件入条件,还要考虑输出的状态。还要考虑输出的状态。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院40边界值分析

32、法边界值分析法o采用采用BVA技术设计测试用例与等价分类法有许多技术设计测试用例与等价分类法有许多相似之处相似之处:1)如果输入条件指定了由值如果输入条件指定了由值a,b括起来的一个范围括起来的一个范围,那么值那么值a、值值b和紧挨和紧挨a、b左右的值应分别作为测试用例左右的值应分别作为测试用例;2)如果输入条件指定为一组数如果输入条件指定为一组数,那么这组数中最大者、最那么这组数中最大者、最小者和次大、次小者应作为测试用例小者和次大、次小者应作为测试用例;3)应用规则应用规则1)、2)于输出条件。例如于输出条件。例如,假设某程序输出为假设某程序输出为一张温度压力对照表一张温度压力对照表,此时

33、应设计测试用例正好产生表项此时应设计测试用例正好产生表项所允许的最大和最小值。所允许的最大和最小值。4)如果内部数据结构是有界的如果内部数据结构是有界的(例如例如,某数组有某数组有100个元个元素素),那么应设计测试数据,使之能检查该数据结构的边那么应设计测试数据,使之能检查该数据结构的边界。界。14.2软件测试技术软件测试技术2022-12-17国防科技大学计算机学院413.对比测试法对比测试法o在一些可靠性要求很高的系统中在一些可靠性要求很高的系统中,经常使用冗余的经常使用冗余的软、硬件软、硬件,以减少错误发生的可能性。以减少错误发生的可能性。o这时这时,不同的软件版本由不同的开发小组根据

34、同一不同的软件版本由不同的开发小组根据同一需求说明书开发需求说明书开发,并用相同的测试数据对它们进行并用相同的测试数据对它们进行测试测试,保持结果一致。保持结果一致。o此后各版本并行执行并实时地比较结果此后各版本并行执行并实时地比较结果,确保系统确保系统的正确性。的正确性。o受此思想起发受此思想起发,许多关键软件,即使最后交付时只许多关键软件,即使最后交付时只要求一个版本要求一个版本,开发时也另外产生一个独立版本供开发时也另外产生一个独立版本供测试使用。这种黑盒测试方法称为对比测试或背靠测试使用。这种黑盒测试方法称为对比测试或背靠背测试背测试14.2软件测试技术软件测试技术2022-12-17

35、国防科技大学计算机学院4214.3 软件测试策略软件测试策略o软件测试策略主要考虑,如何把设计测试用例的技软件测试策略主要考虑,如何把设计测试用例的技术组织成一个系统的、有计划的测试步骤。术组织成一个系统的、有计划的测试步骤。o从模块测试开始从模块测试开始,一级一级向外扩展一级一级向外扩展,直至整个系统直至整个系统测试完毕。测试完毕。o在测试的各个阶段应选择适宜的白盒测试和黑盒测在测试的各个阶段应选择适宜的白盒测试和黑盒测试方法试方法,由软件开发人员和一个独立的测试小组由软件开发人员和一个独立的测试小组(对对大项目而言大项目而言)共同完成测试任务。共同完成测试任务。o测试策略应包含测试规划、测

36、试用例设计、测试实测试策略应包含测试规划、测试用例设计、测试实施和测试结果收集评估等。其中测试规划包括:测施和测试结果收集评估等。其中测试规划包括:测试的步骤、工作量、进度和资源等试的步骤、工作量、进度和资源等第十四章第十四章 软件测试软件测试2022-12-17国防科技大学计算机学院4314.3.1 单元测试单元测试o单元测试的对象是软件设计的最小单位单元测试的对象是软件设计的最小单位模块。模块。o单元测试的依据是详细设计描述,单元测试应对模单元测试的依据是详细设计描述,单元测试应对模块内所有重要的控制路径设计测试用例块内所有重要的控制路径设计测试用例,以便发现以便发现模块内部的错误。模块内

37、部的错误。o单元测试多采用白盒测试技术单元测试多采用白盒测试技术,系统内多个模块可系统内多个模块可以并行地进行测试。以并行地进行测试。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院441.单元测试任务单元测试任务o单元测试任务包括单元测试任务包括:1)模块接口测试模块接口测试;2)模块局部数据结构测试模块局部数据结构测试;3)模块边界条件测试模块边界条件测试;4)模块中所有独立执行通路测试模块中所有独立执行通路测试;5)模块的各条错误处理通路测试。模块的各条错误处理通路测试。o模块接口测试是单元测试的基础。只有在数据能正模块接口测试是单元测试的基础。只有在数据能正确

38、流入、流出模块的前提下确流入、流出模块的前提下,其他测试才有意义其他测试才有意义14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院45测试接口考虑的因素测试接口考虑的因素输入的实际参数与形式参数的个数是否相同输入的实际参数与形式参数的个数是否相同;输入的实际参数与形式参数的属性是否匹配输入的实际参数与形式参数的属性是否匹配;输入的实际参数与形式参数的量纲是否一致输入的实际参数与形式参数的量纲是否一致;调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;调用其他模块时所给实际参数的属性是否与被调模块的形

39、参属性匹配调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;调用预定义函数时所用参数的个数、属性和次序是否正确调用预定义函数时所用参数的个数、属性和次序是否正确;是否存在与当前入口点无关的参数引用是否存在与当前入口点无关的参数引用;是否修改了只读型参数是否修改了只读型参数;对全程变量的定义各模块是否一致对全程变量的定义各模块是否一致;11是否把某些约束作为参数传递。是否把某些约束作为参数传递。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机

40、学院46测试接口考虑的因素(续)测试接口考虑的因素(续)o如果模块内包括外部输入输出如果模块内包括外部输入输出,还应该考虑下列因还应该考虑下列因素素:文件属性是否正确文件属性是否正确;OPEN/CLOSE语句是否正确语句是否正确;格式说明与输入输出语句是否匹配格式说明与输入输出语句是否匹配;缓冲区大小与记录长度是否匹配缓冲区大小与记录长度是否匹配;文件使用前是否已经打开文件使用前是否已经打开;是否处理了文件尾是否处理了文件尾;是否处理了输入是否处理了输入/输出错误输出错误;输出信息中是否有文字性的错误。输出信息中是否有文字性的错误。14.3软件测试策略软件测试策略2022-12-17国防科技大

41、学计算机学院47单元测试的任务(续)单元测试的任务(续)o局部数据结构往往是错误的根源局部数据结构往往是错误的根源,应仔细设计测试应仔细设计测试用例用例,力求发现下面几类错误力求发现下面几类错误:不合适或不相容的类型说明不合适或不相容的类型说明;变量无初值变量无初值;变量初始化或省缺值有错变量初始化或省缺值有错;不正确的变量名不正确的变量名(拚错或不正确地截断拚错或不正确地截断);出现上溢、下溢和地址异常。出现上溢、下溢和地址异常。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院48单元测试的任务(续)单元测试的任务(续)o在模块中应对每一条独立执行路径进行测试在模块

42、中应对每一条独立执行路径进行测试,单元单元测试的基本任务是保证模块中每条语句至少执行一测试的基本任务是保证模块中每条语句至少执行一次。次。o此时设计测试用例是为了发现因错误计算、不正确此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。的比较和不适当的控制流造成的错误。o此时基本路径测试和循环测试是最常用且最有效的此时基本路径测试和循环测试是最常用且最有效的测试技术。测试技术。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院49单元测试的任务(续)单元测试的任务(续)o计算中常见的错误包括计算中常见的错误包括:误解或用错了算符优先级误解或用错

43、了算符优先级;混合类型运算混合类型运算;变量初值错变量初值错;精度不够精度不够;表达式符号错。表达式符号错。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院50单元测试的任务(续)单元测试的任务(续)o比较判断与控制流常常紧密相关比较判断与控制流常常紧密相关,测试用例还应致测试用例还应致力于发现下列错误力于发现下列错误:不同数据类型的对象之间进行比较不同数据类型的对象之间进行比较;错误地使用逻辑运算符或优先级错误地使用逻辑运算符或优先级;因计算机表示的局限性,期望理论上相等而实际上不相因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等等的两个量相等;比较运

44、算或变量出错比较运算或变量出错;循环终止条件不合适或不可能出现循环终止条件不合适或不可能出现;迭代发散时不能退出迭代发散时不能退出;错误地修改了循环变量。错误地修改了循环变量。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院51单元测试的任务(续)单元测试的任务(续)o一个好的设计应能预见各种出错条件一个好的设计应能预见各种出错条件,并预设各种并预设各种错误处理通路错误处理通路,错误处理通路同样需要认真测试错误处理通路同样需要认真测试,测测试应着重检查下列问题试应着重检查下列问题:输出的错误信息难以理解输出的错误信息难以理解;记录的错误与实际遇到的错误不相符记录的错误

45、与实际遇到的错误不相符;在程序自定义的错误处理段运行之前在程序自定义的错误处理段运行之前,系统已介入系统已介入;异常处理不当异常处理不当;错误陈述中未能提供足够的定位错误信息。错误陈述中未能提供足够的定位错误信息。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院522.单元测试过程单元测试过程o一般认为单元测试应紧接在编码之后一般认为单元测试应紧接在编码之后,当源程序编当源程序编制完成并通过复审和编译检查制完成并通过复审和编译检查,便可开始单元测试。便可开始单元测试。o测试用例的设计应与复审工作相结合测试用例的设计应与复审工作相结合,根据设计信根据设计信息选取测试数据

46、息选取测试数据,将增大发现上述各类错误的可能将增大发现上述各类错误的可能性。性。o在确定测试用例的同时,应给出对应的期望结果。在确定测试用例的同时,应给出对应的期望结果。o应为测试模块开发一个驱动模块应为测试模块开发一个驱动模块(driver)和和(或或)若干个桩模块若干个桩模块(stub)。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院53单元测试环境单元测试环境14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院54单元测试过程(续)单元测试过程(续)o驱动模块和桩模块是测试使用的软件驱动模块和桩模块是测试使用的软件,而不是软件而不是软件产

47、品的组成部分产品的组成部分,但它需要一定的开发费用。但它需要一定的开发费用。o若驱动模块和桩模块比较简单若驱动模块和桩模块比较简单,实际开销相对低些。实际开销相对低些。o仅用简单的驱动模块和桩模块不能完成某些模块的仅用简单的驱动模块和桩模块不能完成某些模块的测试任务测试任务,这些模块的单元测试只能采用下面讨论这些模块的单元测试只能采用下面讨论的综合测试方法。的综合测试方法。o提高模块的内聚度可简化单元测试提高模块的内聚度可简化单元测试,如果每个模块如果每个模块只完成一个功能只完成一个功能,所需测试用例数目将显著减少所需测试用例数目将显著减少,模模块中的错误也更容易发现。块中的错误也更容易发现。

48、14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院5514.3.2 综合测试综合测试o综合测试是组装软件的系统测试技术综合测试是组装软件的系统测试技术,按设计要求按设计要求把通过单元测试的各个模块组装在一起之后把通过单元测试的各个模块组装在一起之后,进行进行综合测试以便发现与接口有关的各种错误。综合测试以便发现与接口有关的各种错误。o某些软件设计人员习惯于把所有模块按设计要求一某些软件设计人员习惯于把所有模块按设计要求一次全部组装起来次全部组装起来,然后进行整体测试然后进行整体测试,这称为非增量这称为非增量式集成。这种方法容易出现混乱。式集成。这种方法容易出现混乱。o与

49、之相反的是增量式集成方法与之相反的是增量式集成方法,程序一段一段地扩程序一段一段地扩展展,测试的范围一步一步地增大测试的范围一步一步地增大,错误易于定位和纠错误易于定位和纠正正,界面的测试亦可做到完全彻底。界面的测试亦可做到完全彻底。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院561.自顶向下集成自顶向下集成o自顶向下集成是构造程序结构的一种增量式方式自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始它从主控模块开始,按照软件的控制层次结构按照软件的控制层次结构,以深以深度优先或广度优先的策略度优先或广度优先的策略,逐步把各个模块集成在逐步把各个模块集成

50、在一起。一起。o深度优先策略首先把主控制路径上的模块集成在一深度优先策略首先把主控制路径上的模块集成在一起起,至于选择哪一条路径作为主控制路径多少带点至于选择哪一条路径作为主控制路径多少带点随意性随意性,一般根据问题的特性确定。一般根据问题的特性确定。14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院57例:例:14.3软件测试策略软件测试策略2022-12-17国防科技大学计算机学院58步骤步骤1)以主控模块作为测试驱动模块以主控模块作为测试驱动模块,把对主控模块进行单元把对主控模块进行单元测试时引入的所有桩模块用实际模块替代测试时引入的所有桩模块用实际模块替代;2)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件工程-齐志昌版(14)课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|