软件测试(宫云战版)第4章

合集下载

国防《软件测试》教学资料包 教学参考 第4章

国防《软件测试》教学资料包 教学参考 第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.动态白盒测试技术。

软件测试教程宫云战第一章

软件测试教程宫云战第一章

1.5 软件测试的发展历程和现状
现状:
就目前软件工程发展的状况而言,软件测试仍然是较为 薄弱的一个方面。不仅测试理论,已有的测试方法也不 能满足当前软件开发的实际需求。
尤其是进入20世纪90年代后,计算机技术日趋成熟,软 件应用范围逐步扩大,软件规模和复杂性急剧增加,与 此同时,计算机出现故障引起系统失效的可能性也逐渐 增加。由于计算机硬件技术的进步,元器件可靠性的提 高,硬件设计和验证技术的成熟,硬件故障相对显得次 要了,软件故障正逐渐成为导致计算机
软件环境: 主要是软件运行的操作系统。比如word 2003是在
Window 2003下检测,还是在Window XP下检测,这里可能 会有兼容性的问题。
1.4 软件测试与软件开发的关系
网络环境: 主要指的是C/S结构还是B/S结构。例如要测试微软的
outlook 2003这一款软件,那么是在局域网里测,还是在互联 网里测?如果在局域网中测,那么是在10M的局域网里测,还 是在100M的局域网里测?不同的网络类型,不同的传输速度, 必然会导致不同的收发速度,因此测试一款软件时也不能忽 视网络的因素。
1.7 软件测试工具
白盒测试工具 动态测试工具
职能:功能确认与接口测试、覆盖率分析、性能分析、内存分 析等
工具:Compuware公司开发的DevPartner软件、Rational公司 研制的Purify系列等。
1.7 软件测试工具
黑盒测试工具 工具:Rational公司的TeamTest,Compuware公司的 QACenter。 分类
好安装杀毒软件,以确保系统没有病毒; 测试环境应与开发环境独立。
1.5 软件测试的发展历程和现状
发展历程: 上世纪50年代,英国著名的计算机科学家图灵就给出了软件测试的 原始定义:测试是程序正确性证明的一种极端实验形式。 直到上世纪70年代以后,随着计算机硬件技术的进步与成熟,软件 在整个系统中所占的地位越来越重要,软件规模和复杂性大大增加。 软件可靠性面临前所未有的危机,给软件测试工作带来了挑战,测 试的意义逐渐被人们认识,软件测试的研究开始受到重视,是软件 测试技术发展最活跃的时期。 1975年,Goodenough首次提出了软件测试理论,从而把软件测试 这一实践性很强的学科提高到理论的高度。 1982年,美国北卡来纳大学召开了首次软件测试技术会议,是软 件测试与软件质量研究人员和开发人员的第一次聚会

软件测试(宫云战版)第2章

软件测试(宫云战版)第2章

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

软件测试三四章作业冯时雨

