ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 第一部分 测试驱动开发 #### 第1章 自动化测试 作为Web开发人员,应该不难发现我们在浏览器的刷新按钮上花了很多的时间。你对这个过程再清楚不过了:在文本编辑器上敲入一些代码,按Alt+Tab换到浏览器,敲F5。这有点像洗衣服,打上肥皂,清洗,如此重复。这种手工测试费时,易出错,而且没法重现。由于我们的Web程序可能会运行在很多种浏览器和平台结合的环境里,所以全部用手工测试将会变成一项没法完成的任务。因此,我们只能集中解决一些浏览器和平台的结合,偶尔也会对更多的结合进行检查。最终的后果是开发流程不尽如人意,解决方案也靠不住。 在过去几年里,许多工具的出现已大大改善了Web开发人员的境况。我们现在有了所有主流浏览器的开发人员工具,有了许多JavaScript跟踪调试器可以选择,甚至还有了IDE来检查拼写错误和其他错误。毕竟,花些时间用Firefox的Firebug插件来和应用程序交互,显然要比处理那些恼人的警告好多了,但是我们的调试跟踪过程仍然是手工的、易出错的而且费时的。 人天性是懒惰的,开发人员更是如此。当手工过程让进展变缓的时候,我们就会致力于让这样的手工行为实现自动化,这样时间就能花在有意义的事情上面。实际上,作为Web开发人员,我们的工作更经常是自动化一些繁复的工作以提高商业价值。比如,网上银行就是一个很好的例子,无需亲自去到银行、排队、和人接洽以把现金从账户A转到账户B,我们只需坐在沙发上登录相关网页,几分钟内就可把一切搞定,节省了我们和银行的大量时间。 自动化测试为手工测试过程提供了一个解决方案。这样的话,我们就无须再一次填写表单,按提交键来检查客户端验证是否像预期的那样被激活了,可以让软件来为我们进行测试。这样做的优势是显而易见的:如果有一个合适的方式去做自动测试,那么我们就可以在许多浏览器上做测试,可以在任何后期阶段重启测试,甚至可以设定测试的执行时间,而无须任何手工互动。 事实上,自动化的软件测试已经存在很长一段时间了,对于JavaScript来说也是如此。JsUnit可以追溯到2001年,Selenium出现在2004年,之后大量工具更加层出不穷。然而,在JavaScript/Web开发社区里,自动化测试似乎比大多数其他的编程社区欠缺势头。在本章中,我们将要研究自动化软件测试的方法之一:单元测试,以及它是怎样应用到JavaScript世界的。