zoukankan      html  css  js  c++  java
  • 【接口测试学习】Mock服务的设计与实现

    一、什么是Mock服务/工具

      在测试过程中,对于一些不容易构造/获取的对象,创建一个 Mock 对象来模拟对象的服务/工具。比如:在测试过程中,手工构造的数据不能返回我想要的结果,从而导致程序的后续处理走不到我们期待的分支,最终造成测试的不充分。当然,Mock 服务除了有这种能力以外,还有其他优点:

    解除依赖

      随着现在软件系统架构越来越复杂,一个全流程的测试通常都要走好几个系统/模块,如果各个系统/模块的开发进度不一致,提前开发好的系统/模块要进行测试,这时我们可以依赖 Mock 服务/工具来对已经开发好的系统/模块进行测试。

    充分测试

      就像上面提到的,在手工测试无法构造出我们想要的数据返回时,Mock 服务能给我们返回任何想要的返回数据,这样有利于我们对程序进行充分的测试。

    稳定性保障

      在做性能测试时,第三方系统如果不能接收大量请求,那么性能测试将无法进行,这时我们可以使用 Mock 服务模拟第三方系统的返回进行性能测试,同时 Mock 服务返回的数据也会比第三方系统更加稳定可靠,更加有利于我们定位自己系统的性能瓶颈。

    自动化测试的支持

      如果我们发现,自动化测试的 Case 老是因为环境的不稳定导致失败,这时我们可以使用 Mock服务模拟目标服务的数据返回从而使自动化 Case 能够顺利的运行,保证自动化测试的成功率。

    二、Mock服务的优缺点

    优点

    • 由于其他系统模块出错引起本模块的测试错误,我们可以采用 Mock隔离,避免干预;
    • 开发过程中,只要交互双方定义好接口,团队之间可以并行工作,进程互不影响;
    • 依赖系统无法响应,或者响应异常时,可以用 Mock Object代替,快速反应,不会影响测试进度;
    • 提前接入测试,提高测试效率,当接口定义好后,测试人员就可以创建 Mock,把接口添加到自动化测试环境,提前开始测试,起到测试驱动开发效果;
    • 可以有效的增加覆盖,接口涉及入参,或者业务逻辑复杂的情况,某些场景无法通过正常手段进行操作,可以通过 Mock 虚拟模拟;

    缺点

      测试过程中如果大量使用 Mock,测试的场景失去了真实性,则会导致很多场景没有得到正确的测试,所以不管 Mock 服务功能有多强大,在真实环境下必要的联调测试是必不可少的。 

    三、Mock服务实现能力

    • mock所有http请求
    • 可基于url和ip进行匹配
    • 返回数据固定
    • 可实现注入 随机id,时间戳等数据的替换
    • 性能要高
    • 返回数据模板化
    • 要实现可以迁移
    • 追加: 透传

    四、Mock服务的基本设计思路

    • 第一步:将被测服务请求的第三方服务的地址改为Mock服务的地址;
    • 第二步:人工请求Mock服务,添加Mock数据;
    • 第三步:正常请求被测服务;
    • 第四步:被测服务请求Mock服务,Mock服务返回数据给被测服务;

    五、Mock服务的模块设计

    gateway

    • 负责接收数据的注册,把注册的数据存入数据库;
    • 负责接收被测服务发过来的请求,并从数据库中查出匹配的数据返回给被测服务

    core

    • 核心的逻辑处理,包括注册数据存储逻辑以及返回给被测服务的数据的查询与处理

    dao

    • 负责数据库层的处理

    commons

    • 枚举、工具类、POJO类、异常体系、常量等的定义

    sdk

    • 接口自动化需要用到的一个模块
    • 编写接口自动化用例时,向Mock服务发送注册数据,同样是发送给gateway模块接收
    • 单独打包给接口自动化框架依赖

    manager

    • 通过页面录入注册数据,和gateway模块进行关联

    六、代码实现

    地址:

    转载于:https://www.cnblogs.com/L-Test

    作者:gtea 博客地址:https://www.cnblogs.com/gtea
  • 相关阅读:
    yzoj P2344 斯卡布罗集市 题解
    yzoj P2350 逃离洞穴 题解
    yzoj P2349 取数 题解
    JXOI 2017 颜色 题解
    NOIP 2009 最优贸易 题解
    CH 4302 Interval GCD 题解
    CH4301 Can you answer on these queries III 题解
    Luogu2533[AHOI2012]信号塔
    Luogu3320[SDOI2015]寻宝游戏
    Luogu3187[HNOI2007]最小矩形覆盖
  • 原文地址:https://www.cnblogs.com/gtea/p/12715903.html
Copyright © 2011-2022 走看看