《软件工程实践》PPT课件.ppt

上传人:小飞机 文档编号:4860231 上传时间:2023-05-20 格式:PPT 页数:86 大小:311.49KB
返回 下载 相关 举报
《软件工程实践》PPT课件.ppt_第1页
第1页 / 共86页
《软件工程实践》PPT课件.ppt_第2页
第2页 / 共86页
《软件工程实践》PPT课件.ppt_第3页
第3页 / 共86页
《软件工程实践》PPT课件.ppt_第4页
第4页 / 共86页
《软件工程实践》PPT课件.ppt_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《《软件工程实践》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件工程实践》PPT课件.ppt(86页珍藏版)》请在三一办公上搜索。

1、北京理工大学软件工程实践,汤铭端中国航天科工集团公司204所,第八讲,软件测试,内容和目的,测试的目的和策略测试的活动测试的产品测试的方法和度量要求测试用例构造技术,测试的目标,Myers测试是一个为了寻找错误而运行的过程一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例一个成功的测试是指揭示了迄今为止尚未发现的错误的测试,IEEE由人工或自动方法来执行或评价系统或系统部件的过程,以验证它是否满足规定的需求;或识别出期望的结果和实际结果之间有无差别。,Myers软件测试十原则,程序员应避免测试自己编制的程序测试用例的设计必须包括预期的输出结果测试用例应包括有效的和期望的输入情况,也要包

2、括无效的和不期望的输入情况彻底检查每个测试结果只检查程序是否做了它应该做的事仅仅完成了测试工作的一半,另一半则是要检查程序是否做了它不该做的事避免不可重复的即兴测试,保留全部测试用例一段程序中存在错误的概率与在这段程序中已发现的错误数成正比测试是一项非常复杂、创造性的和需要高度智慧的挑战性任务不要为了便于测试擅自修改程序测试工作必须有明确的目标,测试的原则(DAVIE),所有的测试都应追溯到需求应该在测试工作真正开始前的较长时间就进行测试计划Pareto(20-80)原则应用于软件测试测试应从“小规模”开始,逐步转向“大规模”穷举测试是不可能的为了达到最佳效果,应该由独立的第三方来构造测试,测

3、试策略途径,测试开始于模块层,然后延伸到整个基于计算机的系统集合中不同的测试技术适用于不同的时间点测试是由软件的开发人员和(对大型系统来说)独立的测试组来管理的测试和调试是不同的活动,但是调试必须能够适应任何的测试策略,测试完成准则,资源耗尽采用的测试方法满足某种测试充分性要求满足覆盖率等可度量的测试要求一段时期没有发现问题且所有发现问题均已解决通过测试评估出软件达到要求的可靠度测试发现频率和趋势达到预先计划的限度之下(限度根据要求、经验和历史数据得到)在一段时期没有出现等级高的问题,测试概图,阶段活动单元集成合格性系统,技术方法静态测试静态分析代码审查动态测试白盒测试白盒测试用例技术黑盒测试

4、黑盒测试用例技术,V模型,J.McDermid于1994年在“软件工程师参考手册”中提出,测试活动,单元测试(UNIT)集成测试(INTERGRATION)合格性测试(QUALIFICATION)系统测试(SYSTEM),单元测试,对软件单元进行测试,确实保证它作为一个单元能正常地工作单元测试的目的是验证单元满足功能、性能和接口等的要求单元测试采用的技术:静态分析、代码审查、白盒动态测试测试的充分性由各种测试覆盖率来度量,单元动态测试的内容,主要针对下列模块的五个基本特性进行:模块接口局部数据结构重要的执行路径出错处理路径影响以上各点的边界条件,单元测试用例的要求,)用指定值、异常值和极限值验

5、证全部计算;)验证全部输入数据的各种选择;)验证全部输出数据的各种选择和格式;)每个单元的全部可执行语句至少执行一次;)在每个分支点进行选择的测试。,单元测试用例的内容,)指明被验证的需求或功能;)解释测试如何进行,说明验证代码与单元设计一致的准则和技术,以验证接口满足需求;)指明测试使用的支持软件,如测试工具、驱动模块、桩模块、动态路径分析工具等;)说明全部输入数据和(或)驱动程序等;)说明预期的输出,包括数据值或其它可以验证的结果;)通过准则。,单元测试执行环境,驱动模块,被测单元,桩模块B,桩模块C,桩模块A,集成测试,依据软件设计确定的软件结构,按照软件集成“工序”,把各个软件单元逐步

