HS T 35-2011 单元测试指南.pdf

上传人:李朗 文档编号:1499079 上传时间:2021-02-27 格式:PDF 页数:20 大小:1.04MB
下载 相关 举报
HS T 35-2011 单元测试指南.pdf_第1页
第1页 / 共20页
HS T 35-2011 单元测试指南.pdf_第2页
第2页 / 共20页
HS T 35-2011 单元测试指南.pdf_第3页
第3页 / 共20页
HS T 35-2011 单元测试指南.pdf_第4页
第4页 / 共20页
HS T 35-2011 单元测试指南.pdf_第5页
第5页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、ICS 35.040 L77 HS 中华人民共和国海关行业标准 HS/T 352011 单元测试指南 Unit testing guide 2011 - 08 - 12发布 2011 - 10 - 01实施 中华人民共和国海关总署 发布 HS/Z XXXXXX 1 目 次 前言 . 3 引言 . 4 1 范围 . 5 2 术语和定义 . 5 2.1 . 5 单元测试 unit testing . 5 2.2 . 5 白盒测试 white box testing . 5 2.3 . 5 黑盒测试 black box testing . 5 2.4 . 5 错误推测 error guessing

2、testing . 5 2.5 . 5 驱动 driver . 5 2.6 . 5 桩 stub . 5 3 单元测试的目标和任务 . 6 3.1 单元测试的目标 . 6 3.2 单元测试的任务 . 6 3.2.1 模块接口测试 . 6 3.2.2 模块局部数据结构测试 . 6 3.2.3 模块边界测试 . 6 3.2.4 模块通路测试 . 7 3.2.5 模块错误处理通路测试 . 7 3.3 单元测试的范围 . 7 3.4 单元测试与调试的区别 . 8 4 单元测试的方法 . 8 4.1 白盒测试 . 8 4.2 黑盒测试 . 8 4.3 错误推测法 . 8 5 单元测试的流程 . 8 5.

3、1 流程定义 . 8 5.2 单元测试的策划 . 9 5.2.1 内容 . 9 5.2.2 输入 . 9 HS/Z XXXXXX 2 5.2.3 输出 . 9 5.3 单元测试用例的设计 . 9 5.3.1 内容 . 10 5.3.2 输入 . 10 5.3.3 输出 . 10 5.4 单元测试用例的执行 . 10 5.4.1 内容 . 10 5.4.2 输入 . 10 5.4.3 输出 . 10 6 单元测试的常用工具 . 10 6.1 Visual Studio Team Test . 10 6.2 NUnit . 11 6.3 TestDriven.NET . 11 6.4 JUnit

4、. 11 附 录 A (资料性附录) 单元测试计划及报告 . 12 附 录 B (资料性附录) 单元测试工作分解 . 15 附 录 C (资料性附录) 单元测试用例管理 . 16 附 录 D (资料性附录) 单元测试缺陷管理 . 17 参考文献 . 19 HS/Z XXXXXX 3 前 言 本标准依据国标GB/T 1.1 -2009起草。 本标准由中华人民共和国海关总署科技发展司提出。 本标准由中华人民共和国海关总署政策法规司归口。 本标准起草单位:中华人民共和国海关总署科技发展司、全国海关信息中心(电子通关中心)。 本标准主要起草人:*、*。 本标准是第一次制定。 HS/Z XXXXXX 4

5、 引 言 软件项目开发中执行单元测试的目标是在软件开发过程中尽可能早的发现应用项目开发过程中存 在的缺陷,为更好的完成项目开发过程中的单元测试工作,提高海关科技应用项目的产品质量,特制定 适用于海关科技应用项目单元测试指南。 依据海关科技应用项目管理办法并结合海关科技应用项目的开展过程,制定本标准。 HS/Z XXXXXX 5 单元测试指南 1 范围 本标准给出了海关信息系统软件新开发或修改过的代码在单元测试工作中可使用的流程、方法、工 具。 2 术语和定义 下列术语和定义适用于本文件。 2.1 单元测试 unit testing 对软件程序最小单位模块开展的正确性检验的测试工作。 2.2 白

