第 3部分 软件测试技术.

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
《高等数学》(理学) 常数项级数的概念 袁安锋
四种命题 2 垂直.
1.1.3四种命题的相互关系 高二数学 选修2-1 第一章 常用逻辑用语.
常用逻辑用语复习课 李娟.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
软件质量管理 软件测试基础 测试用例设计 软件测试技术 自动化测试. 软件质量管理 软件测试基础 测试用例设计 软件测试技术 自动化测试.
Oracle数据库 Oracle 子程序.
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
Hadoop I/O By ShiChaojie.
学习前的准备工作 讲师:burning.
SOA – Experiment 3: Web Services Composition Challenge
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
计算机数学基础 主讲老师: 邓辉文.
Online job scheduling in Distributed Machine Learning Clusters
第二章 Java语言基础.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
专题作业.
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
实数与向量的积.
2.6 直角三角形(二).
相似三角形 石家庄市第十中学 刘静会 电话:
用计算器开方.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
学习任务三 偏导数 结合一元函数的导数学习二元函数的偏导数是非常有用的. 要求了解二元函数的偏导数的定义, 掌握二元函数偏导数的计算.
第七、八次实验要求.
学习目标 1、了解基本运算符 2、运算符优先级.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
_03宽字符与Unicode编程 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
轴对称在几何证明及计算中的应用(1) ———角平分线中的轴对称.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
三角 三角 三角 函数 余弦函数的图象和性质.
位似.
顺序结构程序设计 ——关于“字符串”和数值.
第二次课后作业答案 函数式编程和逻辑式编程
质量控制(QC)模式 BrookFIELD.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

第 3部分 软件测试技术

本部分课程目标 测试技术的基本概念 测试技术的使用技巧 测试技术的应用范围

软件测试技术的分类 静态黑盒测试 动态黑盒测试 静态白盒测试 动态白盒测试

静态与动态 静态——只是检查和审阅 动态——运行和使用软件

黑盒与白盒 黑盒:软件测试人员只需知道软件要做什么即可,无法看到盒子中是如何运行的。 白盒:软件测试人员可以访问程序员的代码,并通过检查代码来测试,可以看到盒子里面。

静态黑盒测试 对产品说明书进行高级审查 设身处地为用户着想 研究现有的标准和规范 审查和测试同类软件

静态黑盒测试 测试标准: 1、公司惯用语和约定 2、行业要求 3、国家标准 4、硬件和网络标准 5、图形用户界面(GUI)。

产品描述属性检查清单 完整 准确 精确 一致 合理 代码无关 可测试

产品描述用语检查清单 是否有绝对、肯定和切实认定的叙述,针对其设计用例。 比较模糊的用语。某些、有时····· 功能清单是否有等等、诸如此类、依此类推,无法测试的词汇。 在性能上不确定的说法。 隐藏大量需要说明的功能 如果·····那么·····(没有否则)。

产品说明案例分析 ◆ 国产电子软件的巅峰之作,包含12本权威词典、32本专业词典,最新收录原汁原味的美语英汉双解词典:《美国传统词典》; ◆ 强大的网络功能,定时更新最新词库、词霸界面、随时下载功能插件; ◆ 国际顶尖的TTS语音全程技术,彻底实现单词乃至整篇文章的流畅朗读; ◆ 新增“生词本”功能,是您学习英语的好帮手; 智能的即指即译功能,可在任意窗口下实现中英文对译。

静态黑盒测试的小结 标准 产品描述属性检查 产品描述用语检查

动态黑盒测试——边界值分析 边界值测试的基本原理: 错误更可能出现在输入变量的极值附近. 失效极少由两个(或多个)缺陷的同时发生引起的。 Min、min+、nom、max-和max。

动态黑盒测试——边界值测试 如果函数F实现了一个程序,则输入两个变量x1 和 x2会有一些边界: a≤ x1≤ b c ≤ x2≤ d 区间[a,b]和[c,d]是x1 和 x2的值域。

