美文网首页
Postman接口相关测试与使用

Postman接口相关测试与使用

作者: 生命有一种执着 | 来源:发表于2021-08-05 03:08 被阅读0次
接口测试请求方式:get、post、delete、put
get请求与post请求区别:
  1、提交方式得不同:get请求直接在地址栏中输入参数以及数据信息进行提交,post得数据是放在forms表单中,以表单形式提交接口数据来获取接口响应;
  2、请求数据大小:get请求的数据相对于post请求数据要小;
  3、安全性不同:get请求方式数据信息在地址栏中展示,相对于post请求的数据参数在表单中,安全性要小一些;
接口测试流程:
  1、需求讨论
  2、需求评审
  3、场景设计
  4、数据准备
  5、执行测试
接口测试的条件:
  1、服务器地址;
  2、接口地址及端口;
  3、接口的请求方式;
  4、接口请求头;
  5、接口的参数以及参数的约束条件;
  6、接口返回的数据包括正常以及异常的返回数据;
接口用例设计:理清思路,避免漏测,提高测试效率,跟进测试进度,跟进重复性工作
  1、功能:功能是否正常,功能是否按照接口文档实现
  2、业务逻辑:是否有依赖业务,有些接口需要依赖其他接口后才可以进行访问,比如下单接口需要登陆后进行访问,这个时候需要在下单的接口中增加一个登录接口的cookie字段以及值,才可以进行访问下单接口
  3、异常:
      参数异常:关键字参数(能否使用代码中的关键字,比如将用户名改为echo输出的关键字)、参数为空、添加的参数多增加或减少、填写错误参数
      数据异常:关键字参数(将数据更改为NULL)、数据为空、长度不一致(查看接口是否有验证数据长度的验证)、错误数据
      
  4、安全:
      cookie:测试存在依赖关系的接口时,验证在不添加cookie字段以及值的时能否访问成功;
      header:有时候在验证移动端接口的时,特别需要考虑header ,为了安全考虑需要加入header的一些信息,此时就需要验证加入header 以及不加入时接口的安全性是否符合需求
一、什么是接口:
    1、不是所有的接口都可以进行调用,需要有鉴权码(token,key,appkey)
    2、接口包括:内部接口(开发人员自己开发的系统内部接口),外部接口  (调用外部:微信,支付宝等)
    3、总结:软件提供给外部的一个服务,用于软件数据的一个传输;
    4、为什么需要接口:因为接口可以让内部数据被外部所调用以及修改;
    5、为什么需要接口测试:
        a:现在的开发项目都是前后端分离,开发进度不一致,需要将一开始开发出来的接口进行测试,这里需要mock模拟数据;
        b:基于安全角度考虑,前端页面上的验证很容易通过,此时应着重考虑接口,特别是身份验证银行卡信息等数据;
        c:现在推崇测试左移,就是今早的进行测试;
    6、接口测试的本质:接口测试本质就是验证接口能否正常交换数据,当出现异常数据时接口会不会提示异常数据信息;
接口交互示意图.png
二、接口返回数据以及json详解:
    1、json格式:三组数据
        a:code:0;错误码,0表示成功;
        b:msg:”success“,对错误码的中文说明;
        c:data:真正返回的数据;
    json就是一种数据类型
    json由两种组数据组成,键值对(key-velue)、数组
    2、html格式:返回的是<html><html/>格式的数据
    3、xml:<?xml?nersion="10.0.0">
三、接口协议:
    1、webservice协议:接口地址---https://...............?wsdl
       restful规则:get获取数据,post发送数据,put修改数据,delete删除数据
    2、double:适用于少量数据的传输,但是也可以承载大并发
    3、http协议:接口地址:http://.....................
       http:端口--80
       https:端口--443(http+ssl(安全传输协议))
    4、http协议详解:超文本传输协议,主要用于浏览器与服务器之间交互,交互由两部分:
          a:请求:get、post、put、delete
          b:相应:1xx相应信息、2xx相应成功、3xx重定向、4xx客户端错误、5xx服务器错误