6、盒测试 white box testing 利用程序内部的逻辑结构及有关信息,设计测试用例,对程序所有逻辑路径进行测试。通过在不同 点检查程序状态,确定实际状态是否与预期的状态一致的测试方法。 2.3 黑盒测试 black box testing 已知程序所具有的功能,基于接口设计测试用例,通过在不同输入时,检查实际输出结果是否与预 期输出结果一致的测试方法。 2.4 错误推测 error guessing testing 根据测试人员的经验和直觉,推测程序最有可能出错的地方,有针对性的选择测试用例进行测试的 测试方法。 2.5 驱动 driver 对底层或子层模块进行测试所编写的调用这些模块

7、的程序。 2.6 桩 stub HS/Z XXXXXX 6 对顶层或上层模块进行测试时所编写的替代下层模块的程序。 3 单元测试的目标和任务 3.1 单元测试的目标 单元测试的目标是保证软件程序最小单位模块的正确编码。通过单元测试,发现被测试模块的实际 功能与预定义的功能之间的不符合情况,或者编码的错误。 3.2 单元测试的任务 3.2.1 模块接口测试 模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。 测试接口正确与否,应从以下方面展开测试: 输入的实际参数与预定义参数的个数是否相同、属性是否匹配、值域是否一致; 调用其他模块时所给实际参数与被调模块的

8、预定义参数的个数是否相同相同、属性是否匹配、 值域是否一致; 调用预定义函数时所用参数的个数、属性和次序是否正确; 输入的实际参数为空时,程序能够正确处理; 是否存在与当前入口点无关的参数引用; 对全程变量的定义各模块是否一致。 在模块内包括外部输入输出的情况下,还应从以下方面开展测试: 文件属性是否正确; OPEN/CLOSE语句是否正确; 格式说明与输入输出语句是否匹配; 缓冲区大小与记录长度是否匹配; 文件使用前是否已经打开; 是否处理了文件尾; 是否处理了输入/输出错误; 输出信息中是否有文字性错误。 3.2.2 模块局部数据结构测试 局部数据结构测试是为了保证临时存储在模块内的数据在

9、程序执行过程中完整和正确。局部数据结 构是错误的根源,应在设计测试用例时,确认是否有下面几类错误: 不合适或不相容的类型说明; 变量无初值; 变量初始化或缺省值有错; 不正确的变量名(拼错或不正确地截断); 出现上溢、下溢和地址异常。 除局部数据结构测试外,单元测试时还应查清全局数据对模块的影响。 3.2.3 模块边界测试 模块边界测试是单元测试中最重要的一项任务。软件经常在边界上失效,采用边界值分析技术,针 对边界值及其左、右设计测试用例,可能发现新的错误。常见的边界值包括: HS/Z XXXXXX 7 数据类型的边界,例如:对于16位整数而言,32767和-32768是其边界值;对于日期而

10、言, 1900-1-1和2999-12-31是其边界; 位置的边界,例如:屏幕光标、窗体位置的最左上、最右下是其边界值; 对象的边界,例如:报表的第一行和最后一张是其边界值;数组元素、记录集的第一行和最后 一张是其边界值; 程序逻辑的边界,例如:循环的第0次、第1次、最后1次是其边界值。 3.2.4 模块通路测试 在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行 一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。在模块 通路测试中,可能发现以下常见的错误: 误解或用错了算符优先级; 混合类型运算; 变量初值错; 精度不够;

11、 表达式符号错。 比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误: 不同数据类型的对象之间进行比较; 错误地使用逻辑运算符或优先级; 因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等; 比较运算或变量出错; 循环终止条件或不可能出现; 递归时不能退出; 错误地修改了循环变量。 3.2.5 模块错误处理通路测试 软件设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测 试应着重检查下列问题: 输出的出错信息难以理解; 记录的错误与实际遇到的错误不相符; 错误描述中未能提供足够的定位信息; 在程序自定义的出错处理段运行之前,系统已介入; 异

