Version 3.0
第四章测试计划和单元测试
2
回顾
测试工具是辅助测试整个过程的工具软件。
单元测试工具的种类和优势、缺陷。
健壮的测试工具的引入应该具有一定的设计原则。
介绍 Panorama产品内容和运行环境、使用原理、各个工具的简单运用以及缺陷。
3
本章目标
计划测试过程
制定单元测试说明书
明确测试用例设计技术
单元测试的测试手段
4
基本测试过程
基本测试过程原则:尽早测试、经常测试、
充分测试。
开发过程与测试过程:分析、测试、设计、
测试、编码、测试 。
测试计划应该是按照开发者的要求并用具体例子来描述一个测试计划的层次结构以及各个测试计划相联系的标准模版。
5
测试的五个问题
谁执行了测试?
测试什么?
什么时候测试?
怎样测试?
测试应进行到何种程度?
6
测试方案设计
良好的测试设计由以下的若干个方面组成:
– 测试策略
– 测试计划
– 测试说明书
– 测试规范
这些方案适用于从单元测试到系统测试等各个级别的测试。测试设计需要根据软件说明书来进行。
7
单元测试 2-1
概况
– 定义:
检验程序最小单位有无错误。一般在编码之后,
由开发人员完成。
单元:软件开发中的最小的独立部分
― C语言中的单元:函数或者是子过程
― C++语言中的单元:类
8
单元测试 2-2
单元测试目前状况:
实施效果非常好,但是实施阻力比较大 (主要是人员和管理因素 ),一般只在关键的程序单元中实施有比较系统的理论和方法,但也依赖于系统的特殊性和开发人员的经验有大量的辅助工具,开发人员也经常自己开发测试代码和测试工具主要使用白盒测试和静态分析,也使用黑盒测试
9
单元测试流程
管理流程
– 主要指动态测试应用流程测试计划测试设计测试执行测试记录分析测试总结完毕缺陷跟踪针对测试目标,规定测试任务、资源分配、人员角色、进度安排等。
根据测试计划,设计测试用例,包括:测试步骤、
测试场景、测试代码、测试数据 (包括预期结果 )。
根据测试计划,配置测试环境,并手动或者自动执行测试设计。
根据测试计划,忠实地记录测试执行的过程和结果。
分析测试记录,如果发现与预期结果不同,确定并重现缺陷。
检查测试设计是否全部执行完毕,缺陷是否全部关闭。
记录、分发、
评估、关闭缺陷报告。
分析测试过程和缺陷报告,
评估测试质量和测试效果,
给出是否通过测试的建议。
10
测试用例 2-1
测试用例是数据输入和期望结果组成的对 。
软件中有许多错误用户遇到的错误只占很小比例应该针对用户最容易遇到的错误进行测试,以便改进测试的有效性
11
测试用例 2-2
ANSI/IEEE829标准列出了测试用例应该包含在内的重要信息:
―标识符
―测试项
―输入说明
―输出说明
―环境要求
―特殊要求
―用例依赖性
12
单元测试说明书的组成
单元测试说明书由一系列单元测试用例组成。
每个单元测试用例都应该包括四个基本要素
(对照 ANSI/IEEE标准):
– 单元的初始状态说明
– 单元的输入
―测试用例实际要测试的内容
―测试用例的预期结果
13
单元测试说明书 (例 )-测试计划
– 编号 如,stb-tp0013
– 标题 如:文字排版功能,字间距,MayCourse
– 版本号 如,V1.0
– 执行状态 如:未执行
– 修改记录 如,2003年 7月 28日; ×× 编制 /修改;原因
– 测试目标 如:语句覆盖
– 测试人员 如,×× 1负责执行测试用例 xxx; ×× 2
负责执行测试用例 xxx
– 测试用例编号 (多个 )
如,stb-fg00021/stb-fg00031/stb-fg00035…
– 被测试单元代码位置如,$tag1/layout/MayCourse.cpp
14
单元测试说明书 (例 )- 测试用例
– 编号 如,stb-tp00014
– 标题 如:测试“文字排版功能,字间距,MayCourse”
– 版本号 如,V1.3
– 执行状态 如:已经执行
– 修改记录 如,2003年 7月 29日; ×× 编制 /修改;
原因
– 测试步骤 如:配置运行环境;输入测试数据;执行 X功能 /测试代码;观察 /记录 XX
– 测试场景 如:在联网的环境下
– 测试代码 如,stb-tp00021(位置 )/stb-tp00035(位置 )…
– 测试数据 如:输入数据 (输入文件、文字描述 …);
预期结果 (性能、图片、文字描述 …)
15
单元测试说明书 (例 )- 测试记录
– 编号 如,stb-tp00015
– 标题 如:记录测试“文字排版功能,字间距,MayCourse”结果
– 填写记录 如,2003年 7月 30日; ×× 填写;原因
– 测试用例编号 如,stb-tp0015
– 输出结果 如:图片、文字描述
– 测试观察 符合 /不符合期望结果
16
单元测试说明书 (例 )-缺陷跟踪报告
– 编号 如,stb-tp00016
– 标题 如:文字排版功能,字间距,MayCourse计算错误
– 版本号 如,V1.3
– 执行状态 如:空白 /草稿 /提交 /审批 /分发 /正在修改 /修改完毕 /正在确认 /关闭 …
– 修改记录 如,2003年 7月 31日; ×× 编制 /修改;原因
– 测试环境和版本号码、程序编写人员
– 错误严重程度和优先级别
– 错误详细描述
– 重现步骤和方式、对应的测试记录编码
– 附件
– 建议修改方式
– 修改内容、结果及修改人员签字 /日期
– 确认内容、结果及确认人员签字 /日期
17
单元测试说明书 (例 )- 总结报告
– 编号 如,stb-tp00017
– 标题 如:文字排版功能,字间距,MayCourse单元测试总结报告
– 版本号 如,V1.5
– 执行状态 如:已经提交
– 修改记录 如,2003年 8月 1日; ×× 编制 /修改;原因
– 测试计划编号
– 计划执行情况
– 缺陷统计 (缺陷总数 /未解决数目 )及为解决缺陷列表
– 后续处理措施
– 是否通过单元测试
18
制定单元测试说明书步骤
包含一组 单独 的 单元测试用例 的 单元测试说明书的 设计过程,
– 步骤 1 - 运行简单测试用例
– 步骤 2 - 正面测试
– 步骤 3 - 负面测试
– 步骤 4 - 考虑特殊 事项
– 步骤 5 - 覆盖完成率测试
– 步骤 6 - 完善说明书,进行相对完整测试
19
测试用例设计技术
测试用例设计技术可以大体分成两个主要类别:
– 黑盒技术使用的是单元的接口和对功能的描述,
而无需知道单元内部是如何构建的。
– 白盒技术使用的是有关单元内部如何工作的信息。
– 此外还有其他的技术,它们都不能归入上面的类别中,例如错误猜测。
20
黑盒测试测试手段 2-1
根据说明书进行的测试
– 测试用例是通过通读相关的说明书而设计得到的。
每个测试用例都应该测试说明书的一条或多条陈述。
等价划分
– 基本做法是将要测试的软件的输入和输出分成若干部分,对于特定部分中的任意值,软件行为都是等价的。
21
黑盒测试测试手段 2-2
边界值分析
– 它使用与等价划分相同的方法分析各个部分。
但是,它假定错误最可能出现在各部分之间的边界处。
状态变换测试
– 当软件被设计成状态机或者软件实现的是以状态机为模型的需求的时候,状态变换测试特别有用。
– 测试用例通过生成导致转变的事件来测试状态之间的转换。
22
白盒测试测试手段 2-1
分支测试
– 测试用例被设计为检验对单元中的流分支或判定 点的控制。
– 通常来说它的目的是要达到目标级别的 判定覆盖率。
条件测试
– 条件测试的目标是设计测试用例以表明逻辑条件的单个组件和单个组件的组合是正确的。
23
白盒测试测试手段 2-2
数据定义 - 使用测试
– 它将测试用例设计为对成对的数据定义和使用进行测试。
– 设置数据项的值的地方就是数据定义,读取或使用数据的地方就是数据使用。
次边界值测试
– 很多情况下,各部分和它们的边界可以通过单元功能说明书来识别。
– 但是,单元可能会有内部边界值,它只能通过结构说明书来识别。
24
错误猜测
错误猜测主要是凭经验,同时还需要诸如边界值分析等其他技术的一些辅助。
凭借经验,测试设计者猜测特定类型的软件中可能出现的错误类型,并设计测试用例来找到它们。
由有经验的工程师来进行错误猜测可能是最有效地设计能发现错误的测试的唯一方法。
相反,任用不合适的人来进行错误猜测可能会浪费时间。
25
总结
良好的测试设计由若干个防范组成。
在单元测试中,测试应设计为检验各个单元是否实现了该单元的设计说明书中的所有设计 判定 。
单元测试说明书由一系列单元测试用例组成。
测试用例设计技术可以大体分成黑盒和白盒两个主要类别。
错误猜测主要凭借测试设计者的经验。