如何落地单元测试?
一、如何落地单元测试
1、对于单元测试的价值有清晰认知
不难发现,公司内的项目还是外网开源项目,少有工程具备完善、高质量的单元测试。上文讲了为什么要写单测,这里就不再赘述了。短期来看,单测无疑会带来开发工作量和开发时长的增加,但是我们要从整个迭代周期来看单测的优势。从最终的效果来看,坚持单元测试会有效的减少迭代中的缺陷数以及缩短需求的交付周期。
2、将单测纳入流程规范
将单元测试纳入CR标准
以往我们CR只关注核心的业务代码,大多数情况下,我们在评审中可以指出代码较为明显的缺陷或者不合理的设计,但是各种条件case、边界及异常情况很难通过肉眼review出来。如果提交的CR中包含完善、高质量的单元测试,提交、评审双方的的信心都会增强。
发布管控
当我们提交代码后,CI可以设置运行该分支的单元测试。在发布流程中,添加单测相关的管控,比如单元测试通过率以及单元测试增量覆盖率等
3、单测工作量评估
对于单元测试工作量的评估,没有一个固定的标准,主要视业务逻辑复杂度而定。一般来说,如果之前没有编写过单元测试,在熟悉阶段可以根据需求的工作量对应增加20%~30%;后期熟练掌握后,增加需求工作量的10%就足够了。当业务需求涉及的case较多,单测需要覆盖这些必要流程时,我们评估工作量时,可以给自己加些时间来保障高质量的单测。
延伸阅读:
二、什么是单元测试
《单元测试的艺术》中对单元测试的定义:
一个单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行校验。单元测试几乎都是用单元测试框架编写的;只要产品代码不发生变化,单元测试的结果是稳定的。
三、为什么需要单元测试
在我看来,单元测试的意义可以总结如下三点:
单元测试是保证你写的代码是你想要的结果的最有效办法单元测试帮我们塑造设计单元测试是最好的文档之一单元测试描述了代码的预期行为,可以最有效地保证代码正确运行,减少代码缺陷;由于单元规模较小,当因为代码变更出现问题的时候,可以帮助我们快速定位问题;有单元测试覆盖的代码,让我们更有信心,敢于放心做代码重构;写单元测试的过程往往伴随着代码重构,如果发现一段代码单元测试很难写,就需要反思我们的设计,进而重构促进代码设计的优化,帮助我们塑造设计;同时单元测试也是一个最佳的、自动化的、可执行的文档;没有单测覆盖的代码,是很难被维护的。

相关推荐HOT
更多>>
Wolfram语言所谓的 Knowledge-based language 与其他编程语言有什么区别?
一、Wolfram语言所谓的 Knowledge-based language 与其他编程语言的区别Wolfram语言所谓的 Knowledge-based language 与其他编程语言的区别是它详情>>
2023-10-11 22:45:40
嵌入式工控机与普通工控机有哪些区别?
一、嵌入式工控机与普通工控机的区别嵌入式工控机和普通工控机都是用于工业控制和自动化的设备,但两者之间存在以下区别:1、外观和尺寸不同嵌...详情>>
2023-10-11 21:06:52
JavaScript中null和undefined的区别?
一、JavaScript中null和undefined的区别1、null是js的关键字,表示空值;undefined不是js的关键字,它是一个全局变量2、null是Object的一个特殊...详情>>
2023-10-11 20:46:50
SQL数据库与ACESS数据库有哪些区别?
一、SQL数据库与ACESS数据库的区别1、类型不同SQL数据库通常是关系型数据库,而Access数据库是一种桌面数据库。2、应用范围不同SQL数据库适用于...详情>>
2023-10-11 19:59:44热门推荐
Wolfram语言所谓的 Knowledge-based language 与其他编程语言有什么区别?
沸VB和Java有什么区别?
热SQL中的 in 与 not in 有什么区别?
热嵌入式工控机与普通工控机有哪些区别?
新JavaScript中null和undefined的区别?
类拦截和方法拦截有哪些区别?
SQL数据库与ACESS数据库有哪些区别?
开启飞行模式断网和通过直接关闭wifi来断网有哪些区别?
ips和led屏幕区别?
开发塞班软件跟开发苹果软件有哪些区别?
tar包和jar包和war包的区别?
ibatis和mybatis有什么区别?
java的jdk和jre有什么区别?
C#和JAVA有哪些区别?
技术干货






