软件工程第七章实现.ppt

上传人:wuy****n92 文档编号:69725018 上传时间:2023-01-08 格式:PPT 页数:115 大小:1.12MB
返回 下载 相关 举报
软件工程第七章实现.ppt_第1页
第1页 / 共115页
软件工程第七章实现.ppt_第2页
第2页 / 共115页
点击查看更多>>
资源描述

《软件工程第七章实现.ppt》由会员分享,可在线阅读,更多相关《软件工程第七章实现.ppt(115页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、信息科学与技术学院 闵笛软件工程软件工程第第7章章 实现实现v7.1 编码编码v7.2 软件测试基础软件测试基础v7.3 单元测试单元测试v7.4 集成测试集成测试v7.5 确认测试确认测试v7.6 白盒测试技术白盒测试技术v7.7 黑盒测试技术黑盒测试技术v7.8 调试调试v7.9 软件可靠性软件可靠性v7.10 小结小结信息科学与技术学院 闵笛软件工程软件工程重点和难点重点和难点v结构化程序设计的原则和风格结构化程序设计的原则和风格v软件测试的目的和原则软件测试的目的和原则v白盒测试、黑盒测试的定义白盒测试、黑盒测试的定义v熟练掌握白盒测试中各种逻辑覆盖的基本思想熟练掌握白盒测试中各种逻辑

2、覆盖的基本思想v熟练掌握黑盒测试中等价划分、边界值分析方法熟练掌握黑盒测试中等价划分、边界值分析方法v软件测试策略中单元测试、组装测试、确认测试和软件测试策略中单元测试、组装测试、确认测试和系统测试的相关概念及方法系统测试的相关概念及方法v程序调试步骤和几种程序调试方法、过程程序调试步骤和几种程序调试方法、过程信息科学与技术学院 闵笛软件工程软件工程7.1 编码编码v7.1.1 选择程序设计语言选择程序设计语言v程序设计语言的分类程序设计语言的分类v从软件工程的角度,根据程序设计语言发展从软件工程的角度,根据程序设计语言发展的历程,大致分为的历程,大致分为 4 类:类:v第一代语言:从属于机器

3、的语言第一代语言:从属于机器的语言v第二代语言:汇编语言第二代语言:汇编语言v第三代语言:高级程序设计语言第三代语言:高级程序设计语言v第四代语言(第四代语言(4GL)信息科学与技术学院 闵笛软件工程软件工程选择语言的标准选择语言的标准v系统用户的要求系统用户的要求v可以使用的编译程序可以使用的编译程序v可以得到的软件工具可以得到的软件工具v工程规模工程规模v程序员的知识程序员的知识v软件的可移植性要求软件的可移植性要求v软件的应用领域软件的应用领域项目应用领域是最关键的因素项目应用领域是最关键的因素信息科学与技术学院 闵笛软件工程软件工程科学工程计算科学工程计算FORTRAN、Pascal、

4、C语言语言 数据处理与应用数据处理与应用COBOL、SQL、4GL实时处理和系统实时处理和系统汇编语言和汇编语言和Ada语言语言系统软件系统软件汇编语言、汇编语言、C语言、语言、Ada语言语言人工智能人工智能Prolog、lisp语言语言面向对象的语言面向对象的语言C+、JAVA可视化可视化Visual Basic、Visual C+、Visual Foxpro、Delphi信息科学与技术学院 闵笛软件工程软件工程7.1.2 编码风格编码风格v编码风格是指一个人编制程序时所表现出来编码风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。的特点、习惯、逻辑思路等。v良好编码风格包括:良好

5、编码风格包括:v程序内部应该有很好的文档:程序内部应该有很好的文档:如标识符、注如标识符、注释良好,程序文档结构易读易理解。释良好,程序文档结构易读易理解。v数据说明应易于理解和维护数据说明应易于理解和维护v语句结构尽可能简单直观语句结构尽可能简单直观v输入输出风格遵守人机界面设计准则输入输出风格遵守人机界面设计准则v效率满足用户需求即可效率满足用户需求即可信息科学与技术学院 闵笛软件工程软件工程vv1 1程序内部文档程序内部文档程序内部文档程序内部文档vv序言性注释序言性注释序言性注释序言性注释:通常置于每个程序模块的开头部分,它应当通常置于每个程序模块的开头部分,它应当给出程序的整体说明给

6、出程序的整体说明给出程序的整体说明给出程序的整体说明,对于理解程序本身具,对于理解程序本身具有引导作用。有关项目包括:有引导作用。有关项目包括:v程序标题程序标题;v有关本模块有关本模块功能和目的的说明功能和目的的说明;v主要算法主要算法;v接口说明接口说明:包括调用形式,参数描述;:包括调用形式,参数描述;v有关数据描述有关数据描述:重要的变量及其用途,约:重要的变量及其用途,约束或限制条件,以及其它有关信息;束或限制条件,以及其它有关信息;v开发简历开发简历:模块设计者,复审者,复审日:模块设计者,复审者,复审日期,修改日期及有关说明等。期,修改日期及有关说明等。信息科学与技术学院 闵笛软

7、件工程软件工程v2数据说明数据说明命名规范命名规范v标识符,包括模块名、变量名、常量名、标标识符,包括模块名、变量名、常量名、标号名、子程序名、数据区名以及缓冲区名等。号名、子程序名、数据区名以及缓冲区名等。v一个系统的命名必须一个系统的命名必须一致一致一致一致。比如采用匈牙利。比如采用匈牙利命名法。例:命名法。例:pstrNamev选用具有选用具有实际含义实际含义的标示符,以利于对标识的标示符,以利于对标识符的理解符的理解v为了便于程序的输入,标识符的名字为了便于程序的输入,标识符的名字不宜过不宜过长长。v为了便于区分,不同的标识符为了便于区分,不同的标识符不要取过于相不要取过于相似似的名字

8、。如的名字。如student和和students易在使用或易在使用或阅读时才生混淆。阅读时才生混淆。信息科学与技术学院 闵笛软件工程软件工程v3 语句的构造语句的构造v书写格式书写格式最好在一行上只书写一条语句。最好在一行上只书写一条语句。最好在一行上只书写一条语句。最好在一行上只书写一条语句。v例如,有一段排序程序例如,有一段排序程序FOR I:=1 TO N1 DO BEGIN T:=I;FOR J:=I1 TO N DO IF AJAT THEN T:=J;IF TI THEN BEGIN WORK:=AT;AT:=AI;AI:=WORK;END END;v由于一行中包括了多个语句,掩盖

9、了程序的由于一行中包括了多个语句,掩盖了程序的循环结构和条件结构,使其可读性变得很差。循环结构和条件结构,使其可读性变得很差。举例:举例:信息科学与技术学院 闵笛软件工程软件工程v FOR I:=1 TO N-1 DO /改进布局改进布局 BEGIN T:=I;FOR J:=I1 TO N DO IF AJAT THEN T:=J;IF TI THEN BEGIN WORK:=AT;AT:=AI;AI:=WORK;END END;信息科学与技术学院 闵笛软件工程软件工程v书写格式(续)书写格式(续)在书写语句时,应通过采用递缩式格式使程在书写语句时,应通过采用递缩式格式使程在书写语句时,应通过

10、采用递缩式格式使程在书写语句时,应通过采用递缩式格式使程序的层次更加清晰。序的层次更加清晰。序的层次更加清晰。序的层次更加清晰。v例如:两重嵌套的选择结构嵌套,写成下面例如:两重嵌套的选择结构嵌套,写成下面的递缩形式,层次就清楚得多的递缩形式,层次就清楚得多v IF()THEN IF()THEN ELSE ENDIF ELSE ENDIF 信息科学与技术学院 闵笛软件工程软件工程v4 输入输入/输出输出输入输入v尽可能采用尽可能采用简单简单的输入格式,减少用户的输入的输入格式,减少用户的输入量。量。v交互式输入数据时交互式输入数据时应有必要的提示应有必要的提示。如:。如:“请请输入待查职工的编

11、号输入待查职工的编号(5位数字位数字0000199999)”v程序应对输入数据的程序应对输入数据的合法性进行检查合法性进行检查。v若用户输入某些数据后可能会产生严重后果,若用户输入某些数据后可能会产生严重后果,应给用户输出必要的提示并在必要时要求用户确应给用户输出必要的提示并在必要时要求用户确认。如:认。如:“清库会使库中原有数据全部丢失,真清库会使库中原有数据全部丢失,真的需要清库吗?的需要清库吗?(Y/N)”v应根据用户和系统特点设计令用户满意的输入应根据用户和系统特点设计令用户满意的输入方式。方式。信息科学与技术学院 闵笛软件工程软件工程5.从三个方面考虑效率问题:从三个方面考虑效率问题

12、:v程序运行的时间程序运行的时间v存储器效率存储器效率大型机要考虑操作系统页式调度的特点;大型机要考虑操作系统页式调度的特点;微型机可考虑使用最小的存储单元;微型机可考虑使用最小的存储单元;提高存储器效率的关键是程序的简单性。提高存储器效率的关键是程序的简单性。v输入输出的效率输入输出的效率简单清晰是提高人机通信效率的关键;简单清晰是提高人机通信效率的关键;硬件间通信也有一些原则要遵循。硬件间通信也有一些原则要遵循。信息科学与技术学院 闵笛软件工程软件工程7.2 软件测试的基础软件测试的基础v什么是软件测试?什么是软件测试?v是为了发现错误而执行程序的过程。是为了发现错误而执行程序的过程。v发

13、现错误是为了更正错误,最终得到一个高发现错误是为了更正错误,最终得到一个高质量的软件系统。质量的软件系统。v软件测试的对象软件测试的对象:整个软件定义、开发周期:整个软件定义、开发周期的产品的产品v测试用例测试用例:通常指测试数据和预期的输出结:通常指测试数据和预期的输出结果果信息科学与技术学院 闵笛软件工程软件工程7.2.1 软件测试的目标软件测试的目标v软件测试存在的矛盾软件测试存在的矛盾v用户希望通过软件测试暴露软件中隐藏的错用户希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。误和缺陷,以考虑是否可接受该产品。v软件开发者希望通过软件测试表明软件产品软件开发者希望通过

14、软件测试表明软件产品中不存在错误,已正确地实现了用户的要求。中不存在错误,已正确地实现了用户的要求。信息科学与技术学院 闵笛软件工程软件工程G.Myers给出的软件测试目的给出的软件测试目的v测试是为了发现错误而执行程序的过程测试是为了发现错误而执行程序的过程v好的测试用例是极可能发现至今为止尚未发现的错好的测试用例是极可能发现至今为止尚未发现的错误的测试方案;误的测试方案;v成功的测试是发现了至今未发现的错误的测试成功的测试是发现了至今未发现的错误的测试v总之,测试的目的是以最少的时间和人力,系统地总之,测试的目的是以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷;测试附带的收找出软

15、件中潜在的各种错误和缺陷;测试附带的收获是它能证明软件的功能和性能与需求说明相符合。获是它能证明软件的功能和性能与需求说明相符合。v注意:测试不能表明软件中不存在错误,它只能说注意:测试不能表明软件中不存在错误,它只能说明软件中存在错误。明软件中存在错误。信息科学与技术学院 闵笛软件工程软件工程7.2.2 软件测试的准则软件测试的准则(1)v1)所有测试都能追溯到用户需求)所有测试都能追溯到用户需求 v2)应该远在测试开始之前就制定出测试计划)应该远在测试开始之前就制定出测试计划 v3)应该把)应该把 Pareto原理应用到软件测试中原理应用到软件测试中群集现象:群集现象:80 的错误可能是由

