《软件测试及软件质量控制幻灯片.ppt》由会员分享,可在线阅读,更多相关《软件测试及软件质量控制幻灯片.ppt(100页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件测试及软件质量控制第1页,共100页,编辑于2022年,星期三 软软件件系系统统的的开开发发过过程程中中,软软件件测测试试占占据据着着重重要要地地位位。尽尽管管人人们们采采取取了了多多种种保保证证软软件件质质量量的的措措施施,由由于于软软件件系系统统的的客客观观复复杂杂性性,人人们们的的主主观观认认识识不不可可能能完完全全符符合合客客观观实实际际,完完美美无无缺缺,每每个个阶阶段段的的技技术术审审查查也也不不可可能能毫毫无无遗遗漏漏地地查查出出和和纠纠正正所所有有的的设设计计和和分分析析上上的的错错误误,在在软软件件生生命命周周期期的的各各个个阶阶段段,都都不不可可避避免免地地会会产产生生
2、差差错错,这这些些差差错错迟迟早早会会在在软软件的生产和使用过程中暴露出来。件的生产和使用过程中暴露出来。第2页,共100页,编辑于2022年,星期三 软软件件工工程程实实践践的的经经验验表表明明,发发现现软软件件的的时时刻刻越越晚晚,改改正正这这些些错错误误所所花花费费的的代代价价也也越越高高,如如果果在在软软件件投投入入使使用用之之前前没没有有发发现现和和纠纠正正软软件件的的大大部部分分错错误误,人人们们付付出出的的代价会更高,往往会造成恶劣的后果。代价会更高,往往会造成恶劣的后果。从从广广义义上上来来说说,软软件件测测试试工工作作散散布布在在软软件件生生命命周周期期的的各各个个开开发发阶
3、阶段段,人人们们认认识识到到,软软件件测测试试是是保保证证软软件件质质量量的的主主要要手手段段,各各阶阶段段的的评评审审工工作作和和验验证证工工作作,均均是是广广义义概概念念上上的的测测试试工工作作。而而主主要要的的测测试试是是在在编编码码和和测测试试这这两个阶段进行的。因此,狭义的软件测试就是程序测试。两个阶段进行的。因此,狭义的软件测试就是程序测试。第3页,共100页,编辑于2022年,星期三6.1 6.1 软件测试基本概念软件测试基本概念 G.J.MyersG.J.Myers给给出出了了关关于于测测试试的的一一些些规规则则,被被软软件件工工程领域认可:程领域认可:(1 1)测测试试是是为
4、为了了发发现现程程序序中中的的错错误误而而执执行行程程序序的的过程;过程;(2 2)好好的的测测试试方方案案极极有有可可能能发发现现迄迄今今为为止止尚尚未未发发现现的错误;的错误;(3 3)成功的测试是发现了至今为止尚未发现的错误。)成功的测试是发现了至今为止尚未发现的错误。第4页,共100页,编辑于2022年,星期三6.1 6.1 软件测试基本概念软件测试基本概念 这这些些规规则则,实实际际上上是是软软件件测测试试的的狭狭义义概概念念程程序测试。序测试。狭狭义义的的软软件件测测试试:测测试试是是为为了了发发现现错错误误而而执执行行程程序序的的过过程程。是是根根据据软软件件开开发发的的各各个个
5、阶阶段段的的说说明明和和程程序序的的内内部部结结构构而而精精心心设设计计的的一一批批测测试试用用例例(有有输输入入数数据据及及预预期期的的结结果果),并并利利用用这这些些测测试试用用例例执执行行程序及发现错误的过程。程序及发现错误的过程。第5页,共100页,编辑于2022年,星期三6.1 6.1 软件测试基本概念软件测试基本概念 广广义义的的软软件件测测试试是是对对软软件件计计划划、软软件件系系统统分分析析、软软件件设设计计、软软件件编编码码进进行行的的查查错错活活动动,包包括括代代码码执执行行和和人人工工审审查查活活动动,测测试试的的目目的的是是找找出出软软件件生生命命周周期期的的各各个个阶
6、阶段段的的错错误误,有有利利于于以以后后进进行行修修改改和和纠纠正正。但但测测试试本本身身不不修修正正错错误误,调调试试才才会会修修正正错错误误。即即找找错错的的活活动动是是测测试试;分分析析错错误误的的性性质质与与位位置置,进进行行纠纠错错的的活活动动是是调调试试,保保证证算算法法的的正正确确实实现现。软软件件测测试试与与程程序测试都是查找错误的活动,差别在于查找错误的范围不同。序测试都是查找错误的活动,差别在于查找错误的范围不同。第6页,共100页,编辑于2022年,星期三6.1 6.1 软件测试基本概念软件测试基本概念 由于测试的目标是暴露程序的错误,从心理学角度看,由设计者自己进行测试
7、是不恰当的,设计小组和测试小组应该分别设立,有利于进行客观和公正的软件测试。测试是有限的,由于通常的测试过程不可能穷尽一切情况,即使经过了严格的测试之后,仍然可能存在没有被发现的错误隐藏在程序中,不能证明程序中没有错误。第7页,共100页,编辑于2022年,星期三6.1 6.1 软件测试基本概念软件测试基本概念 因此,测试仅仅有可能找出程序的错误,测试不能证明程序是正确的。软件工程中所有其它阶段都是“建设性”的,软件工程师力图从抽象概念出发,逐步设计出具体的软件系统,而测试人员的工作表面上看却是“破坏性”的,竭力证明软件中含有错误,不能按预定要求正确工作。凡是进行对比的方式均可理解为测试验证。
8、第8页,共100页,编辑于2022年,星期三6.1.2 6.1.2 软件测试的对象软件测试的对象 软件测试应该贯穿于软件生命期的各个阶段,各阶段的工作是相互衔接、相互影响的,前一阶段发生的问题自然要影响到下一阶段的工作。为了把握各个环节的正确性,人们需要进行各种确认和验证工作。软件确认是广义上的软件测试,它是企图证明软件在一个给定的外部环境中软件的逻辑正确性的一系列活动和过程,如需求说明书的确认、程序的确认等。第9页,共100页,编辑于2022年,星期三6.1.2 6.1.2 软件测试的对象软件测试的对象 程序的确认又分为静态确认与动态确认。静态确认一般不在计算机上执行程序,而是通过程序正确性
9、证明、静态分析或人工分析来确认程序的正确性;动态确认主要通过动态分析和动态测试,用执行程序的过程来检查执行的状态,确认程序是否有问题;第10页,共100页,编辑于2022年,星期三6.1.2 6.1.2 软件测试的对象软件测试的对象 正确性证明主要是企图绕过复杂的测试,直接证明程序的正确性。如程序的输入输出断言法。设程序段为S,其前断言为P,后断言为R。如果执行S以前P为真,则执行S后R也为真,则证明S是正确的,记为PSR。第11页,共100页,编辑于2022年,星期三6.1.2 6.1.2 软件测试的对象软件测试的对象 任何程序总可以分成S1、S2、Sn个结点,对应的断言为R1、R2、Rn,
10、起初R1为输入断言,R2为输出断言,也是下一个输入断言,Rn为最后的输出断言,我们总可以,将S1、S2、Sn逐个证明,自顶向下或自底向上都可证明程序的正确性,该分支已发展为计算机代数学;第12页,共100页,编辑于2022年,星期三6.1.2 6.1.2 软件测试的对象软件测试的对象 软件验证也属于广义上的软件测试,它试图证明在软件生命期的各个阶段、各阶段的逻辑协调性、完备性和正确性。包括系统分析员理解用户要求的正确性、表达的正确性、设计人员对需求规格说明理解的正确性、设计与设计表达的正确性、程序编码的正确性和运行软件程序时输入的正确性、运行结果的正确性等,运行结果与用户预期的结果是否一致等,
11、这说明任何一个环节上发生了问题都可能在软件测试中表现出来。第13页,共100页,编辑于2022年,星期三6.1.3 6.1.3 测试信息流测试信息流 将测试的过程用数据流图表示,可得测试信息流如图6-1所示。(至软件配置)软件配置 1 测试结果 2 错误 3 修正的软件测试配置 测试结果测试工具 测试 评价 调试 正确 预测结果 出错率 4 数据 可靠性 分析图图6-1 测试信息流测试信息流 第14页,共100页,编辑于2022年,星期三6.1.3 6.1.3 测试信息流测试信息流 1.测试过程需要三类输入:(1)软件配置:包括软件开发文档(用户文档、需求规格说明、软件设计说明、源程序代码)、
12、目标执行程序、数据结构;(2)测试配置:包括测试计划、测试用例、测试驱动程序等;实际上在整个软件开发过程中,测试配置只是软件配置的一个子集;第15页,共100页,编辑于2022年,星期三 (3 3)测测试试工工具具:为为提提高高软软件件测测试试效效率率,使使用用测测试试工工具具为为测测试试工工作作服服务务;如如:测测试试数数据据自自动动生生成成程程序序,静静态态分分析析程程序序、动动态态分分析析程程序序、测测试试结结果果分分析析程序及标准例程测试数据库等。程序及标准例程测试数据库等。6.1.3 6.1.3 测试信息流测试信息流第16页,共100页,编辑于2022年,星期三 测试之后,对所有测试
13、结果进行分析,将实际测测试之后,对所有测试结果进行分析,将实际测试的结果与预期的结果进行比较。如果发现出错的数据,试的结果与预期的结果进行比较。如果发现出错的数据,则意味着软件有错误,需要纠错,应进行调试,确定错则意味着软件有错误,需要纠错,应进行调试,确定错误的位置和出错的性质,改正这些错误,同时修正相关误的位置和出错的性质,改正这些错误,同时修正相关文档。修正过的文档一般需经过再次测试,直到通过测文档。修正过的文档一般需经过再次测试,直到通过测试为止。试为止。6.1.3 6.1.3 测试信息流测试信息流第17页,共100页,编辑于2022年,星期三 通通过过收收集集和和分分析析测测试试结结
14、果果的的有有关关数数据据,可可以以建建立立软软件件评估的可靠性模型。评估的可靠性模型。如如果果经经常常出出现现需需要要修修改改设设计计的的严严重重错错误误,那那么么软软件件的的质量和可靠性就值得怀疑,同时也表明需要进一步测试。质量和可靠性就值得怀疑,同时也表明需要进一步测试。相相反反,如如果果软软件件功功能能能能够够正正确确完完成成,出出现现的的错错误误易于修改,那么就可能有两种评价:易于修改,那么就可能有两种评价:6.1.3 6.1.3 测试信息流测试信息流第18页,共100页,编辑于2022年,星期三 一种是软件的质量和可靠性达到可以接受的程度。一种是软件的质量和可靠性达到可以接受的程度。
15、另一种是所做的测试还不足以发现软件的严重错误。另一种是所做的测试还不足以发现软件的严重错误。如如果果得得到到的的评评价价是是没没有有发发现现错错误误,很很有有可可能能测测试试的的配配置置考考虑虑得得不不够够充充分分和和细细致致,软软件件仍仍有有潜潜伏伏的的错错误误,以以后后改改正正错误需要付出高昂的代价。错误需要付出高昂的代价。6.1.3 6.1.3 测试信息流测试信息流第19页,共100页,编辑于2022年,星期三 2.2.软件错误可以从不同角度进行分类:软件错误可以从不同角度进行分类:(1 1)从错误对程序的影响程度来分:)从错误对程序的影响程度来分:严严重重性性错错误误:严严重重影影响响
16、程程序序的的运运行行,甚甚至至不不能能运运行;行;一一般般性性错错误误:经经常常影影响响程程序序的的运运行行,特特殊殊情情况下表现正常;况下表现正常;6.1.3 6.1.3 测试信息流测试信息流第20页,共100页,编辑于2022年,星期三 3 微微小小错错误误:一一般般情情况况下下程程序序能能运运行行,特特殊殊情情况下表现异常;况下表现异常;4 无影响性错误:不影响程序的运行。无影响性错误:不影响程序的运行。6.1.3 6.1.3 测试信息流测试信息流第21页,共100页,编辑于2022年,星期三 (2 2)从开发过程的转换环节上分:)从开发过程的转换环节上分:构造错误:编码实现与设计不一致
17、;构造错误:编码实现与设计不一致;设计错误:设计逻辑与说明不一致;设计错误:设计逻辑与说明不一致;说明书错误:说明书与用户要求不一致;说明书错误:说明书与用户要求不一致;需求错误:不满足用户的实际要求;需求错误:不满足用户的实际要求;配置错误:软件配置不满足实际环境。配置错误:软件配置不满足实际环境。6.1.3 6.1.3 测试信息流测试信息流第22页,共100页,编辑于2022年,星期三(3 3)从测试结果的表现上分类:)从测试结果的表现上分类:1 1)功能错误:由系统需求分析不完整引起的;)功能错误:由系统需求分析不完整引起的;2 2)结构错误:由总体设计的错误引起的;)结构错误:由总体设
18、计的错误引起的;3 3)过程错误:由详细设计的错误引起的;)过程错误:由详细设计的错误引起的;4 4)数据错误:由软件编码或详细设计的错误引起的;)数据错误:由软件编码或详细设计的错误引起的;5 5)编码错误:由软件编码引起的错误;)编码错误:由软件编码引起的错误;6 6)其它错误:由文档和其它系统元素引起的错误;)其它错误:由文档和其它系统元素引起的错误;6.1.3 6.1.3 测试信息流测试信息流第23页,共100页,编辑于2022年,星期三6.1.4 6.1.4 软件测试步骤与软件开发各软件测试步骤与软件开发各阶段的关系阶段的关系软件测试一般分为四个步骤:软件测试一般分为四个步骤:(1
19、1)单单元元测测试试(也也称称模模块块测测试试):针针对对软软件件设设计计的的基基本本单单元元程程序序模模块块,进进行行正正确确性性检检验验的的测测试试工工作作。目目的的在在于于发发现现各各个个模模块块内内部部可可能能存存在在的的各各种种差差错错。单单元元测测试试需需要要从从程程序序内内部部结结构构出出发发设设计计测测试试用用例例,多多个个模模块块可可以以平行、独立地进行测试;平行、独立地进行测试;第24页,共100页,编辑于2022年,星期三6.1.4 6.1.4 软件测试步骤与软件开发各软件测试步骤与软件开发各阶段的关系阶段的关系 (2)集成测试(也称组装测试,联合测试):在单元测试的基础
20、上,将所有模块按设计要求集成在一起进行测试,以检验总体设计中各模块间的接口设计问题、模块之间的相互影响、上层模块存在的各种差错及全局数据结构对系统的影响等方面。第25页,共100页,编辑于2022年,星期三6.1.4 6.1.4 软件测试步骤与软件开发各软件测试步骤与软件开发各阶段的关系阶段的关系 (3 3)确确认认测测试试(也也称称验验收收测测试试,有有效效性性测测试试):主主要要检检验验软软件件的的功功能能和和性性能能是是否否与与需需求求说说明明书书中中的的规定一致。规定一致。(4 4)系系统统测测试试:将将软软件件系系统统作作为为一一个个元元素素,放放入入整整个个实实际际的的计计算算机机
21、系系统统中中,与与计计算算机机硬硬件件、其其他他软软件件、使使用用人人员员等等系系统统元元素素结结合合在在一一起起,在在实实际际使使用用环境下进行综合全面的测试。环境下进行综合全面的测试。第26页,共100页,编辑于2022年,星期三6.1.4 6.1.4 软件测试步骤与软件开发各软件测试步骤与软件开发各阶段的关系阶段的关系 前面多次强调,使用软件生命期(瀑布模型)模型,前面多次强调,使用软件生命期(瀑布模型)模型,软件开发过程是一个自顶向下,逐步细化的过程,而软件软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是与开发过程相反的次序进行的,是一个自底测试过程则是与开发过程相反的次
22、序进行的,是一个自底向上,逐步集成的过程,低一层测试为上一层测试准备测向上,逐步集成的过程,低一层测试为上一层测试准备测试条件和数据驱动环境,也包含两者平行进行测试。试条件和数据驱动环境,也包含两者平行进行测试。第27页,共100页,编辑于2022年,星期三6.1.4 6.1.4 软件测试步骤与软件开发各软件测试步骤与软件开发各阶段的关系阶段的关系 因因此此,发发现现引引起起错错误误的的原原因因顺顺序序也也与与开开发发过过程程的的相相次次序序反反,首首先先对对每每一一个个模模块块进进行行单单元元测测试试,消消除除程程序序模模块块内内部部逻逻辑辑上上和和功功能能上上的的错错误误和和缺缺陷陷,再再
23、对对照照软软件件设设计计进进行行集集成成测测试试(有有时时也也叫叫整整体体测测试试),检检测测和和排排除除子子系系统统或或系系统统结结构构上上的的错错误误,再再对对照照需需求求进进行行确确认认测测试试(也也称称为为有有效效性性测测试试),最最后后进进行行系系统统测测试试,运运行行系系统统,看看软软件件系系统统是是否否满满足足功功能能和和性能及其它要求。性能及其它要求。第28页,共100页,编辑于2022年,星期三6.1.4 6.1.4 软件测试步骤与软件开发各软件测试步骤与软件开发各阶段的关系阶段的关系需求分析软件设计软件编码确认测试集成测试单元测试系统测试图图6-2 6-2 软件测试与软件开
24、发过程间的关系软件测试与软件开发过程间的关系第29页,共100页,编辑于2022年,星期三6.1.4 6.1.4 软件测试步骤与软件开发各软件测试步骤与软件开发各阶段的关系阶段的关系需求分析 说明书概要设计 说明书详细设计 说明书源程序 代码确认测试集成测试单元测试系统测试图图6-3 6-3 软件测试与开发文档之间的关系软件测试与开发文档之间的关系第30页,共100页,编辑于2022年,星期三6.1.5 6.1.5 软件测试原则软件测试原则(1 1)将将软软件件测测试试贯贯穿穿于于软软件件开开发发的的各各个个阶阶段段中中,在在开开发发过过程程中中尽尽早早地地发发现现和和预预防防错错误误,杜杜绝
25、绝隐隐患患,提提高高软件质量;软件质量;(2 2)测测试试用用例例必必须须包包含含输输入入数数据据和和与与之之对对应应的的预预期期输输出结果,精心设计测试用例;出结果,精心设计测试用例;(3 3)测试时应避免设计者检查自己设计的程序;)测试时应避免设计者检查自己设计的程序;(4 4)设设计计测测试试用用例例时时,应应包包括括合合理理的的与与不不合合理理的的输输入条件;入条件;第31页,共100页,编辑于2022年,星期三6.1.5 6.1.5 软件测试原则软件测试原则(5 5)充充分分注注意意测测试试中中出出现现的的错错误误群群集集现现象象,若若发发现现错错误误数数目目较较多多,则则可可能能残
26、残存存的的错错误误数数目目也也较较多多,这这种种错误出现的群集现象,已为许多程序测试实践所证实;错误出现的群集现象,已为许多程序测试实践所证实;(6 6)严严格格执执行行测测试试计计划划,以以软软件件需需求求说说明明书书为为基基准准设计测试用例,排除测试的随意性;设计测试用例,排除测试的随意性;第32页,共100页,编辑于2022年,星期三6.1.5 6.1.5 软件测试原则软件测试原则(7 7)对对每每一一个个测测试试结结果果做做全全面面检检查查,不不能能遗遗漏漏错错误误出出现现的的征征兆兆,软软件件修修改改后后要要进进行行回回归归测测试试,即即用用修修改改前前测测试试过过的的测测试试用用例
27、例进进行行测测试试,再再用用新新的的测测试试用用例测试;例测试;(8 8)妥妥善善保保存存测测试试计计划划、测测试试用用例例、出出错错统统计计数数据据和和最终分析报告,为维护提供方便。最终分析报告,为维护提供方便。在在一一个个程程序序段段中中,还还存存在在着着尚尚未未发发现现的的错错误误概概率率与与已发现的错误数正相关。已发现的错误数正相关。第33页,共100页,编辑于2022年,星期三6.1.5 6.1.5 软件测试原则软件测试原则残存错误的可能性已发现的错误数图6-4 软件错误的群集现象示意图第34页,共100页,编辑于2022年,星期三6.2 6.2 软件测试的方法软件测试的方法 软软件
28、件的的测测试试方方法法很很多多,不不同同的的出出发发点点得得到到不不同同的的测试方法。有:测试方法。有:n n从测试过程来分:静态分析法、动态测试法;从测试过程来分:静态分析法、动态测试法;n n从从观观察察结结构构的的透透明明性性方方式式来来分分:白白盒盒法法、黑黑盒盒法法、灰灰盒盒法;法;n n从从获获得得测测试试数数据据形形式式上上分分:穷穷尽尽法法;等等价价类类划划分分法法;边边界界值分析法;值分析法;第35页,共100页,编辑于2022年,星期三6.2 6.2 软件测试的方法软件测试的方法 从逻辑分析上分:因果图法;错误推测法;从测试步骤上分:单元测试、集成测试、确认测试、系统测试等
29、;从考察形式上分:功能测试,逻辑测试;第36页,共100页,编辑于2022年,星期三6.2 6.2 软件测试的方法软件测试的方法 如如何何测测试试得得更更完完全全、怎怎样样进进行行测测试试用用例例的的设设计计,是是软软件件测测试试中中的的关关键键技技术术。无无论论用用哪哪种种方方法法进进行行测测试试,都都是是设设法法用较少的测试用例集合测试出程序中较多的潜在错误。用较少的测试用例集合测试出程序中较多的潜在错误。静静态态分分析析时时,不不执执行行程程序序,可可对对需需求求分分析析说说明明书书、软软件件设设计计说说明明书书、源源程程序序做做结结构构检检查查、流流图图分分析析、符符号号执执行行来来分
30、分析析软软件件可可能能导导致致的的异异常常情情况况,找找出出软软件件错错误误。从从测测试试过过程来分:静态分析法、动态测试法;程来分:静态分析法、动态测试法;第37页,共100页,编辑于2022年,星期三6.2 6.2 软件测试的方法软件测试的方法 结结构构检检查查是是手手工工分分析析技技术术,对对需需求求说说明明、程程序序设设计计、编编码码、测测试试工工作作进进行行评评议议,虚虚拟拟地地(模模拟拟)执执行行程程序序,在评议中发现和检查错误;在评议中发现和检查错误;流流图图分分析析是是通通过过分分析析流流程程图图、代代码码结结构构来来检检查查程程序序错误,便于进行编码分析和测试结果分析;错误,
31、便于进行编码分析和测试结果分析;第38页,共100页,编辑于2022年,星期三6.2 6.2 软件测试的方法软件测试的方法 符符号号执执行行是是定定义义符符号号化化数数据据,为为程程序序的的每每条条路路径径给给出出符符号号表表达达式式,对对特特定定路路径径输输入入符符号号,经经处处理理输输出出符符号号,判判断断程序的行为是否错误,这种方法复杂,易出错,较少使用。程序的行为是否错误,这种方法复杂,易出错,较少使用。灰灰盒盒法法是是白白盒盒法法和和黑黑盒盒法法相相结结合合使使用用的的方方法法,仅仅对对重重点点路路径径和和程程序序段段用用白白盒盒法法测测试试,大大部部分分用用黑黑盒盒法法进进行行测测
32、试。试。第39页,共100页,编辑于2022年,星期三6.2 6.2 软件测试的方法软件测试的方法 动动态态测测试试是是直直接接执执行行程程序序进进行行测测试试,包包括括功功能能测测试试、接接口口测测试试和和结结构构测测试试,观观察察程程序序的的行行为为,记记录录执执行行的的结结果,从执行结果来分析程序可能出现的错误;果,从执行结果来分析程序可能出现的错误;有有些些人人设设想想,不不管管使使用用那那种种测测试试方方法法,只只要要对对每每一一种种可可能能发发生生的的情情况况都都进进行行测测试试,能能正正确确通通过过,就可以得到完全正确的程序。就可以得到完全正确的程序。第40页,共100页,编辑于
33、2022年,星期三6.2 6.2 软件测试的方法软件测试的方法 包包含含所所有有可可能能情情况况的的测测试试称称为为穷穷尽尽测测试试,实实际际上上,通通常常不不可可能能做做到到穷穷尽尽测测试试。因因为为各各种种输输入入数数据据的的排排列列组组合合情情况况往往往往多多到到无无法法实实际际测测试试完完成成的的程程度度。如如用用黑黑盒盒法法测测试试三三个个整整数数型型的的输输入入数数据据,如如果果每每个个整整数数是是1616位位二二进进制制数数,则则输入数据有输入数据有 2 21616221616221616=2=248482.8102.8101414种排列组合。种排列组合。第41页,共100页,编
34、辑于2022年,星期三6.2 6.2 软件测试的方法软件测试的方法 如如果果每每测测试试一一次次需需要要1 1毫毫秒秒,测测试试完完毕毕这这些些排排列列组组合合的的各各种种情情况况需需要要一一万万年年,另另外外还还需需测测试试不不合合法法的的输输入入情情况况,实实际际上上不不可可能能穷穷尽尽所所有有组组合合情情况况。因因此此,一一般的软件测试是有限测试。般的软件测试是有限测试。Alpha()Alpha()测测试试:通通用用软软件件产产品品为为了了征征集集用用户户的的意意见见,在在开开发发者者的的场场所所,由由用用户户进进行行的的测测试试,记记录录用用户发现的错误和问题。户发现的错误和问题。第4
35、2页,共100页,编辑于2022年,星期三6.2 6.2 软件测试的方法软件测试的方法 Beta()Beta()测测试试:在在一一个个或或多多个个用用户户自自己己的的场场所所,由由最最终终用用户户进进行行,并并记记录录在在测测试试中中遇遇到到的的所所有有问问题题和和想想法。法。重要的通用软件产品,大多经过重要的通用软件产品,大多经过和和测试。测试。第43页,共100页,编辑于2022年,星期三6.3 6.3 测试方案与测试用例测试方案与测试用例 设计测试方案是软件测试中的关键问题。测试方案包设计测试方案是软件测试中的关键问题。测试方案包括预定要测试的功能、结构,应该要输入的测试数据和输括预定要
36、测试的功能、结构,应该要输入的测试数据和输入这些数据后预期的结果入这些数据后预期的结果测试用例。测试用例的设计是测试用例。测试用例的设计是其中较困难的问题,不同的测试数据发现程序错误的能力差其中较困难的问题,不同的测试数据发现程序错误的能力差别很大,为了提高测试效率,降低测试成本,应该选用高效别很大,为了提高测试效率,降低测试成本,应该选用高效的测试数据。因为不可能进行穷尽测试,选用少量高效的测的测试数据。因为不可能进行穷尽测试,选用少量高效的测试数据,进行尽可能完备的测试就显得更重要了。试数据,进行尽可能完备的测试就显得更重要了。第44页,共100页,编辑于2022年,星期三6.3 6.3
37、测试方案与测试用例测试方案与测试用例 设设计计测测试试方方案案的的基基本本目目标标是是,确确定定一一组组最最有有可可能能发发现现某某个个或或某某类类错错误误的的测测试试用用例例。有有多多种种测测试试技技术术,同同一一种种测测试试技技术术在在不不同同的的应应用用场场合合效效果果可可能能相相差差很很大大,因因此此,通通常常需需要要联联合合使使用用多多种种测测试试技技术术来来设设计计测测试试用用例。例。通通常常的的做做法法是是用用黑黑盒盒法法设设计计基基本本测测试试方方案案,再再用用白白盒盒法补充一些方案。法补充一些方案。第45页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆
38、盖)白盒法(逻辑覆盖)白白盒盒法法也也称称逻逻辑辑驱驱动动法法(逻逻辑辑覆覆盖盖法法),从从软软件件的的具具体体逻逻辑辑结结构构和和执执行行路路径径出出发发,设设计计测测试试用用例例。具具有有语语句句覆覆盖盖、判判定定覆覆盖盖(分分支支覆覆盖盖)、条条件件覆覆盖盖、判判定定/条条件件覆覆盖盖、路路径径覆覆盖盖、条条件件组组合合覆覆盖盖、点点覆覆盖盖、边覆盖,下面以一个经典例子分别介绍:边覆盖,下面以一个经典例子分别介绍:设有某个算法片段的程序流程图如下:设有某个算法片段的程序流程图如下:第46页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)图图6-
39、5程序段程序框图程序段程序框图(A1)AND(B=0)(A=2)OR(X1)X=X/AX=X+1abcdeTT第47页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)该程序片段有四条路径:该程序片段有四条路径:abd,acd,ace,aedabd,acd,ace,aed。n n(1)(1)语语句句覆覆盖盖:选选择择足足够够的的测测试试用用例例使使程程序序中中每每条条语语句句至至少执行一次。少执行一次。为为了了使使每每个个语语句句都都执执行行一一次次,程程序序的的执执行行路路径径只只需需经经过过a a、b b、c c、d d、e e各各点点即即可可。如
40、如果果选选择择路路径径aceace,则能保证程序中的语句都执行一次。则能保证程序中的语句都执行一次。第48页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)例例如如,选选择择测测试试用用例例:A=2,B=0,X=3,A=2,B=0,X=3,预预期期 的的 结结 果果 为为:A=2,B=0,X=2.5A=2,B=0,X=2.5;但但是是,许许多多路路径径得得不不到到测测试试,这这种种测测试试很很不不充分。充分。图图6-5程序段程序框图程序段程序框图(A1)AND(B=0)(A=2)OR(X1)X=X/AX=X+1abcdeTT第49页,共100页,编辑
41、于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)(2)(2)判判定定覆覆盖盖(也也称称分分支支覆覆盖盖):判判定定是是一一个个逻逻辑辑表表达达式式的的结结果果。选选择择足足够够的的测测试试用用例例,使使程程序序中中每每个个判判定定至至少少都都能能获获得得一一次次“真真”值值和和一一次次“假假”值值,从从而而使使程程序序的的每个判定的每个分支至少都执行一次。每个判定的每个分支至少都执行一次。例例 如如,选选 择择 测测 试试 用用 例例:A=3,B=0,X=3,A=3,B=0,X=3,预预 期期 结结 果果 为为:A=3,B=0,X=1;A=3,B=0,X=1;选选 择
42、择 测测 试试 用用 例例:A=2,B=1,X=0,A=2,B=1,X=0,预预 期期 结结 果果 为为:A=2,B=1,X=1;A=2,B=1,X=1;第50页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)这这组组测测试试用用例例覆覆盖盖了了路路径径acdacd和和aed aed,满满足足了了判判定定覆覆盖盖要要求求。判判定定覆覆盖盖比比语语句句覆覆盖盖强强,但但是是判判定定覆覆盖盖只只关关心心整整个个判判定定表表达达式式的的值值,对对程程序序逻逻辑辑的的覆覆盖盖程程度度仍仍然然不不高高,如如上上面面的的测测试试,只只覆覆盖盖了了全全部部路路径径
43、的的一一半路径。半路径。第51页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)(3)(3)条条件件覆覆盖盖:条条件件为为逻逻辑辑表表达达式式中中的的各各个个逻逻辑辑分分量量。选选择择足足够够的的测测试试用用例例,使使得得程程序序判判定定中中的的每每个个条条件件都都能能获获得得各种可能的结果。各种可能的结果。如如图图6-56-5中中,有有四四个个条条件件:A1,B=0,A=2,X1,A1,B=0,A=2,X1,每每个个条条件件可可能能出出现现的的各各种种结结果果为为:a a点点出出现现:A1,A1;A1,A1;B=0,B0;B=0,B0;b b点出现
44、:点出现:A=2,A2;X1,X1;A=2,A2;X1,X1;第52页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)例例如如,选选择择测测试试用用例例:A=2,B=0,X=4,A=2,B=0,X=4,预预期期结结果果为为:A=2,B=0,X=3;A=2,B=0,X=3;选选 择择 测测 试试 用用 例例:A=1,B=1,X=1,A=1,B=1,X=1,预预 期期 结结 果果 为为:A=1,B=1,X=1;A=1,B=1,X=1;这这组组测测试试用用例例覆覆盖盖了了路路径径acdacd,aed aed 和和abd abd,满满足足了了条条件件覆覆盖盖
45、要要求求。条条件件覆覆盖盖比比判判定定覆覆盖盖强强,它它使使判判定定表表达达式中的每个条件都取得了两个不同的结果。式中的每个条件都取得了两个不同的结果。第53页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)但但也也有有相相反反的的情情况况,每每个个条条件件虽虽然然取取得得两两个个不不同同的的结果,判定表达式却始终只取一个值,例如:取数据:结果,判定表达式却始终只取一个值,例如:取数据:n nA=2,B=0,X=1;A=2,B=0,X=1;满满足足A1,B=0,A=2,X1A1,B=0,A=2,X1的的条条件件,执执行行路路径径aceace;n nA
46、=1,B=1,X=2;A=1,B=1,X=2;满满足足A1,B0,A2,X1A1,B0,A2,X1的的条条件件,执执行行路路径径abd;abd;满满足足了了条条件件覆覆盖盖,却却不不满满足足判判定定覆覆盖盖,第第二二个个判判定定表达式的值总为真。表达式的值总为真。第54页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)(4)(4)判判定定/条条件件覆覆盖盖:选选择择足足够够的的测测试试用用例例,使使得得程程序序判判定定中中的的每每个个条条件件都都能能获获得得各各种种可可能能的的结结果果,并并且且使使得每个判定都取得各种可能的结果。得每个判定都取得各种
47、可能的结果。例例如如,选选择择测测试试用用例例:A=2,B=0,X=4,A=2,B=0,X=4,预预期期结结果果为为:A=2,B=0,X=3;A=2,B=0,X=3;选选 择择 测测 试试 用用 例例:A=1,B=1,X=1,A=1,B=1,X=1,预预 期期 结结 果果 为为:A=1,B=1,X=1;A=1,B=1,X=1;第55页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)这组测试用例覆盖了路径这组测试用例覆盖了路径acdacd,aed aed 和和abd,abd,满足了满足了判定判定/条件覆盖要求。但它也并不比条件覆盖更强。条件覆盖要求。但
48、它也并不比条件覆盖更强。第56页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)(5 5)条条件件组组合合覆覆盖盖:选选择择足足够够的的测测试试用用例例,使使得得程程序序判判定中的条件的各种可能组合都至少出现一次。定中的条件的各种可能组合都至少出现一次。如图如图6-56-5中,需要测试覆盖条件组合的下述八种情况:中,需要测试覆盖条件组合的下述八种情况:1)1)A1,B=0 A1,B=0;2)2)A1,B0;A1,B0;3)3)A1,B=0;A1,B=0;4 4)A1,B0;A1,B0;5)5)A=2,X1 A=2,X1 6)6)A=2,X=1 A=2
49、,X1 8)A2,X1A2,X1 8)A2,X1第57页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)用用A=2,B=0,X=4,A=2,B=0,X=4,预预期期结结果果:A=2,B=0,X=3,A=2,B=0,X=3,覆覆盖盖情情况况1 1)、)、5 5););用用A=2,B=1,X=1,A=2,B=1,X=1,预预期期结结果果:A=2,B=1,X=2,A=2,B=1,X=2,覆覆盖盖情情况况2 2)、)、6 6)用用A=1,B=0,X=2,A=1,B=0,X=2,预预期期结结果果:A=1,B=0,X=3,A=1,B=0,X=3,覆覆盖盖情情况况
50、 3)3)、7)7)用用A=1,B=1,C=1,A=1,B=1,C=1,预预期期结结果果:A=1,B=1,X=1,A=1,B=1,X=1,覆覆盖盖情情况况 4)4)、8)8)第58页,共100页,编辑于2022年,星期三 6.4 6.4 白盒法(逻辑覆盖)白盒法(逻辑覆盖)条条件件组组合合覆覆盖盖是是最最强强的的覆覆盖盖,虽虽然然这这四四个个测测试试实实现现了了条条件件组组合合覆覆盖盖,但但并并没没有有覆覆盖盖每每一一条条路路径径,如如:路路径径acdacd遗漏了。遗漏了。以以上上各各种种技技术术基基本本上上是是依依次次增增强强的的顺顺序序,但但测测试试用例的数量也急剧增加。开销大,应注意权衡