软件测试教程-宫云战 第4章ppt
合集下载
软件测试知识PPT(共23张PPT)

白盒测试
• ①白盒测试法需要了解程序内部的结构,测试用例是根据程序的内部逻辑来 设计的。白盒测试法主要用于软件的单元测试。
• ②白盒测试的基本原则是:保证所测模块中每一个独立路径至少执行一次; 保证所测模块所有判断的每一个分支至少执行一次;保证所测模块每一个循 环都在边界条件和一般条件下至少执行一次;验证所有内部数据结构的有效 性。
• ③白盒测试法常用的技术是逻辑覆盖。主要的覆盖标准有6 种,即强度由低到 高依次是:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合 覆盖、路径覆盖。
• I. 语句覆盖
• 指选择足够的测试用例,使被测语句的每个语句至少执行一次。
• II.判定覆盖 • 指选择足够的测试用例,使每个判定的所有可能结果至少出现一次。 • III.条件覆盖
需求分析 确认测试
软件设计 集成测试
编码 单元测试
需求分 析说明
书
概要设 计说明
书
详细设 计说明
书
源程ቤተ መጻሕፍቲ ባይዱ 代码
单元测 试
集成测 试
确认测 试
• 单元测试:也称模块测试,主要发现编码和详细设计中产生的错误,通常采用白盒
测试。放在编码阶段,由程序员自己来完成,检查它是否实现了详细设计说明书中 规定的模块功能和算法。其测试计划是在详细设计阶段完成。单元测试的测试计划 是在详细设计阶段完成。
次。
• VI. 路径覆盖
• 指选择足够的测试用例,使流程图中的每条路径至少经过一次。
黑盒测试
• ①黑盒测试,是对软件已经实现的功能是否满足需求进行测试和验证。 黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试 用例。黑盒测试法主要用软件确认测试。
国防《软件测试》教学资料包 教学参考 第4章

第4章白盒测试技术
教学要求
熟练掌握:熟悉掌握白盒测试的依据和流程,白盒测试的方法以及本章介绍的几个白盒测试工具。
掌握:白盒测试的依据和流程和白盒测试的方法和。
了解:白盒测试的优点和缺点和白盒测试工具。
教学重点
白盒测试的依据和流程和白盒测试的方法。
教学难点
白盒测试的方法。
课时安排
本章安排4课时。
其中,理论讲授2课时。
教学大纲
4.1 白盒测试的优点和缺点
4.2 白盒测试的依据和流程
4.3 白盒测试的方法
4.3.1 逻辑覆盖法
4.3.2 基路径测试法
4.3.3 对循环的测试
4.3.4 数据流测试
4.3.5 静态白盒测试
4.3.6 动态白盒测试技术
4.4 白盒测试工具
4.4.1 C++ Test介绍
4.4.2 Logiscope介绍
4.4.3 BoundsChecker介绍
主要概念
1.逻辑覆盖法
2.基路径测试法
3.对循环的测试
4.数据流测试
5.静态白盒测试
6.动态白盒测试技术。
软件测试04-教学课件_10

