五:覆盖测试
覆盖测试是衡量测试质量的一个重要指标。在对一个软件产品进行了单元测试、组装测试、集成测试以及接口测试等繁多的测试之后,我们能不能就此对软件的质量产生一定的信心呢?这就需要我们对测试的质量进行考察。如果测试仅覆盖了代码的一小部分,那么不管我们写了多少测试用例,我们也不能相信软件质量是有保证的。相反,如果测试覆盖到了软件的绝大部分代码,我们就能对软件的质量有一个合理的信心。
1、覆盖测试与JUnit的关系
可以看到,覆盖测试会防止大量无用的垃圾代码存在,给后面的代码维护减轻负担。一般来说,覆盖测试都是在单元测试阶段完成的,不再单独设置测试用例。因此,我们可以说,我们使用cobertura作为覆盖测试的工具,但是cobertura是基于JUnit的。
2、覆盖测试—在maven中使用cobertura
使用cobertura的时候,直接复用JUnit的测试用例。我们可以在ant或maven中使用cobertura,但是ant的脚本及其复杂,官方例子中的build.xml长达147行,而且及其复杂。因此,我们选用maven的。在maven里就简单多了!
mvn cobertura:cobertura,即可。
观察输出的结果中的行覆盖率和分支覆盖率。
3、持续集成定义
持续集成(continuous integration)CI
持续集成是频繁、持续的在多个团队成员的工作中进行集成,并且给与反馈。
一个典型的持续集成周期包括以下几个步骤:
1. 持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。
2. 如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
3. 等代码完全更新以后,调用自动化编译脚本,进行代码编译。
4. 运行所有的自动化测试。
5. 进行代码分析。
6. 产生可执行的软件,能够提供给测试人员进行测试。
持续集成实践的目的不是减少Build失败的次数,而是尽早发现问题,在最短的时间内解决问题,减少风险和浪费。持续集成服务器本质就是一个定时器,自动帮你进行测试及集成。需要版本控制服务器(CVS、SVN、GIT),持续集成服务器(TeamCity、Hudson )。
我们在这里使用SVN 和 Hudson 这两个服务器来做持续集成。下面先学习一下Hudson吧。
Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
Hudson的特性
易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。
易于配置-所有配置都是通过其提供的web界面实现。
集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail 实时通知。
生成JUnit/TestNG测试报告。
分布式构建支持-Hudson能够让多台计算机一起构建/测试。
文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。
持续集成是原理
1、每隔一段时间检查SVN上代码是否更新
2、编译代码,执行单元测试及执行测试。
3、有错误发邮件等通知开发人员。
4、开发人员纠错,提交代码。
使用Hudson
1、下载获得Hudson的war包,并发布在tomcat上。
2、对整个Hudson进行整体配置。
3、设置JAVA_HOME
4、设置MAVEN_HOME
5、设置maven参数-Xms128M -Xmx512M
6、邮件相关
7、持续集成—Hudson
创建项目
1、输入项目的svn
2、构建触发器
我们通常用每隔多长时间自动询问svn服务器或每天的什么时候自动询问svn服务器。
This field follows the syntax of cron(with minor differences). Specifically, each line consists of 5 fields separated by TAB or whitespace: MINUTE HOUR DOM MONTH DOW
MINUTE Minutes within the hour (0-59)
HOUR The hour of the day (0-23)
DOM The day of the month (1-31)
MONTH The month (1-12)
DOW The day of the week (0-7) where 0 and 7 are Sunday.
* * * * * :每分钟。
5 * * * * :每小时中的第5分钟。
*/10 * * * *:每隔10分钟。
3、构建后发送email
45 10 * * 1-5 :每周一到周五的上午10:45。
0,30 * 13 * 5 :每月13号的每半小时,或者每周五的每半小时。
3、构建后发送email
我们需要指定maven的编译插件的编译语种,否则不能执行
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
这块因没有代码演示,只是安装配置一个软件而已,so easy的!相信大家都能搞定!
如果有问题可以邮件联系。