众成翻译 发布:2018-01-04 浏览:43
先不要急着看码例。首先我们有必要探讨一下端到端测试到底是什么,然后才能学习如何为 Node.js 平台项目进行测试。
第一,端到端测试是黑箱测试的工具之一。这就意味着写测试的人只审查软件功能,不知道软件内部如何实现,即不看源代码。
第二,端到端测试也可以用作用户验收测试 (UAT)。 用户验收测试是验证这个解决方案对用户来说确实可用的过程,关注的不是拼写之类的小错误,而是那些会使系统瘫痪、或使系统功能无法满足用户需求的问题。
"端到端测试也可以用作用户验收测试 (UAT)",见 RisingStack
Nightwatch.js 让大家能 "在 Node.js 平台上省时省力地编写运行于 Selenium/webDriver 服务器上的端到端测试"。
Nightwatch 带有以下功能:
想在本地运行 Nightwatch,要稍微多做点事。在本地环境里需要有一个独立 Selenium 服务器,以及 webdriver 程序,这样才能使用 Chrome/Firefox 浏览器对程序进行本地测试。
有了以上三个工具,我们就要实施下图所示的工作流程了。
感谢: nightwatchjs.org 提供的图片
只要运行 npm install nightwatch --save-dev 命令就可以将 Nightwatch 添加到项目里去。
_这个命令把 Nightwatch 的可执行文件放到了./node_modules/.bin 文件夹里,这样就不用全局安装了。_
Selenium 是多平台上网站浏览器自动化的工具套件。
先决条件:确保 JDK 安装好了,版本至少是 7。如果还没装,可以到 这里 下载。
Selenium 服务器是一个 Java 程序。Nightwatch 用了这个程序就可以连接到各种各样的浏览器上去。在 这里 可以下载二进制执行文件。
下载了 JAR 文件后,在项目里创建一个 bin 文件夹,把文件放进去。我们要设置好让 Nightwatch 使用这个文件,这样就不必手动启动 Selenium 服务器程序了。
ChromeDriver 是一个独立的服务器,为 Chromium 浏览器实现了 W3C 的 WebDriver 有线协议。
去 下载页面 获取可执行文件,同样把文件放到 bin 文件夹里去。
基本 Nightwatch 配置可以通过一个 json 配置文件来完成。
我们创建一个 nightwatch.json 文件,填上以下内容:
- {
- "src_folders": ["tests"],
- "output_folder": "reports",
- "selenium": {
- "start_process": true,
- "server_path": "./bin/selenium-server-standalone-3.3.1.jar",
- "log_path": "",
- "port": 4444,
- "cli_args": {
- "webdriver.chrome.driver": "./bin/chromedriver"
- }
- },
- "test_settings": {
- "default": {
- "launch_url": "http://localhost",
- "selenium_port": 4444,
- "selenium_host": "localhost",
- "desiredCapabilities": {
- "browserName": "chrome",
- "javascriptEnabled": true,
- "acceptSslCerts": true
- }
- }
- }
- }
有了这个配置文件,我们就告诉了 Nightwatch 去哪里找 Selenium 服务器和 Chromedriver 的二进制执行文件,以及想运行的测试在哪里。
译注:下面是广告
RisingStack 专家关于 Node.js 监控与调试的建议
目前为止,我们安装好了 Nightwatch,下载好了独立的 Selenium 服务器,以及 Chromedriver 程序。做好了这几步,必备工具就都齐了,可以用 Node.js 平台和 Selenium 软件创建端到端测试了。
让我们在 tests 文件夹里添加一个新文件,叫作 homepage.js。
我们这个例子是从 Nightwatch 初学指南 里来的。我们的测试脚本会去 Google 网站,搜索 Rembrandt 这个词,然后查看维基页面:
- module.exports = {
- 'Demo test Google' : function (client) {
- client
- .url('http://www.google.com')
- .waitForElementVisible('body', 1000)
- .assert.title('Google')
- .assert.visible('input[type=text]')
- .setValue('input[type=text]', 'rembrandt van rijn')
- .waitForElementVisible('button[name=btnG]', 1000)
- .click('button[name=btnG]')
- .pause(1000)
- .assert.containsText('ol#rso li:first-child',
- 'Rembrandt - Wikipedia')
- .end()
- }
- }
接下来只要运行 Nightwatch 程序本身就行了!关于这一步,我建议在 package.json 的脚本部分加一段新脚本:
- "scripts": {
- "test-e2e": "nightwatch"
- }
最后一步要做的就是用这个命令运行测试:
`npm run test-e2e`如果一切顺利,测试就会打开 Chrome 浏览器,然后访问 Google 和维基。
既然已经明白了端到端测试是什么,也懂得如何设置 Nightwatch 了,那就该开始把它加到项目里去了。
为了做到这一点,还有一些问题要考虑,但请记住,没有万能的方法。根据企业需求不同,以下问题的答案可能也会不同:
在这一章的 Node.js at Scale 里我们学习了:
在下一章里,我们要探究如何 监控用于产品发布的 Node.js 平台基础结构。
原 文: Node.js End-to-End Testing with Nightwatch.js
译 文: 众成翻译
作 者:chaussen 译
来源: https://sdk.cn/news/7923