软件工程第六章软件测试.ppt
《软件工程第六章软件测试.ppt》由会员分享,可在线阅读,更多相关《软件工程第六章软件测试.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程软件工程 第第6 6讲讲 软件测试软件测试第第6 6讲讲 软件测试软件测试6.1 6.1 软件测试的基本概念软件测试的基本概念6.2 6.2 测试的原则、类型和文档测试的原则、类型和文档6.3 6.3 黑盒测试方法黑盒测试方法6.4 6.4 白盒测试方法白盒测试方法6.5 6.5 软件测试的基本过程软件测试的基本过程6.6 6.6 软件纠错软件纠错(1 1)什么是软件测试?其目的是什么?)什么是软件测试?其目的是什么?(2 2)什么是成功的测试?什么是失败的测试?)什么是成功的测试?什么是失败的测试?(3 3)什么是好的软件测试?)什么是好的软件测试?(4 4)穷举测试能够把所有的错误
2、找完吗?)穷举测试能够把所有的错误找完吗?(5 5)通过测试能够证明软件无错吗?)通过测试能够证明软件无错吗?(6 6)测试的基本工作有哪些?)测试的基本工作有哪些?(7 7)什么是测试用例?)什么是测试用例?(8 8)测试由谁来完成?)测试由谁来完成?(9 9)测试与纠错有何关系?)测试与纠错有何关系?(1010)纠错由谁来完成?)纠错由谁来完成?(1111)测试的信息流之间有何关系?)测试的信息流之间有何关系?6.1 6.1 软件测试的基本概念软件测试的基本概念 (1 1)什么是软件测试?其目的是什么?)什么是软件测试?其目的是什么?测试的定义测试的定义软软件件(程程序序)测测试试是是为为
3、了了发发现现错错误误而而执执行行程程序的过程。序的过程。测试的目的测试的目的发现程序的错误。发现程序的错误。测试为什么重要nARIANE火箭耗资70亿美元,1996年发射37秒后爆炸nbeginsensor_get(vertical_veloc_sensor);sensor_get(horizontal_veloc_sensor);vertical_veloc_bias:=integer(vertical_veloc_sensor);horizontal_veloc_bias:=integer(horizontal_veloc_sensor);.exceptionwhen numeric_er
4、ror=calculate_vertical_veloc();when others=use_irs1();end;v发射失败的原因 程序中试图将6464位浮点数转换成1616位整数时的溢出错误 如果看其浮点转换程序,并没有任何问题。问题在于他们复用了Ariane 4的部分软件需求文档因而软件工程师不知道其Ariane 5的水平加速度比Ariane 4快5倍因此要求额外3位整数存储,所以其背后的真正原因是系统需求。测试为什么重要测试为什么重要n 爱国者导弹第一次海湾战争期间,美国爱国者导弹系统拦截伊拉克飞毛腿导弹失败。导弹摧毁了一个美军兵营,造成28名士兵死亡,100人受伤。v 起因 导弹拦截
5、软件的取整错误导致计时不正确,令爱国者忽略了飞毛腿导弹(2 2)什么是成功的测试?什么是失败的测试?)什么是成功的测试?什么是失败的测试?什么是成功的测试?什么是成功的测试?能够找到至今尚未发现的错误。能够找到至今尚未发现的错误。什么是失败的测试?什么是失败的测试?没有找到至今尚未发现的错误。没有找到至今尚未发现的错误。(3 3)什么是好的软件测试?什么是好的软件测试?用最少的代价用最少的代价能够找到至今尚未发现的更多的错误。能够找到至今尚未发现的更多的错误。测试工作反映了经济学的观点测试工作反映了经济学的观点。(4 4)穷举测试能够把所有的错误找完吗?)穷举测试能够把所有的错误找完吗?例例1
6、 1 对于程序内部路径的测试对于程序内部路径的测试如如图图中中所所示示从从A A到到B B的的中中间间有有一一个个2020次次的的循循环环,循循环环中中有有5 5条条路路径径,那那么么从从A A到到B B的的独独立立路路径径数数约约为为10101414(即(即5 520205 519195 51 1)例例2 2 对于程序功能的测试对于程序功能的测试一一个个程程序序需需要要3 3个个整整型型数数的的输输入入。假假设设计计算算机机字字长长是是1616位位,则则每每个个整整数数可可能能取取值值有有2 21616个个,那那么么3 3个个输输入入整整数数的的各各种种可可能能值值的的情情况况约约为为2 2
7、1616 2 21616 2 21616 2 24848 3 3 10101414AB20(5 5)通过测试能够证明软件无错吗?)通过测试能够证明软件无错吗?穷举测试是不可取的。穷举测试是不可取的。通过测试不可能把所有的软件错误找完。通过测试不可能把所有的软件错误找完。因此,通过测试不可能证明软件不存在错误。因此,通过测试不可能证明软件不存在错误。测试只能证明错误存在,而不能证明错误不存在(不彻底性)。测试只能证明错误存在,而不能证明错误不存在(不彻底性)。(6 6)测试的基本工作有哪些测试的基本工作有哪些?制定测试计划制定测试计划建立测试环境建立测试环境设计测试用例设计测试用例执行测试执行测
8、试结果分析结果分析完成测试报告完成测试报告(7 7)什么是测试用例?)什么是测试用例?测试用例测试用例(Test Case)(Test Case)测试数据测试数据+期望的结果期望的结果测测试试用用例例的的重重要要作作用用:测测试试用用例例是是连连接接测测试试计计划与实施测试的桥梁。划与实施测试的桥梁。设计测试用例是搞好软件测试的关键。设计测试用例是搞好软件测试的关键。(8 8)测试由谁来完成?)测试由谁来完成?一一般般情情况况下下,应应该该由由非非程程序序员员或或非非程程序序开开发发机机构来完成。构来完成。这样做的主要原因主要:这样做的主要原因主要:从心理学的角度考虑;从心理学的角度考虑;从质
9、量的观点看,应该有专门的机构或组织来完成。从质量的观点看,应该有专门的机构或组织来完成。(9 9)测试与纠错有何关系?)测试与纠错有何关系?纠纠错错的的目目的的和和任任务务:根根据据测测试试所所发发现现的的错错误误,确确定定错错误发生的位置、性质,并纠正这些错误。误发生的位置、性质,并纠正这些错误。纠错的过程就是程序调试的过程。纠错的过程就是程序调试的过程。测测试试是是纠纠错错/排排错错/调调试试的的基基础础和和依依据据;纠纠错错需需要要测测试试所所发发现现的的错错误误现现象象,才才能能确确定定错错误误发发生生的的性性质质、位位置置,并纠正这些错误。并纠正这些错误。(1010)纠错由谁来完成?
10、)纠错由谁来完成?程序员程序员(测试数据测试数据)(1111)测试的信息流之间有何关系?)测试的信息流之间有何关系?测试过程的输入测试过程的输入测试过程中需要测试过程中需要3 3类输入类输入(见上图见上图):软件配置软件配置包括软件需求规格说明、软件设计规格说明、源代码等。包括软件需求规格说明、软件设计规格说明、源代码等。测试配置测试配置包括测试计划、测试用例、测试驱动程序等。包括测试计划、测试用例、测试驱动程序等。测试工具测试工具为测试的实施提供某种服务,以减轻完成测试任务中的手工劳动。为测试的实施提供某种服务,以减轻完成测试任务中的手工劳动。测试工具测试工具测试数据自动生成程序测试数据自动
11、生成程序静态分析程序静态分析程序动态分析程序动态分析程序测试结果分析程序测试结果分析程序驱动测试的测试数据库等等。驱动测试的测试数据库等等。分析测试结果分析测试结果测测试试完完成成后后,要要对对所所有有的的测测试试结结果果进进行行分分析析,如如果果发发现现软软件件有有错错误误,就就要要排排错错并并修修正正有有关关文文档档,接接着着再再测测试试,直到通过为止。直到通过为止。如如果果经经常常出出现现需需要要修修改改设设计计的的严严重重错错误误,则则软软件件质质量量与与可靠性值得怀疑,需进一步测试。可靠性值得怀疑,需进一步测试。如果测试未发现错误,则应重新审查测试配置如果测试未发现错误,则应重新审查
12、测试配置。6.2 6.2 测试的原则、类型和文档测试的原则、类型和文档1)测试原则(1)所有的测试都应追溯到用户需求。软件测试的目标在于揭示错误。而最严重的错误是那些导致程序无法满足需求的错误。(2)充分注意测试中的群集现象。在被测程序段中,若发现错误数目多,则残存错误数目也比较多。因此,应当对错误群集的程序段进行重点测试,以提高测试投资的效益。(3)测试应从“小规模”开始,逐步转向”大规模”。(4)测试应该由非程序员或非开发机构来进行。(5)对于非法的和非预期的输入情况也要象正常测试一样,编写测试用例。检查程序是否做了要做的事仅仅是成功的一半,另一半是看程序是否做了不该做的事。(6)妥善保存
13、测试计划、测试用例、出错统计和最终分析报告。回归测试 2)软件测试方法(1)静态分析:通过对被测程序的静态检查,发现代码中潜在的错误。静态分析包括2种方式:静态分析器分析(自动方式);如PMD 扫描java源代码,查找潜在的问题:可能的bugs,如空的try/catch/finally/switch声明 死亡的代码,没有使用的本地变量,参数和私有方法 过于复杂的表达式,如不必要的if表达式 重复的代码,拷贝、粘贴的代码 代码评审(人工方式),包括代码会审、走查、办公桌检查等。(2)动态测试(简称测试):将被测程序在机器上运行来发现程序中的错误。动态测试包括2类方式:黑盒测试(测试程序的功能)白
14、盒测试(测试程序的结构)3 3)测试的文档)测试的文档(1)测试计划主体是测试内容说明。包括:测试项目名称,各项测试的目的、步骤、进度,测试用例的设计等。(2)测试报告主体是测试结果。包括:测试项目名称,实测结果与期望结果的比较,发现的问题,测试达到的效果等。(3)测试用例(1)黑盒测试的基本概念不考虑程序的内部结构和处理过程,只在程序的接口处进行测试,以检查程序功能是否能按规格说明书中的要求正常实现。黑盒测试又称为功能测试,其主要目的是为了发现程序在功能方面的错误。6.3 6.3 黑盒测试方法黑盒测试方法n黑盒法分类黑盒法分类等等价价类类化化分分法法边边界界值值分分析析法法错错误误猜猜测测法
15、法因因果果图图法法(2 2)等价类划分法)等价类划分法基本思想:根据程序的I/O特性,将程序的输入域划分为有限个等价区段“等价类”,并从等价类中选出最有“代表性”的用例。等价类:是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。如果一个测试用例不能检测出某个错误,那么等价类中其它测试用例也不能发现这一错误。等价类分为:有效等价类 对于程序的规格说明是合理的、有意义的输入数据构成的集合。无效等价类 对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。等价类划分法的步骤等价类划分法的步骤划分等价类划分等价
16、类合理的(有效的)、不合理的(无效的)合理的(有效的)、不合理的(无效的)2 2类类找出测试用例找出测试用例给每个等价类规定一个惟一的编号;给每个等价类规定一个惟一的编号;设设计计一一个个新新的的测测试试用用例例,使使其其尽尽可可能能多多地地覆覆盖盖未未被被覆覆盖的有效等价类,直到所有合理等价类被覆盖完为止;盖的有效等价类,直到所有合理等价类被覆盖完为止;设设计计一一个个测测试试用用例例,使使其其仅仅仅仅覆覆盖盖一一个个未未被被覆覆盖盖的的无无效等价类,直到所有不合理等价类被覆盖完为止。效等价类,直到所有不合理等价类被覆盖完为止。例例 如下是一个程序的功能描述,用等价类划分法设计测试用例。如下
17、是一个程序的功能描述,用等价类划分法设计测试用例。功功能能描描述述:某某城城市市的的电电话话号号码码由由3 3部部分分组组成成。假假定定被被测测程程序序能能接接收收一一切切符符合合下下述述规规定定的的电电话话号号码码,拒拒绝绝所所有有不不符符合规定的电话号码。合规定的电话号码。地区码:空白或地区码:空白或3 3位数字;位数字;前前缀缀:非非0 0或或1 1开开头的头的3 3位数字;位数字;后缀:后缀:4 4位数字。位数字。输入条件输入条件合理的等价类合理的等价类不合理的等价类不合理的等价类地区码地区码空白空白(1)3(1)3位数字位数字(2)(2)有非数字字符有非数字字符(5)(5)少于少于3
18、 3位数字位数字(6)(6)多于多于3 3位数字位数字(7)(7)前缀前缀从从200200到到999999的的3 3位数字位数字(3)(3)有非数字字符有非数字字符(8)(8)少于少于3 3位数字位数字(9)(9)多于多于3 3位数字位数字(10)(10)起始位为起始位为0 0(11)(11)起始位为起始位为 1 1(12)(12)后缀后缀4 4位数字位数字(4)(4)有非数字字符有非数字字符(13)(13)少于少于3 3位数字位数字(14)(14)多于多于3 3位数字位数字(15)(15)测试用例测试用例测试范围测试范围期望结果期望结果 276 2345 276 2345等价类等价类(1)(
19、3)(4)(1)(3)(4)有效有效027 805 9321027 805 9321等价类等价类(2)(3)(4)(2)(3)(4)有效有效20A 123 435620A 123 4356等价类等价类(5)(5)无效无效剩下的剩下的1010个用例个用例无效等价类无效等价类(6)-(6)-(15)(15)无效无效测试用例的设计:测试用例的设计:(3 3)边界值分析)边界值分析基本思想基本思想:人人们们从从长长期期的的测测试试工工作作中中发发现现,大大量量的的错错误误是是发发生生在在输输入入或或输输出出范范围围的的边边界界,而而不不是是在在输输入入范范围围的的内内部。部。因因此此,针针对对各各种种
20、边边界界情情况况设设计计测测试试用用例例,可可以以查查出出更多的错误。更多的错误。边界条件边界条件相相对对于于输输入入与与输输出出等等价价类类直直接接在在其其边边缘缘上上,稍稍高高于或稍低于其边界的这些状态条件。于或稍低于其边界的这些状态条件。边界值分析方法与等价类划分方法的区别:边界值分析方法与等价类划分方法的区别:边边界界值值不不是是从从某某个个等等价价类类中中随随便便挑挑选选一一个个作作为为代代表表,而而是是选选出出一一个个或或几几个个元元素素,使使得得这这个个等等价价类类的的每每个个边边界界都都要作为测试对象;要作为测试对象;边边界界值值分分析析不不仅仅仅仅考考虑虑输输入入条条件件,同
21、同时时还还要要考考虑虑输输出出条条件(即输出等价类)。件(即输出等价类)。边界值分析方法选择测试用例的步骤边界值分析方法选择测试用例的步骤首先应确定边界情况。首先应确定边界情况。其次,选取测试数据。其次,选取测试数据。应应当当选选取取正正好好等等于于、刚刚刚刚大大于于或或刚刚刚刚小小于于边边界界的的值值作作为为测测试试数数据据,而而不不是是选选取取等等价价类类中中的的典典型型值值或或任任意意值值作为测试数据。作为测试数据。例例 边界值分析边界值分析模模块块bubblesort(a,nbubblesort(a,n)是是对对数数组组a a中中的的n n个个整整型型数数从从小小到到大进行排序。大进行
22、排序。假设假设n n为为1010。那么可以用。那么可以用5 5组数据进行测试:组数据进行测试:0 0个数据个数据1 1个数据个数据9 9个数据个数据1010个数据个数据1111个数据个数据(4 4)错误猜测法)错误猜测法 基本思想:基本思想:根根据据经经验验或或直直觉觉推推测测程程序序中中可可能能存存在在的的各各种种错错误误,从从而而有有针针对对性性地地编编写写检检查查这这些些错错误误地地测测试试用例。用例。例:模块例:模块bubblesort(a,nbubblesort(a,n)是对数组是对数组a a中的中的n n个整型个整型数从小到大进行排序。假设数从小到大进行排序。假设n n为为1010
23、。那么可以用。那么可以用3 3组组数据进行测试:数据进行测试:0 0个数据个数据已经从小到大排好序的已经从小到大排好序的1010个数据个数据从大到小的从大到小的1010个逆序数据个逆序数据(5 5)因果图法)因果图法等等价价类类划划分分和和边边界界值值分分析析方方法法,都都是是着着重重考考虑虑输输入入条条件件,而而未未考考虑虑输输入入条条件件之之间间的的联联系系。如如果果在在测测试试时时必必须须考考虑虑输入条件的各种组合则可能又会产生一些新的情况。输入条件的各种组合则可能又会产生一些新的情况。因因此此,必必须须考考虑虑使使用用一一种种适适合合于于多多种种条条件件组组合合的的动动态态测测试试方方
24、法法,这这就就是是因因果果图图法法把把输输入入条条件件视视为为“因因”,把把输输出出条条件件视视为为“果果”,采采用用逻逻辑辑图图的的形形式式来来表表达达功功能能说明书中输入条件的说明书中输入条件的各种组合各种组合与输出的关系。与输出的关系。因因果果图图方方法法最最终终生生成成的的是是判判定定表表,它它适适合合于于检检查查程程序序输输人条件的各种组合情况。人条件的各种组合情况。n因果图方法实例因果图方法实例某电力公司有某电力公司有A A、B B、C C、D D四类收费标准四类收费标准,并规定:并规定:居民用电居民用电 100100度度/月月 按按A A类收费类收费 100100度度/月按月按B
25、 B类收费类收费动力用电动力用电 1000010000度度/月月,非高峰非高峰,B B类收费类收费 1000010000度度/月月,非高峰非高峰,C C类收费类收费 1000010000度度/月月,高峰高峰,C C类收费类收费 1000010000度度/月月,高峰高峰,D D类收费类收费1I12B4AC35DI4I3I2居民用电居民用电动力用电100100度度/月月100001)AND(B=0)IF(A1)AND(B=0)THEN X:=X/A;THEN X:=X/A;IF(A=2)OR(X1)IF(A=2)OR(X1)THEN X:=X+1 THEN X:=X+1 END;END;入口入口返
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 第六 软件 测试
限制150内