独孤湘瑶  

一、接口测试基础

1、什么是接口?

  1)定义

    前后端沟通的桥梁,数据传输的通道

​  2)分类

    内部接口(上层服务、下层服务、同级接口),外部接口(第三方接口,例如支付接口)。

2、什么是接口测试?

​  1)定义

    通过工具/代码,填写数据,确定响应数据的正确性

​  2)原因

  1. 成本更低:越底层发现bug,修复的成本越低;
  2. 提高效率:更早进入测试环节,不需要等前后端都开发完。
  3. 节约成本:接口不会频繁变动。
  4. 安全性强:跳过前端的校验(正则),直接访问接口。前端校验不需要发送接口请求,导致一些重要信息是否加密传输无法校验。

二、接口测试原理

1、接口测试原理是什么?

  1)定义

  接口测试主要从以下几点来测试:

  1. 请求与响应(HTTP请求):一般来说,接口请求和响应通常使用JSON或XML格式(接口测试基础重点-学习已完成总结本文);
  2. 参数传递:包括参数的类型、取值范围、必填性以及参数之间的依赖关系等;
  3. 功能测试:最重要的一部分,根据接口设计文档来验证,接口在各种情况下是否正确执行,以实现预期结果;
  4. 性能测试:包括接口的响应时间、吞吐量、并发性等方面的测试(高级接口测试-暂未学习到);
  5. 异常处理:异常情况下接口是否有给出适当的提示,例如:参数错误时返回错误码及错误信息;
  6. 依赖关系:各接口之间是否存在依赖关系,注册登录加入购物车订单提交等之间的依赖关系;
  7. 安全验证:数据传数的加密、权限控制、防止SQL注入、防止跨站脚本攻击等。

  2)重点

  URL 统一资源定位符(网页、图片、视频等资源)

    组成:

   (1)协议:HTTP、HTTPS。(常用协议)

   (2)域名/主机IP(目标服务器)。例如:www.名字.com(域名)=14.XXX.XXX.XXX(IP),域名解析后就是IP,为什么域名化?因为方便好记,IP地址比较难记。http://www.名字.com,http://14.XXX.XXX.XXX。DNS:域名解析系统自己本机:localhost、127.0.0.1

   (3)端口(不一定有):区分IP对应的是哪个服务(域名化时不显示,IP时或本机时有端口)。例如:公司地址:广东省XXX市XXX区XXX路XXX号(IP地址),门牌号:0000(端口)。

   (4)路径:来到某个端口服务是为了做什么?例如:/reg(注册),/login(登录)。http://域名/reg。

   (5)参数(不一定有):路径后面跟一个?,然后再接key=value,如果有多个参数用&进行连接。参数一般是存在get请求方式当中。

  HTML 超文本标记语言(特点:成对出现<>内容</>,前端使用。)

  HTTP 超文本传输协议(常用协议)

  3)HTTP请求

  四要素:请求URL、请求方法、请求数据(参数)、响应数据。

  (1)请求URL:参考上面URL的组成。

  (2)请求方法:HTTP1.0定义了三种GET、POST、HEAD。1.2版本新增了OPTIONS、PUT、DELETE、TRACE和CONNECT。

  (3)请求数据:请求行、请求头、请求体

    A、请求行:请求方法、请求地址(URL)、协议版本。

    B、请求头:很多字段,系统固定的,告诉服务器需求什么资源,描述对应的请求。注意:cookie(鉴权)、content-Type(传输数据的格式,和请求体数据格式一致)。

    C、请求体:请求参数。get请求方式参数在URL中,post请求方式参数在body当中

  (4)响应数据:响应行、响应头、响应正文

    A、响应行:协议版本、状态码(HTTP Status Code)、状态信息。

      响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)。

    

    

    

    

    

    B、响应头:告诉客户端返回的数据,比如大小、时间、返回数据格式等。  

    C、响应正文:具体响应数据得到后,对应的前端会进行渲染,得到用户能够看明白的数据格式及样式等。

    

2、怎么做接口测试?

  1)接口工具

    常用的有Postman、JMeter、SoapUI。工具帮助测试人员方便地发送请求、验证响应、生成测试报告等(级接口测试-正在学习待总结)。

  2)自动化测试

    通过编写脚本(Python)和使用自动化测试框架(Pytest+Allure),提高测试效率和重复利用性(高级接口测试-暂未学习到)。

 

3、GET和POST的区别

  1)get请求一般参数在请求的url当中,以 ? 隔开,?后面是参数,多个参数用&连接;post请求把数据放在http请求的Body中,且请求头content-type要与Body的数据类型一一对应

  2)get提交数据大小有限制(url长度有限制);post提交数据大小没有限制

  3)get需要使用Requests.QueryString来取得变量值;post需要使用Requests.Form来取得变量值。

  4)get只能进行url编码,只接受ASCII字符;post支持多种编码,字符没有限制

  5)get提交数据会带来安全问题一般用于查询,例如搜索商品;post相对比较安全一般用于提交数据,例如注册、登录等。

 

posted on 2024-07-18 00:45  独孤湘瑶  阅读(20)  评论(0编辑  收藏  举报