16、的错误可能是由 20 的模块造成的的模块造成的v 4)从)从“小规模小规模”测试开始,逐步过渡到测试开始,逐步过渡到“大规模大规模”测试测试 v5)穷举测试是不可能的)穷举测试是不可能的测试只能证明程序有错,不能证明程序没有错误测试只能证明程序有错,不能证明程序没有错误 v6)应由独立的第三方从事测试工作)应由独立的第三方从事测试工作信息科学与技术学院 闵笛软件工程软件工程7.2.3 测试方法测试方法v软件测试方法一般分为:静态测试和动态测软件测试方法一般分为:静态测试和动态测试。试。v静态测试静态测试是指被测程序不在机器上运行,采是指被测程序不在机器上运行,采用人工检测和计算机辅助静态分析的

17、手段对用人工检测和计算机辅助静态分析的手段对程序进行检测。程序进行检测。v动态测试动态测试是指通过运行程序发现错误,又分是指通过运行程序发现错误,又分黑盒法黑盒法和和白盒法白盒法两种。两种。信息科学与技术学院 闵笛软件工程软件工程两种动态测试方法两种动态测试方法v已知产品应该具有的功能,可以通过已知产品应该具有的功能,可以通过黑盒测黑盒测试试来检验每个功能是否符合设计要求。来检验每个功能是否符合设计要求。v已知产品的内部工作过程,可以通过已知产品的内部工作过程,可以通过白盒法白盒法来检验每种内部操作是否按要求的规定正常来检验每种内部操作是否按要求的规定正常进行。进行。信息科学与技术学院 闵笛软

