自动化测试框架:jmeter + maven+ jenkins
原理:jenkins驱动maven执行,maven驱动jmeter执行
前提条件:windows安装了jmeter、maven、tomcat、jenkins
安装方法参考汇总目录中对应的博文:https://www.cnblogs.com/uncleyong/p/10530261.html
说明
需要用到的三方jar,请提前放到你jmeter安装目录下的lib/ext目录下
比如你要连接mysql,需要将驱动mysql-connector-java放lib/ext目录下
maven驱动jmeter执行
新建一个maven项目(这里我用idea,当然,也可以用eclipse)
maven坐标
项目名
在test下新建两个文件夹:
resources:放文件的处理
jmeter:放jmeter的处理
新建jmeter脚本
我这里使用这个jmx脚本(jmeter5.1下写的):https://gitee.com/uncleyong/javaMockServer/blob/master/javaMockServerV1/src/main/java/com/uncleyong/mockserverv1/javaMockServerV1.jmx
或者加作者微信获取
将jmx文件放到新建的jmeter文件夹中
jemter的bin下,这5个核心配置文件复制到新建的jmeter文件夹中
jmeter.properties文件中,输出格式改为xml,即:jmeter.save.saveservice.output_format=xml,注意要去掉前面的#
文件夹resources放报告模板文件
上面复制到文件夹resources
修改pom文件内容(加作者微信获取)
双击verify(或者pom目录下,命令行中执行mvn verify)
下面6表示6个请求
生成相关文件夹
html1中文件
html2中文件
失败的请求
html3中文件
查看结果树打开jtl文件
聚合报告打开jtl文件
集成jenkins
启动tomcat,打开jenkins
安装插件
创建maven项目的插件
生成html报告的插件
读取jtl文件出报告的插件
在jenkisn中配置环境变量,系统管理--全局工具配置
应用-保存
创建项目,选择maven
这里没源码管理就选择无
这里没源码管理,就写绝对路径
启动服务
java -jar javaMockServerV1-1.0-SNAPSHOT.jar
看日志
jenkins有一个bug,只能加一个htmlpublish,但是可以加多个文件,多个文件展示的时候展示最后一个文件
下面的展示效果,是因为只发了一次请求,可以并发后看效果图
补充:jenkins获取jmeter断言结果
jemter中断言报错,jenkins仍显示构建成功,要打开报告才能看到是否有报错信息,也就是说,jenkins是否构建成功和jmeter断言是否成功没有任何关系
方案一:shell,在jtl文件中去查找错误日志
方案二:判断jenkins控制台输出中是否包含Err
Jenkins的插件Text Finder可以检查输出的内容
构建后添加:
填写正则表达式:(?<=Err:)\s*\d*[1-9]
(?<=Err\:)\s*\d*[1-9]
?<=表示非获取匹配,反向肯定预查,参考:https://www.cnblogs.com/whaozl/p/5462865.html
(?:pattern)
|
非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
|
(?=pattern)
|
非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
|
(?!pattern)
|
非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
|
(?<=pattern)
|
非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
|
(?<!pattern)
|
非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。这个地方不正确,有问题
|
勾选对控制台输出日志判断
如果上面正则在日志中匹配到结果,则构建后状态更新为FAILURE:
说明:不要定义事务,可以放不同的线程组,串行执行即可
邮件发送
参考自动化测试框架【windows版】:JMeter + Ant + Jenkins:https://www.cnblogs.com/uncleyong/p/10739519.html
自动化测试框架【linux版】:JMeter + Maven+ Jenkins
本来计划单独写一篇,但是其实和本篇博文差不多,无非把路径改为linux下的路径。如果大家有问题,随时私聊我。
另外,也可以参考:自动化测试框架【linux版】:JMeter + Ant + Jenkins,https://www.cnblogs.com/uncleyong/p/10766480.html
其余自动化测试框架(汇总)
https://www.cnblogs.com/uncleyong/p/10650552.html
__EOF__
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!