共计 2072 个字符,预计需要花费 6 分钟才能阅读完成。
什么是单元测试
在计算机编程中,单元测试是一种软件测试办法,通过该办法能够测试源代码的各个单元以确定它们是否适宜应用。单元是最小的可测试软件组件,它通常执行单个内聚性能。单元测试就是是指对这个最小可测试组件——即单元进行检查和验证。
单元体量小,因而比大块代码更容易设计、执行、记录和分析测试后果。通过单元测试发现的缺点很容易定位,并且绝对容易修复。单元测试的指标是将程序拆散成各自独立的局部,并测试各个局部是否失常工作。它将可测试软件的最小局部与代码的其余部分隔离开来,并确定其行为是否与预期的完全一致。单元测试能在应用过程中发现很多缺点,在这种过程中证实本身价值。它实现了测试过程的自动化,缩小了发现应用程序中更简单局部中蕴含的谬误的艰难,并且因为能够关注到每一个单元而进步测试覆盖率。
单元测试工具
(图为禅道项目管理软件界面)
常见单元测试框架有 JUnit, TestNG, PHPUnit, PyTest, Jest, CppUnit, GTest, QTest 等八种,目前国产支流项目管理软件禅道全面集成这八种单元测试框架,买通继续集成闭环,将测试用例细分了单元测试用例和性能测试用例,能够间接在禅道页面上导入各种各样的单元测试框架的执行后果。这八种单元测试框架通过禅道 ZTF 与 Jenkins 继续集成性能买通。用户发动工作后,通过 ZTF 主动执行测试脚本,把单元测试的后果回传给禅道,二者单干买通了继续集成闭环,买通了项目管理工具和继续集成工具之间的沟壑。
为何单元测试是麻利方法论
在 Apiumhub,咱们采纳麻利办法,并且大量利用单元测试。单元测试是极限编程(Extreme Programming,XP)的一个特色,极限编程是麻利软件开发办法之一,它能带来疾速的测试驱动开发。咱们深信麻利就要做继续集成和测试驱动开发。通过测试驱动开发,开发人员在开发代码时会创立单元测试,以便每个单元测试通常在编写代码之前就测试一小段软件代码。
单元测试的劣势
单元测试提供了许多益处,包含及早发现软件谬误、促成变动、简化集成、提供文档起源以及许多其余长处,接下来将对其进行具体介绍。
1、使流程更灵便
单元测试的次要益处之一是它使编码过程更加灵便,更遵循麻利开发方法论。当向软件中增加越来越多的性能时,个别须要更改旧的设计和代码。然而,更改曾经测试过的代码既冒险又高老本。如果此时采纳单元测试,那么就能够释怀地进行重构。
单元测试实际上与各种类型的麻利编程紧密结合,因为测试被内置在其中,让程序员能够更轻松地进行更改。换句话说,单元测试有助于平安重构。
2、保障代码品质
单元测试能够进步代码的品质。它可能确定在进一步发送代码进行集成测试之前可能呈现的每个缺点,在理论编码之前编写测试让人更难以思考到这种问题。而单元测试能够暴露出极其状况,让人编写出品质更高的代码。
3、尽早发现软件 Bug
应用单元测试会让问题在晚期就被辨认发现。因为单元测试是由在集成之前测试单个代码的开发人员执行的,这样能够很早地发现问题,并在不影响其余代码片段的状况下解决问题。这既包含施行中的 Bug,也包含单元标准中的缺点或缺失局部。
4、促成变动并简化集成
单元测试容许在未来重构代码或降级零碎库,并确保该模块依然失常工作。单元测试能监测到可能违反设计合同的变动,有助于保护和更改代码。单元测试还能够缩小新开发性能中的缺点,缩小现有性能更改时呈现的谬误。
而后通过单元测试对应用程序的各个局部进行测试,验证每个单元的准确性,再将单元集成到应用程序中。因为曾经对各个单元进行了验证,在之后的集成过程中对应用程序进行测试就变得更容易。
5、提供文档
单元测试提供零碎的文档。心愿理解单元提供了哪些性能以及如何应用这些性能的开发人员能够查看单元测试,以取得对单元接口(API)的根本了解。
6、简化调试过程
单元测试有助于简化调试过程。如果测试失败,则仅须要调试代码中最新的更改,这样以往的简短的调试过程将被大大缩减。
7、设计
率先编写测试会迫使程序员在编写代码之前就认真思考设计和其余必须实现的工作。这不仅能够让人专一,还能够创立更好的设计。测试一段代码会迫使程序员定义该代码的责任。如果能够轻松做到这一点,则意味着代码的职责是被明确定义的,因而将具备很高的凝聚力。
8、降低成本
单元测试会更早地发现错误,有助于升高谬误修复的老本。设想一下在开发的前期阶段(比方在零碎测试或验收测试中)才发现 Bug 的老本将有多高。当然,后期检测到的谬误也更容易修复,因为前期检测到的谬误通常是许多更改的后果,测试人员可能就不会真正晓得是哪一个导致了谬误。
单元测试是针对代码单元的独立测试,外围是“独立”,劣势起源也是这种独立性,而所面临的有余也正是因为其独立性:既然是“独立”,就难以测试与其余代码和依赖环境的互相关系。单元测试与零碎测试是互补而非代替关系。单元测试的劣势,正是零碎测试的有余,单元测试的有余,又恰是零碎测试的劣势。不能将单元测试当做解决所有问题的万金油,而需了解其劣势与有余,取长补短,与零碎测试相辅相成,实现测试的最大效益。