软件工程课件:第7章 软件实现

上传人:汽*** 文档编号:570170175 上传时间:2024-08-02 格式:PPT 页数:118 大小:1.05MB
返回 下载 相关 举报
软件工程课件:第7章 软件实现_第1页
第1页 / 共118页
软件工程课件:第7章 软件实现_第2页
第2页 / 共118页
软件工程课件:第7章 软件实现_第3页
第3页 / 共118页
软件工程课件:第7章 软件实现_第4页
第4页 / 共118页
软件工程课件:第7章 软件实现_第5页
第5页 / 共118页
点击查看更多>>
资源描述

《软件工程课件:第7章 软件实现》由会员分享,可在线阅读,更多相关《软件工程课件:第7章 软件实现(118页珍藏版)》请在金锄头文库上搜索。

1、第7章 实现 实现:编码和和测试。编码:把:把软件件设计结果翻果翻译成程序。成程序。测试:检测程序并改正程序并改正错误的的过程。程。 计算算机机程程序序设计语言言基基本本上上可可以以分分为两两大大类:1.汇编语言言;2.高高级语言。言。 7.1编码编码7.1.1选择程序设计语言选择程序设计语言从从应用特点看,高用特点看,高级语言可分言可分为:1)基基础语言言如如BASIC、FORTRAN、COBOL等等2)结构化构化语言言如如ALGOL、PL/1、PASCAL、C、ADA等等3)专用用语言言如如APL、BLISS、FORTH、LISP、PROLOG等等4)面向面向对象象如如JAVA、C+等等选

2、择一种一种编程程语言的理言的理论标准:准:1)有理想的模)有理想的模块化机制;化机制;2)可)可读性好的控制性好的控制结构和数据构和数据结构;构;3)便于)便于调试和提高和提高软件可靠性;件可靠性;4)编译程序程序发现程序程序错误的能力的能力强;5)有良好的独立)有良好的独立编译机制。机制。 选择语言言时除除了了考考虑理理论上上的的标准准,还必必须同同时考考虑主要的主要的实用用标准:准:(1)系统用户要求)系统用户要求(2)可以使用的编译程序)可以使用的编译程序(3)可以得到的软件工具)可以得到的软件工具(4)工程规模)工程规模(5)程序员知识)程序员知识(6)软件可移植性要求)软件可移植性要

3、求(7)软件的应用领域)软件的应用领域1.程序内部的文档程序内部的文档选取取含含义鲜明明的的名名字字,如如果果使使用用缩写写,缩写写规则要一致,并要一致,并给每个名字加注每个名字加注释;通通常常在在每每个个模模块开开始始处要要有有一一段段注注释,描描述述模模块功能、算法、接口特点等;功能、算法、接口特点等;程程序序清清单布布局局应利利用用适适当当的的阶梯梯形形式式,使使程序的程序的层次次结构清晰明构清晰明显。7.1.2写程序的风格写程序的风格2.数据数据说明明数据数据说明的次序明的次序应该标准化,如按数据准化,如按数据类型确定型确定说明的次序;明的次序;多个多个变量名在一个量名在一个语句中句中

4、说明明时,应该按字按字母母顺序排列序排列这些些变量;量;如果如果设计时使用了复使用了复杂的数据的数据结构,构,应该用用注注释说明明实现该数据数据结构的方法和特点。构的方法和特点。3.语句构造句构造4.输入入/输出出5.效率效率A程序运行程序运行时间B存存储器效率器效率C输入入/输出效率出效率 有关有关测试的一些的一些规则:(1)测试是是为了了发现程程序序中中的的错误而而执行程序的行程序的过程;程;(2)好好的的测试方方案案是是极极可可能能发现迄迄今今为止尚未止尚未发现的的错误的的测试方案;方案; (3)成功的)成功的测试是是发现了至今了至今为止尚未止尚未发现的的错误的的测试。7.2.1软件测试

5、的目标软件测试的目标7.2软件测试基础软件测试基础7.2.2软件件测试准准则1)所有测试都应该能追溯到用户需求;)所有测试都应该能追溯到用户需求;2)应该远在测试前就制定出测试计划;)应该远在测试前就制定出测试计划;3)把)把Pareto原理(原理(20/80)应用到软件测试中;)应用到软件测试中;4)应应该该从从“小小规规模模”测测试试开开始始,并并逐逐步步进进行行“大大规模规模”测试;测试;5)穷举测试是不可能的;是不可能的;穷尽测试穷尽测试穷尽测试穷尽测试:包含所有可能情况的测试称为穷尽测试。:包含所有可能情况的测试称为穷尽测试。程序程序main()()a2a1a3b输入输入输出输出a1

6、、a2、a3:Integer16bits输入数据的穷输入数据的穷尽测试组合:尽测试组合:216216216248310146)为为了了达达到到最最佳佳测测试试效效果果,应应该该由由独独立立的的第第三三方从事测试工作。方从事测试工作。黑盒黑盒测试:如如果果已已经知知道道软件件应该具具有有的的功功能能,可可以以通通过测试来来检验是是否否每每个个功功能能都都能能正正常常使使用用,这种种测试称黑盒称黑盒测试。也称功能。也称功能测试。7.2.3测试方法测试方法白盒白盒测试:也称也称结构构测试。如如果果知知道道软件件内内部部工工作作过程程,可可以以通通过测试来来检验软件件内内部部动作作是是否否按按照照规格

