资源描述
,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,第五章 单元测试,5.1,什么是单元测试,5.2,单元测试的目标和任务,5.3,静态测试技术的运用,5.4,动态测试技术的运用,5.5,调试与评估,5.6,单元测试的过程与文档管理,5.7,单元测试的常用工具简介,5.1,什么是单元测试,测试的,4,个阶段:,单元测试,集成测试,系统测试,验收测试,按阶段进行测试是一种基本的测试策略,单元测试的定义,定义,:,单元测试是对软件基本组成单元进行的测试。,时机,:,一般在代码完成后由开发人员完成,QA,人员辅助,.,为何要进行单元测试,?,尽早发现错误,错误发现越早,成本越低,.,开发人员过于自信,后期复杂,度高,发现解决,BUG,困难,.,检查代码是否符合设计和规范,12,小时,6,小时,3,小时,单元测试,集成测试,系统测试,5.2,单元测试的目标和任务,目标,:,单元模块被正确编码,信息能否正确地流入和流出单元;,在单元工作过程中,其内部数据能否保持其完整性,包括内部数据的形式、内容及相互关系不发生错误,也包括全局变量在单元中的处理和影响。,在为限制数据加工而设置的边界处,能否正确工作。,单元的运行能否做到满足特定的逻辑覆盖。,单元中发生了错误,其中的出错处理措施是否有效。,任务,1,: 模块接口测试,检查模块接口是否正确,Checklist:,输入的实际参数与形式参数是否一致。,个数、属性,调用其他模块的实际参数与被调模块的形参是否一致。,个数、属性,全程变量的定义在各模块是否一致。,外部输入、输出,文件、缓冲区、错误处理,其它,任务,2,: 模块局部数据结构测试,检查局部数据结构完整性,Checklist:,不适合或不相容的类型说明。,变量无初值。,变量初始化或默认值有错。,不正确的变量名或从来未被使用过。,出现上溢或下溢和地址异常。,其它,任务,3,: 模块边界条件测试,检查临界数据处理的正确性,Checklist:,普通合法数据的处理。,普通非法数据的处理。,边界值内合法边界数据的处理。,边界值外非法边界数据的处理。,其它,任务,4,: 模块独立执行通路测试,检查每一条独立执行路径的测试。保证每条语句被至少执行一次。,Checklist:,算符优先级。,混合类型运算。,精度不够。,表达式符号。,循环条件,死循环。,其它,任务,5,:模块的各条错误处理通路测试,预见、预设的各种出错处理是否正确有效。,Checklist:,输出的出错信息难以理解。,记录的错误与实际不相符。,程序定义的出错处理前系统已介入。,异常处理不当。,未提供足够的定位出错的信息。,其它,5.3,静态测试技术的运用,静态测试技术: 不运行被测试程序,对代码通过检查、阅读进行分析。,三步曲:,走查 (,Walk Through,)。,审查 (,Inspection,)。,评审 (,Review,),走查 (,Walk Through,),定义:采用讲解、讨论和模拟运行的方式进行的查找错误的活动。,注意:,引导小组成员在走查前通读设计和编码。,限时,避免跑题。,发现问题适当记录,避免现场修改。,检查要点是代码是否符合标准和规范,是否有逻辑错误。,审查 (,Inspection,),定义:采用讲解、提问方式进行,一般有正式的计划、流程和结果。主要方法采用缺陷检查表。,注意:,以会议形式,制定会议目标、流程和规则,结束后要编写报告。,按缺陷检查表逐项检查。,发现问题适当记录,避免现场修改。,发现重大缺陷,改正后会议需要重开。,检查要点是缺陷检查表,所以该表要根据项目不同不断积累完善。,走查与审查的比较,走 查,审 查,准备,通读设计和编码,应准备好需求描述文档、程序设计文档、程序的源代码清单、代码编码标准和代码缺陷检查表,形式,非正式会议,正式会议,参加人员,开发人员为主,项目组成员包括测试人员,主要技术方法,无,缺陷检查表,注意事项,限时、不要现场修改代码,限时、不要现场修改代码,生成文档,会议记录,静态分析错误报告,目标,代码标准规范,无逻辑错误,代码标准规范,无逻辑错误,评审 (,Review,),定义:通常在审查会后进行,审查小组根据记录和报告进行评估。,注意:,充分审查了所规定的代码,并且全部编码准则被遵守。,审查中发现的错误已全部修改。,有关实践问题,5.4,动态测试技术的运用,动态测试需要真正将程序运行起来,需要设计系列的测试用例保证测试的完整性和有效性。,白盒测试,黑盒(灰盒)测试,白盒测试方法,主要要逻辑驱动法和基本路径法。,语句覆盖。,判定覆盖。,条件覆盖。,判定,/,条件覆盖。,条件组合覆盖。,路径覆盖。,循环覆盖。,黑盒测试方法,运行单元程序有时需要基于被测单元的接口,开发相应的驱动模块和桩模块。,驱动模块(,drive,),:,对底层,或子层模块进行测试所编写的,调用这些模块的程序。,桩模块(,stub,):对顶层或,上层模块进行测试时所编写的,替代下层模块的程序。,黑盒常用方法,等价类划分法,边界值分析法,错误推测法,因果图法,另外还得考虑接口测试、性能测试、内存测试,性能分析,内存分析,5.6,调试与评估,调试与测试的对象及采用的方法有很大程度上的相似,调试还用到断点控制等排错方法,但其目的却完全不同。测试是为了找出软件中存在的缺陷,而调试是为了解决存在的缺陷。,软件单元功能与设计需求一致。,软件单元接口与设计需求一致。,能够正确处理输入和运行中的错误。,在单元测试中发现的错误已经得到修改并且通过了测试。,达到了相关的覆盖率的要求。,完成软件单元测试报告,5.6,单元测试的过程和文档管理,过程,:,在详细设计阶段完成单元测试计划。,建立单元测试环境,完成测试设计和开发。,执行单元测试用例,并且详细记录测试结果。,判定测试用例是否通过。,提交,单元测试报告,。,单元测试的文档,软件需求规格说明书,、,软件详细设计说明书,单元测试计划,单元测试计划,、,软件详细设计说明书, ,单元测试用例,单元测试用例,文档及,软件需求规格说明书,、,软件详细设计说明书, ,缺陷跟踪报告,/,缺陷检查表,单元测试用例,、,缺陷跟踪报告,、,缺陷检查表, ,单元测试检查表,评估,单元测试报告,
展开阅读全文