性能测试-1-原理

话说:

难度系数:★★★☆☆
建议用时:2周

目标
初步搭建一个自动化测试框架,技术选型:Jenkins+Ant+Jmeter。


1、按照场景组织各个接口,整体按照指定场景顺序执行;
2、参数可注入(并发量threadsNumber、循环次数loop、以及各场景之间的coldDown、主机Ip、Token);
3、输出报告按照场景输出;
4、定期执行及邮件通知;
5、性能测试报告。


笔者前面间断发过3篇博客,分别介绍了:Jmeter的入门级使用、.jmx文件分析及Jmeter多场景传参。都比较零碎,没有系统化总结。今天系统化总结下,形成一个系列;并且尽可能详细,便于其他童鞋共同交流学习。

说下这三个工具的作用:

Jmeter——抛开压测不谈,这个工具和Postman类似,都可以用来做接口测试;Jmeter主要可以用来模拟高并发,这是最大的特点。比如:我想知道这个branch_center/video_list这个接口的瓶颈在哪里?能承受多少访问量?用JMeter可以很轻松的做到这一点。
在前后端分离架构中,接口组织顺序一般按照场景组织或者按照服务组织….按照业务场景组织,目的是查看各核心业务场景的并发访问情况,eg:首页视频列表这个核心业务场景,能承担100个并发量,在150个并发的时候,Error率为3%;按照服务组织接口,目的是为各服务后端开发提供一定的标准:eg:首页各模块列表接口响应时间要在200ms之内……

所以,我们用Jmeter要做这几件事:


1)按照核心业务场景,把接口组织起来。一个TestPlan下面,组织多个ThreadsGroup(业务场景),每个ThreadsGroup中放置该业务场景下多个接口;
2)各种参数写活,为Jenkins传参伏笔;
3)生成完备的.jmx文件,上传到Git;
4)其他。


来,感性认识一下下:

这里写图片描述

Ant——就是一个构建工具,用它来驱动.jmx文件,为什么要用它驱动?类似的驱动还有:Maven、Gradle等,ant是轻量化的,网上一般都是这么组合的,笔者也就“跟风”喽。最终的目的是自动化,不可能手动点击Jmeter的启动按钮,而是通过Jenkins的图形化界面去“构建”一下,这个构建背后的动作,其实就是一个Ant命令驱动.jmx文件。

在下载的Jmeter里面,有个extras目录,里面直接运行Ant即可。(前提是已经安装Ant),可见官方默认也是Jmeter和Ant集成,Ant去编译build.xml文件,按照配置文件去驱动响应的.jmx文件,生成一个.jtl文件,然后在主动把.jtl转换为.html网页,可以直接打开,就是报告。

所以,对于Ant来说,我们要做的事情:


1)搞定build.xml;
1、参数可注入;
2、指定运行的.jmx文件;
3、指定输出报告
2)打通Ant和Jmeter;


我们来看一下最原始的Jmeter中的extras文件夹中的Ant命令如何运作:

dzjdeMacBook-Air:extras dzj$ ls
GrafanaJMeterTemplate.json          collapse.png                        remote.bsh
Test.html                           execcode.bsh                        schematic.cmd
Test.jmx                            expand.png                          schematic.sh
Test.jtl                            jmeter-results-detail-report_21.xsl schematic.xml
addons.txt                          jmeter-results-report_21.xsl        schematic.xsl
addons.xml                          printvars.bsh                       startup.bsh
ant-jmeter-1.1.1.jar                proxycert.cmd
build.xml                           proxycert.sh
dzjdeMacBook-Air:extras dzj$ 

在Jmeter根目录下的extras目录下,直接运行ant命令,结果如下:

dzjdeMacBook-Air:extras dzj$ ant
Buildfile: /Applications/apache-jmeter-4.0/extras/build.xml

run:
     [echo] funcMode = false
   [delete] Deleting: /Applications/apache-jmeter-4.0/extras/Test.html
   [jmeter] Executing test plan: /Applications/apache-jmeter-4.0/extras/Test.jmx ==> /Applications/apache-jmeter-4.0/extras/Test.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /Applications/apache-jmeter-4.0/extras/Test.jmx
   [jmeter] Starting the test @ Tue May 22 12:42:45 CST 2018 (1526964165219)
   [jmeter] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
   [jmeter] summary =     30 in 00:00:03 =   11.2/s Avg:   208 Min:   103 Max:   345 Err:     2 (6.67%)
   [jmeter] Tidying up ...    @ Tue May 22 12:42:48 CST 2018 (1526964168425)
   [jmeter] ... end of run

_message_xalan:

xslt-report:
     [xslt] Processing /Applications/apache-jmeter-4.0/extras/Test.jtl to /Applications/apache-jmeter-4.0/extras/Test.html
     [xslt] Loading stylesheet /Applications/apache-jmeter-4.0/extras/jmeter-results-detail-report_21.xsl

verify-images:

copy-images:

report:
     [echo] Report generated at 2018/05/22 12:42

all:

BUILD SUCCESSFUL
Total time: 7 seconds
dzjdeMacBook-Air:extras dzj$ 

open Test.html

这里写图片描述

Jenkins——头像是个老爷爷。这个主要是用来构建的。我们会把所有的项目分门别类的划分出来,这样每次启动项目“构建”一次就好。“构建”背后的操作是:构建就是用相应的构建工具去驱动对应的脚本;比如:Gradle项目当构建的时候,驱动的就是gradle脚本文件,然后在该脚本文件中找对应的东西,就重新启动了项目,而不用手动进入bin下面去驱动命令;再比如:如果Jenkins指定Ant驱动,那么构建的时候,就去找的是build.xml配置文件,然后根据build.xml中指定的.jmx,去加载所有的Samples,然后输出日志到.jtl格式的文件中,最后Jenkins把.jtl文件转换为一个Performance报表,一目了然。

对于Jenkins,我们要做的事:


1、打通Jenkins与Ant;
2、打通Jenkins传参与Ant与Jmeter;
3、搞定输出测试报告样式;
4、搞清楚Ant直接驱动与Jenkins驱动区别
其他.


这个应该不陌生,来来,看下效果:

这里写图片描述

这里一旦构建的话,就去驱动build.xml拉。

这里写图片描述

项目都是放在Git的,拉下来,然后提交上去,Jenkins可以是单击,这里是集群。
接下来,我们将一步一步的把这个系列总结下来。让我们拭目以待吧!

再会!

猜你喜欢

转载自blog.csdn.net/meiceatcsdn/article/details/80404543