代码洁癖系列(七):单元测试的地位

在许多程序员眼中,单元测试似乎是可有可无的,觉得这应该是测试人员的工作。实际上,测试代码和生成代码同样重要。我们不但需要测试代码,而且需要的是整洁的测试代码。

测试为什么要整洁

我们对待测试代码需要像对待生产代码一样,写之前需要进行严谨的思考、详细的设计。这里分享一下我自己的学习编程的一些经历。

没有单元测试

刚毕业的时候,我的代码可以说是年少轻狂,总是对自己充满自信。根本就不写单元测试,写完之后自测也是随意的点两下就算自测通过了。代码提交测试后,恐怖的事情就出现了,铺天盖地的bug向我袭来。每天工作有一半以上的时间是在和测试同事沟通,其余的时间是在改bug。本来1天的工作可能需要3天才能完成。当我意识到这样做完全是费力不讨好的时候,我决心每次写完代码之后,要写一段单元测试,保证单元测试通过后再提交。

随意的单元测试

在开始写单元测试之后,我的工作效率提高了很多,下班都比原来早了。感觉写单元测试是一个无比正确的决定。随着项目的进行,中间处理过几次紧急的bug fix,当时就没有顾上去写单元测试。然而,当我又一次完成一个新的feature的时候,像往常一样开始跑单元测试,结果是:Failed!就是因为之前的改动导致的。由于手里还有其他比较紧急的工作,单元测试又被放下了。就这样,我又回到了没有单元测试的工作状态。

现在的我已经不像当初那样盲目的自信了,没有单元测试的代码让我感到恐慌。

决心重构单元测试

曾经有一段可用的单元测试放在我面前,但我没有珍惜,直到失去才追悔莫及。这次我决心重建单元测试,不但要重建,还要写一段好的单元测试。吸取上次的教训,要使我的单元测试可扩展,可维护。把一些公共的方法抽取出来,将不同概念的测试进行拆分。做到“每个概念一个测试”,测试中需要使用断言判断是否成功,而不是人为查看日志。每个测试都要包含构造-操作-检验三个环节,这三个环节要定义清楚。

这样一来,我就有了一套整洁的单元测试,后来修改代码后,单元测试可以方便的进行扩展和复用,工作效率再次提升。

整洁测试的规则

整洁测试需要遵循F.I.R.S.T规则。什么是F.I.R.S.T规则呢?

快速(Fast)

测试应该足够快,如果测试一次需要等待很长时间,没有人愿意频繁的运行测试,也就没办法快速发现问题。久而久之,我们又会失去测试……

独立(Independent)

测试之间应该相互独立,一个测试的失败不应该影响其他的测试,否则就会导致每次测试出现一大堆问题,我们每次只能解决最上级的测试暴露出来的问题,下级测试需要再次测试才行。这就会大大降低工作效率。

可重复(Repeatable)

测试应该在各种环境中可以重复执行,不论是你的本地环境,测试环境还是生产环境。测试都应该能够跑通。这样才能保证线上的质量,测试也才有意义。

自足验证(Self-Validating)

测试应该有布尔值输出(最好使用断言),我们不应该通过查看日志来判断测试是否通过,更不应该通过人为比较两个文本是否相同来判断测试是否通过。这样不但失去了测试的准确性,也浪费了我们自己的时间。

及时(Timely)

测试应该及时编写,在设计生产代码的同时就应该将测试一并设计好,不然的话,当你写好生产代码,也许会因为某些代码难以测试而放弃。

结语

总结一下今天讨论的内容,我们需要整洁的单元测试,它的地位与生产代码一样,需要我们认真设计。设计测试的时候需要遵循F.I.R.S.T原则。


觉得文章不错或者有什么问题的话,可以关注我的微信公众号,一起交流。
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值