构建基于表单配置的 Jenkins 测试项目(接口、UI、APP、Jmeter)
1. 第一个 hello world 项目
2. 构建自动触发的项目(接口测试)
- 1)新建测试项目(执行测试脚本)
- 2)新建 Maven 打包项目
- 3)手动执行构建
- 4)修改 Web 工程代码并 push 到 Github,触发自动构建
- 5)邮件发送的构建日志
- 6)补充:构建编译 java 程序的任务
3. 构建 UI 测试项目
4. 构建 APP 测试项目
5. 构建 Jmeter 性能测试项目
1. 第一个 hello world 项目
先牛刀小试,构建一个手动触发的任务(项目名称:test_hello)。
1)新建任务
选择自由风格的项目:输入任务名称 test_hello:
2)General 配置
3)构建配置
保存后,测试任务配置完毕。
4)手动触发任务构建
执行日志如下:
2. 构建自动触发的项目流(接口测试)
本章节共包含两个项目:
- test_register_interface:用来执行测试脚本的项目。
- build_interface:用来从 github 或者 svn 拉取代码,编译、打包和发布。
其中 test_register_interface 项目的执行由 build_interface 触发,build_interface 的执行是通过 webhook 触发。
1)新建测试项目(执行测试脚本)
General
源码管理
https://github.com/juno3550/RegisterLoginWebProjectTestScript.git
如果输入 URL 后提示类似如下的错误:
那么需要在 Jenkins 中添加凭证 Credentials,也就是 gtihub 访问的用户名和密码。
可选配置(Advanced clones behaviours):
Repository URL 获取方法如下:
构建触发器
用来指定哪个任务执行完毕后自动触发本任务执行。也可以在 build_interface 任务中通过 Post-build Actions 配置项设置。
构建
脚本说明:
# windows 下没有 sleep 函数,用以下 3 行间接实现等待 3 秒 echo off ping 0.0.0.0 -n 3 > null echo on # 执行 registerTest_hotpoint.py 脚本 # 参数 127.0.0.1:8080/IDEAmaven,表示访问的网址,测试脚本会拼接为完整的路径 py -3 registerTest_hotpoint.py 127.0.0.1:8080/IDEAmaven
保存后,测试任务配置完毕。
2)新建 Maven 打包项目
General
源码管理
https://github.com/juno3550/RegisterLoginWebProject.git
可选配置:
构建触发器
Build
Root POM:指定构建时的 pom.xml,windows 下可以不写绝对路径。如果想配置绝对路径的话一般指定 Jenkins 的工作空间即可,默认的情况下:C:\Users\电脑用户名\.Jenkins\workspace\jenkins项目名称\pom.xml。
Goals and options:以下 3 种任选其一:
- clean package -DskipTests=true
- clean install package '-Dmaven.test.skip=true'
- clean install -Dmaven.test.skip=true
说明:
- clean 表示清除 class 文件;package 表示打包但不发布到本地库;install 表示打包并发布到本地库;-DskipTests 表示跳过单元测试。
- 不配置这一项的话 war 包发布成功后,第 2 次构建再访问会返回 404。
构建后操作
我们选择 Deploy war/ear to a container 的方式,将打包后的 war 发布到 tomcat 的 webapps 目录中,步骤如下:
- WAR/EAR files:war 包所在的路径,相对于 Jenkins 项目的 workspace 目录的路径。
- Context path:相对于 tomcat 的 webapps 目录的路径。
增加扩展的邮件发送功能:
3)手动执行构建
以上配置完成后,可以在 Jenkins 首页可以看到所有构建的项目:
红色表示构建失败;蓝色表示构建成功。
构建 build_interface 项目(打包部署 war 包,并会自动触发 test_register_interface 项目进行测试),并查看详细的构建过程:
浏览器成功访问 http://127.0.0.1:8080/interface_proj/front/register 表示项目打包部署成功。
查看测试脚本项目日志,验证是否测试通过。
4)修改 Web 工程代码并 push 到 Github,触发自动构建
github push 日志
触发项目自动构建
触发 build_interface 建立的任务(部署 war):
触发测试脚本执行
触发的是 test_register_interface(测试项目):
5)邮件发送的构建日志
6)补充:构建编译 Java 程序的任务
通过 github 网站,找到构建的工程,在工程下新建一个目录 java(新建目录的方法,直接在输入框后加入\即可),新建一个 HelloWorld.java 的文件,具体代码如下:
class HelloWorld{ public static void main(String[] arr){ System.out.print(" HELLO WORLD"); } }
在构建界面的输入框中的执行 Windows 批处理命令,为如下:
py -3 a.py javac ./java/HelloWorld.java cd java java HelloWorld
3. 构建 UI 测试项目
General
源码管理
https://github.com/juno3550/UIKeywordFramework.git
构建
构建后操作
这里选择的是扩展的邮件插件,可以根据实际的项目需求定制收件人,邮件内容等信息。
注意:
1. 添加完插件后,需要单击右下角的“Advance settings”按钮,这样才能定制构建失败时的邮件信息,构建成功时的邮件信息等等。
2. 该插件的收件人默认都是 Developers 列表,如果 Jenkins 的全局配置中没有此项的话邮件发送失败,可以在 Manage Jenkins-->Configure System 中进行配置,也可以在此位置直接填写收件人邮箱。
构建日志信息
4. 构建 APP 测试项目
1)新建测试项目(执行测试脚本)
General
源码管理
构建触发器
用来指定哪个任务执行完毕后自动触发本任务执行。
构建
py -3 RunTest.py
@IF NOT %ERRORLEVEL% == 0 EXIT /b %ERRORLEVEL%
保存后测试任务配置完毕:
2)新建 Gradle 打包任务
General
源码管理
构建
脚本内容如下:
# 判断 com.example.calculator 应用是否已安装,如果已经安装则只先执行 uninstall adb shell pm list | findStr com.example.calculator && adb uninstall com.example.calculator # 安装打包的 apk adb install %WORKSPACE%\app\build\outputs\apk\app-debug.apk # 启动 app adb shell am start -n com.example.calculator/com.example.calculator.MainActivity
保存后测试任务配置完毕:
3)构建日志
打包项目构建日志:
执行脚本构建日志:
5. 构建 Jmeter 性能测试项目
Jenkins 执行 Jmeter 脚本有以下 2 种方式:
- Jmeter 脚本放在负载机中,然后 Jenkins 项目中写 shell 命令。
- Jmeter 脚本放在 Maven 工程中,然后 Jenkins 执行 maven verify,执行 pom.xml(pom 文件配置比较复杂)。
这里以第 1 种方法为例来进行说明。
1)安装插件
performance 插件
作用:将 jtl 文件展示为图表,生成性能测试报告。
安装流程:在“系统管理——插件管理——可选插件”中搜索并安装 performance 插件。
注意:安装过程中可能会超时,安装失败,需要FQ。若不能FQ可在以下网盘下载:
https://pan.baidu.com/s/1YZ0C7ld1R-3RoGsQEZAQYA(提取码:u3vx)
下载完成后,在 Jenkins 界面中系统管理-管理插件下,在管理插件页面点击高级,在高级页面,找到上传插件栏,上传该插件。
HTML Publisher 插件
作用:会在新建或者编辑项目时,在【增加构建后操作步骤】出现【Publish HTML reports】的选项,用来生成 HTML 报告。
解决无法正常显示 HTML 报告的方法:
publish html report 由于安全问题,默认不支持 js css 等。这个就是为什么你 extent 报告能在本地浏览器打开,显示很美观,但是到了 Jenkins 页面上就格式很难看。解决方法如下:
进入 Manage Jenkins-->Script Console,输入以下内容,单击右下角的运行:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","script-src'unsafe-inline'")
注意:执行完成后,需要多次强制刷新(shift+F5)展示失败的页面。或者重新构建一次该任务
参考链接:https://www.jianshu.com/p/16f5b01cc9c0
2)新建测试项目
General
构建
输入执行命令:
# 切换到 d 盘 d: # 进入 jmeter 安装目录 cd D:\apache-jmeter-5.1.1\bin # 执行脚本并保存日志 jmeter -n -t ..\20190803\sampler.jmx -l %WORKSPACE%\%JOB_NAME%20190812.jtl
构建后操作
此插件在任务运行期间会产生一些图表来保持跟踪整体的响应数据和错误数,每一个 jtl 文件对应生成一个独立的图。
- Source data files (autodetects format) :生成报表的结果文件 **/*.jtl。
- Regex for included samplers:通过正则匹配需要筛选的采样器。
- Select evaluation mode:Expert Mode(专家模式)、Standard Mode(标准模式)。
- Standard Mode:
- Select mode:Relative Threshold(相对阈值)、error threshold(错误阈值)。
- Use Error thresholds on single build:使用单个生成的错误阈值。
- Unstable:不稳定的阈值,默认为 -1 表示忽略。
- Failed:失败的阈值,默认为 -1 表示忽略。
- Average response time threshold:平均响应时间的阈值,例如 JMeterResultsOrders.jtl:2000。
- Use Relative thresholds for build comparison:使用相对阈值进行构建比较。
- Unstable % Range:不稳定范围。
- Failed % Range:失败范围。
- Compare with previous Build:和前一个构建进行比较。
- Compare with Build number:和指定的构建号进行比较。
- Compare based on:在什么基础上比较。可选的下拉列表项有:median response time(中值请求时间)、percentile response time(百分百请求时间)、average response time(平均请求时间)。
3)性能测试报告