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

链接地址:https://www.desk33.com/p-235733.html