知道的越多,未知的越多|

园龄:粉丝:关注:

接口测试面试

为什么要做接口测试

新功能前期工具接口测试:

  1. 一般后端接口比前端页面先开发完,所以测试可以更早的介入测试,更早地暴露接口问题,减少前端开发的返工。
  2. 如果后端接口参数未作限制,可以通过像fiddler这样的代理请求工具绕过前端限制任意修改参数,当传入不合法参数时可能造成系统出错等严重问题。
  3. 部分接口功能没有对接前端页面,功能测试无法覆盖,需通过接口测试覆盖测试点。
  4. 检查接口报文敏感信息是否加密,账号鉴权等问题。

冒烟或回归的脚本接口测试:

  1. 接口功能稳定,较少变动,容易实现自动化持续集成,可以减少人工回归成本与时间,缩短测试周期。

如何开展接口测试

  1. 分析接口文档或需求文档,找出测试点,测试点分三个类:
  2. 编写接口测试计划
    测试计划就是功能测试计划基本一样就是知名的5w1h了
    1) why——为什么要进行接口测试;
    2) what——测试接口包括哪些;
    3) when——测试接口不同阶段的起止时间;
    4) where——相应接口文档,接口缺陷的存放位置,测试环境等;
    5) who——项目有关人员组成,哪些接口分配给哪些人;
    6) how——使用哪些测试工具以及测试方法进行测试。
  1. 设计测试用例
    依据文档分析出来的测试点,分为单接口场景和多接口场景进行设计

单接口

  • 正向数据:也就是能正常发送请求,正常获取响应的数据
  • 反向测试:用不属于规定范围的数据区发送请求检查服务器能否正常处理

多接口场景测试

  • 业务场景功能测试(站在用户角度考虑常用的使用场景)
  • 多业务场景功能测试主要是测试接口之间数据依赖
  1. 使用接口工具执行用例
    postman、jmeter
    考虑:关联,加密、动态参数,签名等。

如何设计接口测试用例

  • 请求body的完整性、正确性
  • 请求参数必填项和选填项
  • 请求参数合法性(上传文件接口关注文件类型和大小,查询接口考虑数据排序、数据分页)
  • 请求参数的边界值
  • 数据不可重复性
  • 响应字段的正确性、完整性
  • 关联依赖接口
  • 性能,TPS(每秒事务数),接口响应时间、最大并发量
  • 安全,构造恶意的字符请求,如SQL注入;敏感信息加密;鉴权(缺少、错误和过期)
  • 链路接口考虑业务逻辑。

关联接口怎么测

根据完整业务场景去设计关联接口,在一条业务场景接口用例中去依赖每一步的用例

第三方支付接口怎么测

接口测试常见的bug类型

功能:

  1. 接口功能没实现,接口逻辑没按需求处理数据
  2. 接口功能错误,接口逻辑错误处理数据
  3. 接口功能正常,响应内容错误
  4. 接口入参未对异常值作处理
  5. 接口入参数量非法未作处理

安全:

  1. 未对敏感信息加密传输
  2. 返回敏感数据未脱敏显示

性能:

  1. 响应时间较长
  2. 并发量未满足业务需求

接口鉴权如何处理

接口参数加密如何处理

HTTP与HTTPS协议的区别?

  1. http协议是超文本传输协议,信息是明文传输;https协议是由SSL+HTTP协议构建的加密传输协议,
  2. 默认工作在tcp协议的端口不一样,http:80,http:443
  3. 由于SSL加密的关系,https页面响应速度比http页面慢

常见的post的提交数据的方式有哪些?

主要有四种方式,四种方式取决于Content-Type这个请求头:

  1. Content-Type:application/x-www-form-urlencoded:数据报文是字典,相当于通过表单方式去提交数据,数据的格式:a=1&b=2&c=3。
  2. Content-Type:multipart/form-data:报文包含有文件上传。
  3. Content-Type:application/json(text/plain,text/xml...):报文都是字符串类型。
  4. Content-Type:binary:报文类型是以二进制的方式上传文件。

常见的请求头以及它们的作用

  1. accept:客户端接收的数据格式。
  2. X-Requested-With:异步请求。ajax异步请求。无刷新。
  3. User-Agent:发送请求的客户端的类型。
  4. Content-Type:请求报文格式。
  5. Cookie:Cookie信息

get和post的区别

get和post都可以向服务器提交数据,并且都会从服务器获取数据。
区别:

  1. 传参方式不同:get通过地址栏的方式传参,post通过表单报文传参。
  2. 参数长度不同:get的参数有长度限制,post没有限制。
  3. 常用作用不同:get一般是获取数据,比如查询,post提交数据,比如:增删改。
  4. 发送过程不同:get只发送一个tcp数据报文(包含请求头和请求体),post发送两个报文(1.请求头,返回100;2.请求体,返回200)

接口请求中常用的返回状态码

  1. 1xx 信息提示
  2. 2xx 成功
  3. 3xx 重定向(发送一个请求时,这个请求多次请求了服务器的多个资源)
  4. 4xx 客户端错误
  5. 500 服务端错误
