我认为很多开发人员后来都会写测试。开发人员在学习编程时,无论是自学、通过训练营还是在大学学习,测试往往被忽视。
我不明白,为什么测试没有得到足够的重视?当你开始从事生产项目和团队工作时,你经常会发现测试是你必须做的事情。
我认为部分原因在于编写测试的理由不够明确。这就像开发人员版本的办公室文书工作——似乎没人愿意做。让我来解释一下为什么你应该编写自动化测试。
典型场景
在大多数工作场所,一个典型的场景是这样的。你正在为 API
开发 REST
端点。一开始相当简单,但随着时间的推移,它变得越来越复杂。不久之后,你就会使用存储库、缓存,整个事情变得有点难以触及。因为担心会破坏某些东西,所以你不会重构代码,随着时间的推移,它就变成了人们不想使用的意大利面条式代码。
测试可以改善这种情况。
什么是自动化测试?
简而言之,自动化测试就是确保你的代码按照预期运行。你与自己创建的 API
进行交互,并断言已发生正确的操作。无论是 HTTP
响应代码、检查数据库中是否存在记录,还是其他什么。
还值得一提的是,测试并不是灵丹妙药。它遵循与大多数 GiGo
相同的原则(垃圾进,垃圾出)。你必须确保编写的测试有意义且有用,否则它们就毫无用处。
常见测试框架
对于测试,最简单的入门方法是使用适用于你所选语言的众多框架之一。以下是一些用于 PHP
和 JavaScript
的常见测试框架。
- PHP
- PHPUnit
- PCodeception
- PBehat
- PJavaScript
- PJest
- PJasmine
- PMocha
为什么要编写自动化测试?
我已经介绍了自动化测试有用的几个原因。但让我更深入地谈谈为什么你应该编写自动化测试。
- 开发人员信心
正如我上面提到的,创建这些笨重的大型类并不需要很长时间。测试给你带来的最大好处之一就是作为开发人员的信心。你可以做任何你想要的改变,只需运行测试套件,就可以立即知道是否破坏了任何东西。
这给你很大的灵活性。你不仅可以无忧无虑地重构代码,还可以尝试各种解决方案而不必担心破坏代码。
- 以消费者的身份思考
测试通常需要你从不同的角度思考。你必须脱下你的开发人员帽子,戴上你的消费者帽子。无论这是某人使用HTTP API
还是包的方式,你都可以以最适合消费者的方式设计你的系统。
因此,它让你可以轻松地考虑用户可能选择如何与你的应用程序交互的极端情况。用户有多少次以你意想不到的方式使用应用程序?
- 节省时间
与很多人的想法相反,测试确实可以节省你的时间。你会问,当你编写测试和实现时,这怎么可能呢?因为它可以让你更容易地发现错误,所以你不太可能花时间进行调试。如果系统中报告了错误,请编写测试来重现该错误,然后你可以单独与应用程序交互以找到根本原因。
测试是你花时间编写的东西,是对未来的投资。
有没有你不应该编写自动化测试的时候?
一般来说没有。但请记住,这不是一条规则,请运用你的最佳判断。如果你编写一个小应用程序只是为了尝试一个想法,而你不打算将它发布到外面,那么不编写任何测试也没什么坏处。话虽如此,这是一个非常好的习惯,你做得越多,就会变得越容易。