JMeter实现⾃动化测试【转载】
JMeter也可以实现⾃动化测试啦!
51testing看到的,保存在草稿箱⼀直没看(想抽时间把图也copy过来的),地址没翻到暂标为翻译吧,以下为copy内容
JMeter是Apache组织的开放源代码项⽬,能做接⼝测试、功能测试和性能测试。它能够对HTTP和FTP服务器进⾏压⼒和性能测试,也可以对数据库进⾏同样的测试(通过JDBC),还能以多种形式展现测试结果。
然⽽,在使⽤JMeter进⾏测试过程中,不可避免遇到两个痛点:“运⾏测试脚本”和“⽣成测试报告”。前者主要是需要不断重复运⾏脚本,且当脚本数量较多或进⾏并发测试时,JMeter GUI界⾯容易宕机、卡死等,这种情况下就需要重复使⽤命令执⾏脚本;后者则是需要⼿⼯整理数据、分析测试结果然后⽣成测试报告。
因此,本⽂采⽤JMeter+Ant(⼀个将软件编译、测试、部署等步骤联系在⼀起加以⾃动化的⼯具)搭建⾃动化测试环境,⽤以解决测试过程中的痛点,通过此环境可以实现:
(1)⾃动重复运⾏脚本;
(2)⾃动⽣成测试报告;
(3)⾃动发送邮件。
⼤体的逻辑如下:
1、配置l⽂件,Ant通过XML⽂件进⾏构建,通过调⽤target就可以执⾏各种task,每个task实现了特定接⼝对象。因此,通过Ant可以实现批量执⾏。
2、Ant通过测试结果(jtl⽂件)构建⽣成HTML测试报告,并输出在指定路径下,避免了⼿⼯整理测试报告。
3、根据l⽂件中配置的的邮件信息,将HTML测试报告⾃动发送到指定的邮箱。
Java环境变量配置:
1、创建JAVA_HOME(JDK安装⽬录):
如C:\Program Files (x86)\Java\jdk1.8.0_231。
2、创建CLASSPATH:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前⾯有⼀点)。
3、编辑Path,把值放在最前⾯。
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。
验证JDK
CMD命令⾏输⼊java -version 能查看到版本号则安装成功
下载成功后,解压缩到建⽴的⽂件夹路径中
(如:D:\Apache\JMeter)。
JMeter环境变量配置
1、创建JMETER_HOME,填写JMeter⽂件所属路径:
(如:D:\Apache\JMeter)
2、修改CLASSPATH,添加:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar。
3、修改Path,添加%JMETER_HOME%\bin
点击JMeter⽬录下bin⽂件夹中的jmeter.bat就可以打开
添加常⽤插件
注:官⽹下载的JMeter不包含⼀些常⽤插件。
将plugins-manager-xxx.jar、JmeterPlugins-Extras.jar、JmeterPlugins-Standard.jar和JMeterPlugins-Standard-1.4.0.zip解压后的jar包放⼊D:\Apache\JMeter⽬录下的lib\ext⽬录,重启Jmeter。
jmeter–线程组–添加– 出现jp@gc-permon metricsCollecteor 则表⽰安装成功
JMeter相关配置修改
1、修改默认语⾔和jvm参数(根据电脑配置进⾏修改),编辑jmeter.bat如下:
2、编辑jmeter.peoperties使⽤第三⽅模块⽣成详细报告。
Ant安装
Ant环境变量配置
1)创建ANT_HOME,填写Ant所属路径:(如D:\Apache\Ant )
2)修改CLASSPATH,添加:%ANT_HOME%\lib
3)修改Path,添加:%ANT_HOME%\bin
验证Ant
CMD命令⾏输⼊ant,如下图所⽰表⽰安装成功。
Ant配置及相关使⽤操作
1、将D:\Apache\JMeter\extras下⾯的ant-jmeter-1.1.1.jar包复制到D:\Apache\Ant\lib⽬录下。
2、将sl和jmeter-results-detail-report_21.xsl分别放在D:\Apache\JMeter\extras⽬录下。
3、(发送邮件所需jar包)下载activation-1.1.1.jar、commons-email-1.5.jar和javax.mail.jar放到D:\ Apache\ant\lib。
4、在本地任意创建⽬录testcases(如:D:\testcases),并在其⽬录下创建report⽂件夹和l⽂件,复制以下内容到l ⽂件中。
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test"default="all" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm"/>
</tstamp>
<!--需要改成⾃⼰本地的 Jmeter ⽬录-->
<property name="jmeter.home" value="D:\Apache\jmeter"/>
<property name="report.title" value="测试报告"/>
<!-- jmeter⽣成jtl格式的结果报告的路径-->
<property name="sult.jtl.dir" value="D:\testcases\report"/>
<!-- jmeter⽣成html格式的结果报告的路径-->
<property name="sult.html.dir" value="D:\testcases\report"/>
<!-- zip⽂件路径-->
<property name="zip.dir" value="D:\testcases"/>
<!--⽣成的报告的前缀-->
<property name="ReportName" value="testcases"/>
<!--报告名称-->
<property name="sult.jtlName" value="${sult.jtl.dir}/${ReportName}${time}.jtl"/>
<property name="sult.htmlName" value="${sult.html.dir}/${ReportName}${time}.html"/>
<property name="zipname" value="${zip.dir}/${ReportName}${time}.zip"/>
<!--邮件配置信息-->
<property name="mail_host" value="smtp.163"/>
<property name="mail_port" value="465"/>
<property name="username" value="testcases@163"/>
<property name="password" value="123456789"/>
<property name="mail_from" value="dtestcases@163"/>
<property name="mail_to" value="testcases@163,testcases2@163"/>
<property name="mailsubject" value="测试报告"/>
<!--输出⽣成的报告名称和存放路径-->
<echo message="${sult.jtlName}"/>
<echo message="${sult.htmlName}"/>
<echo message="${sult.html.dir}"/>
<echo message="${zip.dir}"/>
<echo message="${zipname}"/>
<!--加载jar包,解决时间显⽰问题-->
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="all">
<target name="all">
<antcall target="test"/>
<antcall target="report"/>
<antcall target="summary-report"/>
<antcall target="zip"/>
<!--打包zip -->
<antcall target="sendEmail"/>
<!--发送邮件-->
java环境变量自动配置</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<jmeter jmeterhome="${jmeter.home}" resultlog="${sult.jtlName}">
<!--声明要运⾏的脚本"*.jmx"指包含此⽬录下的所有jmeter脚本-->
<!--如果只想执⾏部分脚本,可以写多条testplans 将需要执⾏的jmx写在includes中-->
<testplans dir="D:\testcases" includes="*.jmx"/>
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<!--这⾥就是jmeter.properties修改的部分-->
</jmeter>
</target>
<target name="report">
<tstamp>
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
</tstamp>
<xslt classpathref="xslt.classpath" force="true" in="${sult.jtlName}" out="${sult.html.dir}/summary-report.html" >
<!--这⾥是第三⽅模板,修改jmeter.properties后⽣成的报告有详细的请求、响应、错误信息等-->
<param name="Date Report" expression="${report.datestamp}"/>
</xslt>
<!--因为上⾯⽣成报告的时候,不会将相关的图⽚也⼀起拷贝⾄⽬标⽬录,所以,需要⼿动拷贝-->
<copy todir="${sult.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png"/>
<include name="expand.png"/>
</fileset>
</copy>
</target>
<target name="summary-report">
<tstamp>
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
</tstamp>
<xslt classpathref="xslt.classpath" force="true" in="${sult.jtlName}" out="${sult.htmlName}" >
<!--这⾥是⼀个简要的信息,查看成功和失败的请求百分⽐-->
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
</target>
<!-- zip配置-->
<target name="zip">
<echo>
打包zip⽂件
</echo>
<zip destfile="${zipname}" duplicate="preserve">
<zipfileset dir="${sult.html.dir}" includes="**/*.*" prefix="测试报告"/>
</zip>
<copy todir="${sult.html.dir}">
<fileset dir="${zip.dir}">
<include name="*.zip"/>
</fileset>
</copy>
</target>
<!--配置发送邮件报告-->
<target name="sendEmail">
<echo>
发送测试报告
</echo>
<loadfile property="email_content" srcFile="${sult.htmlName}" encoding="UTF-8"/>
<loadfile property="email_content" srcFile="${sult.htmlName}" encoding="UTF-8"/>
<mail mailhost="${mail_host}" ssl="true" user="${username}" password="${password}" mailport="${ma
il_port}" subject="${mailsubject}" messagemimetype ="text/html" messagefileinputencoding="UTF-8" tolist="${mail_to}">
<from address="${mail_from}"/>
<message charset="UTF-8">
${email_content}
</message>
<!--附件-->
<attachments>
<fileset dir="${sult.html.dir}">
<include name="*.zip"/>
</fileset>
</attachments>
</mail>
</target>
</project>
5、打开CMD命令⾏,切换到testcases⽬录下执⾏ant命令;或在testcases⽬录编写ant.bat⽂件执⾏,⽂件内容如下:
@echo
call ant -l -l logfile
pause
注:执⾏⽇志存放在testcase⽬录下的logfile⽂件中。
附:报告及邮件
1、概略报告
2、详细报告
3、邮件及附件
– END –
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论