第7章软件测试技术.ppt
《第7章软件测试技术.ppt》由会员分享,可在线阅读,更多相关《第7章软件测试技术.ppt(93页珍藏版)》请在三一办公上搜索。
1、第7章 软件测试技术,7.1 软件测试概述7.2 软件测试技术7.3 软件调试技术7.4 系统测试,7.1 软件测试概述,软件测试的必要性例子:从键盘输入两个正整数,然后输出二者之和。,开始,结束,sum=a+b,输入:两正整数到a和b,输出:sum,7.1.1 软件测试的目的 软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。,Glenford J.Myers认为软件测试的目的是:(1)测试是一个为了发现错误而执行程序的过程;(2)测试是为了证明程序有错,而不是证明程序没有错误;(3)一个好的测试用例在于它能发
2、现至今未发现的错误。(4)一个成功的测试是发现了至今未发现的错误的测试。,以查找错误为中心,7.1.2 软件测试的基本原则(1)尽早并不断地进行软件测试。软件开发的各阶段都应当进行测试。错误发现得越早,后阶段耗费的人力、财力就越少,软件质量相对就高一些。,图 变更代价随时间变化的趋势示意,(2)程序员应避免测试自己的程序。测试是为了找错,而程序员大多对自己所编的程序存有偏见,总认为自己编的程序问题不大或无错误存在,因此很难查出错误。此外,设计机构在测试自己程序时,由于开发周期和经费等问题的限制,要采用客观的态度是十分困难的。从工作效率来讲,最好由与原程序无关的程序员进行测试。,(3)测试用例应
3、包括合理的输入条件和不合理的输入条件。在设计测试用例时,不仅要有合法的输入测试用例,还要有非法的输入测试用例。在软件的实际使用过程中,由于各种因素的存在,用户可能会使用一些非法的输入,比如常会按错键或使用不合法的命令。对于一个功能较完善的软件来说,不仅当输入是合法的时候能正确运行,而且当有非法输入时,也应当能对非法的输入拒绝接受,同时给出对应的提示信息。,(4)测试用例应包括输入数据和预期的输出结果两部分。测试前应当设定合理的测试用例。测试用例不仅要有输入数据,而且还要有与之对应的预期结果。如果在程序执行前无法确定预期的测试结果,由于人们的心理作用,可能把实际上是错误的结果当成是正确的。,(5
4、)全面检查每个测试结果 这条重要的原则时常被人们忽视。不仔细、全面地检查测试结果,就会使得有错误征兆的输出结果被漏掉。,(6)严格按照测试计划来测试。测试计划内容应包括:所测软件的功能、输入和输出、测试内容、各项测试的进度安排、资源要求、测试资料、测试工具、测试用例的选择、测试的控制方式和过程、系统组装方式、跟踪规程、调试规程、回归测试的规定以及评价标准等。,(7)充分注意测试中的集群现象。经验表明:一段程序中若发现错误的数目越多,则此段程序中残存的错误数目也较多。例如:在美国IBM OS/370的一个操作系统中,47%的错误(由用户发现的错误)仅与该系统的4%的程序模块有关。据此规律,在实际
5、测验时,为了提高测试效率,要花较多的时间和代价来测试那些容易出错即出错多的程序段。而不要以为找到了几个错误,就认为问题已解决,不再需要继续测试了。,(8)注意遵守“经济性”原则 为了降低测试成本,掌握好测试量至关重要。要根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级;要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可能多的错误。,7.1.3 测试步骤,(1)制定测试计划。该计划被批准后转向第二步。(2)设计测试用例。该用例被批准后转向第三步。(3)如果满足“启动准则”,那么执行测试。(4)撰写测试报告。(5)消除软件缺陷。如果满足“完成准则”,那么正常结束测试。,依据是否
6、需要执行被测软件,软件测试技术分为静态分析技术与动态测试技术两种。静态测试是指采用人工检测或计算机辅助静态分析的手段对软件进行检测。动态测试是把事先设计好的测试用例作用于被测软件,比较测试结果和预期的结果是否一致,如果不一致,则说明被测软件可能存在错误。,7.2 软件测试技术,依据是否针对系统的内部结构和具体实现算法,动态测试可分为黑盒测试和白盒测试。黑盒测试是指测试产品的功能。白盒测试是指测试产品内部结构及处理过程。,7.2 软件测试技术,7.2.2 黑盒测试方法 常用的方法:等价类划分法 边界值分析法 错误推测法 因果图法,1.等价类划分法数据测试的等效性原理:将分类的数据取其子集中一个数
7、据做测试与子集中其他数据测试的效果是等效的,即子集中的一个数据能测出软件错误,那么子集中的其余数据也能测出错误;相反,子集中的一个数据测试不出程序错误,子集中的其余数据也测不出错误。思路:把软件的输入域划分成若干子集。然后从每一个子集中选取少数具有代表性的数据作为测试用例。,1.等价类划分法步骤:(1)分析输入数据;(2)划分等价类,建立等价类表;(3)设计测试用例:覆盖所有的有效等价类和 无效等价类。,例子:某一报表处理系统,要求用户输入处理报表的日期。假设日期限制在1990年1月至1999年12月,即系统只能对该段时期内的报表进行处理。如果用户输入的日期不在此范围内,则显示输入错误信息。该
8、系统规定日期由年、月的 6 位数字字符组成,前 4 位代表年,后两位代表月。现用等价类划分法设计测试用例,来测试程序的“日期检查功能”。,(1)分析输入数据 报表日期的类型及长度:6个数字字符 年份范围:在1990-1999之间 月份范围:在1-12之间,(2)划分等价类,建立等价类表,(3)设计测试用例:覆盖所有的有效等价类和无效等价类。为合理等价类设计测试用例,对于表中编号为1,5,8对应的 3 个合理等价类,用一个测试用例覆盖。为每一个不合理等价类至少设计一个测试用例,测试数据 期望结果 覆盖范围 199510 输入有效 1,5,8 99MAY 输入无效 2 19995 输入无效 3 1
9、999005 输入无效 4 198912 输入无效 6 200001 输入无效 7 199900 输入无效 9 199913 输入无效 10,2.边界值分析法 从长期的实践中得知,处理边界情况时,程序最容易发生错误。所以,在设计测试用例时,应该选择一些边界值,这就是边界值分析的测试技术。边界值分析是对等价类划分方法的补充。,例子:,3.错误推测法 基于经验和直觉推测程序中所有可能存在的各种错误。例如对于一个排序程序,列出以下几项需特别测试的情况:(1)输入表为空。(2)输入表只含一个元素。(3)输入表中所有元素均相同。(4)输入表中已排好序。,4.因果图法 检查软件输入条件的各种组合情况。步骤
10、:(1)为原因和结果赋予标志符;(2)画出因果图;(3)把因果图转换为判定表;(4)设计测试用例。,例子:现有关于工作过失的描述如下:年薪制员工:严重过失,扣年终风险金的4%;一般过失,扣年终风险金的2%。非年薪制员工:严重过失,扣当月薪资的8%;一般过失,扣当月薪资的4%。,(1)为原因和结果赋予标志符;,(2)画出因果图;,(3)把因果图转换为判定表;,(4)设计测试用例。,7.2.3 白盒测试法 逻辑覆盖法 基本路径法,1、逻辑覆盖法:以程序内部的逻辑结构为基础的技术,图 一个被测试程序的流程图,(1)语句覆盖:使每一条语句至少被执行一次。如果能测试路径124,就保证每个语句至少执行一次
11、,选择测试数据为 a=2,b=0,x=3输入此组数据,就能达到语句覆盖标准。,(2)判定覆盖:使程序中每个判定的真分支和假分支至少遍历一次。设计测试用例,只要通过路径124,135或者125,134,就达到判定覆盖标准。选择两组数据:a=3,b=0,x=1(通过路径125)a=2,b=1,x=2(通过路径134),(3)条件覆盖:使每个判定的每个条件的可能取值至少执行一次。上述程序中有 4 个条件:a1,b=0,a=2,x1 要选择足够的数据,第一个判定表达式出现结果:a1,b=0 a1,b0,并使第二个判定表达式出现结果:a=2,x1 a2,x1 才能达到条件覆盖的标准。为满足上述要求,选择
12、以下两组测试数据:a=2,b=0,x=3(满足a1,b=0,a=2,x1,通过路径124)a=1,b=1,x=1(满足a1,b0,a2,x1,通过路径135),(4)判定/条件覆盖:使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。对于上述程序,选择以下两组测试用例满足判定/条件覆盖:a=2,b=0,x=3 a=1,b=1,x=1,(5)条件组合覆盖:使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。上述程序中,两个判定表达式共有 4 个条件,因此有 8 种组合:a1,b=0 a1,b0 a1,b=0 a1,b0 a=2,x1 a=
13、2,x1 a2,x1 a2,x1,下面 4 组测试用例就可以满足条件组合覆盖标准:a=2,b=0,x=2覆盖条件组合和,通过路径124 a=2,b=1,x=1 覆盖条件组合和,通过路径134a=1,b=0,x=2覆盖条件组合和,通过路径134 a=1,b=1,x=1覆盖条件组合和,通过路径135 该例没有覆盖程序可能执行的全部路径,125这条路径被漏掉了,如果这条路径有错,就不能测出。,2、基本路径法:保证程序中的所有路径至少执行一次。对于上例,选择以下测试用例,覆盖程序中的 4 条路径:a=2,b=0,x=2覆盖路径124,覆盖条件组合和a=2,b=1,x=1覆盖路径134,覆盖条件组合和a
14、=1,b=1,x=1覆盖路径135,覆盖条件组合和a=3,b=0,x=1覆盖路径125,覆盖条件组合和 可看出满足路径覆盖却未满足条件组合覆盖。,7.3 软件调试技术,一、调试的目的软件测试的目的是尽可能多地发现程序中的错误,而调试则是在进行了成功的测试之后才开始的工作。调试的目的是确定错误的原因和位置,并改正错误,因此调试也称为纠错。,调试是程序员自己进行的技巧性很强的工作,要确定发生错误的内在原因和位置不是一件容易的事,它占整个调试工作量的90%左右。调试工作的困难与人的心理因素和技术因素都有关系,需要繁重的脑力劳动和丰富的经验。与测试比较,调试技术缺乏系统的理论研究,因此介绍的调试方法多
15、是实践中的经验积累。,二、调试技术1.简单的调试方法1)在程序中插入打印语句该方法的优点是显示程序的动态过程,比较容易检查源程序的有关信息。缺点是低效率,可能输出大量的无关的数据,发现错误带有偶然性。同时还要修改程序,这种修改可能会掩盖错误、改变关键的时间关系或把新的错误引入程序。,2)运行部分程序有时为了测试某些被怀疑为有错的程序段,整个程序反复执行多次,使很多时间浪费在执行已经是正确的程序段上。在此情况下,应设法使被测试程序只执行需要检查的程序段,以提高效率。可采用以下方法:(1)把不需要执行的语句段前和后加上注释符,使这段程序不再执行。调试过后,再将注释符去掉。(2)在不需要执行的语句段
16、前加判定值为“假”的IF语句或者加GOTO语句,使该程序不执行。调试结束后,再撤销这些语句,使程序复原。,3)借助于调试工具目前大多数程序设计语言都有专门的调试工具,可以利用这些工具分析程序的动态行为。例如借助“追踪”功能可以追踪子程序调用、循环与分支执行路径、特定变量的变化情况等,利用“置断点”可以执行特定语句或改变特定变量值引起的程序中断,以便检查程序的当前状态。还可借助调试工具观察或输出内存变量的值,大大提高调试程序的效率,缺点是也会产生大量的无关信息,也会走弯路。,以上几种简单的调试方法的共同特点是比较“省劲”,这些方法不需要人们去研究出现的错误,基本上都是“碰运气”的方法。实践表明,
17、对于较为复杂的程序,查出错误的速度和精确度而言,有时用“脑”比用“机器”更有成效。,2.回溯法调试该方法从程序产生错误的地方出发,人工沿程序的逻辑路径返向搜索,直到找到错误的原因为止。例如,从打印语句出错开始,通过看到的变量值,从相反的执行路径查询该变量值从何而来。该方法是对小型程序寻找错误位置的有效方法。,3.归纳法调试归纳法是一种从特殊到一般的思维过程,从对个别事例的认识当中,概括出共同特点,得出一般性规律的思考方法。归纳法调试从测试结果发现的线索(错误迹象、征兆)入手,分析它们之间的联系,导出错误原因的假设,然后再证明或否定这个假设。,归纳法调试的具体步骤如下:(1)收集有关数据:列出做
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 技术

链接地址:https://www.31ppt.com/p-5115997.html