HTTP 接口自动化测试方案

发表于:2021-10-12 09:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:立师兄Linty    来源:简书

#
http
分享:
  测试人员的角色
  1、手工测试人员 
  o 执行 
    · 读懂测试用例
    · 明白业务逻辑
    · 准备测试数据
    · 比较执行结果
  o 持续执行 
    · 选择持续集成的工具
    · 让测试定时执行
  o 关注点:数据和对比
  2、中高级自动化测试人员 
  o 编写测试脚本 
    · 脚本都是线性的
  o 编写 JMeter 测试脚本 
    · 线性的
    · 准备数据
    · 请求接口
    · 解析响应
    · 进行断言
    · 查看结果
  o 编写 Postman 测试脚本 
    · 线性的
    · 准备数据
    · 请求接口
    · 解析响应
    · 进行断言
    · 查看结果
  o 编写 Python 测试脚本 
    · 有测试的概念 
      1)代码可以直接告诉你:结果。
      2)需要用“单元测试框架”或者 BDD(behavior driven development) 测试框架 。
      3)单元测试框架带来的好处 
      断言:让程序去判断是不是通过,并且告诉执行者
      4)无测试的概念 
      用 Python 去执行 HTTP 请求
      用 目测 HTTP 响应的结果
  代码:
  什么叫做无测试?代码不会告诉你 “PASS”或者 “FAIL”,必须目测 。
  · 看控制台的输出
  · 通过抓取通信,看通信的内容
  3、【抽离业务】编写业务代码 
  o 适用于:有测试分层的概念的方案
  o 分层
  1)测试脚本有调用,并不是所有的工作都在这一个脚本中完成 
  · 主要:场景方法:构建请求,解析响应(相当于在手工界面测试的:输入数据和点击提交)
  · 次要:核心方法:做支持的,读文件(CSV,Excel,Json,Yaml……),字符处理
  2)场景方法 
  · 依靠 业务类
  · 连接 测试脚本 和 业务类
  · 中间层,方便测试脚本的使用,降低使用难度,提高效率,节省时间 
  · 写 业务类 的人,来写场景方法
  3)业务类 
  · 构建请求
  · 解析响应
  · 具体的实现,交给“核心层”来做
  4、测试开发/高级自动化测试人员 
  o 负责“核心层”
  o 真正的操作“核心工具”的人
  o 在 Python 中,核心工具 = 各种第三方库
  o 库 = 无数个 “类”
  o 类,python 编程的术语,面向对象编程的基本单元
  <br />
  <a name="KHSXk"></a>
  测试工具的选择
  1、JMeter:线性工具,不用分层,一个人做所有
  2、Postman:比 JMeter 还线性,一个人做所有
  3、Python: 
  o 可以线性
  o 也可以分层
  o 关键点:是否做业务类(抽离业务类)
  <br />
  <a name="iWzn3"></a>
  Python 的自动化测试方案
  1、线性 
  o写多少个 Python 的文件(*.py)
  o有没有涉及到“类”
  o有没有涉及到测试:脱离目测对比,程序没有直接告诉结果
  o有没有在文件中写 “方法”
  o有没有编写 非 Python 的文件
  o每个文件分别是什么
  o要如何执行来看测试结果
  2、分层 
  o一定写了“业务类”或者“业务模块”(没有用面向对象,用了面向过程)
  o直接执行测试的数据是哪些文件?
  o数据本身是关系型(一行一行的表格)?还是借助了“键值对”的方式?
  o数据是如何使用的?不要用代码来描述
  o数据的使用是如何在用例脚本中实现的?
  o用例脚本是否用到了“类”
  o用例脚本如果用到了“类”,是否是直接写的类,还是集成了别的“类”
  o如果用例脚本需要继承“类”,被继承的类是如何设计的(可以用类图表示),也可以直接描述。
  o用例脚本本身如果是个类,这个类是如何设计的(可以用类图表示),也可以直接描述。
  o如果用例脚本不是个类,那么“方法”是如何设计的,有哪些方法,分别是什么用?
  o用例脚本中需要调用的场景方法是怎么样设计的,输入参数、输出返回值?
  o用例脚本中需要调用的核心方法是哪些?
  o从以下开始是高级水平:
    · 场景方法的步骤有哪些,具体的步骤描述
    · 场景方法显然用到了业务类,业务类是否需要继承?
    · 如果业务类需要继承别的“类”,请设计这个或者这些被继承的“类”(类图或者描述)
    · 业务类本身要有什么设计(类图或者描述)
    · 业务类本身是否需要别的类做支持,非继承方式的支持,而是调用(实例化)等支持,具体有哪些?
    · HTTP 的请求究竟是怎么发出去的?描述数据输入到 Python 的第三方库的使用
    · HTTP 的响应在 Python 的第三方库中,是什么样的结构(类,或者普通结构 list、dict等)
    · 如何需要把第三方库进行一个封装,请设计一个封装后的类(类图或者描述)
  <a name="gISES"></a>
  Python 接口自动化测试的代码实现
  1、线性
  2、分层
  3、对象:Ping++的真实的接口 
  o支付对象的创建
  o支付对象的撤销
  o支付对象的查询
  o支付对象的列表
  o用户 
    · 新注册的(已签约的试用版用户)
    · 未签约的无限次使用的用户,需要RSA私钥 
    · 账号:liutingli@cdtest.pro 
    · 密码:Welcome123!
    · 开发密钥:sk_test_CGmn58bPGizDqvDCeTCK8Oi5
    · RSA私钥:
  -----BEGIN PUBLIC KEY-----<br />MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4JmKJNk4w6qpV/vNF0HC<br />Eyg55CPoniRlRUKyKHuc9FXS1ckNo3gLONVJXT9i54+GB3bZWX0KXFvlMbXAKwUd<br />wdIIZcifRqpGDhJopMosCFpGXz+trnq8hWaJvlgzx4v+mAbDuy+r1Y1FEex9hPUN<br />zP0zTy86jyu+ZTmwJXJQZVbuNxvMC7tooGAVtiIRqJK5hygcXd4BFLR+igLkzMnG<br />9NGkg3Xsc2hLqpAwpUauXQdAvz7Rgfe9cEKfN2W+mvXA6DRcCS58qrjzmJw4WOZJ<br />M1cARi9iCdZy5wehIAJ4oHIA3R2lj+IFoyB9UQTgNmKK6bCNZn8+ZsjakfbGL/k7<br />8QIDAQAB<br />-----END PUBLIC KEY-----
    - 请求次数:500/月
    - APP_ID: app_rPejT898avPSnDaL- 未签约的无限次试用的用户,不需要RSA私钥(可以用Postman来测试)
    - 账号:liu.tingli@qq.com
    - 密码:
    - 旧的密钥(无效):sk_test_aX50eTPuPaH8fzXDaTWzvnr1
    - 新的密钥(有效):sk_test_5mvfXDq9G0C8vrrrjH8aXvXH
    - RSA私钥:无需提供
    - 请求次数:无限
    - APP_ID:app_HGafHSLyDm9KT0OO
    - 管理平台:[https://dashboard2.pingxx.com/app/app_HGafHSLyDm9KT0OO/app-overview](https://dashboard2.pingxx.com/app/app_HGafHSLyDm9KT0OO/app-overview)

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号