程序开发调试和测试是两个非常重要的环节, 在企业级应用开发中尤为重要.
调试
console
console 想必是大家最熟悉, 使用最多的调试方法了, Node 的 console 模块为内置原生模块, 包含了一些基本方法(log, error, info, warn, dir, time, trace, assert)将变量输出到 std 流中. 可以实现最基本的调试功能.
debugger
debugger 模块: V8 包含一个扩展调试器, 可以通过 TCP 协议在进程外访问, Node 包含一个内置的 debugger 客户端. 启动程序时添加 debug
参数可以启动.
% node debug myscript.js
该客户端没有实现所有功能, 但可以实现分步调试. 在代码中添加 debugger;
语句可以实现断点功能.
还可以实现 watcher 功能, 具体使用方法可参看官方 API.
node-inspector
node-inspector 是一个第三方模块, 是一个基于 Blink 开发工具的 Node.js 调试器. 通过 TCP 连接和 Node 程序通信, 实现调试功能. 跟浏览器中的 JS 调试工具有相同的功能, 通过该模块就能获的跟浏览器中相同的 JS 调试体验. 具体使用方法和步骤可以参看howtonode—Debugging with node-inspector, Taking Baby Steps with Node.js – Debugging with node-inspector 及 node-inspector 百度经验
另外 debug 是 TJ 大神开发的小型调试模块.
开发工具调试功能
大型的开发 IDE 都会集成良好的调试工具. 目前主要的 Node.js 大型 IDE 有 Webstorm, Nodeclipse, Visual Studio. 他们都具有良好的调试能力. 具体的配置和使用方法可参看以下文章.
- 使用神器webstorm调试nodejs
- 在eclipse中追踪nodejs的数据,调试nodejs
- eclipse 调试nodejs 发生Failed to connect to standalone V8 VM错误的解决方案
- Sublime Text 2调试NodeJS最方便的方法
- joyent—Using Eclipse as Node Applications Debugger 推荐
- node.js application debugging in Visual Studio
- Introducing node.js Tools for Visual Studio
- webstorm 文档
Joyent production practice
Joyent 是 Node 的东家, 在他们的服务中也大量的用到了 Node 技术, 并把它们的使用事件分享了出来, 其中有关于调试一些内容大家可以参考 Joyent practice
其他
supervisor, nodemon 等工具可以加快调试效率.
总结
也许 Node 调试起来没有 C, C++ 等语言更有效, 但可以使用的方法和工具也不少, 只要根据项目, 自身需求, 情况, 习惯使用即可.
测试
企业级应用或良好的模块, lib 都必须良好的测试, 甚至好多项目是由测试驱动如TDD, BDD. 这里要谈论的测试是由开发人员编写的单元测试, 或其他测试代码. 测试主要分为两类 功能测试(排除bug)和性能测试(查找性能瓶颈).
assert
Node 提供了一个原生模块 assert
用于开发单元测试. 主要提供了数据判断的一些方法: fail, equal, notEqual … 具体可参看assert文档.
Mocha 是 TJ 大神开发的测试模块, 也是目前 Node 社区最有名, 使用最多的测试框架. 具有众多优秀特点:
- 支持浏览器, Node
- 支持异步, 同步测试
- 支持 TDD, BDD
- 支持多种形式测试结果查看方式
- 支持众多assertions: assert, should.js, chai, expect.js, better-assert
- 提供命令行工具, 可以结合 make 或 grunt 使用
关于具体的指导和文档可参看 mocha. 以及 Express, Koa 等知名模块的测试用例.
其他单元测试模块
除了 Mocha 还有许多测试框架, 比如 Isaac 的 tap, 还有vows. 详细列表可以访问这里
性能测试
性能测试对于 Node 的主要应用场景 —- 高并发来说是非常重要的. 目前作者接触过 wrk. 由于对这块接触不多这里就不再详细介绍, 有兴趣的同学可以自己查找资料和技术.
另外 intern 是一个全新的测试平台, 有兴趣的同学可以尝试下.
参考资料
其他参考
- 推荐几款非常不错的Node.js测试工具
- 欲善其功,必先利其器—Nodejs调试技术总结
- nodejs 开发调试工具
- elipse打造Nodejs的调试环境
- stackoverflow—How to debug node.js applications 推荐
- nodejitsu.com — How to debug a node application
- Debug NodeJS Like A Pro
- Debugging node.js Projects
- How to debug a Node.js application in Windows Azure Web Sites
- cloud9—Running and Debugging Your Code
- slide—nodejs debuging
- slide — 单元测试实战