8软件测试:单元测试解释.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 复杂参数做成接口或Struct 测试驱动开发、功能分解细粒度化 分层控制 增加抽象的层次减少耦合。设计模式 单元函数调用特点 OpenDoor() Animo() PutElephantIntoIcebox() 被调用者 被调用者 单元函数 单元函数不是一个独立可运行的程序,怎么单独测试它? 单元函数调用了一个未编写的函数怎么办? 【示例】某动画场景:把大象放到冰箱中的故事。 抽象 CloseDoor() 调用者 。。。 PutInIceBox() 。。。 单元测试模型:驱动和桩 驱动模块:被测试模块的上一级调用者,把测试数据传递给被测试单元 桩模块:被测试单元需调用的其它函数接口,模拟生成测试数据或状态,为单元运行准备动态环境 测试用例和测试结果在测试模型中体现的? 桩模块 被测试单元 桩模块 驱动模块 测试用例 测试结果 名词术语 单元测试模型:驱动模块示例 桩模块 被测试单元 桩模块 驱动模块 测试用例 测试结果 testcase1 testcase2 … @test @Test public void testcase1() { assertEquals(hw.Exercise_3_6(1,11),11); } @Test public void testcase2() { assertEquals(hw.Exercise_3_6(1,-1),0); assertEquals Exercise_3_6() -测试用例本身即是驱动模块,直接调用被测试单元 -通过测试数据不同表现为不同测试用例 单元测试:桩模块示例 看一段程序代码:假如你有设置一个定时闹钟,每天早晨6点定时播放起床音乐 public abstract Environmental { boolean playedWav = false; public abstract long getTime(); public abstract void playWavFile(String fileName); public abstract boolean wavWasPlayed(); public abstract void resetWav(); } public class SystemEnvironment extends Environmental { public long getTime() { return System.currentTimeMillis(); } … } public class MockSystemEnvironment extends Environmental { private long currentTime; public long getTime() { return currentTime; } … } 单元测试:桩模块示例 Mock测试:产品代码所依赖的某些对象,用虚拟对象代替。 使用一个接口来描述这个对象 在产品代码中实现这个接口 在测试代码中实现这个接口 在被测试代码中通过接口引用对象 (不知引用的是真实对象还是mock对象) Interface 被测试单元 桩模块 驱动模块 测试用例 测试结果 Class MockClass Environmental MockSystemEnvironment SystemEnvironment 单元测试:用例设计 为系统运行起来而设计用例 第一个测试用例证明环境和被测单元可用、具备开始测试条件 为正向测试而设计用例 验证设计文档或函数说明的功能项 为逆向测试而设计用例 验证被测单元没有做它不应该做的事情 为代码覆盖而设计用例 为达到特点的测试覆盖目标 为满足非功能质量要求而设计用例 性能、安全性等,特别是要求高的关键代码 单元测试:测试数据 正常数据: 在测试中所用正常数据量是最大的,也是最关键的。 边界数据: 是界于正常数据和错误数据之间的一种数据。 异常数据: 编写与程序输入规范不符的数据,从而验证输入校验、错误处理等程序分支。 单元测试:覆盖率 单元测试用例需考虑达到的覆盖率要求 逻辑覆盖:基于语句,基于路径与条件组合 功能覆盖:功能点 单元测试策略需考虑满足覆盖率基础上减少单元测试工作量 给被测单元规划一个良好的测试顺序,尽可能减少测试桩的编写。 SUT测试策略:先完成高层被测单元黑盒测试,统计白盒覆盖率,针对未覆盖的逻辑单位再设计测试用例覆盖它。 A C1 B1 B2 C2 基于语句是最基本覆盖 基于路径+条件组合是全覆盖 单元测试工具 代码规范审核工具 CheckStyle 静态分析工具 SourceMonitor Logiscope,McCabe QA,CodeTes

文档评论(0)

ss55863378 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档