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

下载本文档

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

文档简介

单元测试编写规范 文件修改控制修改记录编号修改页码及条款修改人审核人批准人批准日期目 录第一章 文档介绍4目的4阅读对象4第二章 概述42.1 定义42.2 目的42.3 步骤42.4 常见模块单元的错误5第三章 单元测试步骤63.1 设计单元测试方案63.1.1 输入、输出63.1.2 任务63.2 编写单元测试CASE73.2.1 输入、输出73.2.2 任务73.3 执行单元测试93.3.1 输入、输出93.3.2 任务93.4 分析单元测试结果93.4.1 输入、输出93.4.2 任务10第一章 文档介绍 目的本文档是关于进行单元测试(Unit Test)的规范性文档,本文档中描述了单元测试的原则、流程和方法,是软件开发人员在进行单元测试时的工作指南。 阅读对象本文档适合以下人员阅读l 项目经理l 软件开发工程师l 软件测试工程师第二章 概述2.1 定义单元测试是对软件基本组成单元进行的测试,所谓“单元”是指:l 具有明确的功能l 具有明确的规格定义(详细设计说明书)l 有与其他部分明确的接口定义l 能够与程序的其他部分清晰地进行区分2.2 目的单元测试用例的设计是要验证被测程序单元的如下这些方面:1) 是否正确实现了规定的功能2) 模块内部是否存在错误2.3 步骤单元测试的侧重点在于发现程序设计或者实现中的逻辑错误。它分为计划、设计、实现、执行和评估五个步骤。各步骤的定义如下:1) 计划单元测试确定测试需求,制订测试策略,确定测试所用资源,创建测试任务的时间表。2) 设计单元测试设计单元测试模型,制订测试方案,确认测试过程3) 实现单元测试根据单元测试计划和方案,制订具体的测试用例,创建可重用的测试脚本。4) 执行单元测试根据单元测试的方案、用例对软件单元进行测试,验证测试结果并记录测试过程中出现的缺陷。5) 评估单元测试对单元测试的结果进行评估,主要从需求覆盖和代码覆盖的角度进行测试完备性的评估。2.4 常见模块单元的错误模块内部错误往往存在于下列方面:1) 模块接口:测试模块的数据流a) 调用所测模块时输入参数与模块的形式参数在个数、属性、顺序上是否匹配b) 所测模块在调用其他模块时,它输入给其他模块的参数在个数、属性、顺序上是否匹配c) 是否修改了只做输入用的形式参数d) 输出给标准函数的参数在在个数、属性、顺序上是否匹配e) 全局变量的定义在各模块中是否一致f) 限制是否通过形式参数来传递2) 局部数据结构:a) 不正确的或者不一致的数据类型说明b) 使用未赋值或者未初始化的变量c) 错误的初始值或者错误的默认值d) 变量名拼写错误e) 不一致的数据类型3) 路径错误:不正确的计算、比较和控制流4) 错误处理a) 出错的描述难以理解b) 出错的描述不足以对错误定位和确定出错原因c) 显示的错误与实际错误不符d) 对错误条件的处理不正确e) 在对错误进行处理之前,错误条件已经引起了系统的干预5) 边界a) 在循环的第0次,第一次和最后一次是否有错误b) 运算或者判断中最大最小值是否有错误c) 数据流、控制流中刚好大于、小于或等于最大或最小值时是否有错误第三章 单元测试步骤3.1 设计单元测试方案3.1.1 输入、输出输入工作产品待测程序单元输出工作产品XXX单元测试方案3.1.2 任务1. 设计单元测试的模型,一般如下图所示驱动模块被测单元测试用例桩模块桩模块桩模块测试结果构造单元测试模型需要:l 定义(设计)驱动模块,用以调用被测程序单元l 定义(设计)测试桩模块,用以模拟被测程序单元调用的函数接口l 设计测试数据和状态,准备单元测试的动态结构l 确定测试的流程另外,测试模型也可能是由所采用的测试工具所决定的。2. 指定测试项目指定对不同特性(或者特性组合)进行充分测试的途径,包括测试工具、方法和技术的描述以及对测试结果进行提取和分析的方法。3. 定义测试完备性标准(例如代码覆盖、路径覆盖或者条件覆盖),并规定判定测试完备性的手段,例如利用工具或者设计测试代码等。3.2 编写单元测试CASE3.2.1 输入、输出输入工作产品XXX单元测试方案输出工作产品单元测试用例测试环境3.2.2 任务1. 根据XXX单元测试方案构造测试环境(将待测程序单元纳入测试工具,实现驱动模块和桩模块),编写测试代码(自己开发或使用测试工具)。需要的时候生成或者导入测试所需要的数据。2. 设计单元测试用例设计测试用例的时候要根据XXX单元测试方案中所规定的测试方法、测试项目和完备性标准进行。单元测试用例的设计,主要有以下五个步骤:1) 为系统运行起来设计测试用例首先需要设计这样的测试用例,该用例的执行可以证明测试环境和被测单元是可用的。如果连这样的测试用例都失败了,那么其他的测试用例都失去了执行的基础2) 为正向测试而设计测试用例其次需要设计正向测试用例。这些用例也是基本的单元测试用例,它们是用来证明设计规格说明书中对应的功能和性能指标是否能够实现。这些测试用例是按照设计说明书中的描述来开发的。3) 为逆向测试而设计测试用例逆向测试的测试用例是用来证明软件没有做不应该做的事情。这个步骤可以基于错误猜测的基础进行测试用例的构造。4) 为特殊要求设计测试用例从系统的性能、安全性、保密性的角度为具有这些要求的系统制订的测试用例。5) 为覆盖率设计测试用例测试用例的设计要保证一定的覆盖率要求,所以在最后一步还需要补充一些测试用例,以保证测试用例对代码、路径、或者条件的覆盖率。在单元测试的设计中,针对测试项目和测试覆盖率的要求经常采用如下的一些方法:A) 规格导出法规格导出法是根据相关的规格说明来设计测试用例,每一个测试用例用来检验一个或多个规格陈述的语句。一个比较实际的办法是按照规格陈述的语句顺序来为被测单元设计测试用例。这种测试用例的设计可以保证在规格说明中所有的要求在测试案例中都能得到体现,但是它只是一种正向测试的思路,需要其他的测试用例的补充才能达成测试的完整性。B) 等价类划分法等价类划分是一种正式的测试用例设计方法,它基于被测单元的输入、输出所做的划分,对每一个划分中的所有输入、被测单元都有相同(等价)的反应。例如对一个范围是0-100的整数输入来说,2,38,66应该都具有相同的效力,而 -1,120也有相同的效力。等价类划分法就是针对每一个等价类设计至少一个测试用例来确保被测程序单元的处理是完整的。等价类划分的设计方法也属于正向测试的技术。C) 边界值分析法边界值分析法使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于两个划分的边界上,相应地为边界上及两侧的情况设计测试用例。D) 状态转移测试法对于那些以状态机作为模型或者设计为状态机的软件,状态转移测试是合适的。状态转移测试法的测试用例涵盖能导致状态迁移的事件来测试状态之间的转换是否正确。用这种方法可以测试逆向的测试用例,如状态和事件的非法组合。E) 分支测试法在分支测试中,根据单元中控制流分支或者判断点来设计测试用例。这通常用于达到一定的测试覆盖率。在单元测试中,如果使用黑盒测试技术,那么需要去猜测存在哪些逻辑分支并相应为这些分支的执行准备测试用例,如果使用白盒测试技术,那么则需要根据该程序单元中的控制流设计测试用例,完成分支覆盖的要求。F) 条件测试法条件测试法中包含了很多测试用例设计技术,它们都致力于弥补在遇到复杂逻辑条件的时候分支测试的弱点。条件测试的目标是测试在每个逻辑条件的单个成份及它们组合的情况下程序都是正确的。在考虑各个逻辑条件的组合的时候,决策表是一种有用的工具。在条件测试法中,需要设计足够的测试用例,确保每种逻辑条件的组合都被测试到。G) 数据定义使用测试法数据定义是指数据被赋值的地方,数据使用是指数据项被读取或者使用的地方。使用这种方法设计测试用例时,主要考虑用用例来驱动数据被定义到被使用的路径。这种方法主要用于检查数据的初始化和处理的正确性,也可以在静态检查中使用。H) 内部边界值测试法这种方法与边界值分析法类似,但是它偏重的是白盒测试技术,也就是说从程序单元的规格说明中导出等价类和边界值。除了外部可见的数据之外,程序的内部的数据也存在等价类和边界值,它们只能通过对程序单元的设计规格说明进行分析而得到。内部边界值测试法一般只作为测试用例设计的补充方法,与其他方法结合使用。I) 错误猜测法错误猜测是基于经验和其他一些测试技术的。在经验的基础上,测试设计者猜测错误的类型及在特定的软件中错误发生的位置,并设计测试用例去发现它们。例如,如果所有的资源需要动态申请,那么我们就需要判断是否所有的资源都被正确释放了。一个发现错误的好地方就是资源释放的地方。对一个有经验的工程师,错误猜测法可能是最好的设计测试用例的方法,因为它可能发现别的设计方法所遗漏的错误。为了最大限度的利用有效的经验并逐步丰富测试用例的设计技术,建立一个错误类型的列表是一个好方法,这个列表可以帮助工程师猜测程序单元中的错误会在哪里。这个列表需要通过在实践中不断的维护和扩充来帮助达成错误猜测的有效性。3. 将设计好的测试用例用工具或者文档记录下来。在需要的时候,标注某个测试用例是为了哪个测试项目而设计的。一般来说,测试用例都需要注明:测试条件、测试输入、测试操作和预期输出这四大要素。4. 将设计好的测试用例编写为测试脚本(test script)或测试程序,如果设计自动化测试,驱动模块从测试脚本中逐条读取测试用例并且通过程序或者测试人员的目测判断程序单元的行为或者输出是否符合预期。一般来说,测试工具或者驱动模块也需要将每一条测试用例执行的结果进行记录,以供分析之用。3.3 执行单元测试3.3.1 输入、输出输入工作产品单元测试用例输出工作产品单元测试结果记录3.3.2 任务1. 执行单元测试用例对单元测试用例的执行一般意味着由驱动模块读取测试脚本,然后通过程序判断或者测试人员目测判断的方式确认测试用例是否执行通过。d) 首先应该确保测试环境和测试程序能正常执行,如果不能正常执行则需要进行相应修改直至正常。e) 在遇到测试用例执行失败而无法执行之后的单元测试用例时,需要调整被测程序单元直到该用例能够正常执行。修改之后需要重新执行之前的测试用例(回归测试)。使用测试工具或者编写自动化的测试驱动模块可以使这项工作相对容易些。2. 对测试用例的执行结果进行记录,如果使用工具或者编写了自动化的

温馨提示

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

最新文档

评论

0/150

提交评论