18、件工程软件工程7.2.4 测试步骤测试步骤v测试的测试的 4 个步骤:个步骤:v单元(模块)测试单元(模块)测试v集成测试(子系统和系统测试)集成测试(子系统和系统测试)v确认(验收)测试确认(验收)测试v平行运行平行运行信息科学与技术学院 闵笛软件工程软件工程单元测试:检查各各程序模块是否有错误,单元测试:检查各各程序模块是否有错误,能发现编码和详细设计的错误能发现编码和详细设计的错误。集成测试:测试模块(子系统)接口,发集成测试:测试模块(子系统)接口,发现软件设计和需求说明的错误。现软件设计和需求说明的错误。平行测试:同时运行新、旧系统平行测试:同时运行新、旧系统确认测试:检查软件是否满

19、足用户的确认测试:检查软件是否满足用户的需要以及文档资料是否完整、准确需要以及文档资料是否完整、准确信息科学与技术学院 闵笛软件工程软件工程v测试与软件开发各阶段的关系测试与软件开发各阶段的关系v软件开发过程是一个自顶向下,逐步细化软件开发过程是一个自顶向下,逐步细化的过程的过程v软件测试则是依相反顺序自底向上,逐步软件测试则是依相反顺序自底向上,逐步集成的过程。集成的过程。信息科学与技术学院 闵笛软件工程软件工程7.2.5 测试阶段的信息流测试阶段的信息流测试过程需要二类输入软件配置:软件需求规格说明、软件软件配置:软件需求规格说明、软件设计规格说明、源代码等;设计规格说明、源代码等;测试配

