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

2016-04-22 10:29:08 +08:00
 morefreeze

背景

有 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 肯定会有。

2612 次点击
所在节点    编程
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/273563

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX