Developer - 如何自我保证Node.js模块质量

  组里正在做SaaS产品,其中一些模块(Module)是Node.js实现,这里我们主要使用Node.js实现Web Server来提供服务。

  在做SaaS项目之前,组里的开发模式是传统的Deverloper + QA的模式,这是传统的协作模式,Developer负责写代码开发,当然也会有基本的自测,QA负责测试,遇到问题,提Bug给Developer去修复,Developer修复Bug后,由QA来验证并记录Bug。但这样的协作模式已不适合SaaS产品的开发,SaaS产品更新迭代快,模块众多,这就要求要转变模式。Developer要负责自身模块更多的测试,单元测试要覆盖全。仅有少量的QA会负责集成测试。

由此更多的模块质量要求Developer来保证。

  因为我刚好参与其中的Node.js模块,因为我小结了一些目前Node.js模块开发时如何自测。

  建议在项目目录中,新建为"test"的文件夹,存放测试用的脚本和数据。

  主要有三,如下。

一. 假数据(Mock Data)和写测试脚本(Script)

   Node.js做Server,通常要依赖其他模块,来获取数据或服务等。如果你做的模块OK了,但别人的模块往往不一定完全OK。所以接口十分重要。因此可以写一些脚本来自测,同时需要的其他模块数据,可以自己制造些假数据,放在JSON文件中,来调用。

   脚本可以是JS或Bash脚本等,根据实际。

   有了脚本和数据,就可以来测试自己的模块,测试接口是否OK等。

二. Benchmark

   在Node.js中,有一个NPM模块很流行,叫benchmark,它的作用是用来做性能分析和测试。它的GitHub官网是:https://github.com/bestiejs/benchmark.js

   它的使用场景,例如你有几种方法来实现同一个功能,但你又不知道哪种性能更好。它便可以帮你分析。

   例如下面官方提供的示例。

 1 var suite = new Benchmark.Suite;
 2 
 3 // add tests
 4 suite.add('RegExp#test', function() {
 5   /o/.test('Hello World!');
 6 })
 7 .add('String#indexOf', function() {
 8   'Hello World!'.indexOf('o') > -1;
 9 })
10 // add listeners
11 .on('cycle', function(event) {
12   console.log(String(event.target));
13 })
14 .on('complete', function() {
15   console.log('Fastest is ' + this.filter('fastest').pluck('name'));
16 })
17 // run async
18 .run({ 'async': true });
19 
20 // logs:
21 // => RegExp#test x 4,161,532 +-0.99% (59 cycles)
22 // => String#indexOf x 6,139,623 +-1.00% (131 cycles)
23 // => Fastest is String#indexOf

  在这个测试例子中,分析比较了用正则表达式还是indeOf哪种方法的性能更高。最终indexOf胜出。

  因此Benchmark在Node.js模块中建议使用,用来做性能测试。

三. JSHint - 一款Javascript代码分析工具

   这个工具很常用,每次写完Javascript的代码,就可以通过这个工具来扫描下代码,如果有错误(Error)或者警告(Warning)提示,就可以用来发现代码中的问题和可优化的地方,可及时修改。

   同时JSHint提供对文本编辑器插件的各种支持,像我用的Vim就配置了JSHint,每次开发完,直接输入命令:JSHint,很好用,推荐。

   同时建议在Javascript代码文件首行增加"user strict;",这样是默认使用严格模式,更安全,更严谨。例如下例。

1 /* jshint strict: true, undef:true, unused:true, latedef: true, newcap: true, noempty: true, forin: true, 
2  freeze: true, node: true, curly:true, camelcase: true */
3 "use strict";

   JSHint官网:http://jshint.com/

目前根据自己的经验,只总结出以上三点。后面如果有更多的实践和总结,会及时更新在这里。谢谢

Kevin Song

2015-5-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏QQ音乐技术团队的专栏

全民K歌后台编译优化:从40分钟到30秒

编者注 :全民K歌上线1年半的从0发展到1.5亿,用户越来越多,后台代码库越来越大,编译速度也与日俱慢,编译一下整个工程需要30-40分钟,如何实现秒编至关重要...

3267
来自专栏北京马哥教育

一篇了解爬虫技术方方面面

原理 传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件...

4239
来自专栏魏艾斯博客www.vpsss.net

宝塔面板网站备份迁移到新服务器的过程

最近群里有朋友问到宝塔面板的网站如何备份和搬家到新服务器,对于老手来说很简单了,但是对新手来说还需要有一步步学习的过程。为了方便众多新手学习、操作,魏艾斯博客总...

1.3K2
来自专栏ThoughtWorks

8大前端安全问题(上) | 洞见

当我们说“前端安全问题”的时候,我们在说什么 “安全”是个很大的话题,各种安全问题的类型也是种类繁多。如果我们把安全问题按照所发生的区域来进行分类的话,那么所有...

2855
来自专栏CIT极客

【奇淫巧技】各种冷门的实用技巧成就技术帝!

4008
来自专栏Python小屋

Python截屏扩展库pyscreenshot安装与使用

PIL是非常成熟的Python图像处理扩展库,但只支持Python 2.x,另一个同样功能的扩展库pillow完美支持Python 3.x。然而,这两个库的部分...

1203
来自专栏好好学习吧

LoadRunner菜鸟入门学习笔记

  11.0 最高ie9( win7 32位+LR11+IE10可用,但win7 64位+LR11+IE10不可用,降至IE9可用),支持firefox3.6、...

3602
来自专栏后端之路

网页慢!谁的锅?

背景 出于对google的尊重,许多面试官都喜欢问这样的问题。从你在浏览器键入www.google.com 到页面最终渲染出来 期间究竟发生了什么? 当然现在也...

3025
来自专栏流柯技术学院

Jmeter3.0发布,版本更新都更新了什么

Jmeter已发布了3.0,一个大版本的开源测试工具,加入了一些新的特性及软件的改进。

1753
来自专栏腾讯大讲堂的专栏

全民K歌后台编译优化:从40分钟到30秒

编者注 全民K歌上线1年半的从0发展到1.5亿,用户越来越多,后台代码库越来越大,编译速度也与日俱慢,编译一下整个工程需要30-40分钟,如何实现秒编至关重要。...

3105

扫码关注云+社区