6、集成为完整的软件系统,并不断发现和排除错误,以保证联接、集成的正确性。,集成测试的内容,1)软件单元的接口测试;2)软件部件的功能、性能测试;3)全面数据结构测试;4)必要的运行时间、存贮空间、计算精度测试;5)边界条件和非法输入的测试。,集成测试的要求,1)必须对有调用关系的软件单元之间的所有调用进行测试,验证每个调用接口的完整性和一致性;2)应对软件进行正确处理的能力的经受错误影响的能力进行测试;3)应测试在各种外部输入下,从外部接口采集和(或)发送数据的能力,包括对正确数据及状态的处理,对接口错误、数据错误、协议错误的识别及处理。,集成测试的通过准则,1)软件单元无错误地连接;2)满足各

7、项功能、性能要求;3)对错误的输入有正确处理的能力;4)对测试中的异常有合理解释;5)人机界面、对外接口正确无误;,软件集成策略,1)非增量方式先测试好每一个软件单元,然后一次组装在一起再测试整个程序。2)增量方式逐步把下一个要被组装的软件单元或部件,同已测好的软件部件结合起来测试。增量方式主要包括自顶向下、自底向上、自顶向下与自底向上相结合等方法。,集成方式,非增量方式 Big Bang增量方式自顶向下方法自底向上方法“三明治”方法,增量和非增量方式的优缺点,增量方式的优点:a.增量方式占用人工较少。b.增量方式可以较早地发现模块接口错误。c.增量方式容易排错。d.增量方式测试效果好,比较彻

8、底。非增量方式的优点:a.非增量方式占用机器时间较少。b.非增量方式有利于并行开发。,非增量方式,有一种很直接、原始的组装方式,它把所有通过单元测试的模块一古脑儿地全部集成在一起,直接组装成软件系统,并对它进行测试。这种被贬义地称作大爆炸(Big Bang)的组装方式,目前仍在许多场合使用。人们期望它可以带来方便、快捷的组装效果。这种方法遭到广大测试专家的批评,普遍认为它会引起混乱,且难以确定错误源的位置。,自顶向下方法,自顶向下集成法是一个模块一个模块地组装软件的方法。按照控制的结构,从主控模块(主程序)开始,向下地逐个把模块连接起来。集成的方式有两种:深度优先组装法及宽度优先组装法。深度优

9、先法是先把结构中的一条主要的控制路经上的全部模块逐步组装起来。然后再连接其它的控制路径。宽度优先法是从结构的顶层开始逐层往下组装。,自顶向下集成的过程步骤,1)主控模块用作为测试驱动器。直接附属于主控模块的各模块全都用桩模块代替。2)按照所选的组装法(即深度优先或宽度优先)每次用一个真模块取代一个附属的桩模块。3)当装入每个真模块时都要进行测试。4)作完每一组测试后又再用一个真模块代替另一个桩模块。5)可以进行回复测试(即重新再作过去作过的全部或部分测试),以便肯定没有新的错误发生。,自底向上方法,自底向上集成测试方法是从软件结构中最底层的、最基本的软件单元开始进行集成和测试。由于在逐步向上组

10、装过程中下层模块总是存在的,也就是说不再需要桩模块了,但却需要调用这些模块开展工作的驱动模块。,自底向上集成的过程步骤,1)低层的模块组成簇,以执行某个特定的软件子功能。2)编写一个驱动模块作为测试的控制程序,和被测试的簇连在一起,负责安排测试用例的输入及输出。3)对簇进行测试。4)拆去各个小簇的驱动模块,把几个小簇合并成大簇,再重复做2、3及4步。这样在软件结构上逐步向上组装。,“三明治”方法,自顶向下测试的主要优点是能较早显示出整个程序的轮廓。主要缺点是,当测试上层模块时使用桩模块较多,很难模拟出真实模块的全部功能,使部分测试内容被迫推迟,直至换上真实模块后再补充测试。自底向上测试从下层模

11、块开始,设计测试用例比较容易,但是在测试的早期不能显示出程序的轮廓。针对自顶向下、自底向上方法各自的优点和不足,人们提出了自顶向下和自底向上相结合,从两头向中间逼近的混合式组装方法,被形象称之为“三明治”方法。,“三明治”方法的步骤,步骤:1)对上层模块采取自顶向下测试;2)对关键模块或子系统采取自底向上测试。混合式的“三明治”方法,综合了自顶向下、自底向上两种方法的长处,扬了长避了短。例如,对关键模块采取自底向上测试,就可能把输入输出模块提前组装进程序,使设计测试用例变得较为容易;或者使具有重要功能的模块早点与有关的模块相连,以便及早暴露可能存在的问题。除关键模块及少数与之相关的模块外,对其

