本文由Markdown语法编辑器编辑完成。
随着Web项目的不断规范以及测试驱动开发(TDD)的理念,以及迭代开发和Dailybuild等概念的产生,自动化测试是一个很重要的发展方向,它可以及时地发现新开发的功能对旧有功能的影响,同时由于可以自动化测试,减轻了测试人员的工作量。
这几天接到项目经理的安排,要求让我搭建一套测试环境。之前在做项目时,我只是在已经搭建好的测试框架下直接撰写测试代码,并没有感觉到有多么困难。但是,当自己从0开始搭建自动化测试环境时,却发现了这个过程中许许多多的问题,每一个问题的解决其实都是自己的一个知识盲点。经过将近3天的努力,终于搭建好了测试环境,并且撰写了两例基本的集成自动化测试。以下记录这个过程,权当是一个总结,也可以供未来的人们提供参考。
经过思考和实践,搭建环境的基本步骤可以分为以下几步:
要想进行Web前端的集成自动化测试,需要准备一些必要的软件,分别是:
Webstorm;
Node.js;
Oracle客户端工具:instantclient
WebStorm:
http://www.jetbrains.com/webstorm/
WebStorm是开发JavaScript的最优秀的编辑器。我们的测试框架以及测试配置文件Gruntfile.js都可以直接加载在WebStorm中并被识别,它可以完美地实现前端的集成自动化测试。
Node.js:
https://nodejs.org/en/
http://javascript.ruanyifeng.com/nodejs/basic.html
Node.js是一个JavaScript运行环境(runtime),实质是对Chrome V8引擎进行了封装。Node.js是一个基于Chrome JavaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。
Instantclient:
http://www.oracle.com/technetwork/cn/topics/instantclient-095449-zhs.html
Oracle即时客户端。利用即时客户端,用户无需安装标准的Oracle客户端或拥有ORACLE_HOME就可运行应用程序。OCI, OCCI, Pro*C, ODBC和JDBC应用程序无需进行修改即可运行。
以上提到的三个必要工具软件:WebStorm是作为自动化测试的编辑和运行载体;Node.js是作为JavaScript运行时的服务器环境;InstantClient是作为Node与远程Oracle服务器进行连接的桥梁。
待以上的三款工具软件安装后,我们便可以进行相关文件的配置了。这里指的配置文件,主要是指:Gruntfile.js和Protractor.conf.at.js等。
Grunt:
http://javascript.ruanyifeng.com/tool/grunt.html
在JavaScript的开发过程中,经常会遇到一些重复性的任务,比如合并文件、压缩代码、检查语法错误、将Sass代码转成CSS代码等。通常需要不同的工具来完成这些不同的任务,既重复劳动又非常耗时。
Grunt就是为了解决以上问题而发明的工具,可以帮助用户自动管理和运行各种任务。
Grunt是一个自动任务运行器,会按照预先设定的顺序自动运行一系列的任务。这可以简化工作流程,减轻重复性工作带来的负担。
Protractor:
http://www.protractortest.org/#/
https://github.com/angular/protractor
Protractor是Angular官方正在使用的E2E测试框架,可以说是专门为Angular定制,内置了各种可以选择、操作Angular元素的便捷方法。如果Web应用是基于Angular开发,使用Protractor可以减少很多重复代码。对于Angular的重度使用者,Protractor会是非常明智的选择。
Node.js专门为自动化测试提供了数据库模块,名称为oracledb。关于oracledb的相关源码和测试examples,可以通过Github上的链接进行访问:https://github.com/bchr02/node-oracledb。
在实际的测试用例撰写的时候,如果涉及到数据库的相关操作,都需要首先通过require将该模块引入。
如:var nodedb = require(‘./oracledb’);
但实际在进行自动化测试环境的搭建过程中,发现在运行测试时会有如下的错误信息:
“The specified module could not be found - oracledb.node.”
本次搭建测试环境所安装的Oracle的客户端版本为:InstantClient12_2。后来经过查询,是因为本地机器缺少了VC++的运行时库而造成的。根据对应关系,InstantClient12_2需要安装的VC++运行时库的版本为VC++ 2013.
Visual C++ Redistributable Packages for Visual Studio 2013的下载链接为:https://www.microsoft.com/en-us/download/details.aspx?id=40784。下载安装后再重启电脑,即可以正常地访问node.js提供的数据库模块oracledb。