谷歌的软件工程 读书笔记(十三)测试双打
文章插图
“测试双打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会使得测试不稳定
- 交互测试应该尽可能避免 , 因为暴露了实现细节 , 它更不稳定和脆弱
- 美国如果限制谷歌出口安卓系统,华为小米会怎样?看完长知识了
- 谷歌正努力修复Pixel 4a 5G智能机的触屏故障
- 7.8寸细腻大屏仅需千元!小米多看电纸书Pro评测:内置微信读书资源更丰富
- 谷歌发布安全报告:详细介绍去年年初检测到的复杂黑客攻击
- 教育科技大盘点:读书郎2020年底新品发布会那些让人惊艳的黑科技
- 破冰开始,华为“三箭齐发”,谷歌已成“过去式”
- 遭苹果谷歌亚马逊围剿,特朗普支持者的新阵地Parler是什么?
- 是有多不看好鸿蒙?谷歌没有发声!网友就说出一句让人难堪的话
- 谷歌应用出现仿造健康码软件!网友:不作恶?
- 谷歌浏览器拟禁用第三方Cookies 遭英国反垄断调查