硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

Smashtest:专注于速度的 Web 应用测试新 DSL

  • 2019-08-03
  • 本文字数:2039 字

    阅读完需:约 7 分钟

Smashtest:专注于速度的 Web 应用测试新 DSL

Peter Tesler(前迪士尼软件开发测试主管)最近发布了Smashtest的第一个主要版本。Smashtest 是描述和部署测试用例的一种新的领域专属语言。Smashtest 非常注重通过语言简洁地表达开发人员执行的重复性测试任务来提高测试人员的工作效率。新语言带有一个并行运行测试的测试运行器和一个 REPL。


Smashtest 的主要新特性包括允许测试人员以树状格式声明性地描述他们的测试。Smashtest 网站上给出了以下 Smashtest 脚本:


Open ChromeOpen FirefoxOpen Safari
Navigate to 'site.com'
Click 'Sign In'
Type {username:} into 'username box'
{username} is 'joe' {username} is 'bob' {username} is 'mary'
Verify success
{username} is 'baduser'
Verify error
复制代码


一次描述了 3 (Chrome、Firefox 和 Safari 浏览器)x(3 + 1) = 12 个测试,在同一个描述中覆盖了快乐路径(joe、bob、mary)和错误路径(baduser):



因此,Smashtest 是一种对空格敏感的语言,它使用空格将测试组织到树中。要执行的测试是由树的深度优先搜索推导出来的。Smashtest 最好与能够尊重现有空格的编辑器一起使用。该版本中提供了一个Atom编辑器的插件。


Smashtest 语言包含一个模拟 API,尤其是模拟时间和地理位置。网络条件和节流也可以用这种语言来描述(只有 Chrome 浏览器才可以使用这个功能)。该语言还包含一个 API,用于查找页面上的元素,并在其上执行断言。


Smashtest 命令行接口(CLI)包括用于持续集成/持续交付的工具和一个REPL(Read-Eval-Print Loop)解释器。该 CLI 还可以使用自动生成的屏幕截图创建报告:



关于 Smashtest 的价值定位,InfoQ 采访了 Smashtest 的创建者 Peter Tesler。


InfoQ:是什么驱使您编写 Smashtest?为什么要开发一种新的测试语言?


Peter Tesler:我们编写、部署、更新和分解自动化测试的速度是最重要的。软件变化很快,测试需要跟上。我想构建一种测试语言,使速度成为优先考虑的因素。

我还希望它能反映出我们在测试时是如何思考的,即广度优先。也就是说,当我在我的应用程序中处于一个特定的状态时,我想到了接下来可能发生的所有排列。例如,如果我在一个登录框中,我在脑海中列出所有我可以输入的潜在用户名。用户首先考虑的是深度,或者是一系列的线性步骤。传统的测试总是反映出后者,但是反映出前者(将测试作为一个排列树来编写)使你可以更容易地按照你的想法编写测试,查看你所涵盖的内容,并快速地编写(因为要打印的内容要少得多)。


InfoQ:与基于Gherkin的解决方案相比,Smashtest 是如何围绕功能/场景(Feature/Scenario)和 Given/When/Then 三元组来组织的?


Tesler:Smashtest 也处理 Gherkin。但传统的 BDD/TDD 工具并不将测试存储为树。

我们还把我们认为不必要的东西作为步骤本身之外的可选项,例如描述或命名测试。测试有一种与其他测试非常相似的趋势,通常被命名为“cart test 014”之类的无用名称。必须想出名字只会减慢你的速度(尽管如此,如果你愿意,你仍然可以添加名字和描述)。


InfoQ:您提到了测试速度的提高。Smashtest 涉及测试过程的哪些部分?


Tesler:测试编写和维护。现在编写一个功能自动化测试所花费的时间非常长,尤其是当我们讨论 Selenium WebDriver 测试时。开发新测试所需的时间越长,应用程序和/或需求更改的次数就越多,自动化带来的好处就越小。以至于许多组织完全放弃自动化,而倾向于手工测试(在手工测试中,创建测试的成本很低)。


InfoQ:与手工测试或现有的测试解决方案相比,您是否有速度提升的经验指标或硬指标?


Tesler:虽然我们还没有具体的经验度量,但是我花了一些时间,分别使用传统的 webdriverjs 以及 Smashtest 编写了一些测试场景,并看到了大约 10 倍的改进。在 Smashtest 中添加一行代码非常容易,并且可以立即将覆盖的排列加倍。