20、置:测试计划、测试用例、测试配置:测试计划、测试用例、测试程序等;测试程序等;信息科学与技术学院 闵笛软件工程软件工程7.3 单元测试(单元测试(Unit Testing)v又称模块测试,需要从程序的内部结构出发又称模块测试,需要从程序的内部结构出发设计测试用例。设计测试用例。v测试目的:发现模块内部可能存在的差错测试目的:发现模块内部可能存在的差错v测试依据:详细设计说明书和源程序清单测试依据:详细设计说明书和源程序清单v测试方法:白盒测试为主,黑盒测试为辅,测试方法:白盒测试为主,黑盒测试为辅,多个模块并行进行。多个模块并行进行。信息科学与技术学院 闵笛软件工程软件工程7.3.1 测试重点

21、测试重点信息科学与技术学院 闵笛软件工程软件工程 模块接口测试模块接口测试v在单元测试的开始,应对通过被测模块的数在单元测试的开始,应对通过被测模块的数据流进行测试。据流进行测试。v测试项目:测试项目:调用本模块的输入参数是否正确;调用本模块的输入参数是否正确;本模块调用子模块时,输入给子模块的参数是否本模块调用子模块时,输入给子模块的参数是否正确;正确;输出给标准函数的参数是否正确;输出给标准函数的参数是否正确;全局量的定义和用法在各摸块中是否一致;全局量的定义和用法在各摸块中是否一致;与外部设备的输入输出是否正确。与外部设备的输入输出是否正确。信息科学与技术学院 闵笛软件工程软件工程 局部

22、数据结构测试局部数据结构测试v测试项目:测试项目:不正确或不一致的数据类型说明不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值错误的初始值或错误的缺省值变量名拼写错或书写错变量名拼写错或书写错不一致的数据类型不一致的数据类型全局数据对模块的影响全局数据对模块的影响信息科学与技术学院 闵笛软件工程软件工程 重要的执行通路测试重要的执行通路测试v测试用例要适当测试用例要适当:关键关键信息科学与技术学院 闵笛软件工程软件工程 错误处理测试错误处理测试v着重测试以下可能发生的错误:着重测试以下可能发生的错误:出错的措述是否难以理解出错的

23、措述是否难以理解出错的描述是否能够对错误定位出错的描述是否能够对错误定位显示的错误与实际的错误是否相符显示的错误与实际的错误是否相符对错误条件的处理正确与否对错误条件的处理正确与否在对错误进行处理之前,错误条件是否已经引起在对错误进行处理之前,错误条件是否已经引起系统的干预等系统的干预等信息科学与技术学院 闵笛软件工程软件工程 边界测试边界测试v重点检查刚好等于、大于或小于边界值的数重点检查刚好等于、大于或小于边界值的数据据;v对运行时间有要求的模块,还要专门进行关对运行时间有要求的模块,还要专门进行关键路径测试,以确定最坏情况下和平均意义键路径测试,以确定最坏情况下和平均意义下影响模块运行时

24、间的因素。下影响模块运行时间的因素。信息科学与技术学院 闵笛软件工程软件工程7.3.2 代码审查代码审查v人工测试源程序。人工测试源程序。v参与者参与者:程序的设计者、编写者、测试者没:程序的设计者、编写者、测试者没有直接参与系统开发,但有力的程序员。有直接参与系统开发,但有力的程序员。v方法:方法:研究设计说明书,一起审查程序代码研究设计说明书,一起审查程序代码如何实现设计,从中发现问题。如何实现设计,从中发现问题。v注意:注意:通常代码审查和机器测试结合使用。通常代码审查和机器测试结合使用。信息科学与技术学院 闵笛软件工程软件工程7.3.3 计算机测试计算机测试v单元测试通常在编码阶段进行

25、。常用单元测试通常在编码阶段进行。常用机器测机器测试试,即通过运行模块发现问题。,即通过运行模块发现问题。v两个重要概念:两个重要概念:v驱动程序(驱动程序(driver):相当于被测试模块的:相当于被测试模块的“主程序主程序”,接收测试数据,把这些数据传,接收测试数据,把这些数据传送给被测试的模块,并且输出相关结果。送给被测试的模块,并且输出相关结果。v存根程序(存根程序(stub):):代替被测试模块代替被测试模块所调用所调用的模块。不需要具有子模块所有功能,但不的模块。不需要具有子模块所有功能,但不允许什么事情也不做。允许什么事情也不做。信息科学与技术学院 闵笛软件工程软件工程单元测试的

26、测试环境单元测试的测试环境信息科学与技术学院 闵笛软件工程软件工程正文加工系统功能结构图正文加工系统功能结构图v若要测试若要测试“编辑子系统编辑子系统”,需要上层,需要上层“驱动驱动模块模块”和下层和下层“存根程序存根程序”信息科学与技术学院 闵笛软件工程软件工程7.4 集成测试(集成测试(Integrated Testing)v在单元测试之后,将模块组装成系统,为发现并排在单元测试之后,将模块组装成系统,为发现并排除模块在连接中可能出现的问题,而进行的测试。除模块在连接中可能出现的问题,而进行的测试。v需要考虑:需要考虑:模块连接时穿越模块接口的数据是否会模块连接时穿越模块接口的数据是否会

27、丢失;丢失;一个模块对另一个模块是否会产生不利的影响;一个模块对另一个模块是否会产生不利的影响;各子功能组合起来,能各子功能组合起来,能 否达到预期要求的父功能否达到预期要求的父功能全局数据结构是否有问题;全局数据结构是否有问题;单个模块的误差累积起来,是单个模块的误差累积起来,是 否会放大至不能接受的程否会放大至不能接受的程度。度。信息科学与技术学院 闵笛软件工程软件工程集成测试的两种方式集成测试的两种方式v 非渐增式组装方式非渐增式组装方式v对每个模块分别进行单元测试,再把所有模对每个模块分别进行单元测试,再把所有模块组装成一个完整的系统进行的测试,从而块组装成一个完整的系统进行的测试,从

28、而得到要求的软件系统。得到要求的软件系统。v 渐增式组装方式渐增式组装方式v先对模块进行单元测试,然后将测试后的模先对模块进行单元测试,然后将测试后的模块逐步组装成较大的系统;在组装的过程中块逐步组装成较大的系统;在组装的过程中边连接边测试,以发现连接过程中产生的问边连接边测试,以发现连接过程中产生的问题;最后组装成为要求的软件系统。题;最后组装成为要求的软件系统。信息科学与技术学院 闵笛软件工程软件工程渐增式组装方式的三种类型渐增式组装方式的三种类型v自顶向下的渐增方式自顶向下的渐增方式v自底向上结合的渐增方式自底向上结合的渐增方式v混合渐增测试混合渐增测试信息科学与技术学院 闵笛软件工程软

29、件工程自顶向下的渐增方式自顶向下的渐增方式v将模块按系统程序结构,沿控制层次自顶向将模块按系统程序结构,沿控制层次自顶向下进行组装。下进行组装。v不需要驱动模块不需要驱动模块,需要存根模块需要存根模块v深度优先深度优先v宽度优先宽度优先信息科学与技术学院 闵笛软件工程软件工程深度优先组装的例子深度优先组装的例子信息科学与技术学院 闵笛软件工程软件工程组装步骤组装步骤v1)对主模块进行测试,用存根模块代替下)对主模块进行测试,用存根模块代替下层模块;层模块;v 2)根据选定的结合策略,每次用一个实际)根据选定的结合策略,每次用一个实际模块代替一个桩模块;模块代替一个桩模块;v3)在结合进一个模块