12、余模块尤其是上层模块仍采取自顶向下的测试方法,以便收到较早显示程序总体轮廓的效果。,合格性测试,根据软件需求规格说明中定义的全部功能、性能、可靠性等需求,测试整个软件是否达到要求。,合格性测试内容,功能测试性能测试资源和余量测试边界测试操作测试外部接口测试强度测试,可靠性测试安全性测试恢复性测试安装性测试移植性测试保密性测试回归测试,功能测试,根据功能需求进行测试,以确认软件与软件功能需求的一致功能测试应达到以下要求:a.每一个软件功能都必须被测试用例或被认可的异常所覆盖(或由于异常情况的出现而未达到期望的覆盖,但该异常已被测试者认识到,并进行了处理);b.用一系列合理的数据类型和数据值运行,

13、测试软件在正常、超负荷、饱和和其它“最坏”情况下的结果;c.用假想的数据类型和数据值运行,以测试软件排斥不规则(非法)输入的能力。,性能测试,对软件是否与所需定量的性能需求一致进行确认。包括:a.软件在获得定量结果时计算的精确性;b.有时间要求的软件,其实际的运行时间;c.软件完成功能所能处理的数据量;d.软件各部分的协调性;e.其它性能指标。,资源和余量测试,测试是否符合软件需求规格说明中提出的处理时间、储存空间和内存、输入输出通道等资源使用的要求,并在设计中为这些资源留出了余量。通常情况下,应保证在储存空间和内存,输入输出通道,以及处理时间的占用上至少有的余量。,边界测试,测试软件在输入域

14、和(或)输出域、数据结构、状态转换、过程参数、功能界限等边界点或端点情况下的运行状态。,操作测试,操作测试包括对用户接口、人机接口和人机交互要求的所有测试。应以常规操作、非常规操作、误操作、快速操作等情况来检验界面的可靠性。操作测试工作还包括对照软件使用说明,逐条进行相应的操作,以检测软件使用说明的完整性、正确性、与软件程序的一致性。,外部接口测试,确认软件与其外部接口要求的一致性。测试内容:a.测试所有外部接口,检测接口信息的格式和内容。b.对每一个外部输入输出接口应进行正常和异常情况测试。如果软件不能在运行环境中测试,则有必要使用模拟程序或其它测试工具。,强度测试,强度测试是在预先规定的一

15、段时间内,在软件设计的极限状态下,进而在超设计能力的状态下,运行软件以测试软件的所有功能。可以允许在饱和点上性能降级,但必须保证仍能顺利运行。,可靠性测试,软件可靠性测试是以能获得可用来评估软件可靠性的数据为目的的一种软件测试。例如,基于软件运行剖面设计软件测试用例,并用这些测试用例按出现概率进行随机输入以模拟软件真实运行状态,运行软件以获得失效数据,进而给出软件的可靠性度量,这就是一种软件可靠性测试。软件运行剖面是指:1)软件运行期间执行各个任务的事件和各事件相应概率的集合。2)系统使用条件的一种定义,系统输入值用其按时间或在可能输入范围中以概率分布来定义。,安全性测试,针对程序中危险防止和

16、危险处理设施进行的测试,以验证其是否有效。安全性测试应包括下面的工作:a.全面检验软件在软件需求规格说明中规定的防止危险状态措施的有效性和在每一个危险状态下的反应;b.对软件设计中用于提高安全性的结构、算法、容错、冗余、中断处理等方案,进行针对性测试;c.在异常条件下测试软件,以表明不会因可能的单个或多个输入错误而导致不安全状态。d.用错误的安全性关键操作进行测试,以验证系统对这些操作错误的反应;e.对安全性关键的软件单元和软件部件,要单独进行加强的测试,以确认其满足安全性需求。,恢复性测试,对有恢复或重置(RESET)功能的软件,应专门对每一类导致恢复或重置的情况进行测试,以确认恢复或重置功

