《软件工程第七章软件测试幻灯片.ppt》由会员分享,可在线阅读,更多相关《软件工程第七章软件测试幻灯片.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程第七章件工程第七章软件件测试第1页,共30页,编辑于2022年,星期三Contents 7.4 测试用例设计(测试用例设计(7.4.3)软件危机软件危机(1.2)7.5 调试技术和策略调试技术和策略 7.6 软件测试工具软件测试工具2第2页,共30页,编辑于2022年,星期三例:例:程序程序TriangleTriangle读入三个整数值,这三个整读入三个整数值,这三个整数代表同一个三角形三条边的长度,程序根据这数代表同一个三角形三条边的长度,程序根据这三个值判断三角形属于不等边、等腰或等边三角三个值判断三角形属于不等边、等腰或等边三角形中的那一种。形中的那一种。3第3页,共30页,编辑
2、于2022年,星期三abcTrianglea,b,c三角形的类型?三角形的类型?4第4页,共30页,编辑于2022年,星期三startab+c?ba+c?ca+b?a=b?b=c?印出印出“不是三角形不是三角形”印出印出“等边三角形等边三角形”印出印出“等腰三角形等腰三角形”印出印出“不等边三角形不等边三角形”a=c?b=c?FTFFTTTTFFFFTTstop程程序序流流程程图图程序图程序图5第5页,共30页,编辑于2022年,星期三黑盒测试(等价划分)黑盒测试(等价划分)正常的三角形正常的三角形 (a,b,c)不等边三角形不等边三角形(8,10,12);(10,8,12);(10,12,8
3、)等边三角形等边三角形(10,10,10)等腰三角形等腰三角形(10,10,17);(10,17,10);(17,10,10)6第6页,共30页,编辑于2022年,星期三黑盒测试(等价划分)黑盒测试(等价划分)退化的三角形退化的三角形 (a,b,c)不等边三角形不等边三角形(10,6,4)等边三角形等边三角形(0,0,0)等腰三角形等腰三角形(10,5,5);(5,10,5);(10,5,5)7第7页,共30页,编辑于2022年,星期三黑盒测试(等价划分)黑盒测试(等价划分)不能构成三角形的非法数据不能构成三角形的非法数据(a,b,c)a+bc(10,10,21)b+ca(21,10,10)c
4、+ab(10,21,10)8第8页,共30页,编辑于2022年,星期三黑盒测试(边界值分析)黑盒测试(边界值分析)一条边长度为零一条边长度为零的情况的情况(0,10,12);(10,0,12);(10,12,0)两条边的长度为两条边的长度为零的情况零的情况(0,0,17););(0,17,0););(17,0,0)三条边的长度为三条边的长度为零的情况零的情况(0,0,0)9第9页,共30页,编辑于2022年,星期三输入数据中包含负整数输入数据中包含负整数(-10,-10,-10)输入数据不全(不足三个正整输入数据不全(不足三个正整数)数)(10,-,-)输入数据中包含非整数型的数输入数据中包含
5、非整数型的数据据(a,b,c)(1.2,6e-4,7.8)黑盒测试(错误推测)黑盒测试(错误推测)10第10页,共30页,编辑于2022年,星期三调试(调试(调试(调试(DebugDebug)v软件调试是在进行了成功的测试之后才开始软件调试是在进行了成功的测试之后才开始的工作。它与软件测试不同,调试的任务是的工作。它与软件测试不同,调试的任务是进一步诊断和改正程序中潜在的错误进一步诊断和改正程序中潜在的错误。v调试活动由两部分组成:调试活动由两部分组成:确定程序中可疑错误的确切性质确定程序中可疑错误的确切性质和位置。和位置。对程序对程序(设计设计,编码编码)进行修改,排除进行修改,排除这个错误
6、。这个错误。11第11页,共30页,编辑于2022年,星期三v调试工作是一个具有很强技巧性的工作。调试工作是一个具有很强技巧性的工作。v软件运行失效或出现问题,往往只是潜在错软件运行失效或出现问题,往往只是潜在错误的外部表现误的外部表现,而外部表现与内在原因之间,而外部表现与内在原因之间常常没有明显的联系。如果要找出真正的原常常没有明显的联系。如果要找出真正的原因,排除潜在的错误,不是一件易事。因,排除潜在的错误,不是一件易事。v可以说,可以说,调试是通过现象,找出原因的一个调试是通过现象,找出原因的一个思维分析的过程思维分析的过程。12第12页,共30页,编辑于2022年,星期三调试的步骤调
7、试的步骤调试的步骤调试的步骤(1)从错误的外部表现形式入手,确定程序从错误的外部表现形式入手,确定程序中出错位置;中出错位置;(2)研究有关部分的程序,找出错误的内在研究有关部分的程序,找出错误的内在原因;原因;(3)修改设计和代码,以排除这个错误;修改设计和代码,以排除这个错误;(4)重复进行暴露了这个错误的原始测试或某重复进行暴露了这个错误的原始测试或某些有关测试。些有关测试。13第13页,共30页,编辑于2022年,星期三v从技术角度来看,查找错误的难度在于:从技术角度来看,查找错误的难度在于:现象与原因所处的位置可能相距甚现象与原因所处的位置可能相距甚远。远。当其它错误得到纠正时,这一
8、错误当其它错误得到纠正时,这一错误所表现出的现象可能会暂时消失,所表现出的现象可能会暂时消失,但并未实际排除。但并未实际排除。现象实际上是由一些非错误原因现象实际上是由一些非错误原因(例例如,舍入不精确如,舍入不精确)引起的。引起的。14第14页,共30页,编辑于2022年,星期三 现象可能是由于一些不容易发现现象可能是由于一些不容易发现的人为错误引起的。的人为错误引起的。错误是由于时序问题引起的,与处错误是由于时序问题引起的,与处理过程无关。理过程无关。现象是由于难于精确再现的输入现象是由于难于精确再现的输入状态(例如,实时应用中输入顺状态(例如,实时应用中输入顺序不确定)引起。序不确定)引
9、起。现象可能是周期出现的。在软、现象可能是周期出现的。在软、硬件结合的嵌入式系统中常常遇硬件结合的嵌入式系统中常常遇到。到。15第15页,共30页,编辑于2022年,星期三几种主要的调试方法几种主要的调试方法几种主要的调试方法几种主要的调试方法调试的关键在于推断程序内部的错误位置及原调试的关键在于推断程序内部的错误位置及原因。可以采用以下方法:因。可以采用以下方法:强行排错强行排错这种调试方法目前使用较多,效率较低。这种调试方法目前使用较多,效率较低。它不需要过多的思考,比较省脑筋。例如:它不需要过多的思考,比较省脑筋。例如:通过内存全部打印来调试通过内存全部打印来调试,在这大,在这大量的数据
10、中寻找出错的位置。量的数据中寻找出错的位置。16第16页,共30页,编辑于2022年,星期三 在程序特定部位设置打印语句,在程序特定部位设置打印语句,把把打印语句插在出错的源程序的各个打印语句插在出错的源程序的各个关键变量改变部位、重要分支部位、关键变量改变部位、重要分支部位、子程序调用部位,跟踪程序的执行,子程序调用部位,跟踪程序的执行,监视重要变量的变化。监视重要变量的变化。自动调试工具。自动调试工具。利用某些程序语言利用某些程序语言的调试功能或专门的交互式调试工的调试功能或专门的交互式调试工具,分析程序的动态过程,而不必具,分析程序的动态过程,而不必修改程序。修改程序。17第17页,共3
11、0页,编辑于2022年,星期三应用以上任一种方法之前,都应当对错误的应用以上任一种方法之前,都应当对错误的征兆进行全面彻底的分析,得出对出错位置征兆进行全面彻底的分析,得出对出错位置及错误性质的推测,再使用一种适当的调试及错误性质的推测,再使用一种适当的调试方法来检验推测的正确性。方法来检验推测的正确性。回溯法调试回溯法调试这是在小程序中常用的一种有效的调试方法。这是在小程序中常用的一种有效的调试方法。一旦发现了错误,人们先分析错误征兆,确一旦发现了错误,人们先分析错误征兆,确定最先发现定最先发现“症状症状”的位置。的位置。18第18页,共30页,编辑于2022年,星期三然后,人工沿程序的控制
12、流程,向回追踪然后,人工沿程序的控制流程,向回追踪源程序代码,直到找到错误根源或确定错源程序代码,直到找到错误根源或确定错误产生的范围。误产生的范围。v例如,程序中发现错误处是某个打印语例如,程序中发现错误处是某个打印语句。通过输出值可推断程序在这一点上句。通过输出值可推断程序在这一点上变量的值。再从这一点出发,回溯程序变量的值。再从这一点出发,回溯程序的执行过程,反复考虑:的执行过程,反复考虑:“如果程序在这如果程序在这一点上的状态(变量的值)是这样,那么程一点上的状态(变量的值)是这样,那么程序在上一点的状态一定是这样序在上一点的状态一定是这样.”,直到找直到找到错误的位置。到错误的位置。
13、19第19页,共30页,编辑于2022年,星期三归纳法调试归纳法调试v归纳法是一种从特殊推断一般的系统化思考方归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是:从一些线索法。归纳法调试的基本思想是:从一些线索(错误征兆错误征兆)着手,通过分析它们之间的关系来着手,通过分析它们之间的关系来找出错误。找出错误。收集有关的数据收集有关的数据 列出所有已知的测列出所有已知的测试用例和程序执行结果。看哪些输入试用例和程序执行结果。看哪些输入数据的运行结果是正确的,哪些输入数据的运行结果是正确的,哪些输入数据的运行结果有错误。数据的运行结果有错误。20第20页,共30页,编辑于2022年
14、,星期三 组织数据组织数据 由于归纳法是从特殊到一般的推断由于归纳法是从特殊到一般的推断过程,所以需要组织整理数据,以过程,所以需要组织整理数据,以发现规律。发现规律。常以常以3W1H形式组织可用的数据:形式组织可用的数据:“What”列出一般现象;列出一般现象;“Where”说明发现现象的地点;说明发现现象的地点;“When”列出现象发生时所有已知列出现象发生时所有已知情况;情况;“How”说明现象的范围和量级;说明现象的范围和量级;21第21页,共30页,编辑于2022年,星期三22第22页,共30页,编辑于2022年,星期三“Yes”描述出现错误的描述出现错误的3W1H;“No”作为比较
15、,描述了没有错误的作为比较,描述了没有错误的3W1H。通过分析找出矛盾来。通过分析找出矛盾来。提出假设提出假设分析线索之间的关系,利用在线索结构分析线索之间的关系,利用在线索结构中观察到的矛盾现象,设计一个或多个中观察到的矛盾现象,设计一个或多个关于出错原因的假设。如果一个假设也关于出错原因的假设。如果一个假设也提不出来,归纳过程就需要收集更多的提不出来,归纳过程就需要收集更多的数据。此时,应当再设计与执行一些测数据。此时,应当再设计与执行一些测试用例,以获得更多的数据。试用例,以获得更多的数据。23第23页,共30页,编辑于2022年,星期三证明假设证明假设 把假设与原始线索或数据进行比较,
16、把假设与原始线索或数据进行比较,若它能完全解释一切现象,则假设得若它能完全解释一切现象,则假设得到证明;否则,就认为假设不合理,到证明;否则,就认为假设不合理,或不完全,或是存在多个错误,以致或不完全,或是存在多个错误,以致只能消除部分错误。只能消除部分错误。24第24页,共30页,编辑于2022年,星期三v演绎法调试演绎法调试演绎法是一种从一般原理或前提出发,经过演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。排除和精化的过程来推导出结论的思考方法。演绎法排错是测试人员首先根据已有的测试演绎法排错是测试人员首先根据已有的测试用例,设想及枚举出所有可能出错的原因做
17、用例,设想及枚举出所有可能出错的原因做为假设;然后再用原始测试数据或新的测试,为假设;然后再用原始测试数据或新的测试,从中逐个排除不可能正确的假设;最后,再从中逐个排除不可能正确的假设;最后,再用测试数据验证余下的假设确是出错的原因。用测试数据验证余下的假设确是出错的原因。25第25页,共30页,编辑于2022年,星期三 列举所有可能出错原因的假设列举所有可能出错原因的假设把所有可能的错误原因列成表。把所有可能的错误原因列成表。通过它们,可以组织、分析现有通过它们,可以组织、分析现有数据。数据。利用已有的测试数据,排除不正确利用已有的测试数据,排除不正确的假设的假设仔细分析已有的数据,寻找矛盾
18、,力仔细分析已有的数据,寻找矛盾,力求排除前一步列出所有原因。如果所求排除前一步列出所有原因。如果所有原因都被排除了,则需要补充一些有原因都被排除了,则需要补充一些数据数据(测试用例测试用例),以建立新的假设。,以建立新的假设。26第26页,共30页,编辑于2022年,星期三 改进余下的假设改进余下的假设利用已知的线索,进一步改进余下的利用已知的线索,进一步改进余下的假设,使之更具体化,以便可以精确假设,使之更具体化,以便可以精确地确定出错位置。地确定出错位置。证明余下的假设证明余下的假设27第27页,共30页,编辑于2022年,星期三调试原则调试原则调试原则调试原则v在调试方面,许多原则本质
19、上是心理学方在调试方面,许多原则本质上是心理学方面的问题。调试由两部分组成,调试原则面的问题。调试由两部分组成,调试原则也分成两组。也分成两组。v确定错误的性质和位置的原则确定错误的性质和位置的原则 用头脑去分析思考与错误征兆有关用头脑去分析思考与错误征兆有关的信息。的信息。避开死胡同。避开死胡同。28第28页,共30页,编辑于2022年,星期三 只把调试工具当做辅助手段来使用。只把调试工具当做辅助手段来使用。利用调试工具,可以帮助思考,但利用调试工具,可以帮助思考,但不能代替思考。不能代替思考。避免用试探法,最多只能把它当做避免用试探法,最多只能把它当做最后手段。最后手段。v修改错误的原则修
20、改错误的原则 在出现错误的地方,很可能还有别的在出现错误的地方,很可能还有别的错误。错误。29第29页,共30页,编辑于2022年,星期三 修改错误的一个常见失误是修改错误的一个常见失误是只修改了只修改了这个错误的征兆或这个错误的表现,这个错误的征兆或这个错误的表现,而没有修改错误的本身。而没有修改错误的本身。当心修正一个错误的同时当心修正一个错误的同时有可能会引有可能会引入新的错误入新的错误。修改错误的过程将迫使人们暂时回到程修改错误的过程将迫使人们暂时回到程序设计阶段。序设计阶段。修改源代码程序,不要改变目标代码。修改源代码程序,不要改变目标代码。30第30页,共30页,编辑于2022年,星期三