如何将测试添加到一个现有的项目中

125 阅读6分钟

我们都经历过这种情况。你正在开发一个 "只是一个原型 "的应用程序,"肯定不会以这种方式发货"。或者你没有时间做原型,当然也没有时间为它写测试。 或者你加入了一个从来没有测试过他们的代码的团队(或者你是那个刚开始接触的人)。不管你是怎么来的,你已经有了一个在生产中出现问题的应用程序。每当你的鼠标悬停在 "部署 "按钮上时,你的手心都会出汗。你仍然需要建立功能和修复错误,但你最终决定值得投资来测试你的应用程序。你想要信心。

但你从哪里开始呢?

你有几万、几十万、甚至几百万行的代码在这个应用中运行。这个任务感觉如此巨大,以至于你避免去想它。但你必须从某个地方开始。让我们放大,看看测试奖杯中的原则如何应用于你的应用程序。

这里是我们的测试奖杯,供参考。在博文中阅读更多关于它的内容。

The four types of tests

当你刚开始的时候,你应该把重点放在能提供最佳投资回报的事情上。所以这就是我们在这里要做的。

静态测试工具包括:

设置ESLint是迄今为止你可以应用于你的代码库的最低 "成本 "的事情,并且可以帮助你避免整个类别的错误。由于它的可配置性,随着时间的推移,它也可以合理地逐步采用。停用今天在你的应用程序中被破坏的规则,启用其他规则作为警告,并逐步修复和消除你的应用程序中的问题代码。

Prettier的设置并不困难,但对于那些不习惯使用代码格式化的人来说,往往需要多一点说服力。你可以阅读"为什么是Prettier?"以了解它为什么如此有用。我认为它是一个静态测试工具,因为如果你的语法写得不正确,那么prettier会以一种看起来很奇怪的方式重新格式化它,从而突出问题所在。

TypeScript或Flow则更难销售。这些工具也是可以逐步采用的,但它们可能需要相当多的工作才能在你的构建管道中进行配置和工作。尽管这些工具基本上是 "带类型的JavaScript",但 "带类型 "这一点有一个非常重要的学习曲线。我可以告诉你,静态类型检查器绝对值得一试。 我给你的一个建议是,不要担心一开始就把你的类型弄得很完美。不要害怕any(或unknown!它们不会让你的类型变得那么有用,但我看到很多人放弃了TypeScript,因为他们花了很多时间把头撞到墙上,试图让他们的类型变得完美。继续吧,让它像现在这样不完美,然后你可以在以后知道的更多的时候再回来,改善事情。

第2步 - 做一个单一的E2E测试

我们在这里从测试奖杯的底部跳到顶部。这可能需要相当大的努力,但它将以巨大的方式得到回报。有各种方法可以做到这一点,但可能最快的是写一个单一的E2E测试,在生产(或类似生产的环境)上运行,并通过一个普通/重要的用户流。这可能是一个相当长的测试。这很好(无论如何,使E2E测试太短是一个常见的测试错误)。但试想一下,如果你能雇用一个手动QA测试员,在你每次部署你的应用程序时都能运行你的应用程序中最重要的用户流,以确保它仍然工作,那将是多么有帮助。这将有多大的价值?巨大的。

这一点并不容易。根据你的应用程序的复杂程度,可能需要一天或几天的时间来编写测试并在CI上运行。如果你不得不把它设置在一个cron job上,每隔一小时左右运行一次,那也没什么。如果你不能马上让它在CI上运行,那也没关系。你可以迭代到一个更好的情况。不要让完美阻止你的改进。

第3步--写一个单元测试

我们要跳回到下一种测试类型。单元测试是最简单的测试类型。在你的应用程序中挑选最简单的单一纯函数,并安装/配置所有你需要的工具,让这个简单的纯函数得到测试。一旦你有了这个东西的测试,那么写其他的测试就会容易得多。许多人不写测试,是因为要花很多精力去安装工具。因此,你的工作是让工具到位,使测试更容易进行。

第4步 - 编写更多的测试

从这里开始,你应该配置好所有的工具,这样你就可以写更多的测试。 现在你可以专注于更多的集成测试。每一次你都会面临新的挑战,你可能需要写一些模块模拟,但你做得越多,未来的测试就越容易。

你可能会发现,直到这一步,我才建议你开始专注于集成测试。虽然它们通常能给你带来最大的收益,但在所有的工具都到位之前,它们往往更难进行。另外,尽管集成测试很有价值,但第一个全面的E2E测试更有价值。

第5步 - 教你的整个团队如何测试

现在,你的工具都到位了,你的团队需要开始为他们创建和维护的代码编写测试。最好的方法是说服你的经理为你的整个团队(或者你的CTO为整个公司)购买TestingJavaScript.com的许可证。它无疑是在互联网上学习如何测试JavaScript应用程序的最佳场所(很快也会包括测试Node.js后端)。

事实上,TestingJavaScript.com教你如何配置我在这篇博文中提到的所有工具,所以我建议你在开始工作之前让你的老板给你买许可证,这样你就可以省去学习如何配置它们的麻烦,只需完成工作即可。

让每个人都从TestingJavaScript.com上学习,将统一你的团队的测试策略,并为你自己节省大量的时间来决定处理问题的最佳方法。TestingJavaScript.com为你提供了这些。你所需要做的就是在你的应用程序上执行你所学到的东西。

结语

我希望这对你改进项目测试的努力有所帮助,因为你非常希望能够自信地发货。有了充满信心的测试策略,你会在晚上睡得更好。😴 甜蜜的梦。