接口测试基础学习笔记

一、什么是接口

1.概念

接口分为程序对内接口和程序对外接口,内部接口一般为开发自测,测试测的是程序对外的接口。

接口其实就是各种数据库操作。

2.分类

   (1) webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。(老系统中用到)

   (2) http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式

3.前端和后端

   (1) 前段(客户端):网页(html、css)应用(andriod、Object-C)

   (2) 后端(服务器端):负责业务逻辑(java、python)、server端测试一般是测接口

   (3) 前后端交互:接口返回的数据都是json(Key-Value),通用的数据类型:json

二、什么是接口测试

1.概念

接口测试就是功能测试

2.接口测试的必要性

   (1) 可以发现很多在页面上操作发现不了的bug,例如通过接口修改订单的价格或数量。

   (2) 检查系统的异常处理能力

   (3) 检查系统的安全性、稳定性

   (4) 前端随便变,接口测好了,后端不用变 

3.接口测试的流程

   (1) 需求评审,熟悉业务和需求
   (2) 开发提供接口文档
   (3) 编写接口测试用例
   (4) 用例评审
   (5) 提测后开始测试
   (6) 提交测试报告

4.如何进行接口测试

测接口的话,必须有接口文档,接口文档包括以下内容

   (1) url
   (2) 请求方式 post、get
         如果是get请求,直接用浏览器就能发,不需要借助工具。https://www.baidu.com/s?ie=utf- 8&f=8&rsv_bp=0
   (3) 入参(请求参数)
   (4) 返回参数
   (5) 请求、返回示例(非必须)
   (6) 状态码说明(非必须)

三、怎么测接口

1.http请求

    (1) 接口请求报文拼接

        i)  url?param=value&param2=value

         问号前面是请求url,后面是请求的参数名和参数值,多个参 数用&来连接
         https://api.douban.com/v2/book/search?q=木目心
        ii)  入参是json串的,那就不能拼接参数了,需要借助工具来完成比如postman

    (2) http、get、post请求

        i) http请求
           请求头
           请求体
       ii) get请求
           没有请求体,只有请求头
           参数只能写在url里面,或者cookie里面
      iii) post请求
           请求头
           请求体
           请参数放在请求体里面

    (3) get请求与post请求的区别

         i) GET使用URL或Cookie传参。而POST将数据放在BODY中
        ii) GET的URL会有长度上的限制,则POST的数据则可以非常大。(现在浏览器已经不限制长度了)
       iii) POST比GET安全,因为数据在地址栏上不可见。 (post抓包可见,所以都不是安全的)
      iiii) 一般get请求用来获取数据,post请求用来发送数据

    (4) http状态码  

         i) 200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
        ii) 300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
       iii) 400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
      iiii) 500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果

2.WebService请求

不需要再拼报文了,会给一个webservice的地址,或者wsdl文件,直接在soapui导入,就可以看到这个webservice里面的所有接口,也有报文,直接填入参数调用 

3.怎么设计接口用例

通过性验证:
首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试

参数组合:
type传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合

接口安全:
1、绕过验证,修改订单价格或数量,后端有没有做验证
2、绕过身份授权,普通用户,能否修改商品信息
3、参数是否加密,登录用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
4、密码安全规则,密码的复杂程度校验

异常验证:
异常的,三种,必传非必传、参数类型、入参长度

根据业务逻辑来设计的话,就是根据自己系统的业务来设计用例
举个例子,拿bbs来说,bbs的需求是这样的:
1、登录失败5次,就需要等待15分钟之后再登录
2、新注册的用户需要过了实习期才能发帖
3、删除帖子扣除积分
4、......
把这些测试点列出来,然后再去造数据测试对应的测试点。

咱们测试接口的话,肯定要写测试用例,写测试用例的话,就要有一个用例模板,那需要有哪些字段呢?见“测试用例.xlsx"
1、项目 是哪个项目的
2、模块 这个接口是属于哪个功能模块的
3、用例id
4、接口名称
5、用例标题 用例是干嘛的
6、请求方式 GET/POST
7、请求url url地址
8、请求参数
9、前置条件 有依赖的时候,比如说要测登录失败3次的
10、结果验证 预期结果
11、请求报文
12、返回报文
13、测试结果 通过/失败
14、测试人员

4.接口测试中的小概念

   (1)Cookie

存在你本地的一个键值对。

   (2)Session

存在服务端的一个键值对。

   (3)接口签名

为了防止别人恶意刷请求
它是一个加密后的字符串
http://api.nnzhp.cn/reg?username=xxx&passwd=xxx&sign8eea855efc702130d9c9cafcd9f4d91a

   (4)Refer

是为了判断网页从哪里跳转过来

   (5)URL编码

中文等特殊字符在传输过程中会变为%23%232%232%这样的url编码
https://www.bejson.com/enc/urlencode/ URL在线编码、解码工具

原文地址:https://www.cnblogs.com/dongrui624/p/8550229.html