遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

自动化测试框架: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

 

posted @ 2019-05-11 22:44  全栈测试笔记  阅读(15407)  评论(2编辑  收藏  举报
浏览器标题切换
浏览器标题切换end