Ruby + Mechanize + NetBeans 打造WEB自动化测试平台

一直以来,公司网站主要依赖于人工进行测试,不但无法保证用来监控网站功能异常,也无法进行有效的回归测试。部分频道有单元测试,但跨频道的就很难测试。

最近打算推动网站自动化测试,考察了一些开源、商业的自动化测试系统,发现功能都不是很完备,或者使用不太方便。比如我需要大量测试并行运行,需要对同一频道的每一台服务器进行绑定测试,需要模拟登录等,试用过的几个测试系统都无法完成,也没有精力测试更多了。自动化功能测试平台和单元测试框架有相似之处,所以思考如何借助单元测试框架来完成。

测试系统包括几个部分:
1、用例输入、调试系统
2、用例管理系统
3、与上线系统结合(公司的上线系统管理着每个频道的ip列表,上线时自动把代码同步到这些服务器上)
4、测试用例并行运行器
5、结果收集及反馈、报警

首先考虑的是测试输入系统,最好有个较为友好的界面,由于对测试尚不能清晰定义,所以先考虑使用脚本语言来做测试用例,待以后测试模式固定以后,再用图形界面替换掉。在PHP/Perl/Ruby/Python之间进行比较后,还是选择了Ruby。PHP优势较大,公司WEB开发以PHP为主,Perl/Ruby/Python这几门语言在公司内使用都不太广泛,Perl比较晦涩,Python的代码对齐方工又增加了非开发人员的难度,Ruby代码简练,感觉更容易培训一些。个人爱好偏向Ruby,PHP一直不喜欢,目前主要是快速做出原原型,所以自私地选择了Ruby。脚本编辑器要能够快速输入、修改、调试,经过几天的试用最终选择了NetBeans。

测试脚本暂定为rspec,这样看起来更偏向业务一些,废话少。HTTP请求的测试,考查过几个:
1、Net::HTTP,cookie管理要自己来做了
2、curb,curl的ruby库,有cookie支持
3、watir,操纵浏览器,不适合后台大量测试并行运行,可考虑用在页面展示的测试上
4、Mechanize,对它的功能较为满意,最后选定了它

用例管理系统暂时使用ruby文件,测试用例编写人员提交测试用例文件到svn,测试主管审核后合并到测试系统。可以在NetBeans中直接运行测试用例。

测试运行系统,自己编写了一个并行Runner。对于服务器绑定测试,需要分析出测试用例中用到的频道列表,对这些频道的所有服务器枚举出所有组合后,一一进行测试。分析过程是直接运行一下所有测试,记下所有请求,并得出测试和频道列表的映射,然后生成所有测试放入队列,并行多个进行来完成。

不知道是不是又造了一个轮子,还好工作量不是很大。正在完善中。

你可能感兴趣的:(Web,python,单元测试,Ruby,Netbeans)