7、格说明明书的的规定正常定正常进行,行,这种种测试称称为白盒白盒测试。1.模模块测试模模块测试又又称称单元元测试,它它把把每每个个模模块作作为单独的独的实体来体来测试。2.子系子系统测试子子系系统测试是是把把经过单元元测试的的模模块放放在在一起形成一个子系一起形成一个子系统来来测试。7.2.4软件测试的步骤软件测试的步骤3.系系统测试系系统测试是是把把经过测试的的子子系系统装装配配成成一一个个完整的系完整的系统来来测试。4.验收收测试验收收测试把把软件件系系统作作为单一一的的实体体进行行测试(利用用(利用用户的的实际数据数据测试)。)。5.平行运行平行运行 平平行行运运行行是是同同时运运行行新新

8、开开发出出来来的的系系统和和将将被被它它取取代代的的旧旧系系统,以以便便比比较新新旧旧两两个个系系统的的处理理结果。果。软件测试的软件测试的V模型模型7.2.5测试阶段的信息流段的信息流测试测试评价评价调试调试可靠性可靠性模型模型软件配置软件配置测试配置测试配置测试测试结果结果预期结果预期结果错误错误错误率数据错误率数据正确正确可靠性预测可靠性预测图图7.1测试阶段的信息流测试阶段的信息流7.3单元测试单元测试单元元测试的一般方法是:的一般方法是: 首先通首先通过编译系系统检查并改正程序中所有的并改正程序中所有的语法法错误; 然后用然后用详细设计模模块说明明为指南,指南,对重要的重要的控制路径

9、控制路径进行行测试,以便,以便发现模模块内部的内部的错误。 通常,通常,单元元测试使用白盒使用白盒测试方法。方法。1)模模块接口接口应该对穿穿过模模块接接口口的的数数据据流流进行行检测,以保以保证正确的正确的输入和入和输出。出。2)局部数据局部数据结构构这是是错误的的主主要要来来源源,应该设计相相应的的测试用例,以便用例,以便发现数据数据结构方面的构方面的错误。7.3.1测试重点测试重点3)重要的重要的执行路径行路径由由于于不不可可能能进行行穷尽尽测试,因因此此选择测试路径是非常关路径是非常关键的。的。4)出出错处理通路理通路5)边界条件界条件审查小小组: 1)组长;2)程序的)程序的设计者;

10、者;3)程序的)程序的编写者;写者;4)程序的)程序的测试者。者。7.3.2代码审查代码审查单元测试:人工测试和机器测试单元测试:人工测试和机器测试7.3.3计算机算机测试由由于于软件件模模块不不是是一一个个独独立立的的系系统,不不能能独独立立运运行行,要要依依靠靠其其他他模模块调用用,或或需需要要调用用其他模其他模块。因因此此,必必须要要为测试的的单元元开开发驱动程程序序或或存根程序存根程序。1)驱动程序程序相相当当于于一一个个“主主程程序序”,用用来来把把测试数数据据传送送给被被测试的模的模块,并打印有关,并打印有关结果。果。2)存根程序存根程序 用来代替被用来代替被测试模模块所所调用的模

11、用的模块,相当,相当于于“虚虚拟子程序子程序”。如,如,测试B模模块,设计了了A模模块和和C模模块。由由A负责传送送测试数据,由数据,由C负责模模拟被被B调用的模用的模块。C模模块可能没有,可能没有,这取决于取决于B有没有有没有调用其他程序。用其他程序。A、C都是一次性程序,只在都是一次性程序,只在测试时临时使用,使用,应尽量尽量设计得得简单一些,以一些,以节省省费用和用和时间。BAC被测试模块被测试模块驱动模块驱动模块存根模块存根模块例:例:正文加工正文加工系统系统输入输入1.0输出输出2.0编辑编辑3.0加标题加标题4.0存储存储5.0检索检索6.0编目录编目录7.0格式化格式化8.0添加

12、添加3.1删除删除3.2插入插入3.3修改修改3.4合并合并3.5列表列表3.6图图7.2正文加工系统(正文加工系统(H图)图)TESTDRIVER编辑编辑3.0TESTSTUB对对“编辑编辑”功能的测试:功能的测试:7.4集成测试集成测试集集成成测试是是组装装软件件的的系系统化化技技术,它它将将经过单元元测试的模的模块联系在一起系在一起进行行测试。由模由模块组装成程序装成程序时有两种方法:有两种方法:1)非非渐增式增式测试方法方法先先分分别测试每每个个模模块,再再把把所所有有模模块按按设计要求放在一起要求放在一起结合成所要的程序。合成所要的程序。2)渐增式增式测试方法方法 每次增加一个待每次

13、增加一个待测试模模块,把它同已,把它同已经测试好的那些模好的那些模块结合起来合起来进行行测试,反复,反复进行直到完成所有模行直到完成所有模块测试的方法。的方法。 使用使用渐增式增式测试方法把模方法把模块结合到合到软件系件系统中去中去时,有,有自自顶向下向下和和自底向上自底向上两种集成方法。两种集成方法。 自自顶顶向向下下集集成成是是一一种种递递增增的的装装配配软软件件结结构构的的方方法法,这这种种方方法法应应用用非非常常广广泛泛。它它需需要要存存根根程程序序,但是不需要驱动程序。但是不需要驱动程序。7.4.1自顶向下集成自顶向下集成这种种方方法法的的思思想想是是:从从主主控控模模块(主主程程序

14、序)开开始始,沿沿软件件的的控控制制层次次向向下下移移动,逐逐渐把各个模把各个模块结合起来。合起来。 在自在自顶向下向下结合方法中,如何将所有合方法中,如何将所有模模块组装到装到软件件结构中,又有两种方法:构中,又有两种方法:1)深度深度优先策略先策略先先组装装软件件结构的一构的一条条主控制通路主控制通路上的所有模上的所有模块,选择哪条主控制通路,哪条主控制通路,具有具有较大的任意性。大的任意性。如如图,如果,如果选取左通取左通路,就先把模路,就先把模块M1、M2、M5结合起来合起来测试,然后,然后结合模合模块M8、M6,再构造再构造中央和右中央和右侧的控制通路。的控制通路。M1M2M3M4M