30、的同时进行测试;)在结合进一个模块的同时进行测试;v4)为保证加入的模块没有引进新的错误,)为保证加入的模块没有引进新的错误,可能需要进行回归测试可能需要进行回归测试信息科学与技术学院 闵笛软件工程软件工程v优点优点:v能在早期验证主要的控制和判断点。能在早期验证主要的控制和判断点。v选用按深度方向组装的方式,可以首先实现选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。和验证一个完整的软件功能。v缺点缺点:v可能遇到逻辑次序上的问题可能遇到逻辑次序上的问题信息科学与技术学院 闵笛软件工程软件工程自底向上的增殖方式自底向上的增殖方式v从程序模块结构最底层的模块开始组装和测试。从程

31、序模块结构最底层的模块开始组装和测试。v不再需要存根程序,需要驱动模块。不再需要存根程序,需要驱动模块。v组合策略:组合策略:1.把低层模块组合成实现某个特定的软件子功能的族;把低层模块组合成实现某个特定的软件子功能的族;2.用驱动程序协调测试数据的输入和输出用驱动程序协调测试数据的输入和输出;3.对由模块组成的子功能族进行测试对由模块组成的子功能族进行测试;4.去掉驱动程序去掉驱动程序,没软件结构自下向上移动没软件结构自下向上移动,把子功能把子功能族组合起来形成更大的子功能族。族组合起来形成更大的子功能族。信息科学与技术学院 闵笛软件工程软件工程自底向上组合测试的例子自底向上组合测试的例子信

