当前位置:网站首页>读《Software Engineering at Google》(11)
读《Software Engineering at Google》(11)
2022-04-22 23:08:00 【InfoQ】
- 读《Software Engineering at Google》(11)—— Testing Overview
- :@Google,测试就是编程的一部分(Testing has always been a part of programming)。(:这个章节,这篇文章,劈头就是这么一句话。这是在强调,还是在呼喊,似乎两方面都有,但肯定不像是陈述。这是被遗忘了恶行,还是懒惰成性的恶性,一点无奈的情绪,又一言难尽的感觉。)
- :测,不测,验,不验,到底哪壶开,到底要提哪壶。自从听到一个辨析,关于测试与验证的概念差异,毫不犹豫倒向验证。验证,针对我的实现代码,直接验证是否符合设计,这算白盒型验证,间接验证是否符合需求,这算灰盒验证。至于测试,那是针对我的整体实现,直接测试是否符合需求的功能项,间接测试是否符合环境的适应项,这算黑盒测试。这里有一点要说明,关于白-灰-黑的说法,不是直接来自听到的概念辨析,而是间接来自之前的测试相关说法。之所以如此认可和倒向,主要是被棒喝了一下。如果我作为开发实现方,我居然在黑盒测试自己的实现,是不是有点搞笑,甚至有点可笑。对于自己的实现,无论如何都得白盒级验证,才好意思交付出去。更关键的点在于,既然我是实现,那我总是在依照某个设计进行实现。这里不得不补充一点,关于没有设计的实现,我曾经也以为咋就不可。现在,我极度反感,原因就在于,要么是因为想不清楚就去实现,要么就是实现后懒得补充设计,前者是经验不足,或者因为懒惰,后者就是懒惰,或者不负责任。设计如此重要,原因很简单,就是在设计里,同时会包含How和Why层面的内容,尤其会侧重Why层面的内容,而在代码层面,只会包含How层面的内容。对于需要维护和改进的系统,更关注当时怎么想,即更需要Why层面的内容,才能对下一步的动作做出更合理的决策。回过来说,所谓验证实现,更本质的就是要回答,现在的实现,是否符合依据的设计。如果偏离设计,然后来个黑盒式测试,这是两头落空,还是紧抓设计验证,更符合理性逻辑。
- :测试的一个重要功能,尤其是自动化测试的一个不可忽视的能力,那就是让适应变化,成为一种能力。
- :测试通过,跟自动化测试通过,差别不仅在于自动化节省人力,更大差别在于自动化让每次的测试变得可靠。可靠测试带来的最大好处,并非当下测试的结果可靠,而是让修改变成一件有底线的能力。不会因为一个不小心的改动,而恰好被不稳定的测试过程给绕过去,结果带来噩梦级的灾难。
版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://xie.infoq.cn/article/4f7e8b9d3cd8f5ff30896c3e5
边栏推荐
猜你喜欢

面试官:ArrayList和LinkedList在性能方面的差别,能有多大?

Principle of leftmost matching principle

Minio基本使用與原理
![[HCTF 2018]admin之unicode欺骗](/img/67/227f3ec20f73ab96b2f4bfb735bfd4.png)
[HCTF 2018]admin之unicode欺骗

Introduction to encryption mode (ECB, CBC, PCBC, CFB, OFB, CTR)

正则表达式——IP地址匹配

How to modify the QR code style when scanning the code and logging in the background management system of enterprise wechat

辰视工业级机器视觉 | 焊缝检测解决方案
[chestnut sugar GIS] the essence of programming - (video notes)

Unity使用Newtonsoft.Json插件实现XML与JSON数据的互转
随机推荐
C add log4net log (console and file) to console application
Pytorch 卷积核填充和步幅、多输入多输出通道、池化层
存储器简介
【毕业设计】答 辩 技 巧 一(以一个过来人的身份,祝各位答辩 过 过 过)
安全产品设计的重要性
Shell script command results are saved to variables with line breaks
Go language learning notes - read lock reentry leads to deadlock
DEJA_VU3D - Cesium功能集 之 014-剖面分析
Quantitative-c language implementation of equivalent domino pairs
js中对Array进行遍历
When creating a dynamic link library, the header file reports an error. Expected initializer before "function name"“
MySQL log retention policy: set binlog log storage days and file size limit
[Error]dyld: Library not loaded:
CSV Column Extract列提取
GBase 8a常用并行度参数调整提升性能
光学指纹模组解锁方案设计指纹锁方案
L1-065 嫑废话上代码 (5 分)
Must brush the simulation question bank and answers of operators of the latest fire-fighting facilities in Jiangxi in 2022
Day81(动态规划、十叉树遍历)
bullwhip effect