15、6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例2)宽度度优先策略先策略沿着沿着软件件结构水平地移构水平地移动,把,把处于同一个于同一个层次的次的所有模所有模块组装起来。装起来。如如图,首先,首先结合合M2、M3、M4和主控模和主控模块M1,然后然后结合下一个控制合下一个控制层次中的模次中的模块M5、M6和和M7,最后最后结合模合模块M8。M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例自自顶向向下下集集成成方方法法的基本的基本过程如下:程如下:1)对主主控控模模块进行行测试,测试时用用存存根根程程序序代代替替所所有有直直接接被被主主控控模模块调用用的的模模块

16、;M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例2)根根据据选选定定的的结结合合策策略略(深深度度优优先先或或宽宽度度优优先先),每每次次用用一一个个实实际际模模块块代代替替一一个个存存根根程程序序(新新结结合合的的模模块块往往往往又又需需要要新新的的存存根程序);根程序);3)每每结合合一一个个模模块,就就测试一个;一个;4)为保保证不不引引入入新新的的错误,需需要要进行行回回归测试,即即重重复复以以前前进行行过的的部部分分或或全全部部测试;5)重复回到第二步,)重复回到第二步,直到构成整个

17、直到构成整个软件件结构。构。M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例 自自底底向向上上集集成成方方法法是是从从软件件结构构最最底底层模模块开开始始进行行组装装和和测试,它它与与自自顶向向下下结合合方方法法相相反反,需需要要驱动程程序序,不需要存根程序。不需要存根程序。7.4.2自底向上集成自底向上集成自自底底向向上上集集成成方方法的基本法的基本过程如下:程如下:1)把把底底层模模块组合合成成实现一一个个特特定定软件件子子功功能能的的族族,如如图族族1、2、3。McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例2)为每个模每个模块设计一

18、个一个驱动程序,作程序,作为测试的控制程序,的控制程序,以以协调测试用例的用例的输入和入和输出。出。图中中D1、D2、D3分分别是族是族1、2、3的的驱动程序;程序;McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例3)对模模块进行行测试;4)用用实际模模块代代替替驱动程程序序组装装成成新新的的模模块族族,在在新新加加入入的的实际模模块上上面面加加上上新新的的驱动程序程序进行行测试;McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例5)重复第二到第)重复第二到第四步,逐四步,逐渐向上加向上加入入实际模模块,直至,直至构造出整个构造出整个软件件

19、结构。构。McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例7.4.3不同集成测试策略的比较不同集成测试策略的比较1.改改进的自的自顶向下向下测试方法;方法;2.混合法。混合法。M1M2M3M4M5M67.4.4回回归测试指重新指重新执行已行已经做做过的部分的部分测试。回回归测试用于保用于保证由于由于调试或其他原因引或其他原因引起的程序起的程序变化,不会化,不会导致致额外外错误的的测试活活动。7.5确认测试(验收测试)确认测试(验收测试)也称也称为验收收测试,目,目标是是验证软件的有效性。件的有效性。 如如果果软件件的的功功能能和和性性能能符符合合用用户的的期期待待,

20、软件就是有效的。件就是有效的。 软件件规格格说明明书是是进行确行确认测试的基的基础。7.5.1确认测试的范围确认测试的范围确确认测试的主要特点及内容有:的主要特点及内容有:1)某某些些已已经测试过的的纯粹粹技技术性性的的测试项可可能能不不需需要要再再次次测试,而而对用用户特特别感感兴趣趣的的功功能或性能,可能需要增加一些能或性能,可能需要增加一些测试;2)通通常常确确认测试主主要要使使用用实际生生产中中的的数数据据来来进行行测试;3)确)确认测试必必须有用有用户的的积极参与,甚至以用极参与,甚至以用户为主,可能需要主,可能需要进行一些与用行一些与用户使用步使用步骤有关的有关的测试。确确认测试一

21、般使用黑盒一般使用黑盒测试法。法。7.5.2软件配置复查软件配置复查 目目的的:保保证证软软件件配配置置的的所所有有成成分分都都齐齐全全,质质量量符符合合要要求求,文文档档与与程程序序完完全全一一致致,而而且且已已经编好目录。经编好目录。7.5.3Alpha和和Beta测试 AlphaAlpha测测测测试试试试:用用户户在在开开发发者者的的场场所所进进行行测测试试,并并且且在在开开发发者者的的指指导导下下进进行行,测测试试在在受受控控环环境中进行,开发者记录发现的错误和问题;境中进行,开发者记录发现的错误和问题; BetaBeta测测测测试试试试:用用户户在在一一个个或或多多个个客客户户场场所

22、所进进行行测测试试,不不受受开开发发者者控控制制,测测试试者者记记录录发发现现的的问题和错误,定期将问题报告发送给开发者。问题和错误,定期将问题报告发送给开发者。7.6白盒测试技术白盒测试技术1.语句覆盖句覆盖 语句覆盖是指:句覆盖是指:设计的的测试用例能使程序中每用例能使程序中每条条语句至少句至少执行一次。行一次。7.6.1逻辑覆盖逻辑覆盖例:一个被测试模块的源程序为例:一个被测试模块的源程序为(PASCAL语言)语言):PROCEDUREEXAMPLE(A,B:REAL;VARX:REAL);BEGINIF(A1)AND(B=0)THENX:=X/A;IF(A=2)OR(X1)THENX:

