大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

发布了 886 篇内容, 共 626.0 次阅读, 收获喜欢 1619 次。

关注

评论

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

德语 Alt 代码表

HoneyMoose

极狐GitLab 镜像仓库使用技巧

极狐GitLab

DevOps gitlab 镜像 CI/CD 镜像仓库

单日30PB量级!火山引擎ByteHouse云原生的数据导入这么做

字节跳动数据平台

数据库 大数据 云原生 数仓 企业号12月PK榜

软件测试/人工智能|Edge浏览器实用插件推荐

霍格沃兹测试开发学社

西班牙语 Alt 代码表

HoneyMoose

37 | 贪心算法:如何用贪心算法实现Huffman压缩编码

鲁米

C/C++内存操作 | AI工程化部署

AIWeker

c AI AI工程化部署

从 0 到 1 手动搭建 k8s 集群 - 添加 master 节点

doramingo

云原生 扩容 kubenetes

万界星空科技电子电器装配行业MES解决方案

万界星空科技

mes 万界星空科技mes 电子mes 电子工厂 电子电器制造业

Hudi 在 vivo 湖仓一体的落地实践

vivo互联网技术

数据湖 大数据计算与存储 效率提升

群晖(Synology)新建存储池使用 Home 服务

HoneyMoose

万界星空科技MES系统中的生产调度流程

万界星空科技

数字化转型 工业互联网 mes 云mes 万界星空科技mes

跨境电商通讯服务

cts喜友科技

通信 通讯

数据中台的业务价值和技术价值

用友BIP

数据中台

Caché/M 数据库上面的那个 é 怎么打

HoneyMoose

聊点写作踩坑那点破事儿

6点无痛早起学习的和尚

写作 21 天技术人写作行动营

HuggingFists-低代码玩转LLM RAG(2) Query

数由科技

人工智能 低代码 数据科学 LLM rag

2024年高效远程协同运维工具推荐

行云管家

IT运维 远程协同 协同运维

app开发

Geek_8da502

大型语言模型在实体关系提取中的应用探索(二)

数由科技

知识图谱 ChatGPT LLM 实体抽取 Bard

mac电脑强大的文件重命名工具A Better Finder Attributes 7注册激活版

胖墩儿不胖y

Mac软件 文件重命名工具 文件重命名软件 批量重命名软件

用友发布数据资产入表解决方案 加速激发数据要素价值

用友BIP

数据资产入表

云数据库RDS MySQL和ClickHouse 同步攻略

NineData

MySQL Clickhouse 数据复制 数据转换 NineData

无需专有硬件 XSKY星辰天合 XDcache 大幅提升文件写性能

XSKY星辰天合

软件测试/人工智能|解决Selenium中的异常问题:“error sending request for url”

霍格沃兹测试开发学社

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