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

    接口测试:

      就是功能测试。

    接口测试的必要性:

      接口测试可以发现一些页面上操作发现不了的bug

      检查系统的异常处理能力

      检查系统的安全性、稳定性

    什么是接口?

      接口一般有两种,一种是程序内部的接口,一种是系统对外的接口。

      系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人不会提供数据库给你,而是提供一个写好的方法,你引用他们的接口就能使用他们的方法,从而达到数据共享的目的。

      程序内部的接口:方法与方法之间、模块与模块之间,程序内部抛出的接口。

     

    一般测试人员测试的是系统对外的接口。接口其实就是各种操作数据库。

     

    接口的分类:

      常用的两种接口是webservice接口和http api接口。

      webservice接口:走soap协议通过http传输,请求和返回的报文都是xml格式。

      http api接口:走http协议,通过路径来区分调用的方法,请求报文是key-value形式,返回报文一般是json串,有get、post等请求方式。

     

    通用的数据类型:json,使用json使得不同语言之间可以交互,接口返回的数据都是json格式的。

     

    通过接口文档来测试接口。

    接口文档包含的内容有:

      1、请求url

      2、请求方式(get、post)

      3、请求参数

      4、返回参数说明

      5、请求、返回示例

      6、状态码说明

     

    接口测试的流程:

      1、需求评审,熟悉业务和需求

      2、开发提供接口文档

      3、编写接口测试用例

      4、用例评审

      5、提测后开始测试

      6、提交测试报告

     

    get请求:没有请求体,只有请求头,get请求的参数只能写在url或者在cookie里面

    post请求:有请求头和请求体,请求参数放在请求体里面

     

    HTTP状态码:

      400 开头  代表客户端发送请求有语法错误。401代表访问的页面没有授权、403表示没有权限、404代表没有这个页面

      500开头  代表服务器又异常,500代表服务器内部异常、504代表服务器超时,没有返还结果

     

    接口测试用例设计:

      1)通过性验证:按照接口文档,正常传入参数,校验是否可以返回正确的结果

      2)参数组合

        比如如果操作是添加学生信息,就必须传入必填的参数(比如,姓名、班级、性别)

        如果操作是修改学生信息,就传入必填参数的某一个,比如,通过姓名删除

      3)异常验证:不按照接口文档上要求输入参数,包括必填非必传、参数类型、入参长 度。比如某些必须参数不传入;应该输入整数类型的,传入字符串类型;长度是10的, 传入11

      4)接口安全验证

        1、绕过验证:比如购买一个300元的商品,提交订单式,把商品价格改成3元、 -3元等,验证后端有没有做验证

        2、绕过身份授权:比如修改商品,必须是卖家修改,如果传一个普通用户,验证 能否修改成功

        3、参数是否加密:比如登录

        4、密码安全规则:密码复杂程度验证

      5)根据业务逻辑来设计测试用例

        比如:根据系统业务来设计测试用例,比如,登录失败5次,需要等待15分钟再登录;

        新注册用户需要过了实习期才能发帖等

     

    postman测试接口:

      1、get:http://xxx?参数=值&id=1   (get请求浏览器可以直接访问)

      2、post请求:

         

     

     

      3、json方式传参

        请求URL:http://xxx/api/user/add_stu

        请求方式:post、入参是json类型

         

      4、文件上传接口:

         

     

      5、需要添加cookie以及身份验证的接口

        比如,这个请求先要先从登录接口中获取管理员的账号和sign ID

        先登录获取signID:

         

        再进行下一个请求的body填写,

        

         并且需要在Header中添加一个Cookie,值是键值对:用户名=sign

         

      6、需要添加Header的请求,比如来源请求、User-Agent等

         

    7、使用postman设置一个环境变量:

        1:设置---Manage Envirments---Globals---Add

     

     

        2:用{{ 变量名 }}代替设置的变量

        3:环境切换

    cookie与session:

      cookie是存在客户端本地的键值对

      session是存在服务器的键值对(存在redis里面)

      cookie和session都是连用的,比如登录时,本地的cookie与服务器的做比对,匹配成功,就能继续操作

     

    使用jmeter做接口测试

      jmeter乱码:.bin/jmeter.properties中的sampleresult.default.encoding=utf-8打开注释,修改为utf-8

      jmeter上传文件的接口测试:

         

         jmeter3.3的版本,将文件的MIME类型写上

         win10的系统,由于权限问题,可以将文件放在./bin目录下,“文件名称”处直接写文件名

     

    接口签名:

      为了防止别人恶意刷请求。它是一个加密后的字符串。

      比如:http://api.xx.cn/register?user=xxx&passwd=xxx&sign=fc53d1abb3dea3,其中sign就是一个接口的签名,它是通过某个加密规则(比如username+时间戳+x)计算出来的,这样就能避免频繁发请求。

     

    url编码:URL地址中,比如name1=va%26lu%3D

    jmeter参数化的方式:

      1、文件参数化

      2、用户定义的变量

      3、函数助手

        ①__random

        ②__time:

          时间格式是:yyyy-MM-dd HH:mm:ss

     

    jmeter关联:

      json关联

      JSON插件:后置处理器-JSON Path Extractor

      比如需要获取到json串中的sign的值:

       

     

      在登录请求下面通过JSON Path Extractor获取sign的值:

       

     

    JSON表达式:

      $.login_info.sign

        $代表第一层{}

        .login_info:代表第二层{}

     

      在下一个请求中引用json的参数:

       

     

  • 相关阅读:
    基于注解的mybatis(转)
    git分支删除
    java多线程同步(转)
    hadoop学习笔记(五):java api 操作hdfs
    java常用设计模式一:单例模式
    mysql CONCAT用法
    mysql date_sub用法
    hadoop学习笔记(四):hdfs常用命令
    try-catch+thows异常范围说明
    Python 类的多态
  • 原文地址:https://www.cnblogs.com/chenhongl/p/8707876.html
Copyright © 2011-2022 走看看