23、=X+1END入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图选取测试用例:选取测试用例:A=2,B=0,X=4A=2,B=0,X=4,程序执行,程序执行路径为:路径为:sacbed。2.判定覆盖判定覆盖判判定定覆覆盖盖是是指指:选选取取足足够够的的测测试试用用例例,使使得得程程序序中中每每个个判判断断的的可可能能结结果果都都至至少少执执行行一一次次,也也就就是是说说使使程程序序的的每每个个判判断断分分支支至至少少通通过一次。过一次。入口入口返回返回A1andB=0A=2orX1X=X/AX=X+

24、1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图对于上例,选取如下测试用例:对于上例,选取如下测试用例:I.A=3A=3,B=0B=0,X=3X=3(覆盖覆盖sacbd)II.A=2A=2,B=1B=1,X=1X=1(覆盖覆盖sabed)3.条件覆盖条件覆盖条条件件覆覆盖盖是是指指:选选择择足足够够的的测测试试用用例例,使使得得程程序序中中每每个个判判定定表表达达式式的的每每个个条条件件都都取取到到各各种种可能的结果。可能的结果。入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测

25、试模块的流程图上上例例中中,有有两两个个判判定定表表达达式式,每每个个表表达达式式有有两两个个条条件件,为为了了做做到到条条件件覆覆盖盖,应应该该选选取取测测试试数数据据使使得得a点点出出现现如如下结果:下结果:A1A1, A1A1, B=0B=0,B0B0在在b点出现如下结果:点出现如下结果:A=2A=2, A2A2, X1X1,X1X1选取如下测试用例:选取如下测试用例:I.A=2A=2,B=0B=0,X=4X=4(满满足足A1,B=0,A=2和和 X1, 执执 行行 路路 径径 为为sacbed)II.A=1A=1,B=1B=1,X=1X=1(满满足足A1,B0,A2和和 X1, 执执

26、行行 路路 径径 为为sabd)入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图条条件件覆覆盖盖通通常常比比判判定定覆覆盖盖强强,但但是是条条件件覆覆盖盖不不一一定定包包含含判判定定覆覆盖。盖。入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图如:如:I A=2A=2, B=0B=0, X=1X=1 ( 满满 足足 A1, B=0,A=2和和X1,执执行行路路径径为为sacbed)II A=1A=1,

27、B=1B=1, X=2X=2( 满满 足足 A1, B0,A2和和X1,执执行行路路径径为为sabed)只只满满足足条条件件覆覆盖盖,并不满足判定覆盖。并不满足判定覆盖。入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图4.判定判定判定判定/ /条件覆盖条件覆盖条件覆盖条件覆盖判判定定/条条件件覆覆盖盖是是指指:选选取取足足够够的的测测试试用用例使得同时满足判定覆盖和条件覆盖的要求。例使得同时满足判定覆盖和条件覆盖的要求。对对于于上上例例,选选取取如下测试用例:如下测试用例:I A=2, B=0,

28、X=4(满满足足A1,B=0,A=2和和X1,执执行行路路径为径为sacbed)II A=1, B=1, X=1( 满满 足足 A1, B0,A2和和X1,执执行行路路径为径为sabd)入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图5.条件组合覆盖条件组合覆盖条条件件组组合合覆覆盖盖指指:选选取取足足够够的的测测试试用用例例,使使得得每每个个判判定定表表达达式式中中条条件件的的各各种种可可能能的的组组合合都至少出现一次。都至少出现一次。对对于于上上例例,共共有有8种可能的条件组合:种可能的条件组

29、合:1)A1,B=02)A1,B03)A1,B=04)A1,B05)A=2,X16)A=2,X17)A2,X18)A2,X1入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图选取如下测试用例:选取如下测试用例:IA=2A=2,B=0B=0,X=4X=4(满满足足1、5组组合合:A1, B=0, A=2,X1, 执执 行行 路路 径径sacbed)II A=2A=2, B=1B=1,X=1X=1(满满足足2、6组组合合:A1, B0, A=2,X1, 执执 行行 路路 径径sabed)入口入口返回返回

30、A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图IIIA=1A=1,B=0B=0,X=2X=2(满满足足3、7组组合合:A1, B=0, A2,X1, 执执 行行 路路 径径sabed)IVA=1A=1,B=1B=1,X=1X=1(满满足足4、8组组合合:A1, B0, A2,X1,执行路径执行路径sabd)入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图如如果果从从对程程序序路路径径的的覆覆盖盖程程度度分分析析,可

