您好,欢迎访问三七文档
第五章单元测试5.1什么是单元测试5.2单元测试的目标和任务5.3静态测试5.4驱动程序与桩程序5.5调试与评估5.6单元测试管理5.7单元测试工具5.1什么是单元测试测试的4个阶段:单元测试集成测试系统测试验收测试按阶段进行测试是一种基本的测试策略单元测试的定义定义:单元测试是对软件基本组成单元进行的测试。时机:一般在代码完成后由开发人员完成,QA人员辅助.对象:软件设计的最小单位——模块(组件、单元),z作为单元能够实现一个特定的功能,并和其他单元有明确的接口定义。单元测试目标:确保模块被正确地编码依据:详细设计描述过程:设计、脚本开发、执行、调试、分析结果执行者:测试人员和开发人员测试方法:白盒方法为主,辅以黑盒方法评估:通过所有单元测试用例,代码没有严重缺陷。为何要进行单元测试?尽早发现错误错误发现越早,成本越低.开发人员过于自信,后期复杂度高,发现解决BUG困难.检查代码是否符合设计和规范12小时6小时3小时单元测试集成测试系统测试单元测试的背景开发流程时间表与修改Bug代价的关系图开发结束开发早期修改代价单元测试的背景(续)编程过程中,每写100行代码会犯150个错误编程与编译运行结束后,每100行代码中大约残留有1-3个Bug寻找与修改程序错误的代价占总体开发投资的40%-80%Bug在整个研发流程中被发现的越早,修改的代价就越低5.2单元测试的目标和任务目标:单元模块被正确编码功能正确,结构可靠健全,并能在所有条件下正确响应。信息能否正确地流入和流出单元;在单元工作过程中,其内部数据能否保持其完整性,包括内部数据的形式、内容及相互关系不发生错误,也包括全局变量在单元中的处理和影响。在为限制数据加工而设置的边界处,能否正确工作。单元的运行能否做到满足特定的逻辑覆盖。单元中发生了错误,其中的出错处理措施是否有效。任务1:模块独立执行通路测试检查每一条独立执行路径的测试。保证每条语句被至少执行一次。(基本路径测试)Checklist:算符优先级。混合类型运算。精度不够。表达式符号。循环条件,死循环。其它任务2:模块局部数据结构测试检查局部数据结构完整性Checklist:不适合或不相容的类型说明。变量无初值。变量初始化或默认值有错。不正确的变量名或从来未被使用过。出现上溢或下溢和地址异常。其它任务3:模块接口测试检查模块接口是否正确,checklist:输入的实际参数与形式参数是否一致。个数、属性、量纲调用其他模块的实际参数与被调模块的形参是否一致。个数、属性、量纲全程变量的定义在各模块是否一致。外部输入、输出文件、缓冲区、错误处理其它任务4:模块边界条件测试检查临界数据处理的正确性Checklist:普通合法数据的处理。普通非法数据的处理。边界值内合法边界数据的处理。边界值外非法边界数据的处理。其它任务5:模块的各条错误处理通路测试预见、预设的各种出错处理是否正确有效。Checklist:输出的出错信息难以理解。记录的错误与实际不相符。程序定义的出错处理前系统已介入。异常处理不当。未提供足够的定位出错的信息。其它任务6:内存分析内存泄漏会导致系统运行崩溃。通过测量内存使用情况了解程序内存分配情况,发现对内存的不正常使用,在问题出现前发现征兆,在系统崩溃前发现内存泄漏错误;发现内存分配错误。5.3静态测试技术的运用定义:在不执行软件的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。有时也称为结构分析。作用:尽早发现软件缺陷,以找出动态黑盒白盒测试难以揭示或发现的软件缺陷为接受该软件测试的黑盒测试员进行测试设计测试案例提供思路,他们不必了解代码细节,但是根据审查备注,可以确定有问题或者容易存在软件缺陷的特性范围问题:认为会减慢软件开发过程。编码的标准和规范标准:建立起来,经过修补和必须遵守的规则。规范:建议最佳做法,推荐更好方法。坚持编程标准和规范的原因可靠性:事实证明按照按规范编写的代码更可靠,软件缺陷将更少;可读性/维护性:符合标准和规范的代码易于阅读,理解和维护;移植性:如果代码符合设备标准,迁移到另一个平台就会容易,甚至没有任何障碍。正式审查三部曲走查(WalkThrough)审查(Inspection)评审(Review)走查(WalkThrough)定义:编写代码的程序员向5人小组或其它类似的程序员或测试员做正式表述。注意:审查人员应该在审查之前接到软件拷贝,在走查前通读设计和编码,以便检查并编写备注和问题,在审查过程中提问。表述者现场采用讲解或模拟运行的方法解释代码如何工作。检查要点在于代码编写是否符合规范和标准,是否存在逻辑错误;限时,避免跑题。发现问题适当记录,避免现场修改。审查(Inspection)定义:是最正式的审查类型,具有高度组织化,采用讲解、提问方式进行,一般有正式的计划、流程和结果。主要方法采用缺陷检查表。注意:以会议形式,制定会议目标、流程和规则,结束后要编写报告。发现问题适当记录,避免现场修改。发现重大缺陷,改正后会议需要重开。按缺陷检查表逐项检查。检查要点是缺陷检查表,所以该表要根据项目不同不断积累完善。走查与审查的比较走查审查准备通读设计和编码应准备好需求描述文档、程序设计文档、程序的源代码清单、代码编码标准和代码缺陷检查表形式非正式会议正式会议参加人员开发人员为主项目组成员包括测试人员主要技术方法无缺陷检查表注意事项限时、不要现场修改代码限时、不要现场修改代码生成文档会议记录静态分析错误报告目标代码标准规范,无逻辑错误代码标准规范,无逻辑错误评审(Review)定义:通常在审查会后进行,审查小组根据记录和报告进行评估。注意:充分审查了所规定的代码,并且全部编码准则被遵守。审查中发现的错误已全部修改。单元测试实例一:基本路径测试四:等价类划分、边界值分析二、三:编程规范(静态检查)五:错误推测、错误数据六:性能检查单元测试实例白盒测试路径测试1:path1:P(1-2-3-4-5-6-7-8-9-10)path2:P(1-2-3-4-9-10)用例编号路径输入数据预期输出1path1100,100,100True2path2201,100,100False路径测试2:path1:P(11-12-13-14-23-24-25)path2:P(11-12-13-14-15-16-17-23-24-25)path3:P(11-12-13-14-15-18-19-23-24-25)path4:P(11-12-13-14-15-20-21-23-24-25)用例编号路径输入数据预期输出1path1201,100,100空格2path2100,100,100等边三角形3Path3100,90,80不等边三角形4Path490,90,100等腰三角形5.4驱动程序和桩程序驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。作用:接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。桩程序/桩模块(stub),又称为存根程序,用以模拟被测模块工作过程中所调用的模块。作用:由被测模块调用,一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口5.5调试与评估测试和调试是不同的。白盒测试的目标是寻找软件缺陷;调试的目的是修复软件缺陷。它们在隔离软件缺陷的位置和原因上确实存在交叉现象。测试员应该把问题缩减为能够演示软件缺陷的最简化测试案例。在白盒测试中,甚至要包含那些值得怀疑的代码行信息。进行调试的程序员从这里继续,判断到底是什么导致的软件缺陷,并设法修复。分清软件测试员和程序员的工作。程序员编写代码,修复软件缺陷;测试员寻找软件缺陷,可能还要编写一些代码来驱动测试,要进行这样的底层测试,就要使用与程序员相同的工具。具体操作方法不同5.5调试与评估单元测试的一般标准:软件单元功能与设计需求一致。软件单元接口与设计需求一致。能够正确处理输入和运行中的错误。在单元测试中发现的错误已经得到修改并且通过了测试。达到了相关的覆盖率的要求。完成软件单元测试报告单元测试检查表(1)借助单元测试检查表进行评估。案例:单元测试检查表单元名称___________系统_______________构造______________任务编号____________________初次测试日期_________________关键测试项是否已纠正1.有无任何输入参数没有使用?有无任何输出参数没有产生?2.有无任何数据类型不正确或不一致?3.有无任何算法与PDL或功能需求中的描述不一致?4.有无任何局部变量使用前没有初始化?5.有无任何外部接口编码错误?即调用语句、文件存取、数据库错误。6.有无任何逻辑路径错误?7.该单元是否有多个入口或多个正常的出口?单元测试检查表(2)额外测试项8.该单元中有任何地方与PDL与PROLOG中的描述不一致?9.代码中有无任何偏离本项目标准的地方?10.代码中有无任何对于用户来说不清楚的错误提示信息?11.如果该单元是设计为可重用的,代码中是有可能妨碍重用的地方?采取的动作和说明(请用单独的一页或多页。每一项动作必须指出所引用的问题。)审查结果1.如果上述11个问题的答案均为否,那么测试通过,请在此标记并且在最后签名。2.如果代码存在严重的问题,例如多个关键问题的答案为是,那么程序编制者纠正这些错误,并且必须重新安排一次单元测试。下一次单元测试的日期:_________________________3.如果代码存在小的缺陷,那么程序编制者纠正这些错误,并且仲裁者必须安排一次跟踪会议。跟踪会议的日期:_________________________测试人签名:__________________日期:_________________5.6单元测试管理过程:1.在详细设计阶段完成单元测试计划。2.建立单元测试环境,完成测试设计和开发。3.执行单元测试用例,并且详细记录测试结果。4.判定测试用例是否通过。5.提交《单元测试报告》。单元测试的文档1.《软件需求规格说明书》、《软件详细设计说明书》《单元测试计划》2.《单元测试计划》、《软件详细设计说明书》《单元测试用例》3.《单元测试用例》文档及《软件需求规格说明书》、《软件详细设计说明书》《缺陷跟踪报告》/《缺陷检查表》4.《单元测试用例》、《缺陷跟踪报告》、《缺陷检查表》《单元测试检查表》5.评估《单元测试报告》5.7单元测试常用工具简介单元测试工具(xUnit工具家族)Junit、CppUnit、NUnit、HtmlUnit等静态检查工具Checkstyle:对于代码规范的检查PMD:增强代码质量和修改代码的功能FindBug:检查二进制代码,寻找bug缺陷,并能进行优化单元性能测试工具SourceMonitor:为各种源代码文件测试代码的数量和性能。小结单元测试定义、目标和任务静态测试驱动程序与桩程序调试与评估单元测试管理单元测试工具练习P303页第4题黑盒测试:请分别用等价类划分法、边界值分析法和错误推测法对该程序设计测试用例;白盒测试:用基本路径法对该程序设计测试用例;格式要求举例:输入6位正整数黑盒测试测试用例的设计:满足条件1、123456(1)(2)(3)2、1234567(4)(2)(3)边界3、12345(5)(2)(3)边界4、-123456(1)(2)(7)5、123sss(1)(6)6、0边界7、1边界8、-1边界9、null错误推测法…Q&A
本文标题:软件测试单元测试
链接地址:https://www.777doc.com/doc-3605644 .html