zoukankan      html  css  js  c++  java
  • mock以及特殊场景下对mock数据的处理

    一、为什么要mock

    工作中遇到以下问题,我们可以使用mock解决:

    1. 无法控制第三方系统某接口的返回,返回的数据不满足要求
    2. 某依赖系统还未开发完成,就需要对被测系统进行测试
    3. 有些系统不支持重复请求,或有访问访问频次限制。如不可重复支付,获取敏感信息的接口访问频次不可高于xx等
    4. 其他情况

    二、mock的实现原理

    一般测试场景中,都是对接口的返回数据进行mock。以http协议为例,

    1. 最简单的mock,可在mock服务器上保存一份mock数据,并给此mock数据生成对应的url。将要访问的第三方url,以mock url代替,这样即可满足最基本的mock需求。可在此处了解到更多关于此种mock的信息。
    2. 使用proxy实现mock。wiremock/anymock等开源工具可提供此实现。好处在于:
      • 可查看请求及回应,方便获取mock数据的原型
      • 匹配到规则的请求会返回mock数据,未匹配到的请求访问原服务
      • 无需修改服务配置,无需重启服务

    最近有接触到一些函数级别的mock。比如,mockito这个工具,即可实现不发出请求,即可获得mock数据的功能。

    三、特殊场景下对mock数据的处理

    有些场景对于mock来说较为特殊。比如,某接口对数据有加解密操作,这使得mock的数据无法直观理解,无法有效率地调整mock数据的内容以完成测试目标。另外,有些rpc协议不具通用性,通用的mock平台来支持此类协议成本太高。所以,我们的需要对我们的方法做一些变通。

    1. 对于接口加解密数据,我们开发一个函数,来支持mock数据的加解密。手工测试时,该函数可表现为mock平台的插件;接口自动化时可表现为处理mock数据的函数。也可以采用方法2.

    2. 直接将这个函数的逻辑整体mock掉。开发某功能:当程序运行到指定的方法时,不继续运行函数体,而是发送一个http请求到mock平台,将mock数据return出去。

  • 相关阅读:
    一个简单的makefile,一次性编译本文件夹下所有的cpp文件
    c++ 最短路两种算法
    C++语言十进制数,CDecimal(未完成)
    C语言面向对象的简便方法
    C语言2048
    C图书借还示例
    Javascript 备忘
    原型与原型链
    css3动画-跳动圈
    学习css3动画
  • 原文地址:https://www.cnblogs.com/sunada2005/p/7727585.html
Copyright © 2011-2022 走看看