拙见/ 检验检验

Checking Check

这是大妈在 ZoomQuiet 的第063篇原创


背景

检验是科学名词,指用工具,仪器或其它分析方法检查各种原材料,半成品,成品是否符合特定的技术标准,规格的工作过程.


现象

具体到编程领域, 对代码质量的检验, 贯穿软件这个概念诞生以来的所有编程实践瞬间.

特别是微软重新发明了软件之后, 甚至于创造性发明了软件测试这一行业.

将检验变成了真正的岗位.

直至 DevOps 概念叕一次被创造出来, 开发者不得重新自己检验自己的代码.


问题

最流行的检验方法就是 TDD ~ 测试驱动开发/Test-Driven Development;

RGR

这其中最大的艺术行为就是 Mock ,各种 Mock, 为了在业务代码形成之前, 可以写出测试代码来, 不得不用各种模拟手段来隔离真实环境, 以便让测试可以跑起来.

那么, 一个简单的逻辑推导:

在 TDD 场景中, 谁来确保 测试代码以及依赖的 Mock 工具自身的品质?


分析

其实字面含义总是可行的

检验 行为之所以成立, 其实包含一组前提条件的:

首先, 对检验目标有足够透彻的理解, 并能对其中我们需要的关键指标, 有公认的标准;

然后, 对应标准也有客观指标来加以衡量, 否则无法明确好/坏的阀值;

最后, 也是最关键的, 检验是一定要基于可靠数据/工具/仪器的; 纯粹感性的数据是无法作为检验依据的.

所以, 检验行为本身的检验嘦明确:

  • 0: 是否有公认的标准
  • 1: 是否标准对应的数值可以客观反复目标品质
  • 2: 是否指标测量可信/可重复/可检验

如果按照这几点偏见去观察 TDD 行为就有点儿囧了:

单说狭义TDD -> UTDD(单元测试驱动开发/Unit Test Driven Development), 都不用扩展到其它 *TDD;

测试用例是根据当前业务功能理解分解出来的, 是否分解拿合理, 并无标准;

测试案例是否通过, 其指标是开发人员自己给出来的;

测试结果随着 Mock 或是业务系统的变化, 而变化, 根本无法确保绝对可信.

更加囧的是:

TDD 整个儿过程, 就象脱裤子放屁; 任何一个功能点, 要先反过来想象如果完成了, 如何检验是否完成并对应记录为测试代码; 然后再去写功能代码, 如果中间哪儿出现别扭的感觉, 整个儿过程就得立即重新来过;

也就是说, 将一个功能是否完成的真实运行直觉检验过程, 打碎为反复的前后正反说话过程, 花费5~10倍的精力和时间, 获得原先相似的质量结果;

唯一优势就是能将系统开发过程中团队内隐知识的一部分(很可能是最不重要的一部分), 固化为临时性测试代码, 可以帮助新人快速进入岗位, 而难以制造出大量 bug.

软件工程中有很多断言, 多数都是无法检验, 又非常正确的经验, 比如:


没有银弹

若无必要/勿增实体

任何问题都可以通过
        增加一个虚拟层
    来解决

那么, 有关代码检验行为本身的检验; 其实就是一种无限循环的自指问题, 千万别多想;

检验的检验本身在工程上其实, 就是个架构问题;

就象备份一般要求3份, NERV 主电脑/MAGI 是三贤人系统, Paxos算法中最少需要三个主机...

因为冗余三份儿时, 同时出错的概率已经可以忽略不计了.

所以, 编程过程中, 检验行为, 无论用哪种工具/形式, 检验三次就好:

  • 刚完成时
  • 被迫修改后
  • 发布前

...

其实, 这类行为的反思以及标准化, 都是编程思维的结构化习惯, 想真正实用化到日常各种行为/活动/实践/编程/...过程中?

说不得, 当然还是得参加: 蟒营®编程思维提高班 Python版/


refer.

愿上苍保佑吃饱了饭的人民...

文中链接感谢"文章助手"的助手 的支持, (来自 LINUX中国 的小应用)

  • 点击, 将自动跳入小应用, 并复制链接到剪贴板
  • 然后, 打开浏览器, 复制到地址栏, 就能访问了
  • 好处, 避开了微信内置特殊浏览器的有关屏蔽策略
  • 问题, 操作复杂了, 要打开手机上的浏览器, 如果在桌面微信则无法使用

本人公号所刊载原创内容之知识产权为本人所有, 未经许可, 禁止进行转载/摘编/复制及建立镜像等任何使用. 欢迎读者沟通交流, 请留言, 或通过邮件交流->

投稿/反馈邮箱:

askdama@googlegroups.com

(邮件列表地址, 当成正常邮件发送邮件就好, 不用订阅, 不用翻越...)


ZoomQuiet/大妈

就是四处 是也乎,( ̄▽ ̄) 的那个大妈:


私自嗯哼: ZoomQuiet (订阅号: ZoomQuiet42)
原创课程: 蟒营 (订阅号: Mainium)
过往吐糟: Chaos42 (订阅号 PythoniCamp)

as 核心组织者:
    PyChina (订阅号: PyChinaOrg)
    本地社区: 
        GDG珠海 (订阅号: GDG-ZhuHai)
        TFUG珠海 (订阅号: ZH_TFUG)

好文笔,感叹号年度配额: 1/3

NN 4127




蟒营®编程思维提高班 Python版/第13期 正在报名

精品小班/ 永久答疑

扫描报名: 101camp13py

蟒营®式 原创课程

伴你重享学习乐趣

官网: py.101.camp

Reactivate Joy by Self-teching with You


任何问题可先进入知识星球(免费)咨询:
FAQ

关注公众号, 持续获得相关各种咨询:
mainium


追问

任何问题, 随时邮件提问可也:
askdama@googlegroups.com