动态黑盒测试——边界值分析 a d c b x1 x2

动态黑盒测试——边界值分析 a d c b x1 x2

动态黑盒测试——边界值分析 边界的数据类型可能是: 数值 速度 字符 地址 位置 尺寸 数量

动态黑盒测试——边界值分析 边界值类型的描述: 第一个/最后一个 最小值/最大值 开始/完成 超过/在内 空/满 最短/最长 第一个/最后一个 最小值/最大值 开始/完成 超过/在内 空/满 最短/最长 最大/最小 最高/最低 相邻/最远

动态黑盒测试——次边界值分析 次边界条件: 有些边界条件在软件内部,最终用户几乎看不到,但是软件测试仍有必要检查。这样的边界条件称为次边界条件或者内部边界条件。如2的乘方和ASCⅡ。

软件中的2的乘方 术语 范围或值 位 0或1 双位 0-15 字节 0-255 字 0-65,535 千 1,024 兆 1,048,576 亿 1,073,741,824 万亿 1,009,511,627,776

部分的ASCⅡ制表 字符 ASCⅡ值 Null B 66 Space 32 Y 89 / 47 Z 90 48 [ 91 1 49 ‘ 96 B 66 Space 32 Y 89 / 47 Z 90 48 [ 91 1 49 ‘ 96 2 50 a 97 9 57 b 98 : 58 y 121 @ 64 z 122 A 65 { 123

动态黑盒测试——边界值分析 边界值分析的特点和局限性 对于一个n变量函数,边界值分析会产生4n+1个测试用例。 边界值的取值取决于变量本身的性质。 边界值分析对布尔变量没有什么意义。 边界值分析假设变量是完全独立的。

动态黑盒测试——健壮性测试 健壮性测试是边界值分析的一种简单扩展 a d c b x1 x2

动态黑盒测试—最坏情况测试 最坏情况测试用例 a d c b x1 x2

动态黑盒测试— 健壮最坏情况测试 健壮最坏情况测试用例 a d c b x1 x2

动态黑盒测试——练习 1、写出三角形问题的边界值分析测试用例 2、写出NextDate函数的最坏情况测试用例

动态黑盒测试— 佣金问题的测试用例

动态黑盒测试— 佣金问题的测试用例 写出佣金问题的输出 边界值分析测试用例

动态黑盒测试— 佣金问题的测试用例 用例 枪机 枪托 枪管 销售额 佣金 注释 1 100 10 输出最小值 2 125 12.5 输出略大于最小值 3 130 13 4 145 14.5 5 500 50 中点 6 9 975 97.5 略低于边界点 7 970 97 8 955 95.5 1000 边界点 11 1025 103.75 略高于边界点 1030 104.5 12 1045 106.75 14 1400 160

动态黑盒测试— 佣金问题的测试用例 用例 枪机 枪托 枪管 销售额 佣金 注释 14 18 17 1775 216.25 略低于边界点 15 1770 215.5 16 1755 213.25 1800 220 边界点 19 1825 225 略高于边界点 1830 226 20 1845 229 21 48 4800 820 中点 22 70 80 89 7775 1415 输出略小于最大值 23 79 90 7770 1414 24 69 7755 1411 25 7800 1420 输出最大值

边界值测试的小结 这类测试方法是基于一种假设:输入的变量是真正独立的。 这些方法的区别是:正常值与健壮值;单缺陷与多缺陷。

动态黑盒测试—等价类测试 等价分配:是指分步骤地把过多(无限)的测试案例减小到同样有效的小范围的过程。 等价类别或者等价区间是指测试相同目标或者暴露相同软件缺陷的一组测试。 在寻找等价区间时,想办法把软件的相似输入、输出、操作分成组。这些组是等价区间。

动态黑盒测试—等价类测试 弱一般等价类测试用例 a g e d x1 x2 f b c

动态黑盒测试—等价类测试 强一般等价类测试用例 a g e d x1 x2 f b c

动态黑盒测试—等价类测试 弱健壮等价类测试用例 a g e d x1 x2 f b c

动态黑盒测试—等价类测试 强健壮等价类测试用例 a g e d x1 x2 f b c

动态黑盒测试—等价类测试 写出三角形问题的输入等价类和输出等价类 写出NextDate函数的输入等价类 写出佣金问题的输入和输出等价类 Windows文件名可以包含除了、/:*?“〈〉。文件名长度是1-255个字符。写出文件名创建测试用例。

三角形问题—弱强一般等价类测试用例 测试用例 a b c 预期输出 1 5 等边三角形 2 3 等腰三角形 4 不等边三角形 非三角形

三角形问题—弱健壮等价类测试用例 测试用例 a b c 预期输出 1 -1 5 a取值不在所允许的取值范围内 2 3 c 取值不在所允许的取值范围内 4 201 6 c取值不在所允许的取值范围内

三角形问题—强健壮等价类测试用例 测试用例 a b c 预期输出 1 -1 5 a取值不在所允许的取值范围内 2 3 c 取值不在所允许的取值范围内 4 a、b取值不在所允许的取值范围内 b、c取值不在所允许的取值范围内 6 c、a取值不在所允许的取值范围内 7 a、b、c取值不在所允许的取值范围内

等价类测试的小结 如果错误条件非常重要,则进行健壮性的测试是合适的。 如果输入数据以离散值区间和集合定义,则等价类测试是合适的。 等价类测试的弱形式不如对应的强形式的测试全面。 如果错误条件非常重要,则进行健壮性的测试是合适的。 如果输入数据以离散值区间和集合定义,则等价类测试是合适的。 在发现合适的等价类关系之前,可能需要进行多次尝试。

动态黑盒测试— 基于决策表的测试 在所有功能测试方法中,基于决策表的测试方法是最严格的,因为决策表具有逻辑严格性。 决策表很适合描述不同条件集合下采取行动的若干组合的情况。

动态黑盒测试— 基于决策表的测试 桩 规则1 规则2 规则3、4 规则5 C1 C2 C3 T F — A1 A2 A3 X  

动态黑盒测试— 基于决策表的测试 桩 1 2 3 4 5 6 7 8 9 C1:a,b,c构成三角形? C2: a=b? C3: a=c? C4: b=c? N - Y NY A1:非三角形 A2:不等边三角形 A3:等腰三角形 A4:等边三角形 A5:不可能 X  

动态黑盒测试— 基于决策表的测试 条件 1 2 3 C1:月份在M1中? C2:月份在M2中? C3:月份在M3中? T - A1 A2  

动态黑盒测试— 基于决策表的测试 条件 1 2 3 C1:月份在M1中? C2:月份在M2中? C3:月份在M3中? 规则条数统计 T - 4 A1 A2  

C1:月份在M1中?C2:月份在M2中?C3:月份在M3中? 动态黑盒测试— 基于决策表的测试 条件 1 2 3 4 C1:月份在M1中?C2:月份在M2中?C3:月份在M3中? 规则条数统计 T F A1 A2  

动态黑盒测试— 基于决策表的测试 条件 1 2 3 4 C1:月份在M1中? C2:月份在M2中? C3:月份在M3中? 规则条数统计 T   C1:月份在M1中? C2:月份在M2中? C3:月份在M3中? 规则条数统计 T F A1 X

动态黑盒测试— 基于决策表的测试 条件 1-4 5 6 7 8 9 C1 C2 C3 T - F A1 A2 X

动态黑盒测试— 基于决策表的测试 条件 1-4 5 6 7 8 9 C1 C2 C3 T - F A1 A2 X

动态黑盒测试— 基于决策表的测试 M1={月份:每月有30天}; D3={日期:日期=30}; M2={月份:每月有31天}; Y1={年:年是闰年}; Y2={年:年不是闰年}。

动态黑盒测试— 基于决策表的测试 条件 C1:月份在M1中? C2: 月份在M1中? C3: 月份在M1中? C4:日期在D1中?   C1:月份在M1中? C2: 月份在M1中? C3: 月份在M1中? C4:日期在D1中? C5: 日期在D1中? C6: 日期在D1中? C7: 日期在D1中? C8:年在Y1中? T A1:不可能 A2: NextDate

动态黑盒测试— 基于决策表的测试 M1={月份:每月有30天}; M2={月份:每月有31天}; M3={月份:此月是2月}; D1={日期:1≤日期≤28}; D2={日期:日期=29}; D3={日期:日期=30}; D4={日期:日期=31}; Y1={年:年=2000}; Y2={年:年是闰年}; Y3={年:年是平年}。

动态黑盒测试— 基于决策表的测试 1 2 3 4 5 6 7 8 C1:月份在 C2:日期在 C3:年在 规则条数统计 M1 D1 - D2   1 2 3 4 5 6 7 8 C1:月份在 C2:日期在 C3:年在 规则条数统计 M1 D1 - D2 D3 D4 M2 A1:不可能 A2:日期增1 A3:日期复位 A4:月份增1 A5:月份复位 A6:年增1 X ? ?

动态黑盒测试— 基于决策表的测试 9 10 11 12 13 14 15 16 17 C1:月份在 C2:日期在 C3:年在 规则条数统计   9 10 11 12 13 14 15 16 17 C1:月份在 C2:日期在 C3:年在 规则条数统计 M3 D1 Y1 1 Y2 Y3 D2 D3 - 3 D4 A1:不可能 A2:日期增1 A3:日期复位 A4:月份增1 A5:月份复位 A6:年增1 X  X

动态黑盒测试— 基于决策表的测试 M1={月份:每月有30天}; D2={日期:日期=28}; M2={月份:每月有31天,12月除外}; Y1={年:年是闰年}; Y2={年:年不是闰年}。

动态黑盒测试— 基于决策表的测试 1 2 3 4 5 6 7 8 9 10 C1:月份在 C2:日期在 C3:年在 M1 D1 - D2   1 2 3 4 5 6 7 8 9 10 C1:月份在 C2:日期在 C3:年在 M1 D1 - D2 D3 D4 D5 M2 A1:不可能 A2:日期增1 A3:日期复位 A4:月份增1 A5:月份复位 A6:年增1 X

动态黑盒测试— 基于决策表的测试 11 12 13 14 15 16 17 18 19 20 21 22 C1:月份在 C2:日期在   11 12 13 14 15 16 17 18 19 20 21 22 C1:月份在 C2:日期在 C3:年在 M3 D1 - D2 D3 D4 D5 M4 Y1 Y2 A1:不可能 A2:日期增1 A3:日期复位 A4:月份增1 A5:月份复位 A6:年增1 X

动态黑盒测试— 基于决策表的测试 1-3 4 5 6-9 10 C1:月份在 C2:日期在 C3:年在 M1 D1-D3 - D4 D5   1-3 4 5 6-9 10 C1:月份在 C2:日期在 C3:年在 M1 D1-D3 - D4 D5 M2 D1-D4 A1:不可能 A2:日期增1 A3:日期复位 A4:月份增1 A5:月份复位 A6:年增1 X

动态黑盒测试— 基于决策表的测试 11-14 15 16 17 18 19 20 21-22 C1:月份在 C2:日期在 C3:年在 M3   11-14 15 16 17 18 19 20 21-22 C1:月份在 C2:日期在 C3:年在 M3 D1-D4 - D5 M4 D1 D2 Y1 Y2 D3 D4-D5 A1:不可能 A2:日期增1 A3:日期复位 A4:月份增1 A5:月份复位 A6:年增1 X

动态黑盒测试— 基于决策表的测试 写出NextDate函数的决策表测试用例

基于决策表的测试的小结 决策表技术适用于具有以下特征的应用程序: If-then-else逻辑很突出 输入变量之间存在逻辑关系。 涉及输入变量子集的计算。 输入与输出之间存在因果关系。 很高的圈复杂度。 迭代会有所帮助,第一次不见得会成功。

动态黑盒测试—基于正交阵列 1 2 3 4 5 6 7 8 9

动态黑盒测试—基于正交阵列 Web浏览器(Netscape 6.2、IE6.0、Opera 4.0) 插件(无、RealPlayer、MediaPlayer) 应用服务器(IIS、Apache、Netscape Enterprise) 操作系统(Windows2000、Windows NT、Linux)

动态黑盒测试—基于正交阵列 1 2 3 4 无 IIS 1 w2000 RealPlayer Apache 2 W NT Netscape 无 IIS 1 w2000 RealPlayer Apache 2 W NT MediaPlayer 3 Enterprise 3 Linux) IE 2 Apache 5 1w2000 6 2W NT 7 Opera 8 9

动态黑盒测试—其他 即席测试 随机测试 半随机测试 探测性测试

动态黑盒测试的小结 边界值分析法 等价类测试 决策表测试 正交阵列测试 随机类测试

静态白盒测试 好处: 尽早发现软件缺陷。 为黑盒测试员提供思路。 静态白盒测试是在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。 好处: 尽早发现软件缺陷。 为黑盒测试员提供思路。

静态白盒测试 审查是正式、严格、具有深度的技术评审,以便尽可能准确地确定问题之所在。 审查过程的目的: 在软件开发过程中尽可能早地发现问题。 确保对需要重做部分达成一致意见。 验证任何重做部分满足预先定义的准则。

静态白盒测试 一次审查一般需要5人至7人,这些角色是: 主审员:协调本次审查并主持讨论。 责任人:负责被审查的产品。 讲解员:在审查会上讲解被审查的产品。 审查员:审查产品。 记录员:记录在审查会议上讨论的问题。 经理:责任人的管理者。

静态白盒测试 选择要审查的代码模块的准则: 对于正确操作产品起关键作用的模块。 复杂度较高的模块 与过去发生错误率较高的模块功能类似的模块。 相对较新的或缺乏经验的软件程序师编写的模块。

静态白盒测试 为什么要坚持编码标准和规范? 可靠性。 可读性/维护性 移植性

静态白盒测试 大多数计算机语言和信息技术的国家和国际标准可以通过以下途径获得: 国际工程协议(IEC):www.iec.org 国际标准化组织(ISO):www.iso.ch 信息技术标准国家委员会(NCITS):www.ncits.org 计算机械联合会(ACM):www.acm.org 电子电气工程学会(IEEE):www.ieee.org

静态白盒测试 通用代码审查清单 数据引用错误; 数据声明错误; 计算错误; 比较错误; 控制流程错误; 子程序参数错误; 输入/输出错误; 其他检查。

静态白盒测试 数据引用错误 是否引用了未初始化的变量? 数组和字符串的下标是整数值吗? 是否在应该使用常量的地方使用了变量? 变量是否被赋予不同类型的值? 为引用的指针分配内存了吗? 一个数据结构是否在多个函数或者子程序中引用,在每一个引用中明确定义结构了吗?

静态白盒测试 数据声明错误 所有变量都赋予正确的长度和类型了吗? 变量是否在声明的同时进行了初始化? 存在声明过、但从未引用或者只引用过一次的变量吗? 在特定模块中所有变量都显示声明了吗?

静态白盒测试 计算错误 计算中是否使用了不同数据类型的变量? 计算中是否了解和考虑到编译器对类型或长度不一致的变量的转换规则? 在数值计算过程中是否可能出现溢出? 除数/模是否可能为零? 变量的值是否超过有意义的范围? 对于包含多个操作数的表达式,求值的次序是否混乱,运算优先级对吗?

静态白盒测试 比较错误 比较得正确吗? 存在分数或者浮点值之间的比较吗?如果有,精确问题会影响比较吗? 每一个逻辑表达式都正确表达了吗?逻辑计算如期进行了吗?求值次序有疑问吗? 逻辑表达式的操作是逻辑值吗?

静态白盒测试 控制流程错误 如果程序包含begin…end和 do …while 等语句组,end是否对应? 程序、模块、子程序和循环能否终止? 可能存在永远不停的循环吗? 循环可能从不执行吗?

静态白盒测试 子程序参数错误 子程序接受的参数类型和大小与调用代码发送的匹配吗? 如果子程序有多个入口点,引用的参数是否与当前入口点没有关联? 常量是否当作形参传递,意外在子程序中改动?

静态白盒测试 输入/输出错误 软件是否严格遵守外部设备读写数据的专用格式? 文件或者外部不存在或者未准备好的错误情况有处理吗? 软件是否处理外部设备未连接、不可用,或者读写过程中存储空间占满等情况?

静态白盒测试 同行审查 仅在编写代码的程序员和充当审查者的其他一两个程序员和测试员之间进行。保证审查的高效率,注意审查的4个关键要素: 确定问题;遵守规则; 审查准备;编写报告。

静态白盒测试的小结 代码评审 同行审查 检查单

动态白盒测试 动态白盒测试的另一个常用名称是结构测试,因为软件测试员可以查看并使用代码的内部结构,从而设计和执行测试。 动态白盒测试是指利用查看代码功能和实现方式得到的信息来确定哪些要测试,哪些不要测试,如何开展测试。 动态白盒测试的另一个常用名称是结构测试,因为软件测试员可以查看并使用代码的内部结构,从而设计和执行测试。

动态白盒测试——路径测试 由于这种绝对化的基础,结构性测试方法支持严格定义、数据分析和精确度量。 结构性测试方法的突出特点,是它们都基于被测程序的源代码,而不是基于定义。 由于这种绝对化的基础,结构性测试方法支持严格定义、数据分析和精确度量。

动态白盒测试——路径测试

动态白盒测试——路径测试

动态白盒测试——路径测试

动态白盒测试——路径测试 定义 DD-路径是程序图中的一条链,使得: 情况1:由一个节点组成,内度=0。 情况2:由一个节点组成,外度=0。 情况3:由一个节点组成,内度≥2或外度≥2。 情况4:由一个节点组成,内度=1并且外度=1。 情况5:长度≥1的最大链。

动态白盒测试——路径测试

结构性测试覆盖指标 语句覆盖:选择足够的测试用例是程序中每个可执行语句至少执行一次 判定覆盖(分枝覆盖) :选择足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值 条件覆盖:设计若干测试用例,执行被测程序后是每个判定中每个条件的可能值至少满足一次

结构性测试覆盖指标 判定/条件覆盖:判定/条件覆盖要求设计足够的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次并且每个判定本身的结果(真/假)也至少出现一次 条件组合覆盖:执行足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次,显然满足条件组合覆盖的测试用例一定满足“判定覆盖”、“条件覆盖”和“判定/条件覆盖” 路径覆盖:设计足够的测试用例要求覆盖程序中所有可能的路径

语句覆盖 1 PRINT “Hello you” 2 PRINT “The date is:”;Date& 3 PRINT “The time is:”;Time& 4 END

判断覆盖(分枝覆盖) 1 PRINT “Hello you” 2 IF Date=“01-01-2000”THEN 3 PRINT “Happy New Year” 4 END IF 5 PRINT “The date is:”;Date 6 PRINT “The time is:”;Time 7 END

条件覆盖 1 PRINT “Hello you” 2 IF Date=“01-01-2000”AND Time=“00:00:00”THEN 3 PRINT “Happy New Year” 4 END IF 5 PRINT “The date is:”;Date 6 PRINT “The time is:”;Time 7 END

动态白盒测试—基路径测试 原始 P1:A-B-C-E-F-H-J-K-M-N-O-最终 不等边三角形 在B处翻转P1 P2:A-B-D-E-F-H-J-K-M-N-O-最终 不可行 在F处翻转P1 P3:A-B-C-E-F-G-O-最终 在H处翻转P1 P4:A-B-C-E-F-H-I-N-O-最终 等边三角形 在J处翻转P1 P5:A-B-C-E-F-H-J-L-M-N-O-最终 等腰三角形

动态白盒测试——基路径测试 P1:A-B-C-E-F-H-J-K-M-N-O-最终 不等边三角形 P6:A-B-D-E-F-G-O-最终 非三角形 P4:A-B-C-E-F-H-I-N-O-最终 等边三角形 P5:A-B-C-E-F-H-J-L-M-N-O-最终 等腰三角形

动态白盒测试——循环测试 简单循环 其循环的最大次数为n 测试: 跳过整个循环 只循环一次 循环两次 循环m次其中m<n 分别循环n-1次,n次,n+1次

动态白盒测试——循环测试 串接循环 如两个串接循环是独立的,则可分别采用简单循环的测试方法测试 不独立第一个循环计数器是第二个循环的初值,则可采用嵌套循环方法进行测试

动态白盒测试——循环测试 嵌套循环 如果嵌套循环也采用简单循环的办法此时会随嵌套层数成几何级数增加导致不可测 Beizer提出一种减少测试级数的方法 从最内层循环开始测试,内层循环按简单循环策略所有外层循环次数设到最小数 由内向外一次向上回退一次嵌套循环回退后进行测试,本层循环的所有外层循环仍取最小值,本层循环嵌套的循环取一次“典型”值 继续向外回退,直到所有循环测试完毕

动态白盒测试——循环测试 非结构循环 按结构化程序设计思想首先将程序结构化再进行测试

动态白盒测试—数据流测试 早期的数据流分析常常集中于现在叫做定义/引用异常的缺陷: 变量被定义,但是从来没有使用。 所使用的变量没有被定义。 变量在使用之前被定义两次。

动态白盒测试—定义/使用测试 定义 节点n∈G(P)是变量v∈V的定义节点,记做DEF(v,n),当且仅当变量v的值由对应节点n的语句片段处定义。

动态白盒测试—定义/使用测试 定义 节点n∈G(P)是变量v∈V的使用节点,记做USE(v,n),当且仅当变量v的值由对应节点n的语句片段处使用。

动态白盒测试—定义/使用测试 定义 使用节点USE(v,n)是一个谓词使用(记做P-use),当且仅当语句n是谓词语句;否则,USE(v.n)是计算使用(记做C-use)。

动态白盒测试—定义/使用测试 定义 关于变量v的定义-使用路径(记做du-path)是PATHS(P) 中的路径,使得对某个v∈V,存在定义和使用节点DEF(v,m)和USE(v,n),使得m和n是该路径的最初和最终节点。

动态白盒测试—定义/使用测试 定义 关于变量v的定义清除路径(记做dc-path),是具有最初和最终节点DEF(v,m)和USE(v,n)的PATHS(P)中的路径,使得该路径中没有其他节点是v的定义节点。

动态白盒测试—定义/使用测试

动态白盒测试—定义/使用测试

动态白盒测试—定义/使用测试 变量 定义节点 使用节点 Lockprice Stockprice Barrelprice Totallocks Totalstocks Totalbarrels Locks Stocks Barrels Locksales Stocksales Barrelsales Sales commission 7 8 9 10,16 11,17 12,18 13,19 15 24 25 26 27 31,32,33,36,37,38 16,21,24 17,22,25 18,23,26 14,16 17 18 28,29,33,34,37,38 32,33,37,41

动态白盒测试—定义/使用测试 Stocks的定义-使用路径 Locks的定义-使用路径 Total locks的定义-使用路径 sales的定义-使用路径 commission的定义-使用路径

动态白盒测试—定义/使用测试 T是拥有变量集合V的程序P的程序图G(P)中的一个路径集合。 定义 集合T满足程序P的全定义准则,当且仅当所有变量v∈V,T包含从v的每个定义节点到v的一个使用的定义清除路径。

动态白盒测试—定义/使用测试 定义 集合T满足程序P的全使用准则,当且仅当所有变量v∈V,T包含从v的每个定义节点到v的所有使用,以及到所有USE(v,n)后续节点的定义清除路径。

动态白盒测试—定义/使用测试 定义 集合T满足程序P全谓词使用/部分计算使用准则,当且仅当所有变量v∈V,T包含从v的每个定义节点到v的所有谓词使用的定义清除路径,并且如果v的一个定义没有谓词使用,则定义清除路径导致至少一个计算使用。

动态白盒测试—定义/使用测试 定义 集合T满足程序P全计算使用/部分谓词使用准则,当且仅当所有变量v∈V,T包含从v的每个定义节点到v的所有计算使用的定义清除路径,并且如果v的一个定义没有计算使用,则定义清除路径导致至少一个谓词使用。

动态白盒测试—定义/使用测试 定义 集合T满足程序P的全定义-使用路径准则,当且仅当所有变量v∈V,T包含从v的每个定义节点到v的所有使用,以及到所有USE(v,n)后续节点的定义清除路径,并且这些路径要么有一次的环经过,要么没有环路。

动态白盒测试—定义/使用测试 全定义-使用路径 全计算使用/部分谓词使用 全定义 全路径 全使用 全谓词使用/部分计算使用 全谓词使用 全边 1、定义/使用路径测试覆盖指标 2、全路径-全条件 全边-全判断 全节点-全语句 3、我们有了一种介于全路径指标和一般被认为是最低指标的全边之间的,更细化的结构性测试可能性。 4、定义/使用测试提供了一种检查缺陷可能发生点的严格和系统化方法。 全谓词使用 全边 全节点

动态白盒测试-基于程序片的测试 程序片是确定或影响某个变量 在程序某个点上的取值的 一组程序语句。

动态白盒测试-基于程序片的测试 定义 给定一个程序P和P中的一个变量集合V,变量集合V在语句n上的一个片,记做S(V,n),是P中对V中的变量值做出贡献的所有语句集合。

动态白盒测试-基于程序片的测试 定义 给定一个程序P和一个给出语句及语句片段编号的程序图G(P),以及P 中的一个变量集合V,变量集合V在语句片段n上的一个片,记做S(V,n),是P中在n以前对V中的变量值作出贡献的所有语句片段编号的集合。

动态白盒测试-基于程序片的测试 五种形式的使用 谓词使用 用在谓词(判断)中。 计算使用 用在计算中。 输出使用 用于输出。 定位使用 用于定位(指针、下标)。 迭代使用 迭代(内部计数器、循环指示)。

动态白盒测试-基于程序片的测试 标识两种定义节点: 输入定义 通过输入定义 赋值定义 通过赋值定义

动态白盒测试-基于程序片的测试 写出Stocks、locks、barrels的片 写出totalStocks、totallocks、totalbarrels的片 写出sales、commission的片

Sale与commission上的格 S31 S32 S37 S35 S36 S33 S34 S24 S23 S22 S21 S16 S13

小结 静态黑盒测试是指检查产品描述,并在投入软件编写之前查找问题。 动态黑盒测试是指在不了解软件如何工作的前提下进行测试。 静态白盒测试是指通过正式审查和检验检查代码的细节。 动态白盒测试是指在看到软件的工作方式时,根据获得的信息对软件进行测试。