一、什么是接口
    1、什么是接口?
        电脑:USB,投影机(数据传输)
        软件:统称API,application,program,interface,微信提现和充值,支付宝支付,银联支付接口。(鉴权码:token,key,appkey)
        接口包括:内部接口和外部接口
            内部接口:开发人员自己开发的对自身系统提供的接口。
            外部接口:开发系统调用外部的,微信,支付宝,其他的接口。
        总结:接口就是软件提供给外部的一种服务。用于做数据传输。
    2、软件为什么需要接口?
        因为接口能够让内部的数据被外部进行修改。
    3、我们为什么要做接口测试?
        (1)现在很多系统都是前后端分离,开发的进度不一样,需要把一开始开发出来的接口进行测试。mock
        (2)基于安全考虑,前端有验证很容易绕过,直接请求接口,特别:身份证信息,银行卡,金钱交易。
        (3)测试推崇的是测试左移,测试尽早的介入。
        接口测试的本质:就是测试接口能否正常的交互数据,权限控制以及异常场景。
二、接口返回数据和JSON详解
    1.json格式:三组数据(80%)
        {error_code:0,msg:"提现成功",data:[]}
        error_code:错误码,0代表成功, code
        msg:对错误码的中文说明
        data:真正的返回的数据
    1.json就是一种数据类型,整形,小数,字符串。
    2.JSON由两组数据组成
        MAP对象,键值对,{key:value,key:value}
        数组:[value1,value2,value3]
        { "people":[ {"firstName": "Brett", "lastName":"McLaughlin" }, { "firstName":"Jason","lastName":"Hunter"}]}
2.html格式
<htm>
<title></title>
<body>
<error_code>0</error_code>
....
</body>
</html>
3.xml格式
<?xml?version="1.0" encoding="utf-8">
<error_code>0</error_code>
....
</xml>
三、接口测试协议
1.webservice协议:接口地址:http://.......................?wsdl
    http://192.168.12.1:8080/addUser
    http://192.168.12.1:8080/delUser
    http://192.168.12.1:8080/updUser
    http://192.168.12.1:8080/selUser
    soap协议,wsdl
    restful规则:
        get获取数据,post提交数据,put修改数据,delete删除数据。
        http://192.168.12.1:8080/user
2.dubbo协议:接口地址以dubbo://......
    适用于少量数据的传输。大并发。