17、能。,安装性测试,按规程进行安装正确性测试,包括参数装订、程序加载等。,移植性测试,在所有要求的移植环境中运行软件以验证软件的移植性。,保密性测试,验证软件是否提供了软件需求规格说明中规定的保密机制,使软件的机密性、完整性和有效性不被破坏。,回归测试,回归测试是一种选择性重新测试,目的是检测系统或系统组成部分在修改期间产生的缺陷,用于验证已进行的修改并未引起不希望的有害效果,或确认修改后的系统或系统组成部分仍满足规定的要求。,Alpha测试和Beta测试,开发者想预见用户的使用过程是不可能的对于通用软件产品,让每个用户都进行接收(验收)测试是不切实际的采用Alpha测试和Beta测试来发现只有

18、最终用户才能发现的问题Alpha测试:由一个用户在开发者的场所、在开发者指导下进行测试Beta测试:由最终用户在一个或多个用户场所单独地进行测试,系统测试,软件与与系统中其它的软、硬件对接并测试其接口的过程系统测试的目的,是在真实的系统工作环境下检验软件是否能与系统正确连接,并确认软件是否与用户需求(系统需求)一致,系统测试内容,安装性测试功能测试性能测试操作测试外部接口测试安全性测试:注意进行硬件和软件在各种故障模式下的测试;最坏配置情况下的测试;错误操作情况下的测试;多机系统出现故障切换时,系统的功能、性能连续平稳性测试性能强度测试降级能力强度测试,独立(第三方)测试,第三方指的是与软件项

19、目甲方、乙方相对独立的其它机构。进行独立测试的目的是进一步加强软件质量保证工作,提高软件的质量,并对软件产品进行客观评价。进行第三方独立测试通常有以下优点:1)发挥专业技术优势;2)发挥独立性优势;3)进一步促进承办方的工作。,测试方法,静态测试静态分析代码审查代码走查技术评审桌面检查,动态测试白盒测试控制流覆盖数据流覆盖黑盒测试功能分解等价类划分边值分析因果图随机测试猜错法,静态测试,代码审查:小组集体阅读讨论检查代码代码走查:小组集体用“脑”执行并检查代码桌面检查:由程序员阅读自己编写的程序技术评审:会议形式讨论检查代码静态分析:对代码的机械性、程式化的特性分析方法,包括控制流分析、数据流

20、分析、接口分析、表达式分析,白盒测试与黑盒测试对比,白盒测试,控制流测试语句覆盖分支覆盖条件覆盖条件组合覆盖路径覆盖,数据流测试全定义使用路径全使用路径全定义路径数据流异常状态图,测试覆盖率,采用白盒法进行测试时,考虑的是测试用例对程序内部逻辑的覆盖程度。最彻底的白盒法是覆盖程序中的每一条路径,但这往往大到无法实现。因此采用其它一些标准来量度覆盖的程度,并希望覆盖程度尽可能高些。,例子,func(int A,B,X)if(A1),流图符号,语句覆盖,语句覆盖:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。语句覆盖率:已执行的可执行语句占程序中可执行语句总数的百分比。,语句覆盖例,取

21、A=2,B=0,X=3,分支覆盖,分支覆盖又称判定覆盖。分支覆盖:执行足够的测试用例,使得程序中每个判定都获得一次“真”值和“假”值,或者说使得程序中的每一个分支至少都通过一次。分支覆盖率:已取过“真”和“假”两个值的判定占程序中所有条件判定个数的百分比。,分支覆盖例,A=3,B=0,X=1沿路径acd执行A=2,B=1,X=3沿路径abe执行,条件覆盖,条件覆盖:执行足够的测试用例,使得判定中的每个子条件都获得所有可能的结果。,条件覆盖例,共有四个条件:A1,B=0,A=2,X1A=2,B=0,X=4沿路径ace执行A=1,B=1,X=1沿路径abd执行,分支/条件覆盖,分支/条件覆盖:执行

22、足够的测试用例,使得判定中每个子条件取到各种可能的值,并使每个判定取到各种可能的结果。,分支/条件覆盖例,做练习,条件组合覆盖,条件组合覆盖:执行足够的测试用例,使得每个判定中各条件的所有可能的组合都出现一次。,条件组合覆盖例,共有8种条件:A1,B=0A1,B0A1,B=0A 1,B0A=2,X1A=2,X1A2,X1A2,X1A=2,B=0,X=4()A=2,B=1,X=1()A=1,B=0,X=2()A=1,B=1,X=1(),路径覆盖,路径覆盖:执行足够的测试用例,使程序所有可能的路径都获得通过。,路径覆盖例,四条路径:ace,abd,abe,acdA=2,B=0,X=3(ace)A=

