zoukankan      html  css  js  c++  java
  • 接口测试工具postman/jmeter基本使用

    一、接口的分类:
    最常用的两种接口webservice接口和http api接口;
    1、webservice接口走soap协议通过http传输,请求报文和返回报文都是XML格式,现在测试的时候都通过工具才能进行调用,测试;
    2、http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,放回报文一般都是json串,有get和post等方法,也是最常用的两种请求方式;

    二、接口基本属性
    接口返回的数据都是json也就是通用的数据类型;
    json都是以key value键值对形式存在的;
    接口测试的话,必须得有接口文档;
    1、请求URL
    2、请求方式,get,post...
    3、入参(请求参数)
    4、返回参数
    5、请求、返回示例
    6、状态码说明
    如果是get请求,直接用浏览器就能发,不需要借助工具;
    发送请求,请求UR路径L后面跟参数,URL路径与参数之间用?连接;
    要注意的是?号必须是英文的,参数与参数之间连接用&符号,value值是中文也不需要加引号

    三、接口测试的必要性:
    1、发现页面上操作发现不了的bug
    2、检查系统的异常处理能力
    3、检查系统的安全性、稳定性
    4、前端随便变更,接口测试好了,后端不用变
    接口签名:
    为了防止别人恶意刷请求。
    例子:http://api.nnzhp.cn/reg?username=xxx&passwd=xxx&
    sign=557c99d9a387a6173b99bf2a3a05a5de(sign的值有自己的一套规则进行加密)


    四、get请求和post请求的区别:(网上大部分写的安全和长度问题基本不存在)
    get请求没有请求体,只有请求头,get请求的参数只能写在URL里面或者cookie里面;
    post请求参数放在请求体里面;

    五、接口测试工具
    接口测试工具postman
    postman发post请求,入参形式为json的,body里面选择raw,
    最后面选择json(application/json)
    postman cookie写在headers里面
    cookie : 存在本地的一个键值对
    session : 存在服务端的一个键值对
    ls -l |wc -l #查看当前目录下有多少个文件

    接口测试工具jmeter
    jmeter响应数据乱码解决方法:
    找到jmeter安装目录下的配置文件jmeter.properties搜索
    sampleresult.default.encoding=ISO-8850-1前去掉#号后
    改成sampleresult.default.encoding=utf-8;改完后保存重启
    jmeter生效;
    jmeter入参传json的请求:
    选body data----写入键值对即可(注意格式,符号都是英文的,最后一个键值对后面不要跟逗号)

    jmeter上传文件请求:
    选files upload,文件名称写文件绝对路径,参数名称写file,
    3.3或以上的版本需要写mime;

    jmeter下载文件请求:
    1、添加线程组 :右键测试计划,添加-Threads(Users)-线程组;
    2、添加一个http请求:右键线程组,添加-Sampler-HTTP请求;
    3、写好http请求中的url和路径;
    4、添加beanshell,获取到返回的文件内容,保存到一个文件里面。右键线程组,添加-Sampler-BeanShell Sampler,beanshell代码如下:(死格式直接复制改路径就完事了)
    import java.io.*;

    byte[] result = prev.getResponseData(); //这个是获取到请求返回的数据,prev是获取上个请求的返回

    String file_name = "C:\Users\Administrator.USER-20171028IA\Desktop\BaiDu.jpg"; //代表存放文件的位置和文件名

    File file = new File(file_name);

    FileOutputStream out = new FileOutputStream(file);

    out.write(result);

    out.close();

    jmeter传带有cookie的请求:
    请求-右键-添加-配置原件-HTTPcookie管理器,写入key,value值,域写host即可;

    jmeter传带有headers的请求:
    请求-右键-添加-配置原件-HTTP信息头管理器,名称写入referer,值写请求头和host即可;

    六、jmeter参数化
    1、文件参数化
    jmeter右键-添加-配置原件-CSV data set config
    filename写入参数化文件的绝对路径(win10参数化文件放到jmeterbin目录下写文件名即可)
    file encoding 编码写不写无所谓
    variable names (comma-delimited)写入一个合适的变量名即可
    请求里面需要参数化的key或者value写入${变量名}即可
    delimiter(use‘ ’for tab)参数多列的情况以什么分隔,默认逗号分隔
    allow quoted data? 不用管
    recycle on eof? 参数化文件读完了后是否从头开始取(true是、false否)
    stop thread on eof? 参数化文件读完后是否停止测试(true是、false否)
    sharing mode all全部线程组生效/多个线程/单个线程(用处不大)

    2、用户定义的变量
    线程组右键-添加-配置原件-用户定义的变量
    例如对host进行定义成一个变量,这样所有请求都可以用直接引用,非常的方便。

    3、函数助手
    jmeter顶部taps-选项-函数助手对话框-选择一个功能-_random
    写入最小值和最大值后点击生成-复制生成的函数字符串,后面
    直接引用就行(这样可以生成随机数);

    jmeter顶部taps-选项-函数助手对话框-选择一个功能-_time值写
    入要获取时间的格式:yyyy-MM-dd-HH-mm-ss(年月日时分秒
    ,可选择性输入取对应的时间)点击生成-复制生成的函数字符串
    即可引用(生成当前时间)

    七、jmeter关联
    关联是什么:把上一个请求返回的数据,拿到下一个请求使用
    从中取关联值请求的请求-右键-添加-后置处理器-jp@gc_json path extractor(插件,需要自己安装)
    例子: {
    "error_code": 0,
    "login_info": {
    "userId": 1,
    "sign": "d58e3582afa99040e27b92b13c8f2280",
    "login_time": "20171207113501"
    }
    }
    要取sign的值:$login_info.sign ($代表返回数据)
    destination varlable name:(变量名写入) sign
    jsonpath expression:$login_info.sign
    default value:(没有找到取什么值)error 可自定义
    后面直接引用变量名即可:${sign}

    有啥不懂得可参考博客:http://www.nnzhp.cn/archives/category/test

  • 相关阅读:
    [swustoj 411] 售货员的难题
    白书P61
    白书P60
    [ZOJ 3471] Most Powerful
    [HDU 3001] Travelling
    [转] acmer必看的26个对acm态度
    [HDU 1254] 推箱子
    [POJ 3311] Hie with the Pie
    [POJ 3254] Corn Fields
    power
  • 原文地址:https://www.cnblogs.com/ymmz/p/8553842.html
Copyright © 2011-2022 走看看