V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
morefreeze
V2EX  ›  编程

Mock 测试选用哪种方案好呢?

  •  
  •   morefreeze · 2016-04-22 10:29:08 +08:00 · 2620 次点击
    这是一个创建于 3156 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    有 A 模块和 B 模块,俩模块中都负责比较复杂的逻辑,但都是我们自己实现且同事在职。 A 模块总是与 B 模块通过 tcp 通信,发一个 protobuf 并接一个 protobuf 。目前要测 A 的一个函数 f ,需要 B 在某种特定情况下(比如先开机,再翻转 360 度,再以 60km/h 弹射起步,最后以最小角度入水)才能模拟。

    方案 1

    mock 一个模块 B ,简单实现一个内部逻辑,通过一些新增的函数去定制上面描述的特殊情况。

    方案 2

    因为他俩通过 tcp 来通信,重写一个简单的 Send 函数,对于特定请求 request ,直接返回 response ,这样 A 每次调用 Send 都会收到事先写好的 response ,就可以直接处理。

    个人分析:

    方案 1 中的 mock B 可能需要和实际的 B 逻辑进行同步,好处是测试写起来更简单清晰,如果有新增测试只需要简单添加一个新的测试就行,坏处是自己本身的正确性无法保证。

    方案 2 不需要在意实际 B 的更新,但缺点是测试可能会比较繁琐,需要人工模拟请求与返回(这里有个取巧的办法是将某个实际的请求与返回记录下来直接做成测试),后期几乎无法维护,只能新增。

    问题

    1. 我描述的这种测试是介于单测与集成测试之间的一种测试,这个学名叫?
    2. 方案 1 和 2 大家更倾向于哪个,或者有哪些是我没分析到,或者还需要哪些条件?

    补充

    模块 B 目前处于开发后期,功能暂时不会有新的,修复 bug 肯定会有。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4798 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:45 · PVG 11:45 · LAX 19:45 · JFK 22:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.