- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于缺陷模式的软件测试
基于缺陷模式的软件测试
基于缺陷模式的软件测试概述 基于缺陷模式的软件测试指标分析 缺陷模式 基于缺陷模式的软件测试系统(DTS)
基于缺陷模式的软件测试概述
1. 2. 3.
缺陷模式必须满足下列几个条件: 该模式下的缺陷是符合实际的。 基于该模式的缺陷数目是可以容忍的。 该模式下的缺陷是可以测试的。
故障模式
6.死循环结构模式(Dead Loop Fault DLF)
• • • • •
定义:在控制流图中,对任何一个循环结构,包括: FOR语句中的死循环结构; WHILE语句中的死循环结构; DO-WHILE语句中的死循环结构; GOTO语句中的死循环结构; 函数循环调用造成的死循环结构。
故障模式
4.
缺陷检测率(DDR):
IP ( M , A, P) DefectDete ctingRatio Y IP( M , A, P)
5.
自动缺陷检测率(ADR): 用IPAY(P,A,M)表示不需人工确 认,工具可以自动缺陷的检测个数。
基于缺陷模式的软件测试指标分析
6.
计算复杂性: 在理论上,基于缺陷的软件测试技术可 以100%的检测所定义的缺陷模式,但由于 缺陷的检测可以模型化程序的遍历问题, 对于大型程序,全部遍历虽然可以提高精 度,但需要花费大量的时间。因此,该技 术有一个性价比的问题,在时间遍历过程 中,往往都有一定的限制,如在一个函数 内、一个类内、一个文件内等。
基于缺陷模式的软件测试概述
1.
2.
3. 4. 5.
基于模式的软件测试技术具有如下特点: 针对性强:如果说某种模式的缺陷是经常发生的, 并且在被测软件中是存在的,则面向缺陷的测试可 以检测出此类缺陷。 基于缺陷模式的软件测试技术往往能发现其他测试 技术难以发现的故障,如内存泄漏缺陷,空指针引 用缺陷。 工具自动化程度高以及测试效率高。 缺陷定位准确:对测试所发现的缺陷能够准确定位。 易学、易使用:对一般的IT专业专科以上的毕业生, 该测试方法一般经过数天的培训即可掌握其使用方 法。
基于缺陷模式的软件测试指标分析
2.
准确率(CR):
IP ( M , A, P) IP ( M , A, P) U CorrectRat Y io IP( M , A, P)
3.
误报率(DR):
IPN ( M , A, P) DistortRat io IP( M , A, P)
基于缺陷模式的软件测试指标分析
缺陷模式概述
1.
故障模式:此类缺陷是故障,一经产生,会导致系统 出错。 • 存储器泄露模式 • 资源泄漏模式 • 指针使用错误模式 • 数组越界模式 • 非法计算模式 • 使用未初始化变量模式 • 死循环结构模式 • 死锁模式
缺陷模式概述
2.
•
•
• •
安全漏洞模式:此类缺陷会给系统留下安全 隐患,为攻击该系统开了绿灯。 缓冲区溢出模式 被感染的数据模式 竞争条件模式 风险操作模式
缺陷模式
•
• • •
缺陷模式概述 故障模式 安全漏洞模式 缺陷模式
故障模式
故障模式中给出的故障描述,是程序中 可能存在的故障,这些故障一旦被激活, 就会使系统发生错误。包括以下几种故 障模式:
故障模式
1. 存储泄漏的故障模式(Memory Leak Fault MLF)
定义:内存泄漏故障(Memory Leak Faults): 设在程序的某处申请了大小为M的空间,凡在程序结 束时M或者M的一部分没被释放、或者多次释放M或 M的一部分都是内存泄漏故障。 MLF有三种形式: • 遗漏故障:是指申请的内存没有被释放。 • 不匹配故障:是指申请函数和释放函数不匹配。 • 不相等的释放错误:是指释放的空间和申请的空间大 小不一样。
安全漏洞模式
2.
被污染的数据模式(Tainted Data) 定义:程序从外部获取数据时,这些数据可能含 有具有欺骗性或者是不想要的垃圾数据,如果在使用 这些数据前不进行合法性检查则将威胁到程序的安全, 造成一个tainted data缺陷。tainted data可能会导致 程序不按原计划执行,也有可能直接或间接地导致缓 冲区溢出缺陷。 被污染的数据模式主要有两种类型:使用的数据 来自外部的全局变量和使用的数据来自输入函数。
基于缺陷模式的软件测试
基于缺陷模式的软件测试概述 基于缺陷模式的软件测试指标分析 缺陷模式 基于缺陷模式的软件测试系统(DTS)
基于缺陷模式的软件测试指标分析
设P是待测程序,将缺陷模式M分成类 M={M1,M2,…Mn},每类分成种 Mi={Mi1,Mi2,…,MiL},从P中计算出 和M相匹配的检查点的集合 IP={IP1,IP2,…,IPm},可以定义如下技术 指标:
基于缺陷模式的软件测试指标分析
1.
漏报率(ER):设P是程序,M是缺陷模 式,A是算法,IP(M,A,P)是IP总 的数目,考虑到测试算法实现过程中的 不同假设,会导致IP(M,A,P)不 同。漏报率定义为:
| IP( M , A, P) IP( M , P) | ErrorRatio | IP( M , P) |
基于缺陷模式的软件测试系统 (DTS)
DTS的测试界面
安全漏洞模式
4.
风险操作(Risky Operation) 定义:如果不恰当地使用了某些标准库函数, 可能会带来安全隐患。甚至在某些情况下,某些函 数一经被使用, 就可能会带来安全隐患。 例如像rand()和random()这样的随机数生成函 数,它们在生成伪随机值的时候表现出来的性能是非 常差的, 如果用它们来生成默认的口令, 这些口令将 很容易被攻击者猜测到。
7.资源泄漏故障(RLF) 定义:资源泄漏故障:在Java程序中,当一个资 源被打开后,如果并不是在所有的可执行路径上都对 其进行了显式的释放操作,则是一个资源泄漏故障。
故障模式
8. 并发故障模式 该模式主要是针对程序员对多线程的编码机制、 各种同步方法、Java存储器模式和java虚拟机的工作 机制不清楚,而且由于线程启动的任意性和不确定性 使用户无法确定所编写的代码具体何时执行而导致对 公共区域的错误使用。这类模式主要包括不正确的同 步、死锁、多线程应用中方法调用时机或方式不正确、 同一变量的双重验证、相互初始化的类和临界区内调 用阻塞函数等。
缺陷模式概述
3.
• •
缺陷模式:此类缺陷是不应该发生的,它未 必会造成系统的错误,但可能会隐含某些故 障,或者是由初级软件工程师不理解造成的。 性能缺陷模式:此类缺陷会降低系统的性能 疑问代码模式:让人费解的代码
缺陷模式概述
4式:软件开发总要遵循一定的规则, 某个团队也有一些开发规则,违反这些规则 也是不允许的。 代码规则 复杂性规则 控制流规则 命名规则 可移植性规则 资源规则
基于缺陷模式的软件测试
基于缺陷模式的软件测试概述 基于缺陷模式的软件测试指标分析 缺陷模式 基于缺陷模式的软件测试系统(DTS)
基于缺陷模式的软件测试系统 (DTS)
下面以作者自主开发的基于缺陷模式的测试系 统DTS为例,介绍基于缺陷模式的软件测试的 基本原理。DTS是作者在国家863“软件的故障 模式与面向故障的软件测试系统”资助下开发 的测试系统,能对上面介绍的缺陷模式进行有 效测试。
缺陷模式
•
• • •
缺陷模式概述 故障模式 安全漏洞模式 缺陷模式
安全漏洞模式
安全漏洞模式为他人攻击软件提供可能。 而一旦软件被攻击成功,系统就可能发 生瘫痪,所造成的危害较大,因此,此 类漏洞应当尽量避免。 下面以C++为基础,介绍基于安全漏洞 检测的缺陷模式。
安全漏洞模式
1.
缓冲区溢出(buffer overflow)漏洞模式 定义:当程序要在一个缓冲区内存储比该缓冲 区的大小还要多的数据时,即会产生缓冲区溢出漏 洞。 缓存区溢出主要有2种类型:数据拷贝造成的缓 冲区溢出和格式化字符串造成的缓冲区溢出。
缺陷模式
•
• • •
缺陷模式概述 故障模式 安全漏洞模式 缺陷模式
缺陷模式
低性能模式: 该模式导致软件运行效率低下,因此建议采用 更高效的代码来完成同样的功能。这类模式主要包 括使用低效函数/代码、使用多余函数、Java中显式 垃圾回收、冗余代码、头文件中定义的静态变量、 不必要的文件包含、字符串低效操作和有更简单的 运算可以替代等。
基于缺陷模式的软件测试
基于缺陷模式的软件测试概述 基于缺陷模式的软件测试指标分析 缺陷模式 基于缺陷模式的软件测试系统(DTS)
缺陷模式
•
• • •
缺陷模式概述 故障模式 安全漏洞模式 缺陷模式
缺陷模式概述
缺陷模式是和语言本身相关的,不同的 语言有着不同的缺陷模式。我们以C++ 语言和Java语言为背景来描述其缺陷模 式,将软件的缺陷模式分为四个层次, 即故障模式、漏洞模式、缺陷模式和规 则模式。
配置文件
基于缺陷模式的软件测试系统 (DTS)
DTS缺陷模式描述 1.缺陷模式状态机
有限自动机是计算机科学的重要基石,它在软件 开发领域内通常被称作有限状态机。 2.缺陷模式状态机的xml描述 作者用xml来对缺陷模式状态机进行描述。 xml schema定义了描述缺陷模式状态机的语法,包括标签 以及标签的各个属性。
4.空指针使用故障(NULL Pointer Dereference Fault NPDF) 定义:空指针使用故障:引用空指针或给空指针 赋值的都是空指针使用故障。
故障模式
5.非法计算类故障(Illegal Computing Fault ILCF) 定义:非法计算类故障:是指计算机不允许的计算。 一旦非法计算类故障产生,系统将强行退出。例如: • 除数为0故障。 • 对数自变量为0或负数故障。 • 根号内为负数的故障。