chenhongl

导航

 

接口测试:

  就是功能测试。

接口测试的必要性:

  接口测试可以发现一些页面上操作发现不了的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的参数:

   

 

posted on 2018-04-03 15:42  chenhongl  阅读(201)  评论(0编辑  收藏  举报