软件测试三四章作业冯时雨
cin>>year>> month>>day;
while(year!= 0 && month!=0 && month!= 0)
{
// (1)
int total=0;
for(i=1;i<year;i++)
{
if(( i%4==0 && i%100!=0 ) || i%400==0)
{
total+=366;
软件测试第三、四章作业
一、单项选择题:
1、不属于逻辑覆盖方法的是(D)。
A.组合覆盖B.判定覆盖
C.条件覆盖D.接口覆盖
2、(D)是选择若干个测试用例,运行被测程序,使得程序中的每个可执行语句至少执行一次。
A、条件覆盖B、组合覆盖
C、判定覆盖D、语句覆盖
3、(A)是设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。
13、测试用例是为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据,至少应该包括(A)
A、测试输入、执行条件和预期的结果。B、测试目标、测试工具
C、测试环境D、测试配置
14、可作为测试停止的标准是(D)
A.当时间用光时
B.执行了所有的测试用例,但没有发现故障
C.当所有缺陷都已经清除时
3、有一段程序如下,请设计测试用例分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖要求,并用你熟悉的程序设计语言(C、C++、C#、JAVA)之一实现此程序,进行上述白盒测试。(提示:首先画出程序流程图)

软件测试教程宫云战 PPT课件

软件测试教程宫云战 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 动一个或多个。

软件测试教程宫云战第3章精品PPT课件

软件测试教程宫云战第3章精品PPT课件

3.4程序变异测试
程序变异测试技术的基本思想是: 对于给定的程序P,先假定程序中存在一些小错误,每假设一个错误, 程序P就变成P′,如果假设了n个错误:e1,e2,…,en,则对应有 n个不同的程序:P1,P2,…,Pn,这里Pi称为P的变异因子。 存在测试数据Ci,使得P和Pi的输出结果是不同的。因此,根据程序P 和每个变异的程序,可以求得P1,P2…,Pn的测试数据集C={C1, C2,…,Cn}。运行C,如果对每一个Ci,P都是正确的,而Pi都是 错误的,这说明P的正确性较高。如果对某个Ci,P是错误的,而Pi是 正确的,这说明P存在错误,而错误就是ei。
路径覆盖准则
部分覆盖准则间的关系
复合谓词覆盖准则
分支--谓词覆盖准则
分支覆盖准则
原子谓词覆盖准则
语句覆盖准则
3.2数据流测试
一、基本概念
变量的定义性出现:若一个变量在程序中的某处 出现使数据与该变量相绑定,则称该出现是定义 性出现。
变量的引用性出现:若一个变量在程序中的某处 出现使与该变量相绑定的数据被引用,则称该出 现是引用性出现。
选择[Browse | Quality | Criteria Level ]菜单项,Logisciop会显示Audit 对所测源程序的各项质量标准的检测结果,具体包括:系统的质量标 准、类的质量标准、函数的质量标准。
选择[ Browse | Quality | Quality Report ]菜单项,可生成网页风格的 系统质量评价报告。
二、动态工具
静态测试工具类型:
1.功能确认与接口测试
测试包括对各模块功能、模块间的接口、局部数据结构、主要执 行路径、错误处理等方面进行的测试。
2.覆盖测试
覆盖分析对所涉及的程序结构元素进行度量,以确定测试执行的 充分性。

软件测试基础教程-宫云战_第2章ppt

软件测试基础教程-宫云战_第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-)的取值,看看超过极限值时系统会出现什么 情况。

软件测试教程电子书2024新版

软件测试教程电子书2024新版

结果分析与改进
针对测试结果进行缺陷修复、性能优化等改 进措施,提高产品质量和用户体验。
2023
PART 06
移动端APP专项测试技术
REPORTING
移动端APP特点分析
设备多样性
网络环境不稳定
移动端设备种类繁多,包括手机、平板等 ,不同设备屏幕尺寸、分辨率、操作系统 等存在差异。
移动端设备常处于不同网络环境下,如2G 、3G、4G、Wi-Fi等,网络稳定性对APP 性能影响较大。
稳定性评估指标及实践
01
响应时间
评估系统在负载下的响应速度, 确保用户请求能够在可接受的时
间内得到响应。
03
资源利用率
监控系统在负载下的资源使用情 况,如CPU、内存、磁盘等,以
确保系统资源得到充分利用。
02
吞吐量
衡量系统在单位时间内处理请求 的能力,以评估系统的整体性能

04
错误率
统计系统在负载下出现的错误请 求数量,以评估系统的稳定性和
交互操作验证
02
测试界面元素的交互功能,如点击、输入、拖动等操作是否正
常响应。
界面状态管理
03
验证界面在不同状态下的表现,如加载、错误、空数据等状态

数据一致性测试技术
数据输入验证
测试数据的输入、修改、删除等操作是否正常,并验证数据的准 确性。
数据处理逻辑检查
确认数据处理逻辑是否正确,如排序、筛选、计算等。
Tsung
一款开源的、基于Erlang的性能测试 工具,可用于对Web、数据库、 J2EE应用等进行负载压力测试。
20ห้องสมุดไป่ตู้3
PART 05
自动化测试技术

(2024年)软件测试教程电子书

(2024年)软件测试教程电子书

01
脚本编写规范
命名规范、注释规范、代码结构 等
调试技巧
02
03
提高脚本可维护性
日志输出、断点调试、单理等
2024/3/26
28
自动化测试执行和报告生成
执行方式
定时执行、持续集成、手动触发等
报告生成
测试结果统计、缺陷分析、性能数据展示等
2024/3/26
结果分析与改进
自动化测试
使用自动化工具进行测试,提高测试效率和质 量。
2024/3/26
探索性测试
基于测试人员的经验和直觉进行测试,发现未知的问题和缺陷。
12
2023 PART 02
软件测试流程
2024/3/26
REPORTING 13
需求分析与评审
确定测试对象
明确需要测试的软件产品、版本 、模块等。
2024/3/26
用户交互频繁
电量消耗问题
移动端APP注重用户体验,用户交互频繁, 包括点击、滑动、拖拽等操作。
移动端设备电量有限,APP需优化电量消耗 ,避免过度消耗导致用户体验下降。
2024/3/26
31
移动端APP兼容性验证方法
真机测试
使用不同品牌、型号、操作系统的真实设备进行测试,以验证APP在 各种设备上的兼容性。
沟通能力提升
加强与开发团队、产品团队等相关人员的沟通, 更好地理解业务需求,提高测试质量。
ABCD
2024/3/26
实践经验积累
通过参与实际项目,积累实践经验,提高解决问 题的能力。
自我管理与团队协作
合理规划时间,提高工作效率;积极参与团队协 作,分享经验和知识。
36
2023
REPORTING

软件测试教程-宫云战第5章ppt

软件测试教程-宫云战第5章ppt

分布式对象的概念和特点 在类的层次上进行更彻底的测试。 在记录事件发生顺序的同时,执行大量的测试用例。 指定标准的测试环境。
测试中需要注意的情况 局部故障。 超时。 结构的动态性。 线程。 同步。
分布式对象测试
5.5 面向对象的集成测试
02
2.自底向上集成
5.2 集成测试策略
5.2 集成测试策略
测试 E
测试 F
测试 G
测试 D
测试 (A、B、C D、E、F、G)
图5.6 自底向上集成
测试 (B、E、F)
测试 (C、G)
三明治集成是一种混合增量式测试策略,综合了自顶向下和自底向上两种集成方法的优点。这种方法桩模块和驱动模块的开发工作都比较小,不过代价是在一定程度上增加了定位缺陷的难度。
测试 A
测试 B
测试 C
测试 D
测试 E
测试 F
测试 G
测试 (A、B、C D、E、F、G)
图5.4 非渐增式集成
渐增式集成与“一步到位”的非渐增式集成相反,它把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;对接口可以进行更彻底的测试;可以使用系统化的测试方法。因此。目前在进行集成测试时普遍采用渐增式集成方法。
5.2 集成测试策略
图5.3 程序结构图
5.2.1 非渐增式集成 非渐增式集成方法首先对每个子模块进行测试(即单元测试),然后将所有模块全部集成起来一次性进行集成测试。 【例5.1】 对如图5.3所示的程序,采用非渐增式集成方法进行集成测试。
A
B
C
D
E
F
G
5.2 集成测试策略
5.1 集成测试概述
5.1.4 集成测试的层次与原则 1.集成测试的层次 对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即: (1)模块间集成测试 (2)子系统内集成测试 (3)子系统间集成测试 对于面向对象的应用系统来说,按集成粒度不同,可以把集成测试分为2个层次: (1)类内集成测试 (2)类间集成测试

软件测试习题参考答案

软件测试习题参考答案

本书习题参考答案第1章软件测试概述1. 软件具有几个特点,请详细说明。

软件具有8个特点:(1) 软件是一种逻辑实体,而不是具体的物理实体。

因而它具有抽象性。

(2) 软件的生产与硬件不同,它没有明显的制造过程。

对软件的质量控制,必须着重在软件开发方面下功夫。

(3) 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。

然而它存在退化问题,必须要对其进行多次的修改与维护。

(4) 软件的开发和运行常常受到计算机系统的制约,对计算机系统有着不同程度的依赖性。

为了解除这种依赖性,在软件开发中提出了软件移植的问题。

(5) 软件的开发至今尚未完全摆脱人工艺的开发方式。

(6) 软件本身是复杂的。

软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。

(7) 软件成本相当昂贵。

软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。

(8) 相当多的软件工作涉及到社会因素。

许多软件的开发和运行涉及机构、体制及管理方式等问题,它直接影响到项目的成败。

2.软件的分类方法都有哪些?软件的分类方法有如下 4种:(1)按软件的功能分类(系统软件,支撑软件,应用软件)(2)按软件服务对象的范围分类(项目软件,市场软件)(3)按开发软件所需要的人力、时间以及完成的源程序行数分类。

(大型,小型,中型,微型)(4)按软件工作方式分类按软件的工作方式分为:实时处理软件、分时软件、交互式软件、批处理软件。

3. 软件测试的概念软件测试是软件工程中的一个环节,是开发项目整体的一部分。

软件测试是有计划有组织的,是保证软件质量的一种手段,它是软件工程中一个非常重要的环节。

因此,可以认为它是伴随软件工程的诞生而诞生的,伴随着软件复杂程度的增加、规模的增大,软件测试作为一种能够保证软件质量的有效手段,越来越受到人们的重视,软件测试最终目的是使产品达到完美。

4. 软件测试的方法有哪些?软件的测试方法有3种,即用试题测试、用新旧两个系统作平行处理测试和软件测试自动化工具测试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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; }
char *p=malloc(10); ++p; free(p);

例:“=”指针赋值,不能重复删除。

char *str=new char[100]; char *p; str="abc"; p=str; delete str; delete p;
22
文件检索系统中关于内存错误
35
缺陷模式

• • •
缺陷模式概述 故障模式 安全漏洞模式 缺陷模式

例4-18:引用空指针


提示:在申请空间后、fopen打开文件之后,都需要判断是 否申请、打开成功。
29
文件检索系统中空指针错误

D0009:

str=NULL; if((strlen(str) > 3) || (str == NULL)) { return FALSE; } path=NULL; ……; l_Out = fopen(path,"wt");



#define MAXPATTERN 3 #define MAXFILELEN 12 char l_Pat[MAXPATTERN+1][MAXFILELEN+1]; …… memset(l_Pat, 0, 20*(MAXFILELEN+1));

(3)在结构类型中,由于结构体中的成 员变量是连续存放的,在数组的拷贝过 程中,多余的数据会自动的存放在后面 所定义的成员变量中,这种情况数组并 不产生越界错误。
基于缺陷模式的软件测试指标分析
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)
基于缺陷模式的软件测试指标分析
23
故障模式
2、数组越界故障的故障模式(Out of Bounds Array Access Fault OBAF)

定义:设某数组定义为Array[minmax], 若引用Array[i]且i<min或i>max都是数组 越界故障。
24
故障模式

(1)对程序中任何出现Array[i]的地方,都要 判断i的范围,可能有三种情况:
基于缺陷模式的软件测试指标分析
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) |