3.http协议:接口地址:http:// 80%
    https=http+ssl安全传输协议 端口:443
    http:端口80
    什么是http协议?
        http是超文本传输协议,主要用于浏览器和服务器之间交互数据,交互有两个部分:
        请求:get,post,put,delete
        响应:1XX信息,2XX成功,3XX重定向(跳转不传值),4XX客户端错误,5XX服务器错误。
        请求部分包含:
        请求行:请求方式,请求地址,协议
        POST http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun HTTP/1.1
        请求头:
        Accept: application/json, text/javascript, */*; q=0.01(客户端可以接收的数据格式)
        X-Requested-With: XMLHttpRequest(异步请求)
        User-Agent: PostmanRuntime/7.26.5(客户端的用户)
        Cache-Control: no-cache
        Postman-Token: 14a45257-b900-46e4-b760-e45c1a2ac824
        Host: 47.107.116.139(请求的主机地址)
        Accept-Encoding: gzip, deflate, br(压缩方式)
        Connection: keep-alive(保持活跃)
        Cookie: wNq_lastvisit=1029%091605272358%09%2Fphpwind%2F;
        wNq_visitor=pVVS4zEbzW%2F5x0XgEQQ4F20ipEcBIXS8AU0DopI6Xoj7L3SmaUYR%2Fw%3D%3D;
        csrf_token=68bd2c7857e99ca7(请求cookie信息)
        Content-Length: 0(内容的长度)
        空一行
        请问正文
        响应的部分:
        响应行:协议,响应码,响应信息
        HTTP/1.1 200 OK
        响应头:
        Server: nginx
        Date: Fri, 13 Nov 2020 12:59:22 GMT
        Content-Type: text/html; charset=UTF-8
        Connection: keep-alive
        X-Powered-By: PHP/5.6.36
        Set-Cookie: wNq_lastvisit=1033%091605272362%09%2Fphpwind%2Findex.php%3Fm%3Du%26c%3Dlogin%26a%3Ddorun;
        expires=Sat, 13-Nov-2021 12:59:22 GMT; Max-Age=31536000; path=/
        Vary: Accept-Encoding(响应的)
        Content-Length: 196
        空一行
        响应的内容
        {"referer":"http%3A%2F%2F47.107.116.139%2Fphpwind%2Findex.php%3Fm%3Du%26c%3Dlogin","refresh":false,"state":"fail","message":
        ["\u5e10\u53f7\u6216\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a"],"__error":""}
四、企业接口测试的流程和方案?
    1.拿到api接口文档,熟悉接口的业务,接口地址,鉴权,入参,出参,错误码。
    2.接口计划和方案
        思路:
        正例:输入正常的入参,查看接口是否返回成功。
        反例:
            鉴权反例:鉴权为空,鉴权码错误,鉴权码已过期.....
            参数反例:参数空,参数类型异常,参数长度异常。
            错误码的覆盖。
        其他场景:分页异常。
    3.编写用例和评审
    4.执行接口测试
    5.输出接口测试报告。
五、接口测试工具以及Postman介绍
    接口测试工具:
        postman,jmeter,soupui,apipost,fiddler,charles
    请求部分的页签:
        Params:用于在get请求传参
        Authorization:postman自带的鉴权功能
        Headers:请求头
        Body:post请求传参
        none:没有参数
        form-data:即有文件又有键值对。
        x-www-form...只传输键值对
        raw:创Json,txt,xml,html,js
        binary:把文件以二进制的方式传输
        Pre-request Sciprt:接口请求之前的脚本。js
        Tests:断言的代码
        Cookies:Postman的cookie的管理器
        code:生产接口自动化脚本。
    响应部分的页签:
        Body:返回的数据
        Pretty:以json格式展示
        Raw:以文本的格式展示
        Preview:以网页的格式展示
        cookie返回的cookie信息
        Headers响应头
        TestResults:断言结果
        status:状态码
        time消耗的时间
        szie:字节数
六、Postman内置的动态参数
    企业当中做接口测试的时候经过会出现接口不能把参数写死。
    时间戳:{{$timestamp}}
    生成0-1000的随机整数:{{$randomInt}}
    生成一个GUID的字符串:{{$guid}} 很长的一个字符串
七、Postman环境变量和全局变量
    开发环境,测试环境,预发布环境,线上环境。
    不管是环境变量也好,还是Globals也好都是全局变量。
八、接口关联
    JSON提取器
        //提取access_token的值
        var jsValue = JSON.parse(responseBody)
        console.log(jsValue.access_token)
        //把提取的值保存到全局变量
        pm.globals.set("access_token",jsValue.access_token);
        正则表达式提取器
        //使用正则表达式提取 match:匹配 new RegExp新建规则
        var flag_id = responseBody.match(new RegExp('"id":(.+?),'))[1]
        console.log(flag_id)
        pm.globals.set("flag_id",flag_id);
    Cookie提取器:鉴权码通过cookie传输
九、Postman断言
        //八种断言方式,八大元素定位
        //1.断言返回码为200 用于状态断言
        pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
        //2.断言返回的结果中包括有一个指定的字符串 用于业务断言
        pm.test("Body matches string", function () {
        pm.expect(pm.response.text()).to.include("tags");
    });
        //3.对返回的结果做jSON字段检查 用于业务断言
        pm.test("Your test name", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.tags[0].id).to.eql(2);
    });
        //4.断言返回的结果等于一个字符串 用于业务断言
        pm.test("Body is correct", function () {
        pm.response.to.have.body("response_body_string");
    });
        //5.断言响应头中包含有指定的响应头
        pm.test("Content­Type is present", function () {
        pm.response.to.have.header("Content­Type");
    });
        //6.断言接口请求的时间少于200毫秒 用于性能断言
        pm.test("Response time is less than 200ms", function () {
        pm.expect(pm.response.responseTime).to.be.below(500);
    });
        //7.断言一个post请求的返回的状态码是否在指定的范围里面
        pm.test("Successful POST request", function () {
        pm.expect(pm.response.code).to.be.oneOf([200, 201]);
    });
        //8.断言返回的状态码信息中包含指定的字符串
        pm.test("Status code name has string", function () {
        pm.response.to.have.status("OK");
    });
        精确断言:
        var times = Date.now()
        pm.globals.set("times", times);
        全局断言:
        用于状态断言
十、Postman连接数据库进行接口测试
    1、安装node.js
    2、安装xmysql
    3、连接数据库:xmysql -h 数据库地址 -u 用户名 -p
十一、Postman参数化
    1、txt
    2、csv
    3、json
使用时在运行接口得模块中选中参数化文件,直接运行

相关文章

网友评论

      本文标题:Postman接口相关测试与使用

      本文链接:https://www.haomeiwen.com/subject/cmgpvltx.html