第3章 单元测试学习 文档 参考.pptx

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;朱少民 Kerryzhu@tongji.edu.cn 同济大学软件学院;第三章 单元测试;目录; 编码和单元测试是软件开发的核心部分,在软件生命周期中经常是密不可分的,单元测试是后续系统持续集成的前提和基础。; 单元测试是针对软件的基本工作单元,进行正确性检验的测试工作。 ;3.1 如何开始单元测试; 实现功能:实现两个正整数或零的加法,如果其中有1个数小于或等于0,则返回0。; JUnit 4.x的最高版本为4.12,IDE则采用开源的Eclipse平台(官网最新的JUnit 5)。 JUnit是基于Java语言的开源测试框架,最??由Erich Gamma和Kent Beck编写,至今已经14岁了,是公认的目前众多单元测试框架中的典范。;三步快速建立测试脚本: 在Eclipse上创建一个Java项目。 新建测试用例窗口,输入相应信息。 选择被测的函数或方法, 【Finish】。;Assert类 Assert(断言)类是JUnit框架中非常重要的类,用于判断所返回的实际结果与预期结果是否相符。 Annotation标注 JUnit中以@引导标注测试类中不同方法的功能。 运行器Runner JUnit通过运行器Runner和显示测试执行结果。 ;3.1.4 JUnit工作原理;JUnit成员三重唱共同产生测试结果: 一个TestRunner运行一个TestSuite,该TestSuite可以由一个或多个TestCase(或者由其他TestSuite)所组成。运行结果由TestResult收集,由TestRunner来报告结果。 ;xUnit是指,对于各种不同编程语言单元测试有相应的框架系列的统称。 xUnit框架与JUnit框架大体相同,主要包括4大要素:测试Fixtures、测试集、测试执行和测试断言。 ;3.2 单元测试用例设计;拿到一段代码后,如何着手设计测试用例呢?;单元代码的自动化测试分三步: 1. 设计测试用例:分析流程图,进行代码行覆盖 2. 编写测试代码:单元测试框架,测试断言 3. 执行测试:测试结果; 语句覆盖(Statement Coverage)就是设计足够多的测试用例,使得程序执行了所有的语句的测试用例设计技术。语句覆盖是属于逻辑覆盖法中一种方法,所谓逻辑覆盖法就是通过对程序逻辑结构的遍历实现程序覆盖的一种白盒测试技术。; 想想看,语句覆盖测试是否有遗漏? 测试还需要覆盖程序中所有判定的“真” 和“假”,这种测试方法称为判定覆盖(Decision Coverage),也就是通过执行足够的测试用例,使得程序中的每个判定中的判定表达式的值为“真”和 “假”的分支都至少要执行一次的测试。; 判定覆盖已经覆盖了程序所有的路径,看起来似乎没有遗漏了? 设计足够多的测试用例,使得程序中每个判定表达式包含的每个条件的可能取值(真/假)都至少满足一次,这就是条件覆盖(Condition Coverage),也称为谓词覆盖(Predicate Coverage)。 ; 如果设计测试用例使得二者都满足,那么覆盖才是真正的加强,是判定-条件覆盖(Decision-Condition Coverage),也就是设计足够多的测试用例,使得程序中每个判定包含的每个条件的真和假都至少执行一次,并且每个判定本身的判定结果真和假也至少执行一次。; 为避免某个条件由于存在短路运算符问题而执行时被忽略,需要设计足够多的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少执行一次,并且每个判断本身的判定结果也至少执行一次,这称为多重条件覆盖(Multiple Condition Coverage)或组合覆盖。 测试步骤: 1、列出条件取值组合,为条件组合编号 2、设计覆盖所有组合的测试用例; 在测试工作中既需要一定逻辑覆盖度,又要有工作效率,考虑对条件组合覆盖,进行简化“修正”。 进一步分析被测程序,选出程序具备能独立影响判定结果的条件组合。这种方法称为修正条件-判定覆盖(Modified Condition/Descision Coverage MC/DC); 到现在为止逻辑覆盖似乎走到最强覆盖了? 而只有当程序中的每一条路径都受到了检验,才可能使程序受到全面检验。路径覆盖(Path Coverage)是设计足够多的测试用例,使得执行程序覆盖所有可能的路径 ; 由节点和控制流线组成的,描述程序控制结构的图形叫做控制流图(Control Flow Graph)。“控制流图”把程序结构抽象为只有两种图形来表示:圆圈和带箭头的线。; 控制流图排除与分支无关

文档评论(0)

文人教参 + 关注
实名认证
内容提供者

老师教学,学生学习备考课程、成人语言培训课程及教材等为提升学生终身学习竞争力,塑造学生综合能力素质,赋能学生而努力

版权声明书
用户编号:6103150140000005

1亿VIP精品文档

相关文档