1.接口测试的流程(如何做接口测试)
- 获取接口信息(API接口文档,或者抓包获取接口信息)
- 接口测试用例设计
根据获取到的接口信息,按照接口测试用例的设计方法,设计参数 和预期的结果 - 接口发包
通过postman向接口传递参数 - 返回信息验证
获取接口返回的信息,进行解析和验证
接口信息---->用例设计----->接口发包----->验证结果
填写接口url----》设置http方法-----》设置请求头域----》填写请求参数----》http状态码----》收到接口响应----》检查返回头域----》查看返回主题内容
2.发现前台数据显示错误如何定位问题?
1.查看前台调用的接口是否正确
2.查看数据库中初始存储的数据是否正确
3.查看接口调取过来的数据是否正确
3.接口测试用例如何设计?(请列出接口测试用例的设计思路或方法)
首先必要了解接口需求,查看概要设计文档,弄懂业务逻辑和功能模块
- 先保证这个功能是好的,也就是输入正常的参数,是否可以返回正确的结果
- 然后考虑接口异常验证:包括必填项验证、长度、类型异常、比如说手机号11位,输入非11位,10位、12位来验证
- 还有需要考虑接口的业务逻辑。比如说必须执行了登录,才能进行投标操作
- 一些必要的接口安全验证要考虑到,例如注册接口中传入的密码是需要加密
4.浏览器输入 url 按回车背后经历了哪些(http协议)
1.在 PC 浏览器的地址栏输入一串 URL,然后按 Enter 键这个页面渲染出来,这个过程中都发生了什么事?
1、首先,在浏览器地址栏中输入 url,先解析 url,检测 url 地址是否合法
2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。
3、在发送 http 请求前,需要域名解析(DNS 解析),解析获取相应的 IP 地址。
4、浏览器向服务器发起 tcp 连接,与浏览器建立 tcp 三次握手。
5、握手成功后,浏览器向服务器发送 http 请求,请求数据包。
6、服务器处理收到的请求,将数据返回至浏览器
7、浏览器收到 HTTP 响应
8、浏览器解码响应,如果响应可以缓存,则存入缓存。
9、 浏览器发送请求获取嵌入在 HTML 中的资源(html,css,javascript,图片,音乐······),对于未知类型,会弹出对话框。
10、 浏览器发送异步请求。
11、页面全部渲染结束。
5.cookies 机制和 session 机制的区别
- cookies 数据保存在客户端,session 数据保存在服务器端
- cookies 可以减轻服务器压力,但是不安全,容易进行
- cookies 欺骗; session 较安全,但占用服务器资源
深度了解可以学习此文章深度解析cookie和session的区别
6.http状态码
类别 | 原因短语 | |
---|---|---|
1xx | informational(信息性状态码) | 接收的请求正在处理 |
2xx | Sussess(成功状态码) | 请求正常处理完毕 |
3xx | redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4xx | clicent Error(客户端错误状态码) | 服务器无法处理请求 |
5xx | server Error(服务器错误状态码) | 服务器处理请求出错 |
200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,
且其 URI 已经随 Location 头信息返回
202 服务器已接受请求,但尚未处理
301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应
(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应
继续使用原有位置来进行以后的请求。
303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来
检索响应时,服务器返回此代码。
304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。 305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返
回此响应,还表示请求者应使用代理。
307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者
应继续使用原有位置来进行以后的请求。
401 当前请求需要用户验证。如果当前请求已经包含了 Authorization
证书,那么 401 响应代表着服务器验证已经拒绝了那些证书
403 服务器已经理解请求,但是拒绝执行它。与 401 响应不同的是,身份
验证并不能提供任何帮助,而且这个请求也不应该被重复提交
404 请求失败,请求所希望得到的资源未被在服务器上发现
500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
一般来说,这个问题都会在服务器的程序码出错时出现。
501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的
方法,并且无法支持其对任何资源的请求。
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收
到无效的响应。
503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。
7.http 协议请求方式
GET, POST 和 HEAD 方、OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
8.http报文(HTTP 请求报文与响应报文格式)
请求报文包含三部分:
a、请求行:包含请求方法、URI、HTTP 版本信息
b、请求头部(headers)字段
c、请求内容实体(body)
响应报文包含三部分:
a、状态行:包含 HTTP 版本、状态码、状态码的原因短语
b、响应头部(headers)字段
c、响应内容(body)实体
9.常见的 POST 提交数据方式
application/x-www-form-urlencoded
multipart/form-data
application/json
text/xml
10.无状态
1)、无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需
要前面的信息
(2)、无状态协议解决办法: 通过 1、Cookie 2、通过 Session 会话保存。
11.接口测试的必要性(为什么要做接口测试)
1.可以发现很多在页面上操作发现不了的 bug
2.检查系统的异常处理能力
3.检查系统的安全性、稳定性
4.前端随便变,接口测好了,后端不用变
5.可以测试并发情况,一个账号,同时(大于 2 个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
6.可以修改请求参数,突破前端页面输入限制(如金额)
12.接口测试怎么测(平常你是怎么测试接口的?)
-
通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
-
参数组合:现在有一个操作商品的接口,有个字段 type,传 1 的时候代表修改商品,商品 id、商品名称、价格有一个是必传的,type 传 2 的时候是删除商品, 商品 id 是必传的,这样的,就要测参数组合了,type 传 1 的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
-
接口安全:
1、绕过验证,比如说购买了一个商品,它的价格是 300 元,那我在提交订单时候,我把这个商品的价格改成 3 元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改
成功
3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如
果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则
是否容易破解。
4、密码安全规则,密码的复杂程度校验 -
异常验证:
所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验
证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传
入字符串类型,长度是 10 的,传 11,总之就是你说怎么来,我就不怎么
来,其实也就这三种,必传非必传、参数类型、入参长度。 -
性能测试
接口并发情况,如上面提到的:一个账号,同时(大于 2 个请求)对最后一个商品下单,或不同账号,对最后一个商品下单接口响应时间,响应时间太长了,肯定需要优化,一般都是毫秒级别
13.数据依赖
在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
用一个全局变量来处理依赖的数据,比如登录后返回 token,其它接口都需要这个 token,那就用全局变量来传 token 参数
14.依赖于第三方数据的接口如何进行测试
mock
详细请看文章
mock测试