12、常处理不当。 3.3 单元测试的范围 对软件进行全面的单元测试需要较大的工作量,投入较长的时间,因此,项目组可根据具备的资源 情况,逐步扩大单元测试的范围。 第一步,对所有程序中的公开类以及公开类里面的公开方法进行单元测试。 第二步,对应用或程序初始化过程中运行的代码(例如:公共属性或构造函数)进行单元测试。 第三步,进行全面的单元测试。 在做第一步单元测试的时候,也应有选择性的、有重点的进行测试。 HS/Z XXXXXX 8 首先,应针对属于应用软件框架中的代码进行单元测试。具体包含操作数据库的组件、操作外部Web Service的组件、后台服务与前台程序之间的消息传递的组件。通过为这些主要

13、的可复用代码进行测试, 可加强程序底层操作的正确性和健壮性。 其次,应使用业务逻辑层对界面公开的方法进行单元测试。以达到业务逻辑正确和业务操作被归纳 到单元测试中的目的,从而保证在产品发布之后,出现问题时,可直接通过业务逻辑的单元测试来找到 缺陷。 剩下的代码大部分属于代码生成器生成的,而且大多数的操作都是类似的,因此我们可先针对某一 个业务逻辑对象做详细的单元测试。 通过这样的步骤,单元测试可有序的开展。 3.4 单元测试与调试的区别 单元测试与调试的对象及采用的方法虽然相似,但其目的却完全不同。单元测试是为了找出软件中 存在的缺陷,而调试是为了解决存在的缺陷。 4 单元测试的方法 4.1

14、白盒测试 在单元测试过程中,可使用白盒测试方法对软件的过程性细节做检查。测试人员应了解程序的内部 结构,并利用程序内部的逻辑结构及有关信息,设计或选择测试用例,通过在不同点检查程序状态,确 定实际状态是否与预期的状态一致,对程序所有逻辑路径进行测试。 测试人员编写的测试用例要进行语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖 和独立路径覆盖。 4.2 黑盒测试 黑盒测试方法能够辅助白盒测试发现白盒测试未能发现的其他类型的错误。测试人员可从正确性、 可用性、边界条件、性能、压力、错误处理、安全性、兼容性等方面,开展黑盒测试。 测试过程中,需要编写驱动程序或桩程序,通过运行被测试单元接

15、口的程序,来检查单元的正确性。 执行黑盒测试的测试人员必须先了解当前被测试单元所具有的功能,在测试中可完全不考虑程序内部结 构,仅基于接口进行测试,测试每个功能是否都能使用。测试过程中,测试人员应关注被测试单元的输 入、输出。 4.3 错误推测法 错误推测法能够使测试人员更快切入测试工作,更有针对性的开展测试工作。测试人员可根据自己 的工作经验和直觉推测出程序可能存在的错误,进行测试。 由于不同测试人员经验不同,不同程序容易出错的地方不同,为了避免测试中忽略大量未知区域的 测试,在测试过程中,测试小组需要首先集思广益,列举程序中最容易、最有可能出错的地方,选择测 试用例进行测试,从而避免引起测

16、试工作的偏差。 5 单元测试的流程 5.1 流程定义 HS/Z XXXXXX 9 单元测试活动,包括单元测试的策划、单元测试用例的设计、单元测试用例的执行。单元测试的流 程如图1所示。 单元测试的策划 单元测试用例 的设计 单元测试用例 的执行 结束 开始 是否存在 缺陷 是 修改代码 否 图1 单元测试流程 5.2 单元测试的策划 5.2.1 内容 单元测试的策划,主要是对单元测试时间、人员、职责、分工、工作量,以及所需的软件资源、硬 件资源进行策划,对具体的单元测试工作任务进行分解,确定单元测试的要求、终止测试的条件,制定 具体计划。 单元测试计划的内容及格式参见附录A,单元测试工作分解的

17、内容及格式参见附录B。 5.2.2 输入 项目计划 5.2.3 输出 单元测试计划 5.3 单元测试用例的设计 HS/Z XXXXXX 10 5.3.1 内容 测试用例是为特定的目的而设计的一组输入、执行条件和期望的结果。单元测试用例的设计,应根 据软件的设计信息,选取测试数据,将增大发现各类错误的可能性。在确定测试用例的同时,应给出期 望结果。 在设计单元测试用例时,需要编写驱动程序或桩程序,通过运行被测试单元接口的程序,来检查单 元的正确性。驱动程序或桩程序应作为测试用例的一部分进行配置管理。 测试用例在执行时,还需要一些数据输入。因此,在设计测试用例时,还应进行测试数据的准备。 准备测试