23、1,B=0,X=1(abd)A=2,B=1,X=1(abe)A=3,B=0,X=1(acd),覆盖率要求,对单元测试来说,语句覆盖和分支覆盖是最基本的要求。由于程序中错误(异常)处理工作的重要性以及其结构相对简单,要求错误处理要做到路径覆盖。对质量要求高的软件单元,可根据情况提出条件覆盖、分支条件覆盖、条件组合覆盖以及其它更高的覆盖要求。,控制流测试的测试用例生成,经验测试法通过研究程序选择初始测试用例通过测试执行和覆盖率统计增加测试用例不断运行直至达到要求的测试覆盖率与黑盒测试结合纯粹白盒测试方法列出为实现覆盖所需的全部路径根据每个路径设计测试用例注意测试零次循环、一次循环和最大次数循环,黑

24、盒测试,功能分解等价类划分边值分析因果图猜错法,功能分解,使用功能抽象的方法把程序分解为功能单元使用数据抽象的方法产生测试每个功能单元的数据注意测试功能序列组合和输入数据组合,等价类划分,将输入数据域划分各自具有典型代表意义的有限个等价类,从每个等价类中产生一些代表性测试用例输入范围的左、中、右各个离散类别不同的处理方式注意划分有效等价类和无效等价类设计一些仅覆盖一个等价类的测试用例,边值分析,经验表明,程序在边界处的处理常常是关键的,也是容易发生错误的使用正好等于、小于、大于边界值的数据进行测试,发现错误的概率较大,这就是边值分析技术使用原则:如果输入条件规定了取值范围或数据个数,则可选择正

25、好等于边界值、刚刚在边界范围内和刚刚超越边界外的值进行测试针对规格说明的每个输入条件,使用上述原则对于有序数列,选择第一个和最后一个,因果图,通过画因果图,把用自然语言描述的功能说明转换为判断表,然后为判断表的每一列设计一个测试用例:分析规格说明,引出原因(输入条件)和结果(输出条件),并进行标识建立连接各个原因和各个结果的因果图标注不可能出现的原因和结果组合情况将因果图转换为决策表对每一列建立一个测试用例,随机测试,从所有可能的输入值中随机选取测试输入数据的方法使数据在规定的取值范围内并服从预期的概率分布基于运行剖面的测试方法是可靠性测试的主要方法预期结果可以由人工或定性的方法确定是强度测试

26、的有效手段,猜错法,列出所有可能有的错误和易错情况表,基于该表设计测试用例有力的补充充分发挥敏锐、经验等能力直接切入可能的错误,直接定位需要丰富的经验和领域知识,测试产品(文档),测试计划测试说明测试报告测试用例单测试记录问题报告单,软件测试计划,1 范围1.1 标识1.2 系统概述1.3 文档概述1.4 与其它计划的关系2 引用文档3 软件测试环境3.1 软件项3.2 硬件和固件项3.3 权限3.4 安装、测试和控制,4 正式合格性测试4.X CSCI名称和项目唯一标识号4.X.1 总体测试要求4.X.2 测试级4.X.3 测试类4.X.4 测试定义4.测试名称和项目唯一标识号4.X.5 测

27、试进度5 数据记录、整理和分析,软件测试说明,1 范围1.1 标识1.2 系统概述1.3 文档概述1.4 与其它计划的关系2 引用文档3 正式合格性测试准备3.X 测试名称和项目唯一标识号3.X.1 计划3.X.2 测试准备过程3.X.2.1 硬件要求3.X.2.2 软件准备3.X.2.3 其它测试准备,4 正式合格性测试说明4.X 测试名称和项目唯一标识号4.X.Y 测试用例名称和项目唯一标识号4.X.Y.1 需求可追踪性4.X.Y.2 初始化4.X.Y.3 测试输入4.X.Y.4 预期测试结果4.X.Y.5 评估测试结果的标准4.X.Y.6 测试过程4.X.Y.7 前提和约束,软件测试报告,1 范围1.1 标识1.2 系统概述1.3 文档概述1.4 与其它计划的关系2 引用文档3 测试概述3.1 正式合格性测试名称及项目的唯一标识号3.1.1 小结3.1.2 测试记录,4 测试结果4.X 正式合格性测试名称及项目的唯一标识号测试结果4.X.Y 测试用例名称和项目唯一标识号4.X.Y.1 测试结果4.X.Y.2 测试过程中的差异情况5 CSCI评估和建议5.1 CSCI评估5.2 改进建议,测试用例单,测试记录表,问题报告单,谢谢!,68389085(O)68389504(H),

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号