单元测试到底作用大不大?

单元测试有必要吗?

整个开发环节中,越晚发现问题解决问题的成本就越高。单元测试的意义就在于提前发现问题,减少开发和测试的成本。

从测试覆盖率来说,测试金字塔越往上执行的测试,可覆盖case会逐渐变下,比如UI测试只能保证页面正常,接口异常不会测试覆盖完整。接口覆盖完整了,又不能保证代码中所有逻辑都覆盖,某些函数某些类的功能无法覆盖,这样情况下发现的问题都是不好复现的bug。

有时候上层代码的单元测试难写,有没有一种可能是代码写的太烂了?

在《快速软件开发》的书中引用了大量的研究数据指出,最后才修改一个bug的代价是在bug产生时候修改它代价的10倍。

应该在什么情况下写单元测试?

1.新的功能开发:在开发新功能时,编写单元测试可以帮助确保新功能的正确性。

2.修改现有代码:在修改现有代码时,编写单元测试可以确保修改对其它部分代码没有影响。

3.重构代码:在重构代码时,编写单元测试可以确保重构后的代码仍然能够按预期工作。

4.维护代码:为长期维护的代码编写单元测试,可以帮助保证代码的可靠性和稳定性。

5.多人协作开发:在多人协作开发中,单元测试能够提供一种确保代码正确性的有效方法,并且可以降低团队开发过程中的沟通成本。

单元测试的主要目的是提高代码的质量,确保代码在维护和更改过程中仍能按预期工作。在所有需要维护和开发的项目中都可以使用单元测试,项目规模不同时编写的单元测试数量也不同。

单元测试的原则

·单一责任原则:每个测试用例只测试一个功能,避免混杂多个功能的测试

· 快速执行原则:单元测试应该非常快,方便经常运行,避免因测试时间过长而导致开发人员不愿意运行测试

· 独立运行原则:单元测试应该独立运行,不应该相互依赖。每个测试都应该是可重复且独立的。

· 可重复性原则:单元测试应该具有可重复性,每次运行都应该产生相同的结果。

· 代码覆盖原则:单元测试应该覆盖每一个函数和代码路径,确保每一个函数都被测试了。

· 自动化原则:单元测试应该自动化,并且应该能够在每次代码提交后自动运行,确保不会因为遗漏而导致重大缺陷。

主流框架JUnitTestNG

JUnit是Java的单元测试框架,用于编写和运行可重复的测试,特性:

· 用于测试期望结果的断言(Assertion)

· 用于共享共同测试数据的测试工具

· 用于方便的组织和运行测试的测试套件

· 图形和文本的测试运行器

TestNG是一个测试框架,引入了一些新功能,TestNG 消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。 因为它在很大程度上借鉴了Java注解( JDK5.0 引入的)来定义测试,它也可以显示如何使用这个新功能在真实的Java语言生产环境中。

特点如下:

· 注解

· TestNG 使用 Java 和面向对象的功能

· 支持综合类测试(例如,默认情况下,不用创建一个新的测试每个测试方法的类的实例)

· 独立的编译时测试代码和运行时配置/数据信息

· 灵活的运行时配置

· 主要介绍“测试组”。当编译测试,只要要求 TestNG 运行所有的“前端”的测试,或“快”,“慢”,“数据库”等

· 支持依赖测试方法,并行测试,负载测试,局部故障

· 灵活的插件 API

· 支持多线程测试

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值