基础问答杂谈

作者:Gakki

使用什么测试框架做的上一个项目的自动化测试?说下怎么做的?对自动化的理解?

python+pytest+allure 做接口自动化,偶尔会用unittest

  1. 将测试用例写到 Excel 表中,然后其中有一列用来判断是否运行用例,有一列是用来判断接口之间的依赖性
  2. 然后将所有需要运行的用例读取出来,然后通过 @pytest.mark.parametrize 装饰器循环运行用例,先判断是否存在接口的依赖性,是否依赖上个接口的入参和响应数据,如果需要,则依赖的接口需要先运行,每运行完一次用例都将响应数据保存下来,已备后面有的接口会用到。如果是登录的接口,需要将token放入头部,后面的用例好直接调用。
  3. 将响应的数据进行断言。如果失败,将响应数据保存到log中,并在excel表中的一列中表明该用例运行失败

理解:

  1. 可以尽早的发现bug,因为接口自动化是偏底层的,所以可以更早的发现bug
  2. 提高工作效率,每次更新迭代版本的时候,可以先运行写好的脚本,查看之前的接口是否受到影响,这样可以大大的提高测试人员的工作效率
  3. 协助定位问题,接口层发现问题了,可以快速的定位到哪里错问题了
  4. 线上监控报警,可以通过Jenkins,定时运行脚本,如果有问题,可以通过邮件发送到测试人员手中,让损失尽量减少
  5. 协助手工测试完成很难模拟或无法模拟的的工作,比如付款的时候,篡改数据等。

自动化遇到用例fail掉如何排查故障?

  1. 从 log,然后根据 log 检查问题所在,是不是因为版本更新了入参什么改了
  2. 运行用例,打断点/断言,查看入参或响应数据是否有问题。也可以将入参复制下来,放到接口文档上看是否有问题。然后逐一调试。

说说接口测试的流程和接口自动化流程

流程:

  1. 分析接口文档和需求文档
  2. 编写接口测试计划
  3. 编写接口测试用例并评审
  4. 接口测试执行,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过
  5. 输出接口测试报告
  • 其他。接口文档主要包括以下几个部分:
    • 接口说明
    • 请求方式
    • 请求URL
    • 请求参数
    • 返回数据
    • 返回实例
  • 接口用例要包含如下部分:
    • 用例编号、模块名称、接口名称、用例标题、请求方法、请求URL、请求参数(包括请求头、请求体)、预期结果、实际结果等。

requests 获取响应内容、响应状态码、响应头

  • r.text # 通过文本的形式获取响应内容
  • r.encoding # 通过encoding来获取响应内容的编码以及修改编码
  • r.content # 通过content获取的内容便是二进制类型的
  • r.json() # JSON响应内容
  • r.raw # 原始响应内容。也就是urllib中的HTTPResponse对象

Post请求的四种参数形式是什么?

请求方式 描述
application/x-www-form-urlencoded 浏览器的原生
表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。
multipart/form-data 一般用来上传文件,各大服务器的支持也比较好。所以我们使用表单 上传文件 时,必须让表单的enctype属性值为 multipart/form-data.
application/json 用来告诉服务端消息主体是序列化的JSON字符串
text/xml 使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范

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

  • 接口出现异常,首先我们要分清楚这种异常是什么类型的异常。
  • 首先,我们可以通过接口请求的返回值和预期结果比较,来判断这个异常类型。如果是 HTTP 请求的接口,我们可以根据接口的返回状态码来判断这个异常类型。 如:400+的异常都是客户端的异常,500+的异常都是服务器端的异常。
  • 判断完接口异常类型之后,我们根据各种异常类型来分析这个异常。
  • 比如是客户端的异常,我们需要定位出接口那部分功能出问题,是参数?请求方式?还是路径?请求头数据不对?等等;比如是服务器端的异常,我们需要定位异常发生在服务器的那部分,是server部分,还是数据库部分,还是中间件部分?
  • 定位好异常之后,能够复现这个异常,就将 bug 指派给对应的人员。

什么是 DNS?

  • 域名解析服务。将主机名转换为 IP 地址。如将 www.google.com 主机名转换为 IP 地址:69.171.233.33

为什么要做接口测试?

  • 越底层发现bug,它的修复成本是越低的
  • 前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。
  • 检查系统的安全性、稳定性
  • 检查系统的异常处理能力
  • 可以发现很多在页面上操作发现不了的bug

你可能感兴趣的:(基础问答杂谈)