第三章 测试技术基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件测试基础
第三章 测试技术基础
本章学习内容
➢ 黑盒测试
➢ 等价类划分法 ➢ 边界值分析法 ➢ 因果图法 ➢ 决策表法
➢ 白盒测试
➢ 逻辑覆盖测试 ➢ 基本路径测试
➢ 测试用例设计
无法对程序进行完全测试
(1) 输入量太大,不可能测试程序对所有可能 输入的响应。 (2) 输出结果太多 (3) 软件实现途径太多,不可能测试到程序每 一条可能的执行路径 (4) 软件规格说明没有客观标准 (5) 不能采用逻辑来证明程序的正确性
在实际使用中,代码检查比动态测试更为有 效,可以发现30%~70%的逻辑设计和编码缺陷。
• 代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。 • 代码审查小组成员:
➢ 组长——能力较强的程序员 ➢ 待审程序的设计者或程序员 ➢ 测试专家
• 代码审查时应注意问题: ➢ 提出的建议应针对程序本身,而不应针对程序员。 ➢ 程序员对整个审查过程采取积极和建设性的态度。
float z; z=x>y?x:y; return(z); } void main(void) { float a,b; float c; scanf("%f,%f", &a,&b); c=max(a,b); printf("Max is %f\n",c); }
使用人工静态测试可以发现大约1/3~2/3的逻辑设计和编码错误。但是代码中仍会有 隐藏的故障无法通过静态测试发现,因此除了静态测试方法外,还必须通过动态测试 进行详细地分析。
假设一个程序P有输入量X和Y及输出量Z。在字 长为32位的计算机上运行。若X、Y取整数,若进行 穷举测试:
可能采用的测试数据组:232×232=264
如果测试一组数据需要1毫秒,一年工作365× 24小时,完成所有测试需要5亿年。
给出一个小程序的流程图,它包括了一个执行20次的 循环。
包含的不同执行路径数达520条,对每一条路径进行 测试需要1毫秒,假定一年工作365×24小时,要想把所有 路径测试完,需3170年。
所以,无法对程序进行完全的测试。
软件测试方法 • 分类
• 按照是否需要执行被测软件的角度
• 静态测试和动态测试
• 按照测试是否针对软件内部结构和具体算法
• 白盒测试和黑盒测试
• 按照开发阶段
• 单元测试 • 集成测试 • 确认测试 • 系统测试 • 验收测试
• 按照测试实施组织计划
• 开发方测试 • 用户测试(β测试) • 第三方测试
执行人
开发人员,用户 开发人员,用户
开发人员 开发人员
开发人员,用户
开发人员在用户 的协助下完成 用户
静态校验 √ √ √
动态校验
√ √ √ √
• 黑盒测试与白盒测试
黑盒
X=2
?
y=4
白盒
X=2 y=2x
y=4
黑盒测试
• 检查程序各功能是否能实现 • 检查功能错误 • 又称为功能测试、数据驱动测试或基于规格说明
的测试
产生 需求说明
测试用例
被测程序 输出
测试结果
黑盒测试示意图
• 黑盒测试活动
• 功能测试
• 性能测试
• 攻击测试
• 特点
• 黑盒测试与软件的具体实现过程无关 • 黑盒测试用例的设计可以和软件实现同时进行 • 能够找到大多数测试方法无法发现的错误,对于无法得到源代码的软件可以完成一
定的测试
白盒测试
max(float x,float y)
• 程序=代码+注释
{ float z; z=x>y?x:y;
发现什么问题了 吗?

注释语句/总代码行数=1/5~1/4
• 子函数max没有返回值类型
return(z); }
• 精度丢失问题
main() {
floBiblioteka Baidut a,b;
• 建议修改的问题(3)
• main函数没有返回值类型和参
int c,d; scanf("%f,%f",&a,&b); c=max(a,b);
数表(默认为void main (void)) • 1行代码只定义1个变量。
printf("Max is %d\n", c);
• 程序适当加一些空行
}
• 程序中存在未使用的变量
/*程序名称:求两个实数中的大数 作者:*** 版本:1.0 创建时间:1.02007-09-10 */ #include<stdio.h> float max(float x,float y)//返回两个单精度数中的大数 {
应用程序
• 检查内部操作是否按规定执行 • 各功能是否得到充分使用 • 又称为结构测试、逻辑驱动测试或基于程序本身的测试
源程序 分析
测试用例
被测程序
覆盖情况分析
白盒测试过程示意图
执行路径
• 白盒测试活动 • 语句覆盖 • 分支覆盖 • 判断覆盖 • 条件覆盖 • 判断/条件覆盖 • 路径覆盖
• 两种测试方法从不同的角度出发 • 反映了软件的不同侧面 • 适用于不同的开发环境
• 走查
走查是以小组为单元进行代码阅读的,同样 也是一系列规程和错误检查技术的集合。
• 人员组成 ➢ 一位经验丰富的程序员 ➢ 一位程序设计语言专家 ➢ 一位程序员新手 ➢ 一位其他不同项目的人员 ➢ 一位该软件编程小组的成员
• 必须修改的问题(3)
#include<stdio.h>
• 程序没有注释
黑盒测试
白盒测试
• 黑盒测试与白盒测试比较
项目
规划 优点
缺点
黑盒测试
功能测试 从用户角度出发测试
无法测试程序内部特定部位 若规格说明有误,无法发现问 题
白盒测试
结构测试
• 动态测试
• 定义
• 运行被测程序 • 输入测试用例 • 对运行情况(输入与输出对应关系)分析
• 测试活动
• 单元测试 • 集成测试 • 系统测试 • 用户验收测试
上例中,动态测试过程为:
静态测试和动态测试主要执行阶段
测试阶段
可行性评审 需求评审 设计评审 单元测试 集成测试 系统测试
验收测试
• 静态测试与动态测试
• 静态测试
• 定义
• 不运行被测程序 • 通过其他手段达到检测目的 • 对被测程序进行特性分析方法的总称 • 静态的检查程序代码、界面或文档中可能存在的错误
的过程
• 测试活动
• 需求评审 • 设计评审 • 代码检查
• 1、代码检查
代码检查包括代码会审和走查。主要检查代码 和设计的一致性,代码对标准的遵循、可读性, 代码逻辑表达的正确性,代码结构的合理性等方 面。
相关文档
最新文档