32、息科学与技术学院 闵笛软件工程软件工程回归测试回归测试v思考:思考:采用采用“渐增式测试渐增式测试”时,测试中当新时,测试中当新的模块结合进来之后,是否需要对程序进行的模块结合进来之后,是否需要对程序进行再次测试?再次测试?v定义:定义:指集成测试中,重新执行已经做过测指集成测试中,重新执行已经做过测试的某个子集,以保证上述这些变化没有带试的某个子集,以保证上述这些变化没有带来非预期的副作用。来非预期的副作用。v先采取自顶向下的方式测试被修改的模块及先采取自顶向下的方式测试被修改的模块及其子模块;然后将这一部分视为子系统,再其子模块;然后将这一部分视为子系统,再自底向上测试。自底向上测试。信息

33、科学与技术学院 闵笛软件工程软件工程混合策略混合策略v1)衍变的自顶向下的增殖测试)衍变的自顶向下的增殖测试v先对输入输出模块和引入新算法模块进行先对输入输出模块和引入新算法模块进行测试;测试;v再自底向上组装成为功能相当完整且相对独再自底向上组装成为功能相当完整且相对独立的子系统;立的子系统;v然后由主模块开始自顶向下进行增殖测试。然后由主模块开始自顶向下进行增殖测试。信息科学与技术学院 闵笛软件工程软件工程2)自底向上一自顶向下的增殖测试)自底向上一自顶向下的增殖测试v先对含读操作的子系统自底向上直至根结点先对含读操作的子系统自底向上直至根结点模块进行组装和测试;模块进行组装和测试;v再对

34、含写操作的子系统做自顶向下的组装与再对含写操作的子系统做自顶向下的组装与测试。测试。信息科学与技术学院 闵笛软件工程软件工程7.5 确认测试确认测试v又称有效性测试。验证软件的功能、性能又称有效性测试。验证软件的功能、性能及其它特性是否与用户的要求一致。及其它特性是否与用户的要求一致。v确认测试的基础确认测试的基础:软件需求规格说明书:软件需求规格说明书v确认测试的主要工作确认测试的主要工作:有效性测试与软件:有效性测试与软件配置审查配置审查v主要参与人员主要参与人员:以用户为主:以用户为主信息科学与技术学院 闵笛软件工程软件工程确认测试的步骤确认测试的步骤信息科学与技术学院 闵笛软件工程软件

35、工程7.5.1 确认测试范围确认测试范围v通常采用黑盒测试,验证被测软件是否满足用户需求。通常采用黑盒测试,验证被测软件是否满足用户需求。v测试计划测试计划:包括测试种类及进度安排;:包括测试种类及进度安排;v测试步骤测试步骤:描述具体的测试用例:描述具体的测试用例v测试目的测试目的:确定软件的特性是否与需求相符;:确定软件的特性是否与需求相符;v 所有的文档都是正确且便于使用;所有的文档都是正确且便于使用;v 其它软件需求。其它软件需求。v测试结果测试结果:与预期的结果相符;:与预期的结果相符;v 与预期的结果不符:要提交一份问题报告。与预期的结果不符:要提交一份问题报告。信息科学与技术学院

36、 闵笛软件工程软件工程7.5.2 软件配置复查软件配置复查v目的:目的:保证软件配置的所有成分都齐全;保证软件配置的所有成分都齐全;v 各方面的质量都符合要求;各方面的质量都符合要求;v 具有维护阶段所必需的细节;具有维护阶段所必需的细节;v 而且已经编排好分类的目录。而且已经编排好分类的目录。v应当严格遵守用户手册和操作手册中规定的应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性使用步骤,以便检查这些文档资料的完整性和正确性。和正确性。信息科学与技术学院 闵笛软件工程软件工程7.5.3 测试和测试和测试测试v适用:为多个用户开发的软件适用:为多个用户开发的软件 v

37、测试测试:由用户在开发环境下进行的测试。:由用户在开发环境下进行的测试。v主要评价软件产品的主要评价软件产品的:FLURPS(即功能、局即功能、局域化、可使用性、可靠性、性能和支持)域化、可使用性、可靠性、性能和支持)v测试测试:由最终用户在实际使用环境下进行:由最终用户在实际使用环境下进行的测试,这些用户定期返回有关错误信息的测试,这些用户定期返回有关错误信息给开发者。给开发者。v注意:注意:只有当只有当测试达到一定的可靠程度时,测试达到一定的可靠程度时,才开始才开始 测试。测试。信息科学与技术学院 闵笛软件工程软件工程7.6 白盒测试技术白盒测试技术v白盒测试执行的要求:白盒测试执行的要求