31、可以以提提出下面一些出下面一些逻辑覆盖覆盖标准:准:6.点覆盖点覆盖点覆盖点覆盖点覆盖是指:点覆盖是指:选取足取足够多的多的测试用例,使得程用例,使得程序序执行路径至少行路径至少经过程序程序图中每个中每个节点一次。点一次。sabdce1234567图图7.5对应的程序图对应的程序图7.边边覆盖覆盖覆盖覆盖边覆盖是指:覆盖是指:选取足取足够多的多的测试用例,使得程用例,使得程序序执行路径至少行路径至少经过程序程序图中每条中每条边一次。一次。sabdce1234567图图7.5对应的程序图对应的程序图选取如下测试用例:选取如下测试用例:IA=3A=3,B=0B=0,X=3X=3(执行路径执行路径1

32、453)IIA=2A=2,B=1B=1,X=1X=1(执行路径执行路径1267)8.路径覆盖路径覆盖路路径径覆覆盖盖是是指指:选取取足足够多多的的测试用用例例,使得程序的每条可能路径都至少使得程序的每条可能路径都至少执行一次。行一次。sabdce1234567图图7.5对应的程序图对应的程序图选取如下测试用例:选取如下测试用例:IA=1A=1,B=1B=1,X=1X=1(执行路径执行路径123)IIA=1A=1,B=1B=1,X=2X=2(执行路径执行路径1267)IIIA=3A=3,B=0B=0,X=1X=1(执行路径执行路径1453)IVA=2A=2,B=0B=0,X=4X=4(执行路径执

33、行路径14567)1)A=3,B=0,X=12)A=2,B=0,X=43)A=2,B=1,X=14)A=1,B=0,X=25)A=1,B=1,X=1更强的测试数据更强的测试数据更强的测试数据更强的测试数据:满足路径覆盖和条件组合覆盖:满足路径覆盖和条件组合覆盖2)5)满满足足条条件件组组合合覆覆盖盖,执执 行行 路路 径径 分分 别别 是是 : sacbed、sabed、sabed、sabd入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图路径:路径:sacbd7.6.2控制控制结构构测试(自学自学

34、)黑盒黑盒测试与白盒与白盒测试比比较黑盒黑盒测试能能发现的的问题?如何如何设计黑盒黑盒测试?如何如何设计标准的黑盒准的黑盒测试用列?用列?7.7黑盒测试技术黑盒测试技术等价等价类划分是一种黑盒划分是一种黑盒测试技技术。穷尽尽的的黑黑盒盒测试需需要要使使用用所所有有可可能能的的输入入数数据据(有有效效的的和和无无效效的的)进行行测试,通通常常是是不不现实的。因此的。因此产生了等价生了等价类划分。划分。 7.7.1等价划分(等价类划分)等价划分(等价类划分)等价等价类划分的思想划分的思想: 如果将所有可能的如果将所有可能的输入数据(有效的和无入数据(有效的和无效的)划分效的)划分为若干个等价若干个

35、等价类,就可以假定用每,就可以假定用每一个等价一个等价类中的代表中的代表值作作为测试用例来用例来进行行测试时,等价于用,等价于用该类中所有中所有值进行了行了测试。用用等等价价类划划分分设计测试用用例例时,主主要要分分两两步:划分等价步:划分等价类、确定、确定测试用例。用例。1)等价等价类划分划分划分等价划分等价类需要需要经验,以下,以下给出一些出一些规则:A如果某输入条件规定了输入的范围,那么可以划如果某输入条件规定了输入的范围,那么可以划分为一个有效的等价类和两个无效的等价类。分为一个有效的等价类和两个无效的等价类。如如X的值的输入范围是的值的输入范围是1,99,那么测试,那么测试X时,时,

36、可以这样划分:有效等价类为可以这样划分:有效等价类为1,99,无效等,无效等价类为(价类为(-,1)和()和(99,+)。)。B如果某个如果某个输入条件入条件规定了一定了一组可能的可能的值,且程序可以,且程序可以对不同的不同的值作出不同的作出不同的处理,那么可以理,那么可以为每种每种值确定确定一个有效的等价一个有效的等价类,同,同时还有一个无效等价有一个无效等价类。如,如,“职称职称”这个量可能的值是:教授、副这个量可能的值是:教授、副教授、讲师、助教。那么可以这样划分:四类有教授、讲师、助教。那么可以这样划分:四类有效等价类分别为教授、副教授、讲师、助教,无效等价类分别为教授、副教授、讲师、

37、助教,无效等价类为四种职称以外的所有值。效等价类为四种职称以外的所有值。2)确定确定确定确定测试测试用例用例用例用例A给每个等价每个等价类规定一个唯一的定一个唯一的编号;号;B设计一一个个新新的的测试用用例例,使使其其尽尽可可能能多多地地覆覆盖盖未未被被覆覆盖盖过的的有有效效等等价价类。重重复复此此步步,直至所有有效等价直至所有有效等价类被覆盖;被覆盖;C设计一一个个新新的的测试用用例例,使使其其覆覆盖盖而而且且只只覆覆盖盖一一个个尚尚未未被被覆覆盖盖的的无无效效等等价价类。重重复复此步,直到所有无效等价此步,直到所有无效等价类被覆盖。被覆盖。通通常常程程序序发现一一类错误后后,就就报出出错信

38、信息息,不不再再检查其其它它类错误,所所以以设计测试用用例例时,一次只覆盖一个无效等价一次只覆盖一个无效等价类。实例:一个把数字串变成整数的函数。实例:一个把数字串变成整数的函数。计算机字长:计算机字长:16bits,函数由函数由PASCAL语言编写。语言编写。functionstrtoint(dstr:shortstr):integertypeshortstr=array1.6ofchar;/字符串字符串6位位/(16位字长能表示的整型数范围是位字长能表示的整型数范围是-215,215-1,即即-32768,32767 )有效输入的等价类有:有效输入的等价类有:(1)16个数字字符组成的数字

39、串(最高位数字不为零);个数字字符组成的数字串(最高位数字不为零);如:如:0,999999(2)最高位数字是零的数字串;)最高位数字是零的数字串;如:如:“012345”(3)最高位数字左邻是负号的数字串;)最高位数字左邻是负号的数字串;如:如:“12345”无效无效输入的等价入的等价类有:有:(4)空字符串(全是空格);如)空字符串(全是空格);如“”;(5)左部填充的字符既不是零,又不是空格;)左部填充的字符既不是零,又不是空格;如:如:“A12345”(6)最高位数字右面由数字和空格混合而成;最高位数字右面由数字和空格混合而成;如:如:“12345”(7)最高位数字右面由数字和其他字符

