单元测试与测试策略project.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单元测试与测试策略project

单元测试 李春雷 2007-3-9 单元测试 单元测试概念,技巧 单元测试策略 自动化测试与每日/每周构建 什么是单元测试 单元测试是指针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 测试种类 单元测试的重要性 帮助确保产品质量。 有助于为每个class定义需求。 详尽的测试套件(test suite)是强大而重要的文档。 详尽的测试套件可让我们进行有效的回归测试。 详尽的测试套件使重构变得有保障。 使修正bug变得容易。 编写单元测试(JUnit) testcase import junit.framework.TestCase; class TestXXX extends TestCase { public void setup(){ //initialize } public void testXXX1() { //assert the result is expected. } public void tearDown() { // } } 编写单元测试(JUnit) TestSuite import junit.framework.TestSuite class ClientTestSuite extends TestSuite { public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new TestXXX(testXXX)); //suite.addTest(new TestXXXX(... return suite; } } 单元测试为何难实施 代码太难测试 迫于项目进度要求 开发者不原意写单元测试 用“临时测试”代替“结构化的单元测试” 单元测试目标 独立进行测试 独立的测试每个类:每个测试用例只应该测试一个class。 采用降低耦合度的技术; “编写可测试的代码”的目标可以摧生出高质量的程序代码 自动化测试 提高可测试性的技巧 针对接口编程,而非针对类编程 使用Strategy模式 迪米特法则:对象只应该调用自己触手可及的对象。 确保每个对象有合理的责任集 IoC AOP Strategy pattern Strategy Pattern 参与者: Strategy:策略参与者,规定使用策略的接口(API)的参与者 ConcreteStrategy:具体策略参与者 Context:(上下文)参与者 Strategy pattern 单元测试技巧 替换对象(test stub) 可以用stub替换真正代码。目的是用一个简单一点的行为替换一个复杂的行为,从而允许独立的测试代码的一部份。 模仿对象(mock object) 用来替换与你的代码协作的对象的对象。 你的代码可以调用mock object的方法。Mocks不实现任何逻辑,它只需要满足测试类调用它时,有最底限度的应答。 编写有效测试 反向测试:测试异常情况下代码的表现 等价划分:把输入按照特征进行分类。 测试用例应当经济,同时又保持自描述性。 尽量不要依赖外部配置 必要时对测试套件进行重构。 避免编写有副作用的测试 单元测试最佳实践 观念:除了可运行的代码,测试套件比其他任何东西都重要 小步前进:反对一次性编写一大堆测试套件;应测试一点,实现一点。 首先编写独立于代码的测试 在修正某个bug前,先编写一个单元测试,来表现这个bug 即使编写依赖于J2EE API的代码,也应确保它能脱离应用服务器进行单元测试。 单元测试最佳实践 把任何代码提交到CVS前,完整的运行测试套件 测试的名字要有意义 不要依赖于测试用例的先后顺序 如果用到了配置文件,从classpath来加载。 在IDE中运行单独的测试。 编写ANT脚本来运行所有测试,以及进行测试覆盖率分析 单元测试最佳实践 使用模仿对象来避免对外部资源的依赖 在必要的时候重构测试代码。 未实现的方法,让其抛出异常。 每个测试(JUNIT测试方法)只测试一件事情。 要保证测试代码的简单性,如果测试代码本身就很复杂,就会导致测试代码本身可能也有Defect。另一方面,如果测试代码很复杂,往往说明被测试代码的设计不合理,接口不清晰,需要重新设计或是Refactory。 当前项目的测试策略 当前项目的模块性质分类 POJO对象的单元测试 项目目录结构如下: 其中:源码存放在Src目录中,对应的JUnit的testcase存放在test目录中 POJO对象的单元测试 在WSAD/

文档评论(0)

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

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

1亿VIP精品文档

相关文档