全部关于测试–第1部分

这是三个系列文章中的第一篇。

  1. 测试思路
  2. 技术技巧
  3. 工具和提示

心态

测试代码是需要学习的东西。 需要花费时间来吸收如何做好。 这是一种应该始终练习和改进的技巧。


过去,开发人员没有进行测试,而是检查了他们的代码。 这是一个很好的技巧:

今天,我们有许多工具和技术可以使用。 XUnit框架,模拟框架,UI自动化,TDD,XP…

但我相信测试始于头脑。 心态。

为什么要测试

我真的应该回答吗?
测试是您的代码工具和质量保证。 测试说明了代码的故事。 他们证明某事有效。 如果出现问题,他们会立即提供反馈。 正确使用测试可以使您更加高效。 您调试的次数更少,可能的bug更少,因此您有更多的时间进行实际工作。 您的设计将会更好(以后会更多)并易于维护。 您有信心更改代码(重构)。 稍后会更多。 由于您对代码更加自信, 因此可以减轻压力

测试什么

我什么都说。 也许您会跳过系统的最底层。 读取/写入文件系统或DB或传达某些外部服务的部分。 但是,即使这些零件也可以测试。 他们应该。 在接下来的博客中,我将介绍一些技巧。

测试最小的东西。 例如,如果您有一个DTO并决定将某个字段初始化为某个值,则进行测试,仅实例化该类,然后验证(确认)期望值(是的,我知道,某些部分确实无法测试,但应保持最小)。

建议零售价

单一责任原则。 这就是我喜欢提到测试需要检查一件事的观点。 如果是单元测试,则应该测试方法/类的一种行为。 应该在不同的测试中测试不同的行为。 如果是更高级别的测试(集成,功能,UI),则适用相同的原则。 测试系统的一个流程。 测试点击。 测试将元素正确添加到数据库,但不能在同一测试中删除。

隔离

隔离测试可以帮助我们准确了解出了什么问题。 开发独立的测试有助于我们一次专注于一个问题。

隔离的一方面与SRP有关。 测试某些东西时,请将测试的代码与其他部分(依赖项)隔离开。 这样,你测试代码的一部分。 如果测试失败,您知道是。 如果您在测试中有很多依赖性,那么很难弄清实际的失败原因是什么。

但是隔离也意味着其他事情。 这意味着没有测试会干扰其他测试。 这意味着测试的运行顺序无关紧要。 对于单元测试,这意味着您不需要运行数据库(或与此相关的Internet连接)。 这意味着您可以同时运行测试,而不会互相干扰(maven完全可以做到这一点)。 如果您做不到(例如:数据库问题),那么您的测试就不会孤立。

测试气味

如果测试难以理解/难以维护,请不要生气! 说:

亲爱的测试人员,非常感谢您帮助我改善代码

如果为测试设置环境太复杂,则可能是所测试的单元具有太多依赖性。

如果在运行被测方法之后,您需要验证许多方面(验证,断言等),则该方法可能做得太多。 该测试可以成为您改进代码的最好朋友

通常,真正复杂的测试代码意味着结构化的生产代码更少。 我通常会看到复杂的测试与未遵循SRP或任何其他DOLID原理的代码之间的相关性。

可测试的代码

这是我的最爱之一。 每当我进行代码审查时,我都会问对方:“您将如何对其进行测试?”,“您如何知道它的工作原理?” 每当我编写代码时,我都会问自己同样的问题。 “我如何测试这段代码?”

以我的经验,始终思考如何创建可测试的代码会产生更好的设计。 该代码“神奇地”具有更多的模式,更少的重复,更好的OOD且行为稳定

强迫自己不断测试代码,会让您思考。 它有助于将大而复杂的问题分解为许多(或很少)较小,更琐碎的问题。

如果您的代码是可测试的且经过测试,则您对此更有信心。 对行为充满信心,并有信心改变它。 重构它。

重构

这个项目可以是为什么的一部分。 它也可以是技术的一部分。 但是我决定特别注意它。 重构是TDD周期的一部分(但不仅如此)。 当您进行测试时,您可以确信进行重构。 我认为您在开发时需要“考虑重构”。 类似于“思考如何生成可测试的代码”。 在考虑重构时 ,会进行测试。

重构也是一种心态。 问问自己:“我产生的代码是否足够干净? 我可以改善吗?” (顺便说一句,知道什么时候停止…)

这是有关测试的一系列文章中的第一篇。 以下文章将介绍一些测试技术和方法。

翻译自: https://www.javacodegeeks.com/2014/11/its-all-about-tests-part-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值