38、:v对程序模块的所有独立的执行路径至少测试对程序模块的所有独立的执行路径至少测试一次一次 v对所有的逻辑判定,取对所有的逻辑判定,取“真真”与取与取“假假”的的两种情况都至少测试一次;两种情况都至少测试一次;v在循环的边界和运行界限内执行循环体;在循环的边界和运行界限内执行循环体;v测试内部数据结构的有效性。测试内部数据结构的有效性。信息科学与技术学院 闵笛软件工程软件工程7.6.1 逻辑覆盖逻辑覆盖v逻辑覆盖是以程序内部的逻辑结构为基础设逻辑覆盖是以程序内部的逻辑结构为基础设计测试用例的技术。计测试用例的技术。语句覆盖语句覆盖判定覆盖判定覆盖条件覆盖条件覆盖判定一条件覆盖判定一条件覆盖条件组

39、合覆盖条件组合覆盖点覆盖点覆盖边覆盖边覆盖路径覆盖路径覆盖信息科学与技术学院 闵笛软件工程软件工程图7.5被测试模块的流程图图图7.5 被被测试测试模模块块的流程的流程图图信息科学与技术学院 闵笛软件工程软件工程语句覆盖:使得每一可执行语句至少执行一次语句覆盖:使得每一可执行语句至少执行一次测试数据(测试数据(X任意实数):任意实数):A=2,B=0,X=4信息科学与技术学院 闵笛软件工程软件工程判定覆盖:判定覆盖:运行被测程序,使得运行被测程序,使得运行被测程序,使得运行被测程序,使得程序中每个判断的取程序中每个判断的取程序中每个判断的取程序中每个判断的取真分支和取假分支至少经历一次真分支和

