基于缺陷模式的软件测试

上传人:nbwa****ajie 文档编号:53325555 上传时间:2018-08-29 格式:PPT 页数:78 大小:1.33MB
返回 下载 相关 举报
基于缺陷模式的软件测试_第1页
第1页 / 共78页
基于缺陷模式的软件测试_第2页
第2页 / 共78页
基于缺陷模式的软件测试_第3页
第3页 / 共78页
基于缺陷模式的软件测试_第4页
第4页 / 共78页
基于缺陷模式的软件测试_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《基于缺陷模式的软件测试》由会员分享,可在线阅读,更多相关《基于缺陷模式的软件测试(78页珍藏版)》请在金锄头文库上搜索。

1、第4章 基于缺陷模式的软件测试,安博测试空间技术中心http:/ 地址:北京市海淀区学院路40号大唐电信测试空间楼 联系电话:010-62303223 62303260 62303230,第4章 基于缺陷模式的软件测试,4.1 基于缺陷模式的软件测试概述 4.2 基于缺陷模式的软件测试指标分析 4.3 缺陷模式 4.4 基于缺陷模式的软件测试系统(DTS),4.1 基于缺陷模式的软件测试概述,缺陷模式必须满足下列几个条件: 该模式下的缺陷是符合实际的。 基于该模式的缺陷数目是可以容忍的。 该模式下的缺陷是可以测试的。,采用该种方式实现测试,首先必须建立一种可以使用的模型(模式),称为缺陷模式。

2、,基于缺陷模式的软件测试概述,基于模式的软件测试技术具有的特点(5条): 针对性强:如果说某种模式的缺陷是经常发生的,并且在被测软件中是存在的,则面向缺陷的测试可以检测出此类缺陷。 基于缺陷模式的软件测试技术往往能发现其他测试技术难以发现的故障,如内存泄漏缺陷,空指针引用缺陷。 工具自动化程度高以及测试效率高。 缺陷定位准确:对测试所发现的缺陷能够准确定位。 易学、易使用:对一般的IT专业专科以上的毕业生,该测试方法一般经过数天的培训即可掌握其使用方法。,缺陷模式,经过传统软件测试后,残留在软件中的缺陷一般都是小概率、开发人员疏忽造成的。我们对8类软件故障的测试实践表明,经过严格的传统软件测试

3、,残留在软件中的故障密度为12个故障/10KLOC,而没有经过严格测试的软件,其故障密度一般在510个故障/10KLOC,而这些故障一旦发生,往往会导致系统崩溃。软件缺陷模式就是经过理论分析、实践总结归纳出来的,我们目前将其分为故障、漏洞、疑问和规则模式。这是基于缺陷模式测试的核心技术之一。,缺陷模式的概念,(1) 缺陷模式的定义缺陷模式是缺陷的语法或语义特征的抽象,具有一定代表性或者会造成严重后果 。(2) 缺陷模式中缺陷产生的原因 疏忽:缺陷模式中的缺陷一般是由开发人员疏忽造成的。由于涉及可能多条路径、多个约束条件,疏忽往往是不可避免的。这类缺陷往往都是和路径或多个约束条件相关的。 不理解

4、:缺陷模式中的缺陷也可能是由于开发人员对程序语言本身不理解造成的。如对某些规则不了解、对某些语言现象不理解都可能会产生缺陷。,(3)缺陷模式中缺陷的特点: 一般都是非功能性的缺陷 路径敏感的缺陷一般都是有由疏忽造成的 路径不敏感的缺陷一般疏忽或不理解造成的 在大量工程软件的测试结果统计中,模式中的缺陷是会存在于大多数的软件中,并且有一定发生概率。这个概率要大于人们容忍的范围。,(4) 软件缺陷模式中的缺陷发生密度 在以往的对N个软件测试活动中,该类缺陷的总个数除以N个软件的总行数1000,称为该类缺陷的缺陷密度,用缺陷个数/KLOC表示,N越大,其缺陷密度统计的准确性就越高。 (5) 缺陷模式

5、的分类按缺陷产生后的严重程度:故障模式、安全漏洞模式、疑问代码模式和规则模式 (6) 缺陷模式分类按是否是路径敏感 是路径敏感:需要人工确认 路径不敏感:不需要人工确认,作用及意义,软件缺陷模式与测试是软件测试领域中一种新型的软件测试技术 主要面向软件的非功能性缺陷,可以检测一般软件测试技术中难以检测的软件缺陷 与面向过程的软件测试具有很好的互补性 基于缺陷模式的测试技术与已往的软件测试 有很大的不同,检测精度与效率比较高,测试成本低,软件缺陷模式,缺陷发生机理:疏忽、二义性、不理解、遗漏 分类:故障、安全漏洞、疑问代码、规则 语法与语义定义:给出基于语言的缺陷定义 缺陷新模式研究:论文、工具