例4-13 使用未初始化变量

27


文件检索系统中使用未初始化变量错误
D0001(D0002同):
DirSettingLink *l_Link ; while(l_Link) { g_DirRoot = l_Link->next; l_Link->next = NULL; delete l_Link->m_node.m_dirname; delete l_Link; l_Link = g_DirRoot; }
缺陷模式

• • •
缺陷模式概述 故障模式 安全漏洞模式 缺陷模式
故障模式

故障模式中给出的故障描述,是程序中 可能存在的故障,这些故障一旦被激活, 就会使系统发生错误。包括以下几种故 障模式:
故障模式
1、内存泄漏的故障模式(Memory Leak Fault,
MLF) 定义:设在程序的某处申请了大小为MB的空间, 凡在程序结束时MB或者MB的一部分没被释放、多 次释放MB或MB的一部分都是内存泄漏故障。

MLF有三种形式:

遗漏故障:是指申请的内存没有被释放。 不匹配故障:是指申请函数和释放函数不匹配。 不相等的释放错误:是指释放的空间和申请的空间 大小不一样。
20
例题

例4-1:申请的内存没有被释放

listrec *add_list_entry(listrec *entry,int value){ listrec *new_entry=(listrec *)malloc(sizeof(listrec)); if(!new_entry) return NULL; if(!entry) return NULL; … …}
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专业专科以上的毕业生, 该测试方法一般经过数天的培训即可掌握其使用方 法。
26
故障模式
3.使用未初始化变量故障模式 (Uninitialized Variable Fault,UVF)

