程序员的测试课
郑晔
开源项目 Moco 作者
18911 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 23 讲
加餐 (1讲)
结束语 (1讲)
程序员的测试课
15
15
1.0x
00:00/00:00
登录|注册

结束语 | 对代码的信心要从测试里来

你好,我是郑晔!
《程序员的测试课》到这里已经接近尾声了,经过整个专栏的学习,相信你对“程序员该如何做测试”这件事已经有了一个更加完整的认识。这一讲我们不去深入技术细节,我想先从一本书和你聊起。

无知之错和无能之错

这本书叫《清单革命》,作者是阿图·葛文德,他是一名医生,曾是白宫最年轻的健康政策顾问。在书的开篇作者提到,人类的错误可以分为两大类型。第一类是“无知之错”,我们犯错是因为没有掌握相关知识。第二类是“无能之错”,我们犯错并非因为没有掌握相关知识,而是因为没有正确使用这些知识。无知之错,可以原谅,无能之错,不可原谅。
在作者看来,目前这个世界上还有很多疾病没有很好的治疗方案,这个算是无知之错。但在真实世界中,很多治疗的失败却是因为医疗团队没有做好该做的事,那就属于无能之错了。
这个分类方式给了我很大的震撼,让我一下子想明白很多事。有了分类,针对不同的错误,我们可以采用不同的修正方式。无知之错,因为欠缺的是知识,所以如果要修正这类错误,需要补充相关的知识。而无能之错并非知识的欠缺,所以,要修正这类错误,需要改进的是工作的方法和流程。
身为程序员,我们是幸运的,我们生活在一个对软件有巨大需求的时代。但实事求是地说,软件也是各种问题的高发地带,我们在其中不停犯着各种错误,很多甚至是低级错误。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文探讨了软件开发中的错误类型和质量管理的重要性,强调了内建质量的重要性。作者引用了《清单革命》中的概念,将错误分为“无知之错”和“无能之错”,并指出软件开发团队需要在每个环节都加入质量的考虑。文章强调了软件质量的内在重要性,以及团队成员对质量的共同责任。作者还分享了写好测试所需的知识储备,并鼓励读者不要被这些东西吓到。最后,作者提到了自己的写作经历和对专栏的期望,并留下了一个有奖小问卷。整体而言,本文强调了软件质量管理的重要性,以及对内建质量的重视,对于软件开发人员具有一定的启发意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员的测试课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • Gojustforfun
    我已为老师想好下一个专栏的名称《TDD项目实战》,很多人一提到TDD第一感觉就是听过、没见过。耗子叔早年写过《TDD并不是看上去的那么美》https://coolshell.cn/articles/3649.html,我对TDD还是很感兴趣的,一直自己摸索感觉还是不得其法。老师在极客时间的其实为TDD做了不少铺垫,是时候综合运用一下来一个中型的实践项目,把ThoughtWorks的TDD实战经验在实际项目中展示一下。 以下是我自我摸索出的想要玩转TDD需要的能力/技能: 1. 需求分解 《10X程序员工作法》 -- 解决测试用例从哪里来的问题? 2. 设计能力 《软件设计之美》 -- 设计/抽象/建模让产品代码更具可测试性,同时完成第一创造 3. 测试能力 《程序员的测试课》 --- 扬长避短,写出好的测试代码,别让测试成为负资产 4. 编程能力 --- 熟练掌握所用语言的核心语法、常用标准库、第三方库等(含数据结构与算法),能写出符合该语言规范的代码,判断标准:在TDD循环中尽量不卡壳、少用Google减少打断循环的次数。 5. 转换能力 -- TDD循环是在两个思维层次来回跳转,写测试时抽象需求What,写代码时具体细节How 6. 重构能力 《代码之丑》 -- 识别坏味道,运用恰当重构手法提高代码质量 7. 工具能力 -- 熟练操作Git、IDE、及其他自动化工具,使其能跟上TDD的节奏 (比如,编写测试时,产品代码还没实现但写出其接口后可以利用IDE快捷键自动生成产品代码的框架。重构时,运用IDE提供的重构快捷键,快速修改名称、抽取方法、内联函数等。完成几次TDD循环后可以用Git提交,设置“游戏存档”随时重新开始,如果一切顺利合并多个提交为一个然后提交) 最后就是各种场景实战,小型场景练习并熟练上述技能,中型场景强化上述技能的同时,培养在工期压力下完成任务的能力,大型场景就是在实际工作中实践。 我没把TDD当银弹,希望能达到“对于同一个业务功能,大多数人用X天完成产品代码然后提测,我同样用X天完成产品代码和测试代码然后提测”的标准就可以了。希望这种工作方式能给我带来更多自信(对代码也对自己)。谢谢!

    作者回复: 多谢你给我安排的工作!😁 BTW,你的理解很到位。

    2021-09-28
    3
    19
  • 术子米德
    🤔☕️🤔☕️🤔 我个人写代码近20年 不肯写测试,第一原因是无知,以为写出代码就可以,第二原因是懒惰,因为无知和自大,发现既然配置了测试,那就毫无顾忌把测试抛出去,代价就是数年下来楞是把自己逼成一个修简单问题引起的难查问题的加班狗 最根本的原因,还是自己缺乏追求,对自己所从事的事业的热爱感 上述就是我自己的经历,在最近5年我越来越清楚自己的问题,也越来越努力去克服自己的问题,寻找意义感和热爱点,只有自己能点亮自性之光

    作者回复: 什么时候发现都不晚,接下来就是提高自己了

    2021-09-17
    3
  • Fredo
    郑老师的专栏文章语言很质朴,优秀的专栏读来酣畅淋漓,受益很多,接下来就该要自己多刻意练习了,加油!郑老师 再见👋🏻

    作者回复: 加油努力会有回报的

    2021-09-17
    2
  • 科富
    “不愿意相信”,说到重点了,相信就意味着要做出改变,对自己下手是需要很大勇气的。 在一个进度优先的氛围下,完成功能,成绩是显而易见的。软件质量如果没有一个量化的指标,做的多也未必能被看到个认可

    作者回复: 对个人来说,衡量标准是什么很重要,想要做到优秀,就要有内部计分卡,也就是内心的衡量标准。

    2021-11-22
    2
    1
  • asusual
    期待郑大新专栏哈哈哈哈

    作者回复: 我都不敢轻易承诺😂

    2021-09-21
    1
  • ifelse
    关注公众号又可以拉进与老师的距离了

    作者回复: 欢迎继续关注我的内容。

    2022-06-15
  • 可怜大灰狼
    感谢老师,我个人觉得结束语比之前章节写的好,更深入人心。无知之错,无能之错,受教了

    作者回复: 哈哈,看来结束语不限于技术,可以写得更有内容一些😄

    2022-03-25
  • 许凯
    老师能出一个讲透权限设计的课程吗?

    作者回复: 权限是个非常具体的业务问题,可能支撑不起做一个专栏😂

    2022-03-15
  • 树懒先生
    四门课程终于学完了。听着郑老师侃侃而谈,不胜感慨,TWer出来的程序员就是能说啊。从量,这个角度来看,这门课无疑是最少的;而从实际收获(有点唯心),又无疑是最满的。P.S. 一路跟下来的学生,能不能给点附加优惠,比如郑老师的联系方式啥的。

    作者回复: 关注郑大晔校,发消息,也许有收获

    2021-09-24
  • sylan215
    无知之错和无能之错这个分类太真实了,不过很多时候,我们没法分清自己是无知还是无能,比如老师举例说的程序员对于质量内建的理解。 内建质量的意义我理解大家都知道,但现实情况是,很多开发被进度逼着往前走,恨不得每写完一个函数就提测给测试,以表示自己「提测」了,根本顾不上自测(作为一个测试,还在给开发找借口,感觉有点别扭),久而久之,就懈怠了。 我也想过从测试侧通过流程,强制要求自测,不过这样就变成解决「无能之错」了,所以还是要让团队都意识到内建质量的重要性,特别是让项目负责人接受,通过解决「无知之错」来促成这件事。
    2021-09-17
    2
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部