6、、实践、推理 缺陷模式数据库:核心技术之一,不断增补 嵌入式软件缺陷模式研究:适合嵌入式特点,4.1 基于缺陷模式的软件测试概述 4.2 基于缺陷模式的软件测试指标分析 4.3 缺陷模式 4.4 基于缺陷模式的软件测试系统(DTS),第4章 基于缺陷模式的软件测试,4.2 基于缺陷模式的软件测试指标分析,设P是待测程序,将缺陷模式M分成类:M=M1,M2,Mn,每类分成种:Mi=Mi1,Mi2,MiL,从P中计算出和M相匹配的检查点的集合:IP=IP1,IP2,IPm,可以定义如下技术指标:(1)漏报率(ER) (2) 准确率(CR)(3)误报率(DR)(4)缺陷检测率(DDR):(5)自动缺

7、陷检测率(ADR):(6)计算复杂性,4.2 基于缺陷模式的软件测试指标分析,漏报率(ER):设P是程序,M是缺陷模式,A是算法,IP(M,A,P)是IP总的数目,由于测试算法实现过程中的不同假设,会导致IP(M,A,P)不同。漏报率定义为:,4.2 基于缺陷模式的软件测试指标分析,注意:理论上,在给定M和P之后, IP(M,P)是确定的,但在实际中很难得到IP(M,P)。假设不同的测试工具算法为: A1,A2,An ,则通常用 表示IP(M,P)。对于每个IP通常需要人工去判断高IP是否真的是缺陷,根据程序的逻辑复杂性以及测试代价等因素,IP经确认后分为3种情况:表示IP确认为缺陷的数目:

8、IPY(M,A,P)表示IP确认为非缺陷的数目: IPN(M,A,P)表示IP不能确定是否缺陷的数目: IPU(M,A,P) 所以,可得:IPY(M,A,P)+ IPN(M,A,P) +IPU(M,A,P)= IP(M,A,P),准确率(CR): 误报率(DR):,4.2基于缺陷模式的软件测试指标分析,缺陷检测率(DDR): 自动缺陷检测率(ADR):用IPAY(P,A,M)表示不需人工确认,工具可以自动缺陷的检测个数。,4.2基于缺陷模式的软件测试指标分析,计算复杂性:在理论上,基于缺陷的软件测试技术可以100%的检测所定义的缺陷模式,但由于缺陷的检测可以模型化程序的遍历问题,对于大型程序,

9、全部遍历虽然可以提高精度,但需要花费大量的时间。因此,该技术有一个 性价比 的问题,在时间遍历过程中,往往都有一定的限制,如在一个函数内、一个类内、一个文件内等。,4.2基于缺陷模式的软件测试指标分析,基于缺陷模式的软件测试,4.1 基于缺陷模式的软件测试概述 4.2 基于缺陷模式的软件测试指标分析 4.3 缺陷模式 4.4 基于缺陷模式的软件测试系统(DTS),4.3 缺陷模式,4.3.1 缺陷模式概述 4.3.2 故障模式 4.3.3 安全漏洞模式 4.4.4 缺陷模式,4.3.1 缺陷模式概述,缺陷模式是和语言本身相关的,不同的语言有着不同的缺陷模式。我们以C+语言和Java语言为背景来

10、描述其缺陷模式。将软件的缺陷模式分为四个层次:即故障模式漏洞模式缺陷模式规则模式,软件缺陷模式的分类:按缺陷严重程度,1. 故障模式:此类缺陷是故障,一经产生,会导致系统出错。 主要有: 存储器泄露模式 资源泄漏模式 指针使用错误模式 数组越界模式 非法计算模式 使用未初始化变量模式 死循环结构模式 死锁模式,4.3.1 缺陷模式概述,4.3.1 缺陷模式概述,2. 安全漏洞模式:此类缺陷会给系统留下安全隐患,为攻击该系统开了绿灯。主要有: 缓冲区溢出模式 被感染的数据模式 竞争条件模式 风险操作模式,4.3.1 缺陷模式概述,3. 缺陷模式:此类缺陷是不应该发生的,它未必会造成系统的错误,但

