作者 | 包丹珠 上海控安产品总监
版块 | 鉴源论坛 · 观模
社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区”
“软件单元测试真的有必要吗?(上)”一文中,着重探讨了单元测试的重要性及其正面临的困境,并分享了功能安全标准中罗列的单元测试方法。承接上文,本篇将深入讨论单元测试过程中,如何在保质保量完成测试任务的同时,缩减时间成本、提高测试效率,并分享目前行业内的实践经验以及相关自动化测试工具。
04
单元测试可以做,但项目周期催得紧,怎么办?
然而,在真正实施软件单元测试时,还需要考虑一个成本问题。
软件行业竞争相对比较激烈,在交付为王的时代,软件发布的市场Deadline是大家要面临的一个非生即死的残酷问题。如何能够保质又保量,即缩减因为引入单元测试而带来的时间成本呢?
工欲善其事,必先利其器。缩减成本的第一个方法是利用自动化测试工具。目前市面上有可供选择的自动化单元测试工具,包括开源的和商用的。
开源工具通常是提供针对特定语言的测试框架,单元测试人员使用框架进行测试代码的编写。用的较多的开源框架有GoogleTest、Junit等。开源工具由于是基于已有测试框架通过写代码的方式进行测试,因此对一般测试人员的编程能力要求相对较高。
商用工具提供可视化的自动化测试工具,不需要大规模的测试编程,将测试人员的精力专注在测试用例的设计上,而非测试框架的执行上,因此对测试人员会更友好。商用工具市场占有率较高的是国外的工具。然而自从2019年以来,这些商业工具也陆续出现了国内禁售、服务停止续期的禁令。好在国内一些知名高校,在前期有相关的技术积累,目前也出现了为数不多的国产自动化单元测试工具,比如来源于华东师范大学软件学院可信实验室的SmartRocket等,这些工具在自动化执行的基础上,比国外工具更为领先的是提供了自动设计高覆盖率测试用例的核心功能,可以更大意义上降低测试人员的时间投入等。
在使用自动化测试工具的基础之上,采用CI(Continuous Integration)持续集成方式,将单元测试很好地融合进入自动化持续集成的过程中,也可以进一步缩减时间成本,并且提升软件上线效率。通过借助Jenkins等持续集成工具,在模块代码提交时,自动触发代码自动化测试岗哨,当测试通过时代码提交成功,否则提交失败。自动化测试岗哨除了加入单元测试外,还可以加入像代码静态扫描等自动化Pipeline。软件持续集成在行业内有很多的成功案例可以借鉴,是软件质量保证和软件开发效率高的一种直观表现。
05
结语:欲速则不达,耐心做单元测试是程序员的美德。
写到这里,想必大家对软件单元测试的重要意义,以及如何进行单元测试实践有了一定了解。如果您是软件行业的从业者的话,希望本文能够给您带来一些新的思考。总结一句话,欲速则不达,对于优秀的软件开发工程师来说,耐心做好单元测试是一项值得养成的基本美德。元宇宙未来的软件基础,靠你们铸就。