定义:使用未初始化变量故障:存在一个路 径,在该路径上使用前面没有被赋初值的变 量是使用未初始化变量故障。
char c; while(c!=EOF && (c=getchar())!=‘\n’) ...;

31
故障模式
6.死循环结构模式(Dead Loop Fault DLF)

定义:在控制流图中,对任何一个循环结构, 包括:

FOR语句中的死循环结构; WHILE语句中的死循环结构; DO-WHILE语句中的死循环结构; GOTO语句中的死循环结构; 函数循环调用造成的死循环结构。
基于缺陷模式的软件测试
基于缺陷模式的软件测试

基于缺陷模式的软件测试概述 基于缺陷模式的软件测试指标分析 缺陷模式 基于缺陷模式的软件测试系统(DTS)
基于缺陷模式的软件测试概述

1. 2. 3.
缺陷模式必须满足下列几个条件: 该模式下的缺陷是符合实际的。 基于该模式的缺陷数目是可以容忍的。 该模式下的缺陷是可以测试的。
34
故障模式
8. 并发故障模式
该模式主要是针对程序员对多线程的编码机制、 各种同步方法、Java存储器模式和java虚拟机 的工作机制不清楚,而且由于线程启动的任意 性和不确定性使用户无法确定所编写的代码具 体何时执行而导致对公共区域的错误使用。 这类模式主要包括不正确的同步、死锁、多线 程应用中方法调用时机或方式不正确、同一变 量的双重验证、相互初始化的类和临界区内调 用阻塞函数等。
缺陷模式概述
1.
故障模式:此类缺陷是故障,一经产生,会导致系统 出错。 • 存储器泄露模式 • 资源泄漏模式 • 指针使用错误模式 • 数组越界模式 • 非法计算模式 • 使用未初始化变量模式 • 死循环结构模式 • 死锁模式
相关文档
最新文档