谷歌的软件工程 读书笔记(十三)测试双打
文章插图
【谷歌的软件工程 读书笔记(十三)测试双打】“测试双打test doubles”指的是对象和函数来代表一个实际的实现 。 就是我们常说的mock 。
常见的test double就是用一个简单的对象实现实际的功能 。 例如内存内数据库 。 测试double可以显著降低测试成本 , 加快测试速度 。
测试Double对软件开发的影响测试double引入复杂性需要作出权衡
- 可测试性
- 可应用性
- 保真性
基本概念接缝支持使用测试Double来使得代码可测试 。 依赖注入是一种常见的接缝 。 谷歌使用Guice和Dagger来做Java语言的依赖注入 。 而对于Python , JavaScript , 由于语言的动态性 , 依赖注入更容易实现 。
Mocking框架支持对对象进行模拟来实现测试Double
在谷歌 , Java使用Mockito , C++使用googlemock , Python使用unittest.mock
单元测试相关技术有三种主要的技术来支撑单元测试中的测试Doubles
- Faking 对API的简单实现
- Stubbing 本身不实现任何行为 , 直接返回需要的值
- 交互测试 交互测试验证一个被测试的函数是否被调用 , 调用了多少次等
真实实现虽然可以使用mocking和faking , 但是其实使用真实的实现也是一种选择 。
在谷歌 , 随着使用mocking框架的时间推进 , 大家更倾向使用真实的实现来做测试 。
总结
- 用实际的实现有很多时候优于使用测试double
- 如果真实实现无法用于测试 , fake是一个很好的方式
- 过分使用stubbing会使得测试不稳定
- 交互测试应该尽可能避免 , 因为暴露了实现细节 , 它更不稳定和脆弱
- 小米科技|性价比拉满!TCL T8E-PRO QLED智屏当属潮玩世代的必备单品
- 华为鸿蒙系统|华为汽车战略布局,进入汽车行业的底气来自哪里?(车车佳)
- 浙江省|浙江的五大富豪,四位做过中国首富,仅马云的阿里就1年纳税366亿
- iOS|恒创科技:Linux日本云服务器安全设置的基本步骤
- javascript|手机移动端的PyTorch来了,还支持JavaScript
- 中关村|柳传志在这里被骗、掘金,书写半部科技史的中关村经历了什么?
- 手机维修|手机维修的猫腻‖你是不是上当了?
- 智能化|感知局限下,车路协同的“子弹”还得再飞会儿
- 华为鸿蒙系统|都2021年底了,为何Mate40Pro还是目前公认最好用的“安卓”手机
- saas|上半年的Redmi K40 Pro,现在入手2500元不到,还等?
