写点什么

使用 Nightwatch 进行端到端测试

  • 2014-02-19
  • 本文字数:1404 字

    阅读完需:约 5 分钟

Nightwatch 是一套新近问世的基于 Node.js 的验收测试框架,使用 Selenium WebDriver API 以将 Web 应用测试自动化。它提供了简单的语法,支持使用 JavaScript 和 CSS 选择器,来编写运行在 Selenium 服务器上的端到端测试。

不同于行为驱动测试(BDD)和单元测试独立运行并使用模拟 / 存根,端到端测试将试着尽可能从用户的视角,对真实系统的访问行为进行仿真。对 Web 应用来说,这意味着需要打开浏览器、加载页面、运行 JavaScript,以及进行与 DOM 交互等操作。Nightwatch 尝试着使用语法糖( syntax sugar )来实现这一目标:

复制代码
this.demoTestGoogle = function (browser) {
browser
.url(“http://www.google.com”)
.waitForElementVisible('body', 1000)
.setValue('input[type=text]', 'nightwatch')
.waitForElementVisible('button[name=btnG]', 1000)
.click('button[name=btnG]')
.pause(1000)
.assert.containsText('#main', 'The Night Watch')
.end();
};

除简化了编写自动化测试的过程外,Nightwatch 还能够与持续集成的流水作业结合,从而对开发中的系统进行完整的诊断:

我们可以从 Nightwatch 网站找到当前提供特性的列表:

  • 简单但强大的语法。只需要使用 JavaScript 和 CSS 选择器,开发者就能够非常迅捷地撰写测试。开发者也不必初始化其他对象和类,只需要编写测试规范即可。
  • 内建命令行测试运行器,允许开发者同时运行全部测试——分组或单个运行。
  • 自动管理 Selenium 服务器;如果 Selenium 运行在另一台机器上,那么也可以禁用此特性。
  • 支持持续集成:内建 JUnit XML 报表,因此开发者可以在构建过程中,将自己的测试与系统(例如 Hudson Teamcity 等)集成。
  • 使用 CSS 选择器或 Xpath,定位并验证页面中的元素或是执行命令。
  • 易于扩展,便于开发者根据需要,实现与自己应用相关的命令。

目前,Selenium 是 JavaScript 的世界里验收测试方面最流行的工具之一,类似的还有 PhantomJS 。二者都有其独到的方法:Selenium 使用其 WebDriver API,而 PhantomJS 使用无界面的 WebKit 浏览器。它们都是非常成熟的工具,都具有强大的社区支持。它们与 Nightwatch 之间最大的不同,主要是在于语法的简易度以及对持续集成的支持。与 Nightwatch 相比,Selenium 和 PhantomJS 都拥有更加冗长的语法,这会让编码变得更庞大,而且不支持从命令行中进行开箱即用的持续集成(JUnit XML 或其他标准输出)。

尽管如此,Nightwatch 还处于不断演进的道路上,以成为更加成熟工具的。在 Google Groups 中, WD.js (另一个基于 Node.js 的验收测试框架)的作者 Sebastian Vincent 针对处理回调所选择的实现给出了一些批评意见

当涉及异步调用时,基于链式的队列是个糟糕的模式。如果开发者想要做一些复杂的事情,或是组合一些东西,最终将不得不手动停止队列以插入任务(但也许 Nightwatch 会证明我的看法是错的)。

Vincent 还针对 Nightwatch 和 Selenium 服务器之间使用的底层通信协议,指出了其中存在的不足之处:

Nightwatch 离成熟还远,看看 HTTP 协议,GET 和 DETLETE 中没有重试、没有超时设置,也没有内容 / 长度 + 内容类型。在非直接情况下(例如 Sauce-connect 或排队),它很快就会出现问题。

然而,哪怕有这些批评的声音,Nightwatch 还是入选了 GitHub 本月最热门代码仓库。另外该团队运营着一个 Twitter 账号,听取来自社区的反馈并与开发者互动。

查看英文原文: Testing End-to-End with Nightwatch

2014-02-19 05:5111818
用户头像

发布了 256 篇内容, 共 86.0 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

5款更专业的境外社交媒体监控工具推荐

沃观Wovision

沃观Wovision 舆情监测系统 社交媒体监控 海外社交媒体监控

破解境外市场洞察难题:社交媒体监控网站的实战应用场景

沃观Wovision

海外舆情监控 沃观Wovision 舆情监测系统 社交媒体监控 海外社交媒体监控

如何利用现有资源启动有效的境外社媒监控

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

报名开启|全球数据科学与 AI 线上直播会议邀您参会

Altair RapidMiner

人工智能 AI 数据科学 仿真 CAE

AI 英语学习APP的开发流程

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语学习

AI 英语背单词 APP 的技术框架

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语学习

欧洲开源生态启示:从技术工具到战略主权,网络安全与AI驱动下的转型之路

安势信息

开源安全 SBOM 开源安全与治理 欧洲开源

从执行到管理:构建可量化的境外社媒监控软件体系指南

沃观Wovision

海外舆情监控 沃观Wovision 舆情监测系统 社交媒体监控 海外社交媒体监控

文心快码3.5S实测插件开发,Architect模式令人惊艳

Comate编码助手

AI 编程 文心快码 文心快码3.5S AI编程助手

区块链 Web3 开发的技术架构

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

官网焕新!安势信息以全新形象,解码软件供应链安全流畅体验!

安势信息

官网升级 安势信息 安势信息官网

华数传媒用 NocoBase 快速搭建 AI 多模态研发平台

NocoBase

人工智能 数据库 开源 低代码 无代码

境外社交媒体监控系统的底层逻辑:从数据噪声中提取商业信号

沃观Wovision

海外舆情监控 沃观Wovision 舆情监测系统 社交媒体监控 海外社交媒体监控

得物×火山引擎:Data Agent驱动财务管理智能升级

字节跳动数据平台

企业如何利用境外社交媒体监控服务整合营销体系

沃观Wovision

跨境电商 沃观Wovision 舆情监测系统 社交媒体监控 海外社交媒体监控

怎样利用AI工具提升境外社交媒体监控软件的效率与深度?

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

天猫双11AI助力商家经营,生意管家AI助理日均产出500万份开卖分析

新消费日报

多模态数据湖技术深化,Data Agent新能力发布!“认知”将决定企业上限

字节跳动数据平台

从原理到落地:重复文档比对算法的开发核心与实践

上海拔俗

别再手写过滤器!SpringCloud Gateway 内置30 个,少写 80% 重复代码

程序员小富

spring SpringCloud 网关

AI时代,境外社交媒体监控网站的三大变革与未来展望

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

车间主任必须知道的十个公式

优秀

公式函数 车间管理

融云亮相 GITEX 2025,智能通信方案驱动全球数字化转型

融云 RongCloud

亚马逊商品详情 API 秘籍!轻松获取 SKU 属性数据

Datafox(数据狐)

亚马逊API 亚马逊商品详情API 亚马逊商品数据采集

区块链 U 卡 APP 的上线

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

活动邀请丨2025 全球机器学习技术大会

阿里巴巴云原生

阿里云 RocketMQ 云原生

探秘黑龙江托管云:开启高效数字化新征程

等保测评

如何通过TR技术评审管控IPD开发风险?

IPD产品研发管理

产品设计 IPD TR评审

探秘黑龙江三级等保测评最新要点

等保测评

防患于未然:用于品牌危机预警的境外社媒监控工具盘点

沃观Wovision

海外媒体 舆情监测 沃观Wovision 社交媒体监控 海外社交媒体监控

陷入数据沼泽?利用境外社交媒体监控工具构建高效社媒监控工作流

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

使用Nightwatch进行端到端测试_JavaScript_João Paulo Marques_InfoQ精选文章