【转】jmeter接口测试
一、Jmeter简介Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,不像loadrunner那样体积大,是一个比较轻量级的测试工具,使用起来非常的简单,深受测试人员的喜爱,但是它的测试报告没有loadrunner的那么详细,看起来没有那么的直观。因为它是java开发的,所以运行的时候必须要安装jdk才可以,jmeter是免安装的,拿到安装包之后直接解压就可以使用了,它也是跨平台的在linux、windows、macos上都可以使用。二、Jmeter-http接口脚本1、添加线程组
2、添加http请求
3、在http请求中写入接口url、路径、请求方式、参数
4、添加查看结果树
5、调用接口、查看返回值
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162442174-278687883.png
Jmeter-http接口脚本添加header:
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162504143-1984288505.png
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162512690-855720115.png
Jmeter-http接口脚本添加cookie:
在这里添加cookie的时候,不要忘了把域这里写上接口的url,否则是不生效的,还有一种方法也是可以添加cookie,那就是在header里面添加一个key是cookie,值为cookie的值就好了,两种方法都可以
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162534471-1250524933.png
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162543236-1473531708.png
三、Jmeter-webservice脚本1、在soapui中新建已经soap项目,导入wsdl地址,获取到请求报文、SOAPAction和请求url(在soapui的raw中能找到)
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162556330-1849443557.png
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162607877-1786937942.png
2、打开jmeter新建一个线程组
3、新建一个SOAP/XML-RPC Request
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162618736-2137950998.png
4、把url、soapaction和请求报文写到soaprequest中
5、调用接口、查看返回值
四、Jmeter-参数化
参数化是干嘛的呢,咱们在调用接口的时候,有入参,那参数里面的值如果经常变化的话,就得每次去改了,很麻烦,这时候咱们就把需要经常变的值,改成可以变化的或者是咱们提前设置好的一些值,这样的话,调用的时候就不用每次都改它的值了
1、Jmeter参数化的方式有三种
用户定义的变量——这种就是为了方便管理参数,只能有一个值,比如说ip地址不经常变化的
函数生成器——函数生成器可以参照一定的规则生成数据,这样的比如说生成一些随机数
从文件中读取——文件读取就是事先写好一些数据,然后从文件中读取,这样的话,比如说登录接口,账号和密码 都是我们事先注册好的
2、用户定义的变量value就可以了,key就是这个参数的名称,也就是你在脚本里面取的值,value就是具体值了。在取参数化的值的时候,使用${name}这样去取值,name就是你取的变量名称。
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162643924-1528601630.png
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162655502-803816850.png
3、函数生成器函数助手的话,可以按照规则生成一些参数,比如说随机数取当前时间,最常用的就是这两种。
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162709018-899598706.png
随机数__Random——可以在你指定的一个范围内取随机值
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162726033-390907602.png
取当前时间__time——如果在有一些需要传时间的情况下可以使用,日期格式是:
yyyy-MM-ddHH:mm:ss
年-月-日-小时:分钟:秒
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162736736-337039230.png
取唯一id,__UUID——这个就是每次会生成一个随机的uuid,都是唯一的
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162829549-1470269829.png
4、从文件中读取从文件中读取的话,三个步骤
1)、读取文件
2)、取文件内容里面的参数,给它一个名字
3)、使用值
从文件读取的话,需要在线程组里面添加一个CSV Data Set Config,它就是做前面两步的操作的
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104162839377-706753367.png
五、Jmeter断言断言——它是用来检查返回结果对不对的。
用来验证结果是否正确,如果正确的话,就代表这个请求的返回是正确的,如果没有的话就代表这个请求的结果和我们预期的不一致,这样我们就可以通断言来检查返回结果,测试是否通过。
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104163252565-1067971218.png
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104163301986-1264831388.png
六、Jmeter关联我们知道断言是从返回结果中检查有没有预期的值,现在有一个问题,有一个购买商品的接口,必须要先登录才能够购买商品, 那么你调用接口的时候怎么知道是否已经登录了,一般这样的都会在调用的时候传一个token的参数,服务端判断token是否过期或者token是否正确,如果正确的话,那就是登录成功了就可以买东西了。
那么这样的话,你就要先获取到token,token是从呢来的呢,肯定是从登录接口返回的,因为要先登录嘛,那这样就得先调用登录接口, 获取到token,然后把获取到的token传给购买商品的这个接口。
关联就是做这个事的,它就是获取到返回的值,然后保存起来,给别的请求使用,或者做一些其他的处理。
=====Jmeter中的关联是通过正则表达式提取器来完成的。
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104163321830-2088575918.png
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104163332518-715471000.png
=====通过上面的关联就可以把返回中我们想要的值抓到了,给其他请求使用的时候,直接使用${name}即可,name就是你关联的时候设置的变量名。
七、Jmeter操作mysql
1、Jmeter操作mysql步骤:
1)、导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104163346315-138212488.png
2)、创建数据库连接配置,mysql的url、端口号、账号、密码
3)、写sql,执行sql
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104163400393-1418497772.png
4)、查看结果
http://images2015.cnblogs.com/blog/1053883/201611/1053883-20161104163414705-440278577.png
2、Jmeter数据库驱动列表
数据库驱动数据库url
mysqlcom.mysql.jdbc.Driverjdbc:mysql://host:port/{dbname}?allowMultiQueries=true
oracleorg.postgresql.Driverjdbc:postgresql:{dbname}
PostgreSQLoracle.jdbc.driver.OracleDriverjdbc:oracle:thin:user/pass@//host:port/service
MSSQLcom.microsoft.sqlserver.jdbc.SQLServerDriver或者net.sourceforge.jtds.jdbc.Driverjdbc:
好贴 学习了。 :lol 为什么图片都看不了????
:) 学习:D
页:
[1]