InfoQ:开发人员、测试人员和产品所有者采用 Smashtest 的三个理由?


Tesler:

1.编写测试的速度。易于阅读。

2.它本身可以做很多处理。UI 和 API 测试、各种模拟,它甚至是一种描述页面应该是什么样子的语言(所以你不需要 20 多个验证步骤,一个接一个)。

3.实时报告。它们在测试运行时进行更新,将类似的故障组合成组(使调试更加容易),显示所有的屏幕截图/日志,而且它们非常漂亮!


InfoQ:开发人员、测试人员和产品所有者不采用 Smashtest 的三个理由?


Tesler:

1.和任何语言一样有学习曲线。

2.你必须打破传统,以一种新的方式编写测试。

3.现在,它内置了对 Web UI(使用 Selenium WebDriver)和 HTTP API 测试的支持。如果你想测试其他内容,就必须编写一些自定义的 js。不过,任何可以在 nodejs 中运行的东西都可以在 Smashtest 中运行。


InfoQ:Smashtest 接下来会带来什么?


Tesler:现在我们专注于传播信息和建立社区。我们可能会根据需要添加对更多编辑器和语言的支持。


原文链接:


Smashtest, New Webapp Testing DSL Focusing on Speed


2019-08-03 08:003997
用户头像

发布了 863 篇内容, 共 604.1 次阅读, 收获喜欢 1614 次。

关注

评论

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

MySQL死锁与Spring事务

Dean

MySQL

开发机直连Docker中的redis容器小案例

麦洛

redis Docker

Istio 1.5:对开发人员有什么帮助?

麦洛

云原生 istio servicemesh

回"疫"录(6):致敬最美逆行者

小天同学

疫情 回忆录 现实纪录 纪实 创新突破

废掉一个人最好的办法是让他忙到没有时间思考

熊斌

程序员 职场 思考

音视频已强势崛起,我们该如何快速入门音视频技术?

音视频专家-李超

音视频 WebRTC ffmpeg 在线教育

多人实时互动之各WebRTC流媒体服务器比较

音视频专家-李超

音视频 WebRTC 在线教育 mediasoup janus

Ledge:这可能是距今最好的『DevOps + 研发效能』知识平台

Phodal

DevOps 敏捷开发 软件开发 研发效能

初入响应式编程(下)

CD826

spring 微服务 响应式编程 reactor

redis数据结构介绍二-第二部分 跳表

Nick

redis 源码 数据结构 源码分析 算法

redis数据结构介绍三-第三部分 整数集合

Nick

redis 源码 数据结构 源码分析 算法

西江月·记游(一)

轩辕御龙

Django 中如何优雅的记录日志

AlwaysBeta

Python django Web 后端

广告与数据算法系列1.1.1: 什么是广告

黄崇远@数据虫巢

互联网 算法 广告

如何学习区块链技术

比特币 区块链 以太坊

记游(四)

轩辕御龙

菩萨蛮·记游(二)

轩辕御龙

忆秦娥·记游(三)

轩辕御龙

Java并发编程系列——Fork-Join

孙苏勇

Java Java并发 并发编程 线程

C++数组可以为变量吗

泰伦卢

c++ 互联网 编程语言

工作时间都去哪儿了?

伯薇

效率 时间管理 个人提升 团队

Flink Weekly | 每周社区动态更新

Apache Flink

大数据 flink 流计算 实时计算

Netty系列之源码解析(一)

猿灯塔

Netty

要不要重新认识一下递归与迭代?

西了意

编程

Make Tmux Great Again

ccx

tmux

程序员陪娃漫画系列——排队问题

孙苏勇

程序员 生活 陪伴 漫画

格局不行,有机会也抓不住

池建强

创业 格局 MacTalk

从翻译到本地化:我在Airbnb做本地化经理的经历

葛仲君

产品 翻译 Airbnb 本地化 全球化

没有永恒的技术,只有适合的技术

MavenTalker

技术 个人成长 职业规划

B站、Quora、InfoQ,哪个的阅读/播放量会先到10W+?

赵新龙

写作平台 B站 Quora

最通俗易懂的H264基本原理

音视频专家-李超

音视频 WebRTC ffmpeg H264

Smashtest:专注于速度的 Web 应用测试新 DSL_大前端_Bruno Couriol_InfoQ精选文章