单元测试与IPlat课件

上传人:我*** 文档编号:141497786 上传时间:2020-08-09 格式:PPT 页数:49 大小:215KB
返回 下载 相关 举报
单元测试与IPlat课件_第1页
第1页 / 共49页
单元测试与IPlat课件_第2页
第2页 / 共49页
单元测试与IPlat课件_第3页
第3页 / 共49页
单元测试与IPlat课件_第4页
第4页 / 共49页
单元测试与IPlat课件_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《单元测试与IPlat课件》由会员分享,可在线阅读,更多相关《单元测试与IPlat课件(49页珍藏版)》请在金锄头文库上搜索。

1、单元测试与IPlatform,李春雷 2007-3-9,单元测试,单元测试概念,技巧 IPlatform单元测试策略 自动化测试与每日/每周构建,什么是单元测试,单元测试是指针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。,测试种类,单元测试的重要性,帮助确保产品质量。 有助于为每个class定义需求。 详尽的测试套件(test suite)是强大而重要的文档。 详尽的测试套件可让我们进行有效的回归测试。 详尽的测试套件使重构变得有保障。 使修正bug变得容易。,编写单元测试(JUnit),testcase import junit.framework.TestCase; cla

2、ss 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();

3、suite.addTest(new TestXXX(testXXX); /suite.addTest(new TestXXXX(. return suite; ,单元测试为何难实施,代码太难测试 迫于项目进度要求 开发者不原意写单元测试 用“临时测试”代替“结构化的单元测试”,单元测试目标,独立进行测试 独立的测试每个类:每个测试用例只应该测试一个class。 采用降低耦合度的技术; “编写可测试的代码”的目标可以摧生出高质量的程序代码 自动化测试,提高可测试性的技巧,针对接口编程,而非针对类编程 使用Strategy模式 迪米特法则:对象只应该调用自己触手可及的对象。 确保每个对象有合理的责

4、任集 IoC AOP,Strategy pattern,Strategy Pattern 参与者: Strategy:策略参与者,规定使用策略的接口(API)的参与者 ConcreteStrategy:具体策略参与者 Context:(上下文)参与者,Strategy pattern,单元测试技巧,替换对象(test stub) 可以用stub替换真正代码。目的是用一个简单一点的行为替换一个复杂的行为,从而允许独立的测试代码的一部份。 模仿对象(mock object) 用来替换与你的代码协作的对象的对象。 你的代码可以调用mock object的方法。Mocks不实现任何逻辑,它只需要满足测

5、试类调用它时,有最底限度的应答。,编写有效测试,反向测试:测试异常情况下代码的表现 等价划分:把输入按照特征进行分类。 测试用例应当经济,同时又保持自描述性。 尽量不要依赖外部配置 必要时对测试套件进行重构。 避免编写有副作用的测试,单元测试最佳实践,观念:除了可运行的代码,测试套件比其他任何东西都重要 小步前进:反对一次性编写一大堆测试套件;应测试一点,实现一点。 首先编写独立于代码的测试 在修正某个bug前,先编写一个单元测试,来表现这个bug 即使编写依赖于J2EE API的代码,也应确保它能脱离应用服务器进行单元测试。,单元测试最佳实践,把任何代码提交到CVS前,完整的运行测试套件 测

6、试的名字要有意义 不要依赖于测试用例的先后顺序 如果用到了配置文件,从classpath来加载。 在IDE中运行单独的测试。 编写ANT脚本来运行所有测试,以及进行测试覆盖率分析,单元测试最佳实践,使用模仿对象来避免对外部资源的依赖 在必要的时候重构测试代码。 未实现的方法,让其抛出异常。 每个测试(JUNIT测试方法)只测试一件事情。 要保证测试代码的简单性,如果测试代码本身就很复杂,就会导致测试代码本身可能也有Defect。另一方面,如果测试代码很复杂,往往说明被测试代码的设计不合理,接口不清晰,需要重新设计或是Refactory。,IPlatform测试策略,IPlatform模块性质分

7、类,普通java项目(POJO对象) co-common,co-jsf-component, co-ntelagent,IService ejb项目 IBP,IDataManager,IProxy Web项目 IWeb,POJO对象的单元测试,项目目录结构如下: 其中:源码存放在Src目录中,对应的JUnit的testcase存放在test目录中,POJO对象的单元测试,在WSAD/Eclipse/RATIONAL中,运行JUnit test,可以得到:,EJB的单元测试,由于EJB是依赖容器的组件,这一特性决定了对它的测试具有一定的难度。针对EJB的测试也可以采用不同的策略 Facade策略

8、 采用JUnit 应用程序客户机,EJB的单元测试,Facade策略 可以认为EJB就是一个提供remote访问能力与事务管理的一个壳,将所有的业务逻辑放入POJO中。这样就可以较容易的对业务逻辑编写单元测试了。采用这种策略,就需要对不符合测试要求的Ejb进行重构。,EJB的单元测试,采用JUnit: 采用JUnit对ejb进行单元测试也是一个可行的方法。不过JUnit的testcase是在ejb容器外运行的,所以只能调用ejb的远程接口对其作单元测试。采用这种策略,就要求我们编写的sessionbean提供远程接口,并且在进行junit测试前,要把该EJB部署到应用服务器。,EJB的单元测试

9、,应用程序客户机: Ejb如此难测试,幸运的是WSAD/Rational提供了“应用程序客户机”作为ejb容器内测试的工具。,EJB的单元测试,应用程序客户机: 在IPlateform企业应用程序中,新建一个“应用程序客户机项目”EJBClientTest,为三个EJB项目建立三个package:,EJB的单元测试,用local或remote接口编写ejb客户端测试程序。,EJB的单元测试,应用程序客户机: 修改META-INF/MANIFEST.MF,把“Main-Class:”设置为需要运行的ejb客户端测试程序。 运行“应用程序客户机”,就可以进行ejb的容器内测试了,taglib的单元

10、测试,可以采用cactus对taglib进行单元测试: Cactus是用来对服务端java代码进行单元测试的开源框架。Cactus框架把容器对象(HttpServletRequest,HttpSession,PageContext等)提供给测试,这样就使得对taglib的测试变得相对容易。,JSP的测试,IWeb模块采用的是JSF技术。对于UI层的测试,建议采用自动化测试工具做功能测试。对每一个用户交互操作,都需要建立相应的testcase,以期达到较高的测试覆盖率。,JSP的测试,B/S自动化测试工具: Mercury QuickTest Pro 是一款领先的自动化测试解决方案,用于创建功能

11、和回归测试。它自动捕获、验证和重放用户的交互行为。采用该测试工具,可以避免手工测试带来的大量时间人力的投入,避免人为操作产生的测试不确定性,对于IPlatform项目具有较大吸引力 。,JSP的测试,Mercury QuickTest Pro 测试流程: 准备录制 录制应用程序上的会话 增强测试 调试测试 运行测试,分析测试结果 报告缺陷,自动化测试与每日构建 -ant,ANT简介,ANT简介 Ant是Apache提供给Java开发人员的构建工具 ,可以让开发人员快速配置软件生命周期中各阶段的过程。 ant的创建过程使用一个XML文件(build.xml)进行描述.所有的构建步骤都可以在该文件

12、中进行装配描述。,ANT简介,项目,目标(target),任务(task),Ant 脚本示例,Targets: Clean Compile Compiletest Backuptar backup2ftp Junittest Doc Package all,Ant 脚本示例- clean, ,Ant 脚本示例- compile, ,Ant 脚本示例- compiletest, ,Ant 脚本示例- backuptar, ,Ant 脚本示例- backup2ftp, ,Ant 脚本示例- junittest, ,Ant 脚本示例- doc, co-common All Rights Reserved. ,Ant 脚本示例- package, ,Ant 脚本示例- all, ,Ant 命令参数,每日构建,每日构建 开发项目的成功与否部分取决于构建过程的准确性、可靠性和可重复性。每个构建都必须使用正确版本的源代码文件、依赖性库模块以及编译和汇编工具。 确保每个构建的准确性、可靠性和可重复性的最好方法就是使构建过程自动化。,每日构建,编写调用ant脚本的批处理文件 使用操作系统的调度任务,每日/每周调度ant构建。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号