40、混合而成;)最高位数字右面由数字和其他字符混合而成;如:如:“12A345”(8)负号与最高位数字之号与最高位数字之间有空格;有空格;如:如:“-1234”合法合法输出的等价出的等价类有:有:(9)在)在计算机能表示的最小算机能表示的最小负整数和零之整数和零之间的的负整数;整数;如:如:-32768,0)(10)零;)零;(11)在零和)在零和计算机能表示的最大正整数之算机能表示的最大正整数之间的的正整数;正整数;如:如:(0,32767非法非法输出的等价出的等价类有:有:(12)比)比计算机能表示的最小算机能表示的最小负整数整数还小的小的负整数;整数;如:如:“32769”(13)比)比计算

41、机能表示的最大正整数算机能表示的最大正整数还大的正整数;大的正整数;如:如:“123456”根据划分的等价根据划分的等价类,设计出出测试方案方案11个:个:(1)16个数字个数字组成的字符串;成的字符串;输入:入:1预期的期的输出:出:1(2)最高位数字是零的数字串;最高位数字是零的数字串;输入:入:000001预期的期的输出:出:1(3)负号与最高位数字相号与最高位数字相邻;输入:入:00001预期的期的输出:出:1(4)最高位数字是零的特例;)最高位数字是零的特例;输入:入:000000预期的期的输出:出:0(5)太小的)太小的负整数;整数;输入:入:47561预期的期的输出:出:错误无效

42、无效输入入(6)太大的正整数;)太大的正整数;输入:入:132767预期的期的输出:出:错误无效无效输入入(7)空字符串;)空字符串;输入:入:预期的期的输出:出:错误没有数字没有数字(8)字符串左部字符既不是零又不是空格;)字符串左部字符既不是零又不是空格;输入:入:AAAAA1预期的期的输出:出:错误非数字非数字(9)最高位数字后面有空格;)最高位数字后面有空格;输入:入:12预期的期的输出:出:错误无效无效输入入(10)最高位数字后面有其他字符;)最高位数字后面有其他字符;输入:入:1AAA23预期的期的输出:出:错误无效无效输入入(11)负号和最高位数字之号和最高位数字之间有空格;有空

43、格;输入:入:12预期的期的输出:出:错误负号位置号位置错。程程序序通通常常在在处理理边缘情情况况时容容易易出出现错误,如等价如等价类与等价与等价类之之间的的边界界值。所所以以在在设计测试用用例例时,使使用用正正好好等等于于、正正好好大大于于、正正好好小小于于边界界值的的数数据据进行行测试,发现程序程序错误的概率的概率较大。大。7.7.2边界值分析边界值分析边界界值分析分析测试法属黑盒法属黑盒测试。 在在实际设计测试方案方案时,常常,常常结合使用合使用等价划分和等价划分和边界界值分析两种技分析两种技术,把一些等价,把一些等价类的的边界界值作作为测试用例用例进行行测试。上例中上例中设计了了11个

44、个测试用例,用例,还应该用用边界界值分析分析补充充测试用例:用例:(12)使)使输出出刚好等于最小好等于最小负整数;整数;输入:入:32768预期的期的输出:出:32768(13)使)使输出出刚好等于最大的正整数;好等于最大的正整数;输入:入:32767预期的期的输出:出:32767(14)使)使输出出刚刚小于最小的小于最小的负整数;整数;输入:入:32769预期的期的输出:出:错误无效无效输入入(15)使)使输出出刚刚大于最大正整数;大于最大正整数;输入:入:32768预期的期的输出:出:错误无效无效输入入错误推推测法在很大程度上靠直法在很大程度上靠直觉和和经验进行。行。基基本本思思想想:列

45、列举出出程程序序中中可可能能的的错误和和容容易易发生生错误的特殊情况,且根据它的特殊情况,且根据它们选择测试方案。方案。如如:输入入、输出出为0时容容易易出出错;输出出记录为0条条时容易出容易出错;等等。;等等。7.7.3错误推测错误推测对软件件系系统进行行实际测试时,应该联合合使使用用各各种种设计测试方方案案的的方方法法,形形成成一一种种综合策略。具体可以使用如下策略:合策略。具体可以使用如下策略:1)在任何情况下都)在任何情况下都应该进行行边界界值分析;分析;2)必要)必要时用等价划分法用等价划分法补充充测试方案;方案;7.7.4实用测试策略实用测试策略3)必要)必要时再用再用错误推推测法

46、法补充充测试方案;方案;4)对照程序照程序逻辑,检查已已经设计出的出的测试方案。可以根据方案。可以根据对程序可靠性的要求采用程序可靠性的要求采用不同的不同的逻辑覆盖覆盖标准。准。 实实例例例例:程程序序TRIANGLE读入入三三个个整整数数值,这三三个个整整数数代代表表同同一一个个三三角角形形三三条条边的的长度度,程程序序根根据据这三三个个值判判断断三三角角形形属属于于不不等等边、等腰或是等等腰或是等边三角形。三角形。开始开始停止停止AB+CBA+CCA+BA=BA=CB=CB=C输出:等输出:等边三角形边三角形输出:不输出:不等边三角等边三角形形输出:等输出:等腰三角形腰三角形输出:不输出:

47、不是三角形是三角形abcdefghijklmnop12345678910111213141516171819202122TFTFTFTTFFFTTF图图7.8程序程序TRIANGLE的流程图的流程图综合合使使用用边界界值分分析析、等等价价值划划分分和和错误推推测等等技技术,可以,可以设计出出11种种应该测试的情况:的情况:(1)正常的不等)正常的不等边三角形三角形;(2)正常的等)正常的等边三角形三角形;(3)正正常常的的等等腰腰三三角角形形,包包括括两两条条相相等等边的的三三种种不不同排列方法同排列方法;(4)退退化化的的三三角角形形(即即两两边的的和和等等于于第第三三边),包包括三种不同排