18、数据时,应结合测试用例执行的场景,软件的基础数据环境进行准备,尽量提高测试数据的真 实性,防止由于脏数据问题导致测试用例执行失败。 单元测试用例的内容及格式参见附录C。 5.3.2 输入 单元测试计划、详细设计 5.3.3 输出 单元测试用例(包括驱动程序、桩程序、测试数据) 5.4 单元测试用例的执行 5.4.1 内容 单元测试用例的执行,应紧接在编码之后,当源代码编制完成并通过代码复查和编译,便可开始执 行单元测试。将用例执行结果与预期结果进行对比、验证,发现可能存在的缺陷。对于单元测试中发现 的缺陷,进行记录,然后对源代码进行修改,再进行单元测试,直至符合单元测试的结束条件,编制单 元测

19、试报告,完成单元测试。实现单元测试期间的工作情况、测试用例执行情况、缺陷发现及修复情况 应进行跟踪记录。 单元测试缺陷管理的内容及格式参见附录D。 5.4.2 输入 单元测试用例、源代码文件 5.4.3 输出 单元测试报告、工作跟踪情况、测试用例执行情况、缺陷管理表 6 单元测试的常用工具 6.1 Visual Studio Team Test Visual Studio Team Test 是Visual Studio集成的单元测试框架,从Visual Studio 2005开始, 可以完成对C#、VB代码的单元测试。Team Test在单元测试方面,具有以下特性: 在开发工具的集成开发环境

20、(IDE)中运行; 所有的测试代码位于一个单独的项目,尽可能少的影响被测试的代码; 可以从数据库中加载测试数据; 测试运行完成后,可以进行代码覆盖分析。 HS/Z XXXXXX 11 6.2 NUnit NUnit是一个开源的,支持.Net语言的单元测试框架。具有以下特性: 不依赖开发工具的集成开发环境(IDE),可以独立运行; 轻型框架,运行速度快; 不支持调试,需要结合NCover一起使用才能进行代码覆盖分析。 6.3 TestDriven.NET TestDriven.NET是以插件的形式集成在Visual Studio.NET 开发环境(IDE)中的单元测试工具, 它集成NUnit单元

21、测试框架以及.NET Reflector、NConver、NConverExplorer等工具,功能更加强大。 TestDriven.NET在单元测试方面,具有以下特性: 免配置,能够兼容各种Visual Studio版本; 轻型框架,运行速度快; 功能丰富,解决了NUnit无法调试、无法进行代码分析等缺憾。 6.4 JUnit JUnit是一个开源的,基于面向对象构建的Java单元测试框架,在1997年由Erich Gamma和Kent Beck 开发完成。JUnit在单元测试方面,具有以下特性: 提供的API可以使测试人员写出测试结果明确的、可复用的单元测试用例; 提供了三种方式显示测试结

22、果,还可以按需要进行扩展; 提供了单元测试用例批量运行的功能; 框架易于扩展; 轻型框架且使用简单。 HS/Z XXXXXX 12 附 录 A (资料性附录) 单元测试计划及报告 A.1 项目信息 项目信息见表A .1。 表A.1 项目信息 内容 项目信息 项目名称: 项目ID: 单元测试计划开始日期: 单元测试计划结束日期: 单元测试实际开始日期: 单元测试实际结束日期: A.2 策划信息 A.2.1 人员和职责 人员和指责信息见表A.2。 表A.2 人员和职责 姓名 主要职责 能力要求 备注 A.2.2 软件环境 软件环境信息见表A.3。 表A.3 软件环境 软件环境 软件类型 环境要求

23、操作系统 数据库软件 开发工具 模拟器 HS/Z XXXXXX 13 编译器 测试工具 外部系统 浏览器 A.2.3 硬件环境 硬件环境信息见表A .4。 表A.4 硬件环境 硬件环境 硬件类型 环境要求 数据库服务器 最低配置 中间层服务器 最低配置 客户端 最低配置 A.2.4 环境准备情况 已具备 未具备 A.3 单元测试准则 A.3.1 测试开始标准 例如:被测试的代码开发完成,测试工具、测试的软件、硬件环境准备完毕、测试用例准备完毕, 执行单元测试的人员准备就绪,可以开始正式进行单元测试。 A.3.2 测试通过标准 例如:底层代码的单元测试覆盖率达到100%,单元测试用例执行100%

