【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

发布了 687 篇内容, 共 397.3 次阅读, 收获喜欢 1498 次。

关注

评论

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

java-File对象

Isuodut

IMC总决赛精彩对战应接不暇,英特尔酷睿极致性能燃爆比赛现场!

E科讯

DeFi质押挖矿系统开发技术

薇電13242772558

区块链 defi

mongodb 源码实现系列 - 网络传输层模块实现四

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 高性能 分布式数据库mongodb

【涂鸦物联网足迹】涂鸦云平台接口列表

IoT云工坊

人工智能 接口 物联网 API 智能家居

高交会科技盛宴:“科技改变生活,创新驱动发展”

13530558032

mPaaS 客户端问题排查之漫长的 3s 等待之谜

阿里云金融线TAM SRE专家服务团队

mPaaS

利用下班时间,我两星期完成了redis入门与进阶

小松漫步

数据库 redis

轻松云上揽胜中华,靠的就是这份聪明的“地图”!

华为云开发者联盟

MySQL 数据库 postgresql AI 地图

握草!美团P8整理的280页超详细Docker实战文档简直太香了,让你对如日中天的Docker有更深入的了解。

Java架构之路

Java 程序员 架构 面试 编程语言

Github标星67.9k的微服务架构以及架构设计模式笔记我真的爱了

Java架构之路

Java 程序员 架构 面试 编程语言

多线程并发主题-ThreadLocalRandom类

公众号:程序猿成神之路

Java 并发编程 线程

什么?还不懂c++vector的用法,你凭什么勇气来的!

良知犹存

c++

LeetCode题解:剑指 Offer 22. 链表中倒数第k个节点,双指针,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

阿里大牛说:你凭什么搞不懂SpringBoot,Cloud,Nginx与Docker

小Q

Java 学习 编程 架构 面试

企业级软件的核心价值

Philips

敏捷开发 企业应用

云图说|多模态AI开发套件HiLens Kit:超强算力彰显云上实力

华为云开发者联盟

人工智能 开发者 物联网 机器人 华为云

“双11”购物狂欢节,所有女生走进了谁的直播间?

博睿数据

APM AIOPS 拨测 直播 用户体验

面试,到底在考察什么?

程序员架构进阶

面试 方法论

我就是增发、健身、养猫、社交通通拥有的锦鲤本鲤

脑极体

微众银行大数据平台建设方案

康月牙

大数据 开源 金融 平台 微众银行

《迅雷链精品课》第三课:区块链主流框架分析

迅雷链

区块链 区块链方案 区块链+ 区块链应用

C++多元组tuple使用方法?你熟悉吗?快来看看吧

良知犹存

c++

【Mycat】作为Mycat核心开发者,怎能不来一波Mycat系列文章?

冰河

分布式事务 分布式数据库 系统架构 分布式存储 mycat

LAXCUS 大数据集群操作系统:一个分布式分时共享 E 级系统软件(六)

陈泽云

人工智能 大数据 算法

手把手教你本地 k8s 集群搭建云原生 Tekton CICD 流水线

比伯

Java 大数据 编程 架构 计算机

亲测三遍!8步搭建一个属于自己的网站

华为云开发者联盟

MySQL Linux 开发者 网站 华为云

Teambition 网盘 VS 阿里云盘:阿里这个浓眉大眼的也开始玩赛马了?

郭旭东

阿里云 阿里云网盘

为什么我就面试阿里P6,好不容易过2面,3面来个架构师来吊打我?

小Q

Java 学习 程序员 架构 面试

WE大会上,科学家们是怎样治愈“小破球”的?

脑极体

LAXCUS 大数据集群操作系统:一个分布式分时共享 E 级系统软件(七)

陈泽云

人工智能 大数据 算法

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