当前位置:网站首页>读《Software Engineering at Google》(12)
读《Software Engineering at Google》(12)
2022-04-22 23:08:00 【InfoQ】
- 读《Software Engineering at Google》(12)—— Unit Testing
- :@Google,所谓Unit Test指相对较窄的范围,典型如类或方法,虽然Unit Test比较小,但是不绝对如此。鼓励工程师写80%单元测试,和其它更大范围的测试。并且重点关注测试的可维护性,达到测试过就安心的状态,停下来的原因就是测试失败。(:重点维护测试用例,其次再是生产代码,这需要见识和勇气,更是时间后成熟心态和行为的体现,一种从容不迫、自信满满感在电子屏幕上溢出来)
- :单元测试,2020年初疫情,在家办公时,就在讨论单元测试,以及它是否能够自动化,谁也说服不了谁,也没有说服自己。现在回看,那时候的我,跟个技术ShaZ差别不大。现在2年过去,关于UT的认知、实践和反思,有质的飞跃性。不过吧,我期望2年后,再来回看现在的自己,又像个ShaZ一样,这才是我期盼的成长。只有过段时间回看自己,简直认不出那个ShaX是谁,才是我该有的成长节奏。这也就是说,如果看到过去的自己很NiuX的样子,只能说明没有任何进步,难听点说,更是在倒退路上下滑。
- :现在,我会把UT挂在嘴边,我也会把UT挂在任何实现代码的边上,就像现在的笔记,就是写在我人生的边上一样。我自己参与的代码实现,如果没有写相应的UT,哪怕仅仅是典型使用类的UT,就像自己在吃红烧牛肉,还是在吃刺身牛肉的差别。这里,我不得不稍微补充一下,关于刺身牛肉的体验,那是一种在公共场合,把呕吐路径直接反向的尴尬和难受。所以,我现在如果不写UT,就会有负罪感,仅看到实现代码,没有UT代码,就会有呕吐感。
- :关于UT的认知,最深刻的就是,首先,所谓UT是指测试用例的单位,即Test Case Unit,少个Case、换个顺序,就是这么大误解。而这里的Unit是指Test Case的单元性,即以测试用例为单位,尤其指运行时刻的单元性,即第N个用例的执行,无论成功或失败,尤其是失败的情况下,不能影响N+1个用例的执行。这里其实包含两层意思,第一层就是如前阐述,测试用例之间要有单元性,彼此之间不能有影响,第二层意思更关键,那就是UT必须是自动化,至少也是批量化。否则的话,一个例子失败又如何,手动下一个不就可以了嘛,实在不行手动恢复一下测试环境不香嘛。在UT的语境里,这是臭极了,更是丑极了。其次,Unit指被测对象,或者高级点叫做被测系统,术语为SUT=System-Under-Test,这个Unit是在具体场景里,根据实际需要重新定义。而我之前就是被某些编程语言,宣称的单元测试特性概念影响,一直带着这个误解和偏见。所以,总的来说,UT要自己定义单位,UT必须自动化。
版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://xie.infoq.cn/article/0c0f9dcd30d851bc62e1f6e03
边栏推荐
- 安全产品设计的重要性
- C get the class name or method name of the caller
- Enter a formula in the Visio text box
- LeetCode 414. The third largest number (simple, array) day13
- 【板栗糖GIS】编程的本质—(视频笔记)
- 减治思想——二分查找详细总结
- [reproduction of thesis code] errors encountered in the translation embeddings for modeling multi relational data
- Dart:在循环中使用 Async 和 Await
- Robot OS系统架构设计
- DEJA_VU3D - Cesium功能集 之 014-剖面分析
猜你喜欢

加密模式介绍(ECB、CBC、PCBC、CFB、OFB、CTR)

用 Flutter 写一个精美的登录页面(最新版)
【板栗糖GIS】编程的本质—(视频笔记)

Regular expression -- IP address matching

辰视工业级机器视觉 | 焊缝检测解决方案

SystemVerilog 验证-测试平台编写指南学习笔记(0):验证导论

SystemVerilog 验证-测试平台编写指南学习笔记(5):功能覆盖率

How to obtain geographical location based on photos and how to prevent photos from leaking geographical location
![[Error]dyld: Library not loaded:](/img/41/bb00c6f34021bcda0e666455a08c1c.png)
[Error]dyld: Library not loaded:

SystemVerilog 验证-测试平台编写指南学习笔记(3):连接设计和测试平台
随机推荐
codeforce round#784(div4) A-H
php 一维数组去重
安全产品设计的重要性
Quantitative-c language implementation of equivalent domino pairs
ansible作业1
Clustering data generation function -- make_ blobs()
Unity uses newtonsoft JSON plug-in realizes the conversion of XML and JSON data
辰视工业级机器视觉 | 焊缝检测解决方案
ansible yum仓库
Detailed explanation of Gentoo system installation steps
CSV column extract column extraction
How to modify the QR code style when scanning the code and logging in the background management system of enterprise wechat
挖财学堂的证券账户可靠吗?现在开户安全不?用哪个券商比较好?
从proc查询uid
L1-065 嫑废话上代码 (5 分)
[HCTF 2018]admin之unicode欺骗
如何安装cadence 软件
MySQL日志保留策略:设置binlog日志保存天数、文件大小限制
Minio基本使用與原理
Go语言-使用协程高效计算0-2000内每个数的累加