24、,单元测试发现的缺陷中已经 全部被关闭,可认为单元测试通过。 A.4 其他信息 A.4.1 批准 批准信息见表A.5。 表A.5 批准信息 批准方式 记录保存路径 评审通过 批准人: 批准日期: HS/Z XXXXXX 14 A.4.2 裁剪信息 裁剪信息见表A.6。 表A.6 裁剪信息 裁剪项 裁剪内容 裁剪原因(适用条件) A.4.3 备注 备注信息见表A .7。 A.5 备注信息 内容 说明 A.6 单元测试报告 A.6.1 单元测试结论 例如:本系统底层代码已全部通过单元测试,单元测试用例已全部执行,单元单元发现的缺陷已经 全部关闭,符合本项目单元测试通过的条件,本项目单元测试通过。

25、A.6.2 分析与建议 例如:在进行错误通路类型的单元测试中,发现由于在需求、设计中对错误处理要求不详细,导致 出现了很多不人性化的错误被系统抛出,建议今后细化此部分内容。无其他改进建议。 HS/Z XXXXXX 15 A B 附 录 B (资料性附录) 单元测试工作分解 B.1 工作任务分解 工作任务分解信息见表B.1。 表B.1 工作任务分解 工作任务分解层次 工作包 计划 实际 1 2 3 4 5 阶段 过程 构 件 单 元 任 务 任 务 描 述 工 作 产 品 任 务 类 别 负 责 人 计划 开始 日期 计划 结束 日期 计 划 人 时 实际 开始 日期 实际 结束 日期 实 际

26、人 时 技术活动 HS/Z XXXXXX 16 B C 附 录 C (资料性附录) 单元测试用例管理 C.1 单元测试用例列表 单元测试用例列表见表C.1。 表C.1 单元测试用例列表 编号 测试用例名称 测试模块或代码 制作人 制作 日期 执行人 执行 日期 结果记录 C.2 单元测试用例 单元测试用例信息参见表C.2。 表C.2 单元测试用例 测试用例名称: 测试用例编号: 目的: 关键点: 初始条件: 终止条件: 序号 操作步骤 预期结果 1 2 3 4 备注: HS/Z XXXXXX 17 C D 附 录 D (资料性附录) 单元测试缺陷管理 D.1 缺陷管理表 缺陷管理表见表D.1。

27、 表D.1 缺陷管理表 缺 陷 ID 缺 陷 描 述 发 现 人 员 解 决 人 员 测 试 用 例 编 号 问 题 发 现 版 本 发 现 日 期 缺 陷 状 态 发 现 缺 陷 的 活 动 类 型 缺 陷 发 现 阶 段 缺 陷 引 入 阶 段 缺 陷 引 入 工 程 活 动 解 决 日 期 缺 陷 类 型 严 重 程 度 优 先 级 计 划 完 成 版 本 缺 陷 潜 伏 期 - - - D.2 缺陷分析报告 D.2.1 缺陷数量统计 缺陷数量统计信息见表D.2。 表D.2 缺陷数量统计 发现日期 识别缺陷数 累计识别缺陷数 总计 HS/Z XXXXXX 18 D.2.2 缺陷状态统计 缺陷状态统计信息见表D.3。 表D.3 缺陷状态统计 缺陷状态 缺陷数量 占比 打开 修复 重新打开 拒绝 关闭 D.2.3 缺陷引入工程活动统计 缺陷引入工程活动信息见表D.4。 表D.4 缺陷引入工程活动统计 缺陷引入工程活动 缺陷数量 占比 业务需求 软件需求 总体设计 详细设计 编码 集成编译 HS/Z XXXXXX 19 参 考 文 献 1 GB/T 15532-1995 计算机软件单元测试 2 科技应用项目管理办法 _

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 标准规范 > 行业标准 > 其他标准

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1