软件测试之单元测试规范.doc_第1页
软件测试之单元测试规范.doc_第2页
软件测试之单元测试规范.doc_第3页
软件测试之单元测试规范.doc_第4页
软件测试之单元测试规范.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项项目管理文档目管理文档 单元测试规范单元测试规范 编 写 审 核 审 批 文档管理 。 8ee44d59efb3e5b8a5ecf53b76e78722.pdf 文档修订摘要文档修订摘要 日期日期修订号修订号描述描述著者著者审阅者审阅者批准人批准人/日期日期 由安博测试空间技术中心 /提供 iii 目录目录 第第 1 章章引言引言1 1.1文档用途1 1.2阅读对象1 1.3参考资料1 第第 2 章章概述概述2 第第 3 章章单元测试步骤单元测试步骤3 3.1设计单元测试方案3 3.1.1输入、输出3 3.1.2任务3 3.2编写单元测试 CASE.4 3.2.1输入、输出4 3.2.2任务4 3.3执行单元测试5 3.3.1输入、输出5 3.3.2任务5 3.4分析单元测试结果5 3.4.1输入、输出5 3.4.2任务6 附录附录 1 单元测试案例设计指南单元测试案例设计指南.7 1.单元测试目的7 2.常见模块单元的错误7 3.单元测试案例常见设计方法8 0 第第 1 章章 引言引言 1.1 文档用途文档用途 本文档是科技(中国)有限公司研发部门内部使用的关于进行单元测试(Unit Test)的规范性文档, 本文档中描述了单元测试的原则、流程和方法,是软件开发人员在进行单元测试的时候的工作指南。 1.2 阅读对象阅读对象 此文档适合以下人员阅读: 项目经理 产品开发工程师 EPG 成员 PPQA 人员 1.3 参考资料参考资料 实用软件测试方法与应用飞思科技产品研发忠心 电子工业出版社 软件工程实践者的研究方法Roger S. Pressman 机械工业出版社 面向对象的软件测试John D. McGregor, David A. Sykes 机械工业出版社 软件测试原书第 2 版Paul C. Jorgensen 机械工业出版社 8ee44d59efb3e5b8a5ecf53b76e78722.pdf 1 第第 2 章章 概述概述 单元测试是对软件基本组成单元进行的测试,所谓“单元”是指: 具有明确的功能 具有明确的规格定义(详细设计规格说明书) 有与其他部分明确的接口定义 能够与程序的其他部分清晰的进行区分 单元测试的侧重点在于发现程序设计或者实现中的逻辑错误。它分为计划、设计、实现、执行和评 估五个步骤。各步骤的定义如下: 1)计划单元测试: 确定测试需求,制订测试策略,确定测试所用资源,创建测试任务的时 间表。 2)设计单元测试: 设计单元测试模型,制订测试方案,确认测试过程 3)实现单元测试: 根据单元测试计划和方案,制订具体的测试用例,创建可重用的测试脚 本。 4)执行单元测试: 根据单元测试的方案、用例对软件单元进行测试,验证测试结果并记录 测试过程中出现的缺陷。 5)评估单元测试:对单元测试的结果进行评估,主要从需求覆盖和代码覆盖的角度进行测试 完备性的评估。 8ee44d59efb3e5b8a5ecf53b76e78722.pdf 2 第第 3 章章 单元测试步骤单元测试步骤 3.1 设计单元测试方案设计单元测试方案 3.1.1输入、输出输入、输出 输入工作产品待测程序单元 输出工作产品 XXX 单元测试方案 3.1.2任务任务 1.设计单元测试的模型,一般如下图所示 驱动模块 被测单元测试用例 桩模块桩模块桩模块 测试结果 构造单元测试模型需要: 定义(设计)驱动模块,用以调用被测程序单元 定义(设计)测试桩模块,用以模拟被测程序单元调用的函数接口 设计测试数据和状态,准备单元测试的动态结构 确定测试的流程 另外,测试模型也可能是由所采用的测试工具所决定的。 2.指定测试项目:指定对不同特性(或者特性组合)进行足够测试的途径,包括测试工具、方法 和技术的描述以及对测试结果进行提取和分析的方法。 3.定义测试完备性标准(例如代码覆盖、路径覆盖或者条件覆盖) ,并设计判定测试完备性的手 段, 例如利用工具或者设计测试代码等。 8ee44d59efb3e5b8a5ecf53b76e78722.pdf 3 3.2 编写单元测试编写单元测试 CASE 3.2.1输入、输出输入、输出 输入工作产品 XXX 单元测试方案 输出工作产品 单元测试案例 测试环境 3.2.2任务任务 1.根据XXX 单元测试方案构造测试环境(将待测程序单元纳入测试工具; 实现驱动模块和 桩模块) ,编写测试代码(自己开发或使用测试工具) 。需要的时候生成或者导入测试所需要的 数据。 2.设计单元测试案例 设计测试案例的时候要根据XXX 单元测试方案中所规定的测试方法、测试项目和完备性 标准进行。单元测试案例的设计,主要有以下五个步骤: 1)为系统运行起来设计测试用例 首先需要设计这样的测试用例,该用例的执行可以证明测试环境和被测单元是可用的。如 果这样的测试案例失败了,其他的测试案例都失去了执行的基础 2)为正向测试而设计测试用例 其次需要设计正向测试案例。这些案例也是基本的单元测试案例,它们是用来证明设计规 格说明书中对应的功能和性能指标是否能够实现的。这些测试案例是按照设计说明书中的 描述来开发的。 3)为逆向测试而设计测试用例 逆向测试的测试用例是用来证明软件没有做不应该做的事情。这个步骤可以基于错误猜测 的基础进行测试用例的构造。 4)为特殊要求设计测试用例 从系统的性能、安全性、保密性的角度为具有这些要求的系统制订的测试用例。 5)为覆盖率设计测试用例 测试案例的设计要保证一定的覆盖率要求,所以在最后一步还需要补充一些测试案例,以 保证测试案例对代码、路径、或者条件的覆盖率。 在单元测试的设计当中,针对测试项目和测试覆盖率的要求经常采用如下的一些方法: A)规格导出法 B)等价类划分法 C)边界值分析法 D)状态转移测试法 E)分支测试法 F)条件测试法 G)数据定义使用测试法 H)内部边界值测试法 I)错误猜测法 8ee44d59efb3e5b8a5ecf53b76e78722.pdf 4 这些方法的具体描述,请参见附录一。 3.将设计好的测试案例用工具或者文档记录下来。在需要的时候,标注某个测试案例是为了哪个 测试项目而设计的。一般来说,测试案例都需要注明:测试条件、测试输入、测试操作和预期 输出这四大要素。 4.将设计好的测试案例编写成为测试脚本(test script) , 如果设计自动化测试,驱动模块从测试 脚本中逐条读取测试案例并且通过程序或者测试人员的目测判断程序单元的行为或者输出是否 符合预期。一般来说,测试工具或者驱动模块也需要将每一条测试案例执行的结果进行记录, 以供分析之用。 3.3 执行单元测试执行单元测试 3.3.1输入、输出输入、输出 输入工作产品单元测试案例 输出工作产品单元测试结果记录 3.3.2任务任务 1.执行单元测试案例 对单元测试案例的执行一般意味着由驱动模块读取测试脚本,然后通过程序判断或者测试人员 目测判断的方式确认测试案例是否执行通过。 a)首先应该确保测试环境和测试程序能正常执行,如果不能正常执行则需要进行相应修改直 至正常。 b)在遇到测试案例执行失败而无法执行之后的单元测试案例时,需要调整被测程序单元直到 该案例能够正常执行。修改之后需要重新执行之前的测试案例(回归测试) 。使用测试工 具或者编写自动化的测试驱动模块可以使这项工作相对容易些。 2.对测试案例的执行结果进行记录,如果使用工具或者编写了自动化的测试驱动模块,这一步工 作可以自动化。 3.根据测试结果修改源代码,重新构造测试环境;需要的时候修改测试案例。 3.4 分析单元测试结果分析单元测试结果 3.4.1输入、输出输入、输出 输入工作产品单元测试结果 输出工作产品单元测试总结报告 8ee44d59efb3e5b8a5ecf53b76e78722.pdf 5 3.4.2任务任务 1.分析测试的完备性,判断是否执行了事先设计的所有测试案例以及在测试过程中新增加的测试 案例。 2.使用工具或者其他自定义的方法判断单元测试的覆盖率是否符合事先定义的覆盖率。 3.如果未能达成覆盖率,则补充测试案例,重新执行测试。 8ee44d59efb3e5b8a5ecf53b76e78722.pdf 6 附录附录 1 单元测试案例设计指南单元测试案例设计指南 1. 单元测试目的单元测试目的 单元测试案例的设计要验证被测程序单元的如下这些方面: 1) 是否正确实现了规定的功能 2)模块内部是否存在错误 2. 常见模块单元的错误常见模块单元的错误 模块内部错误往往存在于下列方面: 1)模块接口:测试模块的数据流 a)调用所测模块时输入参数与模块的形式参数在个数、属性、顺序上是否匹配 b)所测模块在调用其他模块时,它输入给其他模块的参数在个数、属性、顺序上是否匹配 c)是否修改了只做输入用的形式参数 d)输出给标准函数的参数在在个数、属性、顺序上是否匹配 e)全局变量的定义在各模块中是否一致 f)限制是否通过形式参数来传递 2)局部数据结构: g)不正确的或者不一致的数据类型说明 h)使用未赋值或者未初始化的变量 i)错误的初始值或者错误的默认值 j)变量名拼写错误 k)不一致的数据类型 3)路径错误:不正确的计算、比较和控制流 4)错误处理 l)出错的描述难以理解 m)出错的描述不足以对错误定位和确定出错原因 n)显示的错误与实际错误不符 o)对错误条件的处理不正确 p)在对错误进行处理之前,错误条件已经引起了系统的干预 5)边界 q)在循环的第 0 次,第一次和最后一次是否有错误 r)运算或者判断中最大最小值是否有错误 s)数据流、控制流中刚好大于、小于或等于最大或最小值时是否有错误 8ee44d59efb3e5b8a5ecf53b76e78722.pdf 7 3. 单元测试案例常见设计方法单元测试案例常见设计方法 以下是一些单元测试案例的常见设计方法,通过对这些方法的综合运用,可以帮助我们发现上述这 些错误。 1)规格导出法规格导出法 规格导出法是根据相关的规格说明来设计测试用例,每一个测试用例用来检验一个或多个规格陈述 的语句。一个比较实际的办法是按照规格陈述的语句顺序来为被测单元设计测试用例。这种测试用 例的设计可以保证在规格说明中所有的要求在测试案例中都能得到体现,但是它只是一种正向测试 的思路,需要其他的测试用例的补充才能达成测试的完整性。 2)等价类划分法等价类划分法 等价类划分是一种正式的测试用例设计方法,它基于被测单元的输入、输出所做的划分,对每一个 划分中的所有输入、被测单元都有相同(等价)的反应。例如对一个范围是 0-100 的整数输入来说, 2,38,66 应该都具有相同的效力,而 1,120 也有相同的效力。 等价类划分法就是针对每一个等 价类设计至少一个测试案例来确保被测程序单元的处理是完整的。等价类划分的设计方法也属于正 向测试的技术。 3)边界值分析法边界值分析法 边界值分析法使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于两个划分的 边界上,相应地为边界上及两侧的情况设计测试用例。 4)状态转移测试状态转移测试 对于那些以状态机作为模型或者设计为状态机的软件,状态转移测试是合适的。状态转移测试法的 测试案例涵盖能导致状态迁移的事件来测试状态之间的转换是否正确。用这种方法可以测试逆向的 测试用例,如状态和事件的非法组合。 5)分支测试法分支测试法 在分支测试中,根据单元中控制流分支或者判断点来设计测试用例。这通常用于达到一定的测试覆 盖率。在单元测试中,如果使用黑盒测试技术,那么需要去猜测存在哪些逻辑分支并相应为这些分 支的执行准备测试用例,如果使用白盒测试技术,那么则需要根据该程序单元中的控制流设计测试 案例,完成分支覆盖的要求。 6)条件测试法条件测试法 条件测试法中包涵了很多测试案例设计技术,它们都致力于弥补在遇到复杂逻辑条件的时候分支测 试的弱点。条件测试的目标是测试在每个逻辑条件的单个成份及它们组合的情况下程序都是正确的。 在考虑各个逻辑条件的组合的时候,决策表是一种有用的工具。 在条件测试法中,需要设计足够的测试案例,确保每种逻辑条件的组合都被测试到。 7)数据定义使用测试法数据定义使用测试法 数据定义是指数据被赋值的地方,数据使用是指数据项被读取或者使用的地方。使用这种方法设计 测试案例时,主要考虑用案例来驱动数据被定义到被使用的路径。这种方法主要用于检查数据的初 始化和处理的正确性,也可以在静态检查中使用。 8ee44d59efb3e5b8a5ecf53b76e78722.pdf 8 8)内部边界值测试法内部边界值测试法 这种方法与边界值分析法类似,但是它偏重的是白盒测试技术,也就是说从程序单元的规格说明中 导出等价类和边界值。除了外部可见的数据之外,程序的内部的数据也存在等价类和边界值,它们 只能通过对程序单元的设计规格说明进行分析而得到。内部边界值测试法一般只作为测试案例设计 的补充方法,与其他方法结合使用。 9)错误猜测法错误猜测法 错误猜测是基于经验和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论