2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

使用 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:5111624
用户头像

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

关注

评论

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

GPU推理服务性能优化之路 | 得物技术

得物技术

Python

Mybatis Plus最新代码生成器AutoGenerator,更简单更高效!

Java你猿哥

mybatis ssm Java工程师 java Mybatis-Plus

存货库存模型升级始末 | 得物技术

得物技术

java

柏拉图会反对ChatGPT吗?~深度好文| 社区征文

李韧

人工智能 ChatGPT

隔离级别+事务+连接池+锁

hasWhere

这几个群,程序员可千万不要进!

禅道项目管理

项目管理 程序员 项目管理工具

DTO、VO、BO、PO、DO的用法区别,居然这么多人搞不清楚.....

程序知音

研发效能怎么分析?方法论、模型、误区都在这里了

思码逸研发效能

研发效能

MQTT 5.0消息发布流程

EMQ映云科技

物联网 IoT mqtt QoS 企业号 3 月 PK 榜

基于Mindspore2.0的GPT2预训练模型迁移教程

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

基于 Flink 流计算实现的股票交易实时资产应用

Apache Flink

大数据 flink 实时计算

万字分享:以Code Review 最佳实践,解答降本增效 or 增加成本之问(上)

极狐GitLab

DevOps Code Review 代码安全 代码评审 安全左移

CleanMyMac4.20汉化免费版Mac清理工具

茶色酒

CleanMyMac4.20

“鼎新杯”案例精选 | 中国联通数字化研发低代码平台为一线赋能

信通院IOMM数字化转型团队

低代码 数字化转型 中国联通

低代码:助力乡村振兴事业开启“智慧模式”

加入高科技仿生人

低代码 数字化 乡村振兴 农业农村数字化

如何通过Java程序加密或者解密PDF文档

Geek_249eec

Java PDF

捷报频传 | 博睿数据签约华润集团,携手共进共创共赢

博睿数据

可观测性 智能运维 博睿数据 签约 华润集团

两大国际标准正式发布,百度安全深度参与

百度安全

SpringBoot之如何实现热部署?这你得会 | 超级详细,建议收藏

Java你猿哥

Java spring Spring Boot ssm Java工程师

从“13天”到“0天”延时,揭秘火山引擎DataLeap SLA保障最佳实践

字节跳动数据平台

大数据 数据治理 数据研发 企业号 3 月 PK 榜

FL Studio21最新版DAW数字音频工作站

茶色酒

FL Studio FL Studio 21

AI脸部美容,一键让你变瘦变美变老变年轻

江户川码农

php Python AI PaddleGAN 人脸编辑

【实用类】测试使用ChatGPT开发shell脚本 | 社区征文

Hash拿铁

ChatGPT

并发编程详解:从理论基础到案例实战(十三个工具类,十大设计模式)

程序知音

Java 并发编程 设计模式 java架构 后端技术

思码逸任晶磊:ChatGPT 时代的软件研发数据与效能提升

思码逸研发效能

机器学习 研发效能 ChatGPT

vivo全球商城:库存系统架构设计与实践

vivo互联网技术

系统架构 电商 库存

镭速传输是如何管理大文件跨国传输的

镭速

联合解决方案 | 亚信科技AntDB数据库携手浪潮K1 Power赋能关键行业数字化转型,助力新基建

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库 企业号 3 月 PK 榜

web3 NFT代币铸造盲盒抽奖质押dapp游戏系统开发智能合约技术分析

开发微hkkf5566

【YonBuilder 移动开发】关于创建 App 是否需要 AVM 的经验分享

YonBuilder低代码开发平台

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