40、取假分支至少经历一次真分支和取假分支至少经历一次真分支和取假分支至少经历一次。测试数据:测试数据:A=3,B=0,X=3(覆盖(覆盖1)A=2,B=1,X=1(覆盖(覆盖2)满足判定覆盖的测试用例一满足判定覆盖的测试用例一定满足语句覆盖。定满足语句覆盖。信息科学与技术学院 闵笛软件工程软件工程条件覆盖:条件覆盖:使得程序中使得程序中使得程序中使得程序中每个判断的每个条件的可能取每个判断的每个条件的可能取每个判断的每个条件的可能取每个判断的每个条件的可能取值至少执行一次值至少执行一次值至少执行一次值至少执行一次。选取测试数据使得选取测试数据使得a点点可能结果可能结果:A1,A1,B=0,B0B点

41、可能结果点可能结果:A=2,A2,X1,X1选择用例:选择用例:A=2,B=0,X=4(路径:(路径:sacbed)A=1,B=1,X=1(路径:(路径:sabd)信息科学与技术学院 闵笛软件工程软件工程判定判定/条件覆盖条件覆盖v判定条件覆盖就是设计足判定条件覆盖就是设计足够的测试用例,使得够的测试用例,使得判断中判断中每个条件的所有可能取值至每个条件的所有可能取值至少执行一次少执行一次,每个判断中的每个判断中的每个分支至少执行一次每个分支至少执行一次。v同时满足判断覆盖和条件覆盖。同时满足判断覆盖和条件覆盖。v应满足以下覆盖情况:应满足以下覆盖情况:v 条件条件:A1,A1,B=0,B0v

42、 A=2,A2,X1,X1v 应执行路径:应执行路径:v 或:或:v v选择用例:选择用例:v (2,0,4),(2,0,3)(1,1,1),(1,1,1)信息科学与技术学院 闵笛软件工程软件工程vv测测 试试 用用 例例 覆盖分支覆盖分支 条件取值条件取值vv【(2,0,4),(2,0,3)】L1(c,e)vv【(1,1,1),(1,1,1)】L2(b,d)(A=2)and(B=0)or (A1)and(B=0)and(X/A1)not(A1)and not(A=2)and not(X1)or not(B=0)and not(A=2)and not(X1)信息科学与技术学院 闵笛软件工程软件

43、工程5.条件组合覆盖条件组合覆盖vv条件组合覆盖就是设计足够的测试用例,条件组合覆盖就是设计足够的测试用例,运行被测程序,使得运行被测程序,使得每个判断的所有可能每个判断的所有可能的条件取值组合至少执行一次的条件取值组合至少执行一次。vv 记 A1,B0 作 A1,B0 作 A1,B0 作 vv A1,B0 作信息科学与技术学院 闵笛软件工程软件工程 vv A2,X1 作 A2,X1 作 A2,X1 作 A2,X1 作vv测 试 用 例 覆盖条件 覆盖组合vv【(2,0,4),(2,0,3)】(L1),vv【(2,1,1),(2,1,2)】(L3),vv【(1,0,3),(1,0,4)】(L3

44、),vv【(1,1,1),(1,1,1)】(L2),信息科学与技术学院 闵笛软件工程软件工程 andorA1T TB=0T TX=X/AT TF FF FA=2T TF FX1F FX=X+1信息科学与技术学院 闵笛软件工程软件工程6.路径测试路径测试v路径测试就是设计足够的测试用例,路径测试就是设计足够的测试用例,覆盖程序中覆盖程序中所有可能的路径所有可能的路径。v测 试 用 例 通过路径 覆盖条件v【(2,0,4),(2,0,3)】ace(L1)【(1,1,1),(1,1,1)】abd(L2)v【(1,1,2),(1,1,3)】abe(L3)【(3,0,3),(3,0,1)】acd(L4)

45、v 信息科学与技术学院 闵笛软件工程软件工程(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1T TT TF FF Fbdcea信息科学与技术学院 闵笛软件工程软件工程总结:总结:6 种覆盖标准的对比种覆盖标准的对比信息科学与技术学院 闵笛软件工程软件工程7.6.2 控制结构测试控制结构测试v1、基本路径测试、基本路径测试v以环形复杂度为基础,导出基本可执行路径以环形复杂度为基础,导出基本可执行路径集合,设计测试用例的方法。集合,设计测试用例的方法。v测试用例要保证程序的测试用例要保证程序的每个可执行语句至少每个可执行语句至少执行一次执行一次。信息科学与技术学院 闵笛软件工程软

46、件工程步骤:步骤:v1:由程序流程图导出程序控制流图,并计算其环路由程序流程图导出程序控制流图,并计算其环路复杂度复杂度v2:确定程序的独立路径确定程序的独立路径v什么是独立路径?什么是独立路径?v流图中,一条独立路径是至少包含一条在其它独立流图中,一条独立路径是至少包含一条在其它独立路径中从未有过的边的路径。路径中从未有过的边的路径。v独立路径条数独立路径条数是确保程序中,每个可执行语句至少是确保程序中,每个可执行语句至少能被执行一次所必需的测试用例数目的上界。能被执行一次所必需的测试用例数目的上界。v独立路径条数程序环路复杂性独立路径条数程序环路复杂性 V(G)信息科学与技术学院 闵笛软件

47、工程软件工程步骤步骤1.根据程序逻辑画出流程图根据程序逻辑画出流程图 vvoid Func(int nPosX,int nPosY)vwhile(nPosX 0)vint nSum=nPosX+nPosY;vif(nSum 1)v nPosX-;v nPosY-;vvelse v if(nSum -1)nPosX-=2;v else nPosX-=4;vv/end of whilev信息科学与技术学院 闵笛软件工程软件工程步骤步骤2:将流程图转换为流图将流程图转换为流图信息科学与技术学院 闵笛软件工程软件工程步骤步骤3:确定基本路径的集合确定基本路径的集合v基本路径流图Cyclomatic复杂

48、度正好是基本路径的数目vV(G)=E N+2 V(G)=11-9+2=4 V(G)=P+1E、N、P分别为流图的边数、节点数和谓词节点数。信息科学与技术学院 闵笛软件工程软件工程步骤步骤4:确定测试路径的集合确定测试路径的集合v例:独立路径v图中一组独立的路径是:vL1:1,11 vL2:1,2,3,4,5,10,1,11 vL3:1,2,3,6,8,9,10,1,11 vL4:1,2,3,6,7,9,10,1,11 v路径 L1,L2,L3,L4 组成了控制流图的一个基本路径集。信息科学与技术学院 闵笛软件工程软件工程步骤步骤 5:由基本路径集,导出测试用例:由基本路径集,导出测试用例v基本

49、路径集不是唯一的,对于给定的程序图,基本路径集不是唯一的,对于给定的程序图,可以得到不同的基本路径集。可以得到不同的基本路径集。v导出测试用例,确保基本路径集中的每一条导出测试用例,确保基本路径集中的每一条路径的执行。路径的执行。信息科学与技术学院 闵笛软件工程软件工程针对测试路径设计测试用例针对测试路径设计测试用例v1-11nPosX 取-1,nPosY取任意值v1-2,3-4,5-10-1-11nPosX 取1,nPosY取1v1-2,3-6-7-9-10-1 11nPosX 取1,nPosY取-1v1-2,3-6-8-9-10-1-11 nPosX 取1,nPosY取-3信息科学与技术学

50、院 闵笛软件工程软件工程7.7 黑盒测试技术黑盒测试技术v黑盒测试主要是为了发现以下错误:黑盒测试主要是为了发现以下错误:v是否有不正确或遗漏了的功能?是否有不正确或遗漏了的功能?v能否正确地接受输入?能否正确的输出结果?能否正确地接受输入?能否正确的输出结果?v是否有数据结构错误或外部数据库访问错误?是否有数据结构错误或外部数据库访问错误?v性能上是否能够满足要求?性能上是否能够满足要求?v是否有初始化或终止性错误?是否有初始化或终止性错误?v几种黑盒测试技术:几种黑盒测试技术:v等价类划分、边界值分析、错误推测法、因果图等价类划分、边界值分析、错误推测法、因果图信息科学与技术学院 闵笛软件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