48、列方法;括三种不同排列方法;(5)三三条条边不不能能构构成成三三角角形形(即即两两边之之和和小小于于第第三三边),包括三种不同排列方法;包括三种不同排列方法;(6)一条)一条边的的长度度为零,包括三种不同的排列方法;零,包括三种不同的排列方法;(7)两条)两条边的的长度度为零,包括三种不同的排列方法;零,包括三种不同的排列方法;(8)三条)三条边的的长度全度全为零;零;(9)输入数据中包含入数据中包含负整数;整数;(10)输入数据不全(不足三个正整数);入数据不全(不足三个正整数);(11)输入数据中包含非整数型的数据。入数据中包含非整数型的数据。abcdefghklmnopij1234567

49、891011121314151617181920212223图图7.9对应的程序图对应的程序图程序程序TRIANGLE的测试数据的测试数据测试功能测试功能测试数据测试数据abc1.等边等边2.等腰等腰3.不等边不等边4.非三角形非三角形5.退化情况退化情况6.零数据零数据10,10,1010,10,178,10,1210,10,2110,5,50,0,00,0,70,10,12,10,17,108,12,1010,21,105,10,5,0,17,012,0,10,17,10,1010,12,821,10,105,5,10,17,0,012,10,0测试功能测试功能测试数据测试数据abc7.负

50、数据负数据8.遗留数据遗留数据9.无效输入无效输入10.边界值边界值-10,-10,-10-10,-10,17-8,10,17,10,8,10,A,B,C=,+,*8,10,A7E3,10.5,A32767,32766,8-32768,8,32766-32768,8,-32769,-10,17,-1017,-8,10,10,8,10,8,A,1010.5,7E3,A32766,8,3276732768,8,-327698,-32767,-32768,17,-10,-1010,12,8,10,8,10,A,10,8A,10.5,7E332768,8,32767-32769,8,32767-327

51、67,8,-32769最后,检查测试数据的覆盖程度,通常最后,检查测试数据的覆盖程度,通常应该做到边覆盖。应该做到边覆盖。测试数据覆盖程度检验表中列出的四种测试数据覆盖程度检验表中列出的四种测试数据已经做到了边覆盖(覆盖所有的测试数据已经做到了边覆盖(覆盖所有的22条边)。条边)。测试数据覆盖程度检验表测试数据覆盖程度检验表编号编号测试数据测试数据覆盖的边覆盖的边12a2b2c3a3b3c4a4b4c10,10,1010,10,1710,17,1017,10,108,10,128,12,1010,12,810,10,2110,21,1021,10,101,2,3,4,5,6,7,81,2,3,

52、4,5,15,19,20,81,2,3,4,14,18,19,20,81,2,3,4,14,16,17,19,20,81,2,3,4,14,16,21,22,81,2,3,4,14,16,21,22,81,2,3,4,14,16,21,22,81,2,3,11,12,13,81,2,10,12,13,81,9,12,13,87.8调试调试7.8.1调试过程调试过程调试是在测试发现错误之后排除错误的过程。调试是在测试发现错误之后排除错误的过程。测试用例测试用例结果结果调试调试附加测试附加测试纠正且回归测试纠正且回归测试已识别原因已识别原因被怀疑原因被怀疑原因1.蛮蛮蛮蛮干干干干法法法法:打打印印

53、内内存存的的内内容容,从从中中寻找找错误的的线索,是效率最低的程序索,是效率最低的程序调试方法。方法。2.回回回回溯溯溯溯法法法法:从从发现问题的的程程序序段段开开始始人人工工地地往往回追踪分析程序代回追踪分析程序代码,直到找到,直到找到错误。3.原因排除法原因排除法原因排除法原因排除法包括:包括:对分分查找法、找法、归纳法、演法、演绎法法7.8.2调试途径调试途径7.9软件可靠性软件可靠性1.软件可靠性定件可靠性定义软软件件件件可可可可靠靠靠靠性性性性:是是程程序序在在给定定的的时间间隔隔内内,按照按照规格格说明明书的的规定成功地运行的概率。定成功地运行的概率。7.9.1基本概念基本概念2.

54、软件的可用性件的可用性对故故障障可可修修复复系系统,应同同时使使用用可可靠靠性性和可用性来衡量。和可用性来衡量。软软件件件件可可可可用用用用性性性性是是:程程序序在在给定定的的时间点点,按照按照规格格说明明书的的规定,成功地运行的概率。定,成功地运行的概率。可靠性和可用性的区可靠性和可用性的区可靠性和可用性的区可靠性和可用性的区别别是:可靠性是在是:可靠性是在0到到t时间间隔内,系隔内,系统没有失效的概率。而可没有失效的概率。而可用性是在用性是在t时刻,系刻,系统是正常运行的概率。是正常运行的概率。如果在如果在t时刻,系刻,系统是可用的,是可用的,则有两种可能:有两种可能:1)在)在0到到t时