11、可能会隐含某些故障,或者是由初级软件工程师不理解造成的。主要有: 性能缺陷模式:此类缺陷会降低系统的性能 疑问代码模式:让人费解的代码,4.3.1 缺陷模式概述,4.规则模式:软件开发总要遵循一定的规则,某个团队也有一些开发规则,违反这些规则也是不允许的。主要有: 代码规则 复杂性规则 控制流规则 命名规则 可移植性规则 资源规则,4. 缺陷模式,4.3.1 缺陷模式概述 4.3.2 故障模式 4.3.3 安全漏洞模式 4.3.4 缺陷模式,4.3.2 故障模式,故障模式中给出的故障描述,是程序中可能存在的故障,这些故障一旦被激活,就会使系统发生错误。包括以下几种故障模式(8种): 存储泄漏的

12、故障模式 数组越界故障的故障模式 使用未初始化变量故障模式 空指针使用故障 非法计算类故障 死循环结构模式 资源泄漏故障 并发故障模式,4.3.2 故障模式,存储泄漏的故障模式(Memory Leak Fault MLF)内存泄漏故障:设在程序的某处申请了大小为M的空间,凡在程序结束时M或者M的一部分没被释放、或者多次释放M或M的一部分都是内存泄漏故障。MLF有三种形式:(1)遗漏故障:是指申请的内存没有被释放。(2)不匹配故障:是指申请函数和释放函数不匹配。(3)不相等的释放错误:是指释放的空间和申请的空间大小不一样。,分析教材中的例子:例1-例9(9种情况),4.3.2 故障模式,数组越界

13、故障的故障模式(OBAF)数组越界故障:设某数组定义为Arrayminmax,若引用Arrayi且imax都是数组越界故障。在C+中,若i0或imax是数组越界故障。,4.3.2 故障模式,数组越界故障的类型分析(3种故障类型): (1)对程序中任何出现Arrayi的地方,都要判断i的范围,可能有三种情况: 若i是在数组定义的范围内,则是正确的; 若i是在数组定义的范围外,则是OBAF; 若i是不确定的,则Arrayi是否是OBAF则不确定的。(分析教材例4-10和例4-11)(2)字符串拷贝过程中存在的数组越界故障 。(分析教材例表4-1)(3)在结构类型中,由于结构体中的成员变量是连续存放

14、的,在数组的拷贝过程中,多余的数据会自动的存放在后面所定义的成员变量中,这种情况数组并不产生越界错误。(分析教材例4-12),4.3.2 故障模式,3使用未初始化变量故障模式(Uninitialized Variable Fault,UVF)定义:使用未初始化变量故障:存在一个路径,在该路径上使用前面没有被赋初值的变量是使用未初始化变量故障。,(分析教材例4-13、例4-14、例4-15 、例4-16 、例4-17 ),4.3.2 故障模式,4空指针使用故障(NULL Pointer Dereference Fault NPDF)定义:空指针使用故障:引用空指针或给空指针赋值的都是空指针使用故

15、障。,(分析教材例4-18、表4-2 ),4.3.2 故障模式,5非法计算类故障(Illegal Computing Fault ILCF)定义:非法计算类故障:是指计算机不允许的计算。一旦非法计算类故障产生,系统将强行退出。例如:除数为0故障。对数自变量为0或负数故障。根号内为负数的故障。,4.3.2故障模式,6死循环结构模式(Dead Loop Fault DLF)定义:在控制流图中,对任何一个循环结构,包括:FOR语句中的死循环结构;WHILE语句中的死循环结构;DO-WHILE语句中的死循环结构;GOTO语句中的死循环结构;函数循环调用造成的死循环结构。要分析控制循环的变量的开始条件、

16、结束条件、步长变化,检查该循环能否结束,若不能则会形成死循环。,(分析教材例4-19、例4-20、例4-21 ),4.3.2故障模式,7资源泄漏故障(RLF) 定义:资源泄漏故障:在Java程序中,当一个资源被打开后,如果并不是在所有的可执行路径上都对其进行了显式的释放操作,则是一个资源泄漏故障。,资源泄漏一般分为4种情况:简单泄漏:资源被分配给本地变量,在该变量的有效范围内没有释放资源;异常泄漏:资源被分配给本地变量,在该变量的有效范围内也释放了资源,但在释放资源前由于异常抛出,导致资源释放操作没有执行交叉函数泄漏:在一个方法内分配资源,该资源被传递到另外一个方法内,在另一个方法内没有正常释放资源;静态情况:资源被分配给静态变量或其他非本地变量,该变量没有被正常释放。,分析教材例4-22、例4-23、例4-24、例4-25,

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

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

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