zoukankan      html  css  js  c++  java
  • jmeter接口测试

    一、Jmeter简介

    Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,不像loadrunner那样体积大,是一个比较轻量级的测试工具,使用起来非常的简单,深受测试人员的喜爱,但是它的测试报告没有loadrunner的那么详细,看起来没有那么的直观。因为它是java开发的,所以运行的时候必须要安装jdk才可以,jmeter是免安装的,拿到安装包之后直接解压就可以使用了,它也是跨平台的在linux、windows、macos上都可以使用。

    二、Jmeter-http接口脚本

    1、添加线程组
    2、添加http请求
    3、在http请求中写入接口url、路径、请求方式、参数
    4、添加查看结果树
    5、调用接口、查看返回值
    Jmeter-http接口脚本添加header:
    Jmeter-http接口脚本添加cookie:
    在这里添加cookie的时候,不要忘了把域这里写上接口的url,否则是不生效的,还有一种方法也是可以添加cookie,那就是在header里面添加一个key是cookie,值为cookie的值就好了,两种方法都可以
     

    三、Jmeter-webservice脚本

    1、在soapui中新建已经soap项目,导入wsdl地址,获取到请求报文、SOAPAction和请求url(在soapui的raw中能找到)
    2、打开jmeter新建一个线程组
    3、新建一个SOAP/XML-RPC Request
    4、把url、soapaction和请求报文写到soaprequest中
    5、调用接口、查看返回值
    四、Jmeter-参数化
    参数化是干嘛的呢,咱们在调用接口的时候,有入参,那参数里面的值如果经常变化的话,就得每次去改了,很麻烦,这时候咱们就把需要经常变的值,改成可以变化的或者是咱们提前设置好的一些值,这样的话,调用的时候就不用每次都改它的值了
    1、Jmeter参数化的方式有三种
    用户定义的变量——这种就是为了方便管理参数,只能有一个值,比如说ip地址不经常变化的
    函数生成器——函数生成器可以参照一定的规则生成数据,这样的比如说生成一些随机数
    从文件中读取——文件读取就是事先写好一些数据,然后从文件中读取,这样的话,比如说登录接口,账号和密码           都是我们事先注册好的
     

    2、用户定义的变量

    value就可以了,key就是这个参数的名称,也就是你在脚本里面取的值,value就是具体值了。在取参数化的值的时候,使用${name}这样去取值,name就是你取的变量名称。

    3、函数生成器

    函数助手的话,可以按照规则生成一些参数,比如说随机数取当前时间,最常用的就是这两种。
    随机数__Random——可以在你指定的一个范围内取随机值
    取当前时间__time——如果在有一些需要传时间的情况下可以使用,日期格式是:
                                           yyyy-MM-ddHH:mm:ss
                                           年-月-日-小时:分钟:秒
    取唯一id,__UUID——这个就是每次会生成一个随机的uuid,都是唯一的
     

    4、从文件中读取

    从文件中读取的话,三个步骤
            1)、读取文件
            2)、取文件内容里面的参数,给它一个名字
            3)、使用值
    从文件读取的话,需要在线程组里面添加一个CSV Data Set Config,它就是做前面两步的操作的
     

    五、Jmeter断言

    断言——它是用来检查返回结果对不对的。
    用来验证结果是否正确,如果正确的话,就代表这个请求的返回是正确的,如果没有的话就代表这个请求的结果和我们预期的不一致,这样我们就可以通断言来检查返回结果,测试是否通过。
     

    六、Jmeter关联

    我们知道断言是从返回结果中检查有没有预期的值,现在有一个问题,有一个购买商品的接口,必须要先登录才能够购买商品, 那么你调用接口的时候怎么知道是否已经登录了,一般这样的都会在调用的时候传一个token的参数,服务端判断token是否过期或者token是否正确,如果正确的话,那就是登录成功了就可以买东西了。
    那么这样的话,你就要先获取到token,token是从呢来的呢,肯定是从登录接口返回的,因为要先登录嘛,那这样就得先调用登录接口, 获取到token,然后把获取到的token传给购买商品的这个接口。
    关联就是做这个事的,它就是获取到返回的值,然后保存起来,给别的请求使用,或者做一些其他的处理。
    =====Jmeter中的关联是通过正则表达式提取器来完成的。
     
     
    =====
    通过上面的关联就可以把返回中我们想要的值抓到了,给其他请求使用的时候,直接使用${name}即可,name就是你关联的时候设置的变量名。
     
    七、Jmeter操作mysql
    1、Jmeter操作mysql步骤:
     
    1)、导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql
    2)、创建数据库连接配置,mysql的url、端口号、账号、密码
    3)、写sql,执行sql
    4)、查看结果

    2、Jmeter数据库驱动列表

    数据库

    驱动

    数据库url

    mysql

    com.mysql.jdbc.Driver

    jdbc:mysql://host:port/{dbname}?allowMultiQueries=true

    oracle

    org.postgresql.Driver

    jdbc:postgresql:{dbname}

    PostgreSQL

    oracle.jdbc.driver.OracleDriver

    jdbc:oracle:thin:user/pass@//host:port/service

    MSSQL

    com.microsoft.sqlserver.jdbc.SQLServerDriver

    或者

    net.sourceforge.jtds.jdbc.Driver

    jdbc:sqlserver://IP:1433;databaseName=DBname

    或者

    jdbc:jtds:sqlserver://localhost:1433/"+"library"

    3、Jmeter配置mysql连接

    1)、添加一个JDBC Connection Configuration
    2)、配置mysql连接池的名称,后面发sql请求的时候指定连接哪里
    3)、数据库的url:jdbc:mysql://192.168.1.116:3307/bugfree?
    allowMultiQueries=true
    4)、数据库驱动:这里就是指定连接什么类型的数据库,mysql、oracle、SqlServer等等
    5)、账号密码
     
    八、Jmeter操作mongodb
    1、Jmeter操作mongodb步骤:
    1)、添加一个MongoDB Source Config,配置mongodb连接信息,指定ip和数据源
    2)、添加一个mongodb的请求脚本,指定数据源
    3)、写查询语句
    4)、查看结果
     
    2
    、Mongodb操作语句
    show dbs;查看所有数据库
    use db;选择一个数据库
    show collections;查看所有集合,也就是表
    db.collection.find();#查询所有数据
    db.collection.find({"name":"mongodb"});#查询指定的条件
    db.collection.insert({"name":"mongodb","age":18});#插入数据
    db.collection.update({“name”:“mongodb”},{$set:{“createtime”:“20150810”}});#更新数据
    db.besttest.remove({“name”:“mongodb”});#删除指定数据

    九、Jmeter压力测试

    做压力测试也就是多少用户一起去操作,也就是设置多少并发,运行多久。
     
    1、压力测试场景设置
    一般我们在做压力测试的时候,分单场景和混合场景,单场景也就是咱们压测单个接口的时候,多场景也就是有业务流程的情况下,比如说一个购物流程,那么这样的场景就是混合场景,就是有多个接口一起来做操作。
    1)、单场景,一个请求就可以了
    2)、混合场景,多个请求
    3)、压测时间,一般场景都是运行10-15分钟,如果是做疲劳测试的话,可以压一天或者一周,根据具体的情况来定
    2、压力测试数据准备
    在做压测的时候,数据量少和数据量大的情况下,测试的结果是不一样的,所以,我们在设计场景的时候是要考虑到这种情况的,要测试数据库中数据量大和数据量小的情况,如果是要测试数据量大的情况下,就要造数据了,造数据可以使用jmeter,操作数据库来造数据,也可以使用python连接数据库,批量的造数据。
     
    3、压力测试结果查看

    查看结果关注的几个指标

    1)、tps是每秒钟处理的请求数,也就是指服务器的处理能力,tps越高说明服务器处理能力越好
    2)、响应时间,也就是每个请求的处理时间
    3)、并发用户数  也就是多少并发
     
    十、Linux下运行jmeter压力测试
    我们在做测试的时候,有时候要运行很久,公司用的测试服务器一般都是linux,就可以运行在linux下面,linux下面不能像windows一样有图形化界面,那怎么运行脚本呢,就先在windows上把脚本做好,然后在linux下运行即可,linux下运行jmeter是在jmeter的bin目录下的jmeter.sh这个shell脚本。
     
    sh jmeter.sh -n –t a.jmx -l res.jtl

    -n         代表以没有图形化界面启动

    -t          代表后面是测试脚本
    a.jmx     也就是我们做好的jmeter脚本
    -l           代表测试结果
    res.jtl     就是测试结果文件
    查看结果的话,在查看结果树视图中导入这个res.jtl就可以查看到测试结果了
     
     
     
    1、Jmeter添加负载机
    我们在压测的时候,可能并发比较大, 一台机子已经启动不了那么多并发了,这个时候我们就要使用多台机子一起来发压力,就要添加压力机,添加压力机怎么添加呢,首先要在
    做压力机的机子上启动jmeter的代理,然后做为控制机的机子上添加上压力机的ip即可。
     

    1)、Jmeter的bin目录下有一个jmeter-server,启动它即可,

    windows机子作为压力机的话,运行jmeter-sever.bat,linux作为压力机的话,运行jmeter-server
    2)、然后在作为控制机的jmeter配置文件里添加压力机ip即可,
    jmeter的配置文件在bin目录下jmeter.properties,
    添加压力机的时候
    ,在配置文件里面找到remote_hosts添加ip,
    然后重启jmeter就可以看到远程压力机了后重启jmeter就可
    3)、在配置文件里面添加之后,重启jmeter,在运行的时候,就可以看到压力机的ip了,可以选择他来运行这个脚本,全部运行的话,也就是所有压力机上的全部都启动,就选择远程全部启动,就所有的压力机就都运行了。
     
  • 相关阅读:
    洛谷 P1508 Likecloud-吃、吃、吃
    Codevs 1158 尼克的任务
    2017.10.6 国庆清北 D6T2 同余方程组
    2017.10.6 国庆清北 D6T1 排序
    2017.10.3 国庆清北 D3T3 解迷游戏
    2017.10.3 国庆清北 D3T2 公交车
    2017.10.3 国庆清北 D3T1 括号序列
    2017.10.4 国庆清北 D4T1 财富
    2017.10.7 国庆清北 D7T2 第k大区间
    2017.10.7 国庆清北 D7T1 计数
  • 原文地址:https://www.cnblogs.com/xbzhu/p/6074440.html
Copyright © 2011-2022 走看看