55、刻刻这段段时间内,系内,系统一直没有失一直没有失效(可靠);效(可靠);2)在)在0到到t时刻刻这段段时间内失效内失效过,但是系,但是系统修复后运行到修复后运行到t时刻刻时情况良好。情况良好。系系统稳态可用性可用性计算(算(P180)平平平平均均均均维维维维修修修修时时时时间间间间MTTR是是修修复复一一个个故故障障平平均均需需要要用用的的时间,取决于维护人员的技术水平和对系统熟悉程度时间,取决于维护人员的技术水平和对系统熟悉程度。平均无故障时间平均无故障时间平均无故障时间平均无故障时间MTTF是系统按照规格说明书规定是系统按照规格说明书规定成功地运行的平均时间,取决于系统中潜伏的错误数量。成

56、功地运行的平均时间,取决于系统中潜伏的错误数量。1.符号符号估算估算MTTF时使用到下列符号使用到下列符号ET测试之前程序中故障之前程序中故障总数;数;IT程序程序长度(机器指令度(机器指令总数);数);测试(包括(包括调试)时间;Ed()在在0至至期期间发现的的错误数;数;Ec()在在0至至期期间改正的改正的错误数;数;7.9.2估算平均无故障时间估算平均无故障时间MTTF的方法的方法2.基本假定基本假定可作出下列假定:可作出下列假定:1)单单位位位位长长度度度度里里里里的的的的故故故故障障障障数数数数E ET T/ /I IT T近近近近似似似似为为常常常常数数数数。一一些些统计数字表明,

57、通常有:数字表明,通常有:0.510-2ET/IT210-2。2)失失失失效效效效率率率率正正正正比比比比于于于于软软件件件件中中中中剩剩剩剩余余余余的的的的(潜潜潜潜藏藏藏藏的的的的)故故故故障障障障数数数数,而而而而平均无故障平均无故障平均无故障平均无故障时间时间MTTFMTTF与剩余的故障数成反比与剩余的故障数成反比与剩余的故障数成反比与剩余的故障数成反比。3)调试过调试过程没有引入新的故障程没有引入新的故障程没有引入新的故障程没有引入新的故障,即,即Ec()=Ed()。由于系由于系统剩余的故障数剩余的故障数为:Er()=ET-Ec()所以所以单位位长度程序中剩余的故障数度程序中剩余的故

58、障数为:r()=ET/IT-Ec()/IT3.估算平均无故障估算平均无故障时间MTTF因因为平均无故障平均无故障时间与与单位位长度程序中度程序中剩余的故障数剩余的故障数r()成反比,所以:成反比,所以:其其中中:K为为常常数数,它它的的值值根根据据经经验验选选取取,经典值是经典值是200。由上式变换后得到程序中改正的错误数:由上式变换后得到程序中改正的错误数: 根据对软件平均无故障时间的要求,可以估根据对软件平均无故障时间的要求,可以估计需要改正多少个错误后,测试工作就可以结束。计需要改正多少个错误后,测试工作就可以结束。 4.估估计故障故障总数数ET的方法的方法1)植入故障法植入故障法植入故

59、障法植入故障法假假设人人为地植入的故障数地植入的故障数为Ns,经过一段一段时间的的测试之后之后发现ns个植入的故障,同个植入的故障,同时还发现了了n个原有个原有的故障,的故障,则可以估可以估计出程序中原有的故障出程序中原有的故障总数数(P181)2)分别测试法分别测试法分分别别测测试试法法随随机机把把程程序序中中一一部部分分原原有有错错误误加加上上标标记记,根根据据测测试试发发现现的的有有标标记记和和无无标标记记错错误误的的比比例例,估估计计程程序序错错误总数。误总数。分分别测试法法使使用用两两个个测试员,独独立立地地测试同同一一个个程程序序的的两两个个副副本本,由由另另一一名名分分析析员分分

60、析析他他们的的测试结果果,把把其其中中一一个个测试员发现的的故故障障作作为有有标记的故障。用的故障。用表示表示测试时间,假,假设=0时故障故障总数数为B0(即(即ET););=1时测试员甲甲发现的故障数的故障数为B1;=1时测试员乙乙发现的故障数的故障数为B2;=1时两个两个测试员发现的相同故障数的相同故障数为bc。如果如果认为测试员甲甲发现的故障是有的故障是有标记的,的,即程序中有即程序中有标记的故障的故障总数数为B1,那么那么测试员乙乙发现的的B2个故障中有个故障中有bc个是有个是有标记的。所以可以的。所以可以估估计出出测试前程序中的故障前程序中的故障总数数为:其中,这就是故障总数其中,这

61、就是故障总数ET的估计值。的估计值。每隔一定时间,分析员分析两名测试员的测每隔一定时间,分析员分析两名测试员的测试结果,来估计错误总数。几次估计结果差不多试结果,来估计错误总数。几次估计结果差不多时,用其平均值作为错误总数的估计值。时,用其平均值作为错误总数的估计值。第第7章小结章小结测试计测试计划划划划为做好集成做好集成测试和和验收收测试,需,需为如何如何组织测试制制订实施施计划。划。计划划应包括包括测试的内容、的内容、进度、条件、人度、条件、人员、测试用例的用例的选取原取原则、测试结果允果允许的偏差范的偏差范围等。等。测试测试分析分析分析分析报报告告告告测试工作完成以后,工作完成以后,应提

62、交提交测试计划划执行情况的行情况的说明,明,对测试结果加以分析,并提出果加以分析,并提出测试的的结论意意见。测试阶段可能用到的软件工具:测试阶段可能用到的软件工具:BugfreeBugfreeBugBug处处理理理理记录记录工具。工具。工具。工具。WikiWiki知知知知识识共享工具。共享工具。共享工具。共享工具。LoadRunnerLoadRunner 负负荷(荷(荷(荷(载载)测试软测试软件,件,件,件,预测预测系系系系统统行行行行为为和和和和性能的性能的性能的性能的负载测试负载测试工具,通工具,通工具,通工具,通过过模模模模拟拟多至上千万用多至上千万用多至上千万用多至上千万用户户实实施并施并施并施并发负载发负载及及及及实时实时性能性能性能性能监测监测的方式来的方式来的方式来的方式来查查找和确找和确找和确找和确认问题认问题。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号