Jenkins+maven+jmeter接口可持续集成自动化测试

转载:http://blog.csdn.net/fengzhen200000/article/details/73187762

作者:bee131

  

说到接口我们都能想到jmeter这个工具,但是我们如何借助jenkins来做可持续集成自动化的测试呢?下面就是我对jenkinsmavenjmeter做的可持续化集成环境搭建的学习心得。

一,jmeter脚本录制

这一步就是录制Jmeter脚本,确保脚本能正确运行。

二,建立一个maven工程

1,打开eclipse,点击File->New->Project->Maven Project

 

 

 

2,创建maven工程后,在工程目录下新建所需的文件夹

--Src/test/resources --存放报告模板文件

--src/main/

--src/test/jmeter --存放jmeter脚本文件跟一些接口调用的参数

--target/jmeter/bin --target存放结果的根目录

--target/jmeter/html

--target/jmeter/html1

--target/jmeter/lib

--target/jmeter/logs

--target/jmeter/results

--target/maven-archiver

--target/surefire

 

3,编辑pom.xml文件

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
             
             
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>testDemo</groupId>
<artifactId>bluemoon</artifactId>
<version>1.11</version>
<name>bluemoon Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.13</version>
</dependency>
<!-- <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_jdbc</artifactId>
<version>2.11</version> </dependency> <dependency> <groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId> <version>10.2.0.5</version> </dependency> -->
<!-- MySql 5.5 Connector -->
</dependencies>
<properties>
<jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir>
<jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir>
<jmeter.result.html.dir1>${project.build.directory}\jmeter\html1</jmeter.result.html.dir1>
<ReportName>TestReport</ReportName>
</properties>
<pluginRepositories>
<pluginRepository>
<id>Codehaus repository</id>
<url>http://repository.codehaus.org/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<finalName>bluemoon</finalName>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>1.10.0</version>
<configuration>
<resultsFileFormat>xml</resultsFileFormat>
<ignoreResultFailures>true</ignoreResultFailures>
<testResultsTimestamp>flase</testResultsTimestamp>
</configuration>
<executions>
<execution>
<id>test</id>
<phase>verify</phase>
<goals>
<goal>jmeter</goal>
</goals>
<!-- <configuration> <resultsFileFormat>csv</resultsFileFormat> </configuration> -->
</execution>
</executions>
</plugin>
<!-- <plugin> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_jdbc</artifactId>
<version>2.11</version> </plugin> -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>src\test\jmeter\lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>${jmeter.result.jtl.dir}</dir>
<stylesheet>src\test\resources\jmeter-results-detail-report_21.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir}</outputDir>
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>html</targetExtension>
</fileMapper>
</fileMappers>
</transformationSet>
<transformationSet>
<dir>${jmeter.result.jtl.dir}</dir>
<stylesheet>src\test\resources\jmeter.results.shanhe.me.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir1}</outputDir>
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>html</targetExtension>
</fileMapper>
</fileMappers>
</transformationSet>
</transformationSets>

</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/jmeter/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>theMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<defaultGoal>clean</defaultGoal>
</build>
</project>
来自CODE的代码片
snippet_file_0.txt

4,调试工程,确保工程能正常运行

三,安装jenkins跟一些必要的插件

1,下载对应windows安装的jenkins

 

2,安装好jenkins后本地启动jenkins,进入插件管理界面,国内由于被墙了,所以需要配置一下。系统管理->管理插件->

高级->升级站点 中输入:http://updates.jenkins-ci.org/update-center.json 提交保存后,在地址栏输入

http://localhost:8080/restart重启,再次进入插件管理界面这时可选插件界面就会有内容了

 

3,需要安装的插件

Maven Integration plugin        Maven插件

Performance plugin 性能报告插件

HTML Publisher plugin HTTP report插件

Git plugin GIT 插件

 

4,插件安装好后,就可以新建一个项目了,这里我们选择构建一个maven项目,名称为bluemoon

选择Git,输入Git服务器的URL地址,用户名跟密码

Build选项中输入pom.xml文件路径

添加构建后操作,增加一个Publish HTML reportshtml directory to archive为转译后html文件的保存路径,

index pages 为转译后的文件名称,report title jenkins中显示的标题

构建后操作还可以添加邮件服务模块,就是构建成功后会发送邮件通知,这里就不举例了。

 

5,点击应用,保存。这时就可以点击立即构建来触发构建功能了

6,Console putput可以查看输入日志,方便构建时查看哪里出现的问题

7,构建成功后,我们就可以查看脚本运行后的结果,点击performacefunction来查看

这里可以看到生成的htmljenkins使用html publisher查看报告时,发现显示不美观,不全的现象,很多东西显示不了

在查看官方文档后,这原来是安全问题所导致的。

Jenkins安全默认是将以下功能都关闭了

1javascript2html上的内置插件3、内置css或从其它站的css4、从其它站的图处5AJAX

我的网页使用的是css,所以显示不全。

解决这个问题可以在jenkins系统管理中输入以下脚本运行,就可以解决这个问题了

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

四,最终效果

五,遇到的其他一些问题

1、当我们jmeter脚本中要运用jdbc来连接数据库时,此时是需要jdbc驱动的,这里解决的办法就是在dependecy中增

加依赖,然后再把这个依赖包拷贝到targetlib库中,这样用于引用jdbcjar包就放到了lib中,也就解决了找不到jdbc

驱动的问题

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
             
             
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.13</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/jmeter/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>theMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
来自CODE的代码片
snippet_file_0.txt
2、如下图中,报告中有写图标是没有显示出来的,造成这个问题的原因是我们用jenkins持续集成时把把代码拷到target工程中没有把相应的图标拷贝过去,那么我们只
要把这个图标拷贝过去不就可以解决了吗?答案是肯定的。
这里我在pom文件中添加了一个插件,代码如下:
  
  
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
             
             
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- test可以在环境变量中定义,也可以将下面写成绝对地址 -->
<outputDirectory>${project.build.directory}/jmeter/html</outputDirectory>
<resources>
<resource>
<!-- basedir标识所有工程 -->
<directory>${basedir}/src/test/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
来自CODE的代码片
snippet_file_0.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值