Character B Y Z [ ‘ a b y z {
ASCII Value 66 89 90 91 96 97 98 121 122 123
二、设计方法
First/last, First-1/Last+1
Min/Max,Min-1/max+1
字符
Star/Finish, Start-1/Finish+1
三、总结
一、边界值的概念 二、边界值分析方法 三、边界值关键词
min
max
例如,某网页界面限制用户输入6位正整数
个数
123456 99999 1000000
二、设计方法
如果程序的规格说明给出的输入域或输出域是 有序集合,则应选取集合的第一个元素和最后 一个元素作为测试用例。
二、设计方法
离点的选择原则:闭外开内
假定1<X≤100,那么用边界值分析法,X在测试中应 该取的边界值是多少?
上点:1、100 离点:0、2、99、101
边界值:1、2、100、101
1
100
2
101
二、设计方法
二进制数 值边界
Term Bit Nibble Byte Word Kilo Mega Giga Tera
取值范围 0 or 1 0-15 <Half byte> 0-255 0-65535 or 0-4294967295 1024 1048576 1073741824 1099511627776
假设某网页中“上行测试?
上点:0K、4096K 离点:1K、4097K
二、设计方法
ASCII码
Character Null Space / 0 1 2 9 ; @ A
软件测试(宫云战版)第2章

性能测试工具应用实践
性能测试场景设计
根据实际需求设计性能测试场景,包括并发用户数、数据 量、网络带宽等参数设置。
性能测试脚本编写
使用性能测试工具编写性能测试脚本,包括模拟用户操作、 数据生成、性能指标监控等步骤。
性能测试执行和结果分析
通过性能测试工具执行性能测试脚本,收集并分析性能指 标数据,如响应时间、吞吐量、资源利用率等,评估系统 性能表现。
条件覆盖法
设计测试用例使得每个判定中 的每个条件都至少满足一次。
路径覆盖法
设计测试用例覆盖程序中所有 可能的路径。
灰盒测试方法
01
02
03
基于接口的测试
关注系统组件之间的接口, 通过测试接口来验证系统 的功能和性能。
基于状态的测试
关注系统的状态变化,通 过测试不同状态下的系统 行为来验证系统的正确性。
验收测试
在软件发布前进行的最后一次测试,确保软件符合用户需求和合同要求。
软件测试发展历程
早期阶段
自动化阶段
软件测试主要依赖于人工操作和经验判断 ,缺乏系统性的方法和工具支持。
随着计算机技术的发展,出现了自动化测 试工具和框架,提高了测试效率和准确性 。
敏捷测试阶段
持续测试阶段
敏捷开发方法的普及推动了敏捷测试的发 展,强调测试与开发的紧密协作和快速反 馈。
已修复的缺陷数量与总缺陷数 量的比例,用于评估开发团队 的修复能力。
平均修复时间
从发现缺陷到修复完成所需的 平均时间,用于评估开发团队 的响应速度和修复效率。
05
软件测试工具与实践
常用软件测试工具介绍
JUnit
Java语言的单元测试框架,提供注解和断言库,方便开发者编写和执 行测试用例。
软件测试教程宫云战 PPT课件

• 所设计的测试用例是否完整、是否考虑边界条件、能否达到其
覆盖率要求;
第9页/共42页
8.2测试管理的基本内容
• 测试执行阶段: 建立和设置好相关的测试环境,准备好测试数据,开始执行测试。测试执行可以手工进行,也可以自动进 行。自动化测试借助于测试工具,运行测试脚本,达到测试结果,所以管理比较简单,而手工测试的管理 相对要复杂些。
第24页/共42页
8.4测试管理的实践
• 策划测试过程 • 需求分析 • 变更控制 • 度量与分析 • 测试过程可持续改进
第25页/共42页
8.4测试管理的实践
• 策划测试过程 • 该系统的三个阶段具有相对的独立性,所以可采用“独立、迭代”的测试原则,对测试过程进行 独立策划,以每一阶段完成所提交的阶段性产品作为系统测试准备的就绪点,在就绪点及时开展 测试。 • 因此,在该系统开发过程中,系统测试组可开展三个阶段的系统测试,每个阶段系统测试具有不 同的侧重点,目的在于更好地配合开发工作尽早地发现软件故障,降低软件成本。
8.2测试管理的基本内容
• 8.2.4测试文档管理 • 测试文档的类型
• 测试计划:详细规定测试的要求,包括测试的目的和内容、方法和步骤,以及 测试的准则等。
• 测试分析报告:用来对测试结果进行分析说明。软件经过测试后,应给出评价 的结论性意见,软件的能力如何,存在哪些缺陷和限制等等。
• 测试文档的管理
SQAP SVVP
DTP TDS
TPS
动一个。
•MTP:主确认测试计划,每个SVVP
MTP
DTP TDS
TPS
一个。
每确认活动 一个或多个
TCS DTP TDS
TCS DTP
•DTP:详细确认测试计划,每个活 TC 动一个或多个。
软件测试技术第四章PPT教学课件

第18页
4.2.4 软件错误的分类
按照错误处理优先级 1. 程序员在面对一系列错误的时候,一般情况下,需要先修
改错误等级高的,但并不都如此。 2. 优先级与严重程度有一定关系,但也不完全相同。有可能
某个严重错误的修复优先级是低,也有可能某个轻微错误 的修复优先级是高。 3. “优先级”抓住了在严重程度中没有考虑的重要程度因素 。 4. 严重性等级由测试人员决定,而优先级则由项目经理设置 。
1. 使用的频度或范围 2. 失效的可能性 3. 能最大限度模拟真实环境
2020/12/12
第14页
4.2.2 建立系统测试环境
建立测试环境的步骤 1. 安装应用程序 2. 安装和开发测试工具(如果需要) 3. 设置专用文件,包括将这些文件与测试所需的数据相 对应 4. 建立与应用程序通信的实用程序 5. 配备适当的硬件以及必要的设备
2020/12/12
第19页
4.2.4 软件错误的分类
错误处理优先级别一般分为: 1. 立即解决:要求开发人员立即修复。此错误阻止进一步 测试,需要立即修复。 2. 高优先级:此错误在产品发布前必须修复,否则会影响 软件的发布和使用 3. 正常排队:应该修复。如果时间允许,应该修复此错误 4. 低优先级:考虑修复。此错误即使不修复,也可以发布 。
2. 软件环境指被测软件运行时的操作系统、数据库及其他 应用软件构成的环境。
测试环境如何规划?
分析用户环境中哪些配置可能对软件有所影响,在此基 础上建立测试环境。
2020/12/12
第11页
4.2.2 建立系统测试环境
某软件是一个运行在Windows下的桌面应用软 件,可以完成数据文件备份与恢复功能。该软件 支持Windows 98及以上的各个Windows版本 ,可以将文件备份到CD刻录机、DVD刻录机、 USB移动硬盘。
软件测试(宫云战版)第4章
32
死循环
例4-19:无增量
for(i=1; i<=100; j++ ) for(i=1;i++)
例4-20:无结束条件
例4-21:增量变化不能使程序结束
for(i=1;i==100;i=i+2)
33
故障模式
7.资源泄漏故障(RLF)
定义:资源泄漏故障:在Java程序中,当一个资源 被打开后,如果并不是在所有的可执行路径上都对 其进行了显式的释放操作,则是一个资源泄漏故障。 简单泄露 异常泄露 交叉函数的情况 “静态”情况
若i是在数组定义的范围内,则是正确的; 若i是在数组定义的范围外,则是OBAF; 若i是不确定的,则Array[i]是否是OBAF则不确定 int data[10]; for(i=0; i<=10; i++){data[i]=...};
例4-10:数组越界
25
(2)字符串拷贝过程中存在的数组越界 故障 。 例(文件检索系统,集成测试):
D0005(D0012、D0013、D0018同):
D0017:
报错行:delete l_Link->m_node.m_dirname; 原因:l_Link->m_node.m_dirname = (char*) new char(strlen(l_Buf1)+1);
while(l_DirSearch){ l_Link1 = l_DirSearch; l_DirSearch = l_Link1->m_next; if(l_DirSearch == NULL) { l_DirSearch = l_DirSet; //l_DirSet = NULL;} delete l_Link1; }
软件测试教案ppt课件
第1章软件测试概述12软件测试基础理论13软件开发过程14软件开发与软件测试的关系15软件测试过程16软件质量保证概要17软件测试职业11软件测试背景本章教学目标正确理解软件测试的背景软件缺陷和故障的概念正确理解软件测试的意义正确理解软件开发过程与软件测试的关系正确理解软件质量的概念及质量保证体系了解软件测试职业与素质的要求11软件测试背景111软件可靠性问题112软件缺陷与故障113软件缺陷产生的原因returnreturn111软件可靠性问题运行软件的驻留故障密度每千行代码的故障数目要求很高的关键财务或财产软件为每千行代码110个故障关键的生命软件为每千行代码0011个故障时间内无故障运行的概率
软件测试的对象:
——软件测试不等于程序测试。
——软件测试贯串于软件定义和开发的整个过程。
——软件开发过程中所产生的需求规格说明、概要 设计规格说明、详细设计规格说明以及源程序都是 软件测试的对象。
A Free sample background from
的定义有两种描述:
定义1:软件测试是为了发现错误而执行程序的 过程。
定义2:软件测试是根据软件开发各阶段的规格 说明和程序的内部结构而精心设计的一批测试用
例,并利用这些测试用例运行程序以及发现错误
的过程,即执行测试步骤。
A Free sample background from
功能冻结
代码冻结
图1-3 软件测试的周期性
第1章
A Free sample background from
软件测试概述
Slide 19
软件测试的基本理论(续)
6、测试停止的依据(标准) 第一类标准:测试超过了预定时间,则停止测试。 第二类标准:执行了所有的测试用例,但并没有发
软件测试的对象:
——软件测试不等于程序测试。
——软件测试贯串于软件定义和开发的整个过程。
——软件开发过程中所产生的需求规格说明、概要 设计规格说明、详细设计规格说明以及源程序都是 软件测试的对象。
A Free sample background from
的定义有两种描述:
定义1:软件测试是为了发现错误而执行程序的 过程。
定义2:软件测试是根据软件开发各阶段的规格 说明和程序的内部结构而精心设计的一批测试用
例,并利用这些测试用例运行程序以及发现错误
的过程,即执行测试步骤。
A Free sample background from
功能冻结
代码冻结
图1-3 软件测试的周期性
第1章
A Free sample background from
软件测试概述
Slide 19
软件测试的基本理论(续)
6、测试停止的依据(标准) 第一类标准:测试超过了预定时间,则停止测试。 第二类标准:执行了所有的测试用例,但并没有发
软件测试完整ppt课件
目录 首页 上页 下页 末页
第10章 软件测试
7
有关软件测试的错误观点
“软件测试是为了证明程序是正确的,即测 试能发现程序中所有的错误”。事实上这是不可 能的。要通过测试发现程序中的所有错误,就要 穷举所有可能的输入数据。
例:程序P有两个整型输入量 X、Y,输出量为Z,
在32位机上运行。所有的测试数据组(Xi,Yi)的 数目为:232×232= 264,1毫秒执行1次,共需5亿
目录 首页 上页 下页 末页
第10章 软件测试
6
10.1 软件测试基础
一、软件测试的目的
➢ 测试是一个为了发现错误而执行程序的过程 ➢ 一个好的测试用例是指很可能找到迄今为至尚未发
现的错误的测试用例 ➢ 一个成功的测试是指揭示了迄今为至尚未发现的错
误的测试 根据这个测试目的,应该排除对测试的错误观点,设 计合适的测试用例,用尽可能少的测试用例,来发现 尽可能多的软件错误。
12
评审(Review)
评审是由若干开发人员、项目经理、测试人员、用 户或领域专家等组成一个会审小组,通过阅读、讨论和争 议,对工作制品进行静态分析的过程。
类型:需求评审、设计评审和代码评审。
•评审过程
–小组负责人先把需求规格说明、设计说明或程序代 码及有关要求、规范等分发给小组成员,作评审依据;
–在充分阅读有关材料后召开评审会议,主要开发人 员进行讲解,其他成员提出问题并展开讨论,审查是否存 在错误;
d — 定义 r — 引用 u — 未引用
R:duuuuu 只定义不用 S:uruuur 未定义引用 Y:uuddru 连续定义
目录 首页 上页 下页 末页
第10章 软件测试
16
审查(Inspection)
软件测试基础教程-宫云战_第2章ppt
同样,也可按照输出条件,将输出域划分为若干个等价类。
2.2.1等价类划分方法
3.等价类划分测试用例设计 在设计测试用例时应同时考虑有效等价类和无效等价类测试 用例的设计。根据等价类表设计测试用例,具体步骤如下: (1)为每个等价类规定一个唯一的编号。 (2) 设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的 有效等价类,重复这一步,直到测试用例覆盖了所有的有效 等价类。 (3) 设计一个新的测试用例,使其覆盖并且只覆盖一个还没 有被覆盖的无效等价类。重复这一步,直至测试用例覆盖了 所有的无效等价类。
年龄
20~39 6点 40~59 4点 其它 2点
性别
M 4点 F 3点
婚姻状况
已婚 3点 未婚 5点
抚养人数
1人扣0.5点, 最多扣3点
2.2.2 等价类划分法的测试运用
分析程序规格说明中给出和隐含的对输入数据的要求,可以 得出: ① 年龄:一位或两位非零整数,取值的有效范围为1~99。 ② 性别:一位英文字符,只能取 ‘M’或’F’ 值。 ③ 婚姻:字符,只能取‘已婚’或‘未婚’。 ④ 抚养人数:空白或字符‘无’或一位非零整数(1~9) ⑤ 点数 :一位或两位非零整数,取值范围为8~19 通过对规格说明输入数据的取值分析,可以得出保险公司人 寿保险保费计算程序的等价类。
2.3.1 边界值分析法
x2 d
c
a
b
x1
图2.1 边界值分析测试用例
对于一个n变量的程序,边界值分析测试会产生4n+1个 测试用例。
2.3.1 边界值分析法
3. 健壮性边界值测试 健壮性测试是边界值分析的一种扩展。
变量除了取min,min+,nom,max-,max五个边界 值外,还要考虑采用一个略超过最大值(max+)以及一个略 小于最小值(min-)的取值,看看超过极限值时系统会出现什么 情况。
- 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或负数故障。 • 根号内为负数的故障。
基于缺陷模式的软件测试
基于缺陷模式的软件测试概述 基于缺陷模式的软件测试指标分析 缺陷模式 基于缺陷模式的软件测试系统(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或负数故障。 • 根号内为负数的故障。