还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
项目管理文档单元测试规范编写审核审批文档管理文档修订摘要日期修订号描述著者审阅者批准人/日期目录TOC\o1-3\h\z\t正文标题2第1章引言
11.1文档用途
11.2阅读对象
11.3参考资料1第2章概述2第3章单元测试步骤
33.1设计单元测试方案3输入、输出3任务
33.2编写单元测试CASE4输入、输出4任务
43.3执行单元测试5输入、输出5任务
53.4分析单元测试结果5输入、输出5任务6附录1单元测试案例设计指南
71.单元测试目的
72.常见模块单元的错误
73.单元测试案例常见设计方法8第1章引言
1.1文档用途本文档是科技(中国)有限公司研发部门内部使用的关于进行单元测试(UnitTest)的规范性文档,本文档中描述了单元测试的原则、流程和方法,是软件__人员在进行单元测试的时候的工作指南
1.2阅读对象此文档适合以下人员阅读项目经理产品__工程师EPG成员PPQA人员
1.3参考资料《实用软件测试方法与应用》飞思科技产品研发忠心电子工业出版社《软件工程-实践者的研究方法》RogerS.Pres__an机械工业出版社《面向对象的软件测试》JohnD.McGregorD__idA.Sykes机械工业出版社《软件测试-原书第2版》PaulC.Jorgensen机械工业出版社第2章概述单元测试是对软件基本组成单元进行的测试,所谓“单元”是指具有明确的功能具有明确的规格定义(详细设计规格说明书)有与其他部分明确的接口定义能够与程序的其他部分清晰的进行区分单元测试的侧重点在于发现程序设计或者实现中的逻辑错误它分为计划、设计、实现、执行和评估五个步骤各步骤的定义如下1计划单元测试确定测试需求,制订测试策略,确定测试所用资源,创建测试任务的时间表2设计单元测试设计单元测试模型,制订测试方案,确认测试过程3实现单元测试根据单元测试计划和方案,制订具体的测试用例,创建可重用的测试脚本4执行单元测试根据单元测试的方案、用例对软件单元进行测试,验证测试结果并记录测试过程中出现的缺陷5评估单元测试对单元测试的结果进行评估,主要从需求覆盖和代码覆盖的角度进行测试完备性的评估第3章单元测试步骤
3.1设计单元测试方案
3.
1.1输入、输出输入工作产品待测程序单元输出工作产品《XXX单元测试方案》
3.
1.2任务
1.设计单元测试的模型,一般如下图所示构造单元测试模型需要定义(设计)驱动模块,用以调用被测程序单元定义(设计)测试桩模块,用以模拟被测程序单元调用的函数接口设计测试数据和状态,准备单元测试的动态结构确定测试的流程另外,测试模型也可能是由所采用的测试工具所决定的
2.指定测试项目指定对不同特性(或者特性组合)进行足够测试的途径,包括测试工具、方法和技术的描述以及对测试结果进行提取和分析的方法
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错误猜测法这些方法的具体描述,请参见附录一
3.将设计好的测试案例用工具或者文档记录下来在需要的时候,标注某个测试案例是为了哪个测试项目而设计的一般来说,测试案例都需要注明测试条件、测试输入、测试操作和预期输出这四大要素
4.将设计好的测试案例编写成为测试脚本(testscript),如果设计自动化测试,驱动模块从测试脚本中逐条读取测试案例并且通过程序或者测试人员的目测判断程序单元的行为或者输出是否符合预期一般来说,测试工具或者驱动模块也需要将每一条测试案例执行的结果进行记录,以供分析之用
3.3执行单元测试
3.
3.1输入、输出输入工作产品单元测试案例输出工作产品单元测试结果记录
3.
3.2任务
1.执行单元测试案例对单元测试案例的执行一般意味着由驱动模块读取测试脚本,然后通过程序判断或者测试人员目测判断的方式确认测试案例是否执行通过a首先应该确保测试环境和测试程序能正常执行,如果不能正常执行则需要进行相应修改直至正常b在遇到测试案例执行失败而无法执行之后的单元测试案例时,需要调整被测程序单元直到该案例能够正常执行修改之后需要重新执行之前的测试案例(回归测试)使用测试工具或者编写自动化的测试驱动模块可以使这项工作相对容易些
2.对测试案例的执行结果进行记录,如果使用工具或者编写了自动化的测试驱动模块,这一步工作可以自动化
3.根据测试结果修改源代码,重新构造测试环境;需要的时候修改测试案例
3.4分析单元测试结果
3.
4.1输入、输出输入工作产品单元测试结果输出工作产品单元测试总结报告
3.
4.2任务
1.分析测试的完备性,判断是否执行了事先设计的所有测试案例以及在测试过程中新增加的测试案例
2.使用工具或者其他自定义的方法判断单元测试的覆盖率是否符合事先定义的覆盖率
3.如果未能达成覆盖率,则补充测试案例,重新执行测试附录1单元测试案例设计指南
1.单元测试目的单元测试案例的设计要验证被测程序单元的如下这些方面1是否正确实现了规定的功能1模块内部是否存在错误
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数据流、控制流中刚好大于、小于或等于最大或最小值时是否有错误
3.单元测试案例常见设计方法以下是一些单元测试案例的常见设计方法,通过对这些方法的综合运用,可以帮助我们发现上述这些错误1规格导出法规格导出法是根据相关的规格说明来设计测试用例,每一个测试用例用来检验一个或多个规格陈述的语句一个比较实际的办法是按照规格陈述的语句顺序来为被测单元设计测试用例这种测试用例的设计可以保证在规格说明中所有的要求在测试案例中都能得到体现,但是它只是一种正向测试的思路,需要其他的测试用例的补充才能达成测试的完整性2等价类划分法等价类划分是一种正式的测试用例设计方法,它基于被测单元的输入、输出所做的划分,对每一个划分中的所有输入、被测单元都有相同(等价)的反应例如对一个范围是0-100的整数输入来说,23866应该都具有相同的效力,而-1,120也有相同的效力等价类划分法就是针对每一个等价类设计至少一个测试案例来确保被测程序单元的处理是完整的等价类划分的设计方法也属于正向测试的技术3边界值分析法边界值分析法使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于两个划分的边界上,相应地为边界上及两侧的情况设计测试用例4状态转移测试对于那些以状态机作为模型或者设计为状态机的软件,状态转移测试是合适的状态转移测试法的测试案例涵盖能导致状态迁移的__来测试状态之间的转换是否正确用这种方法可以测试逆向的测试用例,如状态和__的非法组合5分支测试法在分支测试中,根据单元中控制流分支或者判断点来设计测试用例这通常用于达到一定的测试覆盖率在单元测试中,如果使用黑盒测试技术,那么需要去猜测存在哪些逻辑分支并相应为这些分支的执行准备测试用例,如果使用白盒测试技术,那么则需要根据该程序单元中的控制流设计测试案例,完成分支覆盖的要求6条件测试法条件测试法中包涵了很多测试案例设计技术,它们都致力于弥补在遇到复杂逻辑条件的时候分支测试的弱点条件测试的目标是测试在每个逻辑条件的单个成份及它们组合的情况下程序都是正确的在考虑各个逻辑条件的组合的时候,决策表是一种有用的工具在条件测试法中,需要设计足够的测试案例,确保每种逻辑条件的组合都被测试到7数据定义-使用测试法数据定义是指数据被赋值的地方,数据使用是指数据项被读取或者使用的地方使用这种方法设计测试案例时,主要考虑用案例来驱动数据被定义到被使用的路径这种方法主要用于检查数据的初始化和处理的正确性,也可以在静态检查中使用8内部边界值测试法这种方法与边界值分析法类似,但是它偏重的是白盒测试技术,也就是说从程序单元的规格说明中导出等价类和边界值除了外部可见的数据之外,程序的内部的数据也存在等价类和边界值,它们只能通过对程序单元的设计规格说明进行分析而得到内部边界值测试法一般只作为测试案例设计的补充方法,与其他方法结合使用9错误猜测法错误猜测是基于经验和其他一些测试技术的在经验的基础上,测试设计者猜测错误的类型及在特定的软件中错误发生的位置,并设计测试用例去发现它们例如,如果所有的资源需要动态申请,那么我们就需要判断是否所有的资源都被正确释放了一个发现错误的好地方就是资源释放的地方对一个有经验工程师,错误猜测法可能是最好的设计测试案例的方法,因为它可能发现别的设计方法所遗漏的错误为了最大限度的利用有效的经验并逐步丰富测试用例的设计技术,建立一个错误类型的列表是一个好方法,这个列表可以帮助工程师猜测程序单元中的错误会在哪里这个列表需要通过在实践中不断的维护和扩充来帮助达成错误猜测的有效性驱动模块被测单元测试用例桩模块桩模块桩模块测试结果。