200 Ok:请求成功并返回数据
302 把这个请求重定向到别的地方了。
400 代表客户端发送的请求有语法错误。
403 服务端已理解请求,但请求被拒绝。通常是资源权限问题。
404 表示请求失败,服务端找不到资源,可能是url错误或文件已被删除。
500 表示服务器端程序或者配置错误,导致了它无法完成对请求的处理。
502 代表网络环境有问题。
503 代表服务不可用,服务器当前无法处理请求,可能是服务未启动成功。
504 代表服务器端响应超时,没返回结果。

cookie,session,token有什么相同点和不同点。

相同点:都是用于鉴权并且都是服务器生成的。
不同点:
cookie保存在客户端的浏览器上,不安全,可以去分析存在本地的cookie进行cookie欺骗。
session保存在服务器的内存,默认保存30分钟,比cookie安全,缺点就是当登录的用户越多,比较占用服务器资源。session一般会生成sessionID(名称自定义),可以通过cookie传输。
token存在服务器的数据库里面,通常通过一个接口或通过登录获取,后续所有的接口都必须传token才可以请求成功。token也可以通过cookie传输。

请问你们公司是如何做接口测试的?(包括:接口测试流程、方案以及用例设计)

  1. 获取接口文档,熟悉但接口以及链路接口的业务,包括接口地址,鉴权方式,入参,出参,错误码等。
  2. 编写接口测试用例并评审
    正例:单接口返回成功场景,链路接口业务流程实现。
    反例:
    鉴权异常:空,错误,过期......
    参数异常:空,类型异常,长度异常。
    错误码异常
    其他异常:接口黑名单,接口调用次数限制。分页。
  3. 使用接口测试工具或代码的方式执行接口测试。
    重要考虑一下情况:
    1)接口关联,接口参数加密,是否动态参数,接口参数是否前面,是否需要带请求头。
  4. 实现持续集成并输出接口测试报告电子邮件,记录bug。

没有接口文档,如何做接口测试?

方式一:可以使用fiddler等抓包工具抓取接口数据之后整理成接口文档,如果有不清楚的字段,找时间集中找开发验证,然后再进行接口测试。
方式二:可以通过jmeter的代理录制功能,先把接口请求录制下来形成接口文档,然后再逐一的进行接口测试。

你平常做接口测试的过程中发现过哪些bug?

常规bug:接口没实现,没有按接口文档返回结果,未对异常值参数作处理。
权限bug:通过一个账号的token去请求操作另一个账号的内容。

  1. 创建一个业务对象时,未对参数作字符长度限制导致系统报错。
  2. 下单商品时将数量参数设置为负数导致系统错误。
  3. 下单商品时将价格设置为负数,发现余额反而增加了。
  4. 接口未对用户开放权限,调用时报403。
  5. 缺少必填项参数正常请求。

你在接口测试中是怎么校验结果是否正确的?

有两种需要校验:
第一种:状态码校验,验证返回的状态码为200,200代表接口请求成功有返回数据,但数据不一定正确。
第二种:业务校验:基于接口文档,

  1. 错误码为0,错误码为开发自定义。
  2. 当接口响应报文比较短,比较固定的情况下,校验完全一致。
  3. 当接口响应报文比较长,比较多的情况下,校验包含最核心的业务信息。
  4. 当接口响应报文为非常复杂的多层级XML格式或JSON格式,通过XPath,JSONpath,正则表达式的匹配方式获取到最关键的业务节点,然后再校验。
  5. 当接口无响应体时,可通过查询数据库校验或者是通过其他接口校验。

如何分析一个bug是前端还是后端?

通过抓包工具抓包,然后查看请求报文。如果请求报文对比接口文档有问题,那么就是前端的问题。如果请求报文没问题,那就看返回报文,返回的数据不对,那就是后端问题。

依赖于第三方数据的接口如何进行测试?

接口关联(依赖)是项目中的接口依赖于本项目的接口。
可以通过postman搭建Mock服务,但是postman的mock服务有访问次数限制,一天只能访问1000次。也可以通过servlet,Flask等技术来实现接口mock服务。

对于加密接口,签名接口如何进行测试?

加密接口:
在调用接口的时候,首先要弄清楚接口的加密方式是什么?
如:

  1. 对称式的加密方式(私钥加密):不常用的有DES,AES,常用是Base64加密方式。
  2. 非对称的加密方式(双钥加密):RSA加密方式。
    由一个密钥密码生成双钥(公钥和私钥),公钥加密,私钥解密,私钥加密,公钥解密。
  3. 只加密不解密。
    1)MD5加密
    2)SHA1,SHA3...
  4. 自定义加密规则。混合加密方式。
    了解加密规则之后,在请求接口之前先要对参数做对应的加密之后再发送请求。单一加密方式,postman和jmeter有些是支持的,postman使用JavaScript脚本实现,jmeter使用bashshell中的Java代码实现。

当一个接口出现异常时候,你是如何分析异常的?

一个接口请求不通该如何排查?

  1. 检查请求四要素:请求方式,请求路径,请求参数,请求头。
  2. 检查客户端和服务端之间的网络是否能ping通
  3. 检查项目服务是否部署成功正常运行
  4. 检查鉴权码是否有效
  5. 检查客户端是否开了代理服务器,如fiddler

本文作者:强哥不强

本文链接:https://www.cnblogs.com/roronoazoro77/p/16436673.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   强哥不强  阅读(19)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 一起去看风和日丽 奚缘
一起去看风和日丽 - 奚缘
00:00 / 00:00
An audio error has occurred.