新一代BDD框架Gauge+Taiko

2021-02-13 ThoughtWorks洞見

Gauge不強調協作,可以作為自動化測試工具獨立存在,同時又支持高效協作、支持實現BDD,是一款靈活性更好的框架。它的秘密武器Taiko是一款優秀的Web UI自動化工具,兩者的結合堪稱完美,讓需求規範、自動化測試和活文檔的有機結合真正成為可能。

BDD是什麼

BDD,Behavior Driven Development,行為驅動開發。

如果你不是很了解BDD,可以參考我四年前的一篇文章《說起BDD,你會想到什麼》,其中介紹過BDD的理論和應用。

我們可以這樣來概括BDD:

BDD應用框架之Cucumber

BDD的應用

BDD是為解決下面三個方面的問題而生:

協作:多個角色在一個團隊,如何從一致理解需求開始高效協作?語言:不同的角色業務、開發和測試人員分別說自己的語言,如何統一語言,更有效的溝通?

文檔:編寫和維護的成本都很高,如何低成本的維護一份有價值的文檔?

Cucumber是一款支持BDD的框架,有助於幫助團隊解決以上問題。

Cucumber支持用自然語言描述業務場景,需要遵循Given-When-Then的格式,這樣就可以容易的對應到自動化測試的3A步驟Arrange-Act-Assert,從而實現業務場景的自動化測試。

Cucumber的理想是將可執行的需求規範、自動化測試和活文檔有機的結合,如下圖所示:

理想很豐滿,現實很骨感。Cucumber在實際應用中的情況又如何呢?

Cucumber的痛點

Cucumber框架實現Web自動化測試包括兩個部分:Feature(特性)文件和Step Definition(測試實現),在實際應用中人們普遍感覺到它的複雜。

Cucumber-js+Selenium WebDriver實現的代碼長這樣:

Feature定義:

Feature: Google Search

  Scenario: Finding some cheese

    Given I am on the Google search page

    When I search for "Cheese!"

    Then the page title should start with "cheese"

Steps實現:

Given('I am on the Google search page', async function () {

  await driver.get('http://www.google.com');

});

When('I search for {string}', async function (searchTerm) {

  const element = await driver.findElement(By.name('q'));

  element.sendKeys(searchTerm, Key.RETURN);

  element.submit();

});

Then('the page title should start with {string}', {timeout: 60 * 1000}, async function (searchTerm) {

  const title = await driver.getTitle();

  const isTitleStartWithCheese = title.toLowerCase().lastIndexOf(`${searchTerm}`, 0) === 0;

  expect(isTitleStartWithCheese).to.equal(true);

});

新一代BDD框架

藍鯨項目曾經就是用Cucumber+Selenium WebDriver實現的UI層自動化測試,由於上述痛點,大家覺得UI自動化測試越來越難寫,我也因此對BDD喪失了信心。

自從遇到了兩款新的工具Gauge+Taiko,我又重新對Web系統的實現基於BDD的自動化測試燃起了希望。

Gauge

Gauge是一款開源的輕量級跨平臺自動化測試工具,它的願景是用更少的代碼、更少的維護工作實現更多的自動化測試,有如下特性:

Taiko

Taiko也是一款開源瀏覽器自動化測試工具,它的特性如下:

Gauge+Taiko的代碼長這樣:

Spec定義

# Google Search

This is an executable specification file. This file follows markdown syntax.

Every heading in this file denotes a scenario.

Every bullet point denotes a step.

To execute this specification, use

    npm test

## Finding some cheese

* Goto Google search page

* Google for "Cheese!"

* Page title starts with "Cheese"

Steps實現

step("Goto Google search page", async function() {

  await goto("www.google.com");

});

step("Google for <query>", async (query) => {

  await write(query);

  await click("Google 搜尋");

});

step("Page title starts with <content>", async (content) => {

  await title().then((pageTitle) =>{

    assert.ok(pageTitle.startsWith(content));

  });

});

總結

協作是人的問題,工具可以起到輔助作用,但是不能解決根本問題,過於嚴格的工具缺乏靈活性,反而阻礙了高效協作的可能。

Gauge不強調協作,可以作為自動化測試工具獨立存在,同時又支持高效協作、支持實現BDD,是一款靈活性更好的框架。它的秘密武器Taiko是一款優秀的Web UI自動化工具,兩者的結合堪稱完美,讓需求規範、自動化測試和活文檔的有機結合真正成為可能。

本文只是將Gauge和Taiko跟Cucumber框架從對BDD的角度做簡單的對比,更多的關於Gauge和Taiko的高級特性,請參考【延伸閱讀】部分相關文章。

說起BDD,你會想到什麼

https://www.bylinzi.com/2015/06/04/when-we-talk-about-bdd/

Gauge

https://gauge.org/

Taiko

https://taiko.gauge.org/

Why I chose Gauge over Cucumber

https://medium.com/@divi6.1990/why-i-chose-gauge-over-cucumber-5b3de478d889

TEST AUTOMATION WITH GAUGE

http://www.santiagomontesinos.com/test-automation-with-gauge/


- 直播推薦 -


點擊【閱讀原文】可至洞見網站查看原文&綠色字體部分的相關連結。本文版權屬ThoughtWorks公司所有,如需轉載請在後臺留言聯繫。

相關焦點

  • 新一代支持BDD的自動化測試工具Gauge+Taiko
    const title = await driver.getTitle(); const isTitleStartWithCheese = title.toLowerCase().lastIndexOf(`${searchTerm}`, 0) === 0; expect(isTitleStartWithCheese).to.equal(true);});新一代
  • 新一代深度學習框架研究
    深圳 518000  摘要:從人工智慧的歷史出發,簡述深度學習發展歷程以及目前的挑戰,通過介紹新一代深度學習框架的特點,分析總體框架,闡述自動並行、自動微分、自動調優等技術優勢以及協同昇騰處理器的性能優勢,希望可以為深度學習技術研究人員提供參考
  • 可能是一本最完整介紹BDD行為驅動測試書籍共享給你!
    Cucumber是一個流行的基於BDD的自動化測試框架,可以用來建立軟體開發人員和業務經理之間溝通的渠道。測試腳本基於行為驅動開發(BDD)風格詞語編寫,如「假如」,「當」、「那麼」,或在英文中的Given, When, Then,這樣任何非專業人員都能理解。然後將測試用例寫入覆蓋一個或多個測試場景的劇本(gherkin)文件中。
  • 5款強大的Python自動化測試框架
    隨著該程式語言的廣泛使用,基於Python的自動化測試框架也應運而生,且不斷發展與豐富。因此,開發與測試人員在為手頭的項目選擇測試框架時,需要考慮許多方面的因素,其中包括:框架的腳本質量,測試用例的簡單性,以及運行模塊可能存在的技術弱點。為了避免出現「選擇困難症」,我在此為大家準備了五種Python類型的自動化測試框架,以供比較和討論。
  • 揭秘新一代Latitude如何兼顧輕薄和堅固
    戴爾新一代Latitude商用筆記本給我們做出了很好的示範。▲移動工作站Precision 7710,是最典型的全框架結構筆記本。這樣的框架設計雖然牢靠,但代價是機身厚實,重量大。●靈活的半框架結構新一代的Latitude商用本越來越多地採用了新材料、新部件,比如更輕的鎂鋁合金,比如玻璃碳纖維(從金屬→碳纖維→玻璃碳纖維),比如更輕薄的屏幕等,在材料/部件端越來越輕,同時也保證了一定的強度,這對機身減重大有裨益。但在內部元器件保護方面,在整機結構強度方面,它是如何保證的呢?
  • 關於新一代作業系統的思考
    我們不妨認為 JVM 就是 Java 程序的作業系統,瀏覽器就是 JavaScript 的作業系統。 隨著 2010 年面向服務的語言的目標代碼回歸原生屬性,讓不同語言自動互通互聯,讓應用自動適配遠在天邊近在眼前的服務,新一代原生作業系統必然應運而生。
  • 中國首創 新一代ZM鍍層熱軋鋼卷生產啟動
    John Cockerill Industry’s Chinese team proudly presents the first continuous hot-dip galvanizing line (#CGL) in China to produce heavy-gauge hot-rolled steel coils with the increasingly popular
  • 阿里新一代實時計算引擎:Blink
    2015 年是流計算百花齊放的時代,各個流計算框架層出不窮。Storm, JStorm, Heron, Flink, Spark Streaming, Google Dataflow (後來的 Beam) 等等。其中 Flink 的一致性語義和最接近 Dataflow 模型的開源實現,使其成為流計算框架中最耀眼的一顆。
  • 想要自研框架取代Hadoop,星環科技提供新一代基礎軟體平臺,可行?|| To B 獨角獸
    新一代大數據平臺需要使用SQL來支持全部功能,包括數據倉庫、OLTP資料庫、搜尋引擎、實時計算、時空資料庫等,降低開發者門檻,加快產品開發與上線速度。 第三,統一的管理和調配。雲計算的彈性和隨處接入可以讓更多的數據業務和開發者使用大數據技術,因此新的大數據技術需要能夠提供雲化的能力。
  • 中國專利信息中心發布新一代人工智慧機器翻譯系統
    中國專利信息中心新一代人工智慧機器翻譯系統正式上線,該系統的成功上線標誌著中國專利信息中心在機器翻譯領域的一次技術性革新,實現了專利文獻中英雙向在線智能翻譯
  • Gateway新一代網關
    Gateway新一代網關zuul路由網關zuul核心人員走了兩個,zuul2的研發過久,spring公司等不及,自己研發的Gateway網關。限流SpringCloud Gateway 使用的Webflux中的 reactor-netty 響應式的編程,底層使用了Netty通訊框架
  • MMAction2: 新一代視頻理解工具箱
    太長不看版:統一的框架:MMAction2 作為 OpenMMLab 的新一代視頻理解工具箱,同時支持了動作識別、時序動作檢測、時空動作檢測等多種任務和算法。用戶可以在一個框架中方便地調用不同的算法和模型。
  • 《新一代人工智慧發展白皮書(2017年)》重磅發布(100頁完整版PPT)
    近日,中國電子學會/CIE智庫發布了《新一代人工智慧發展白皮書(本白皮書重點圍繞新一代人工智慧面臨的新形勢、驅動的新因素、呈現的新特徵,詳細介紹了新一代人工智慧發展特徵、技術框架及產業化應用,展望了新一人工智慧中長期技術及產業發展趨勢,分析了人工智慧領域的投融資特徵及趨勢,最後,提出了推動新一代人工智慧發展的措施建議。詳情參看下方白皮書完整版PPT!
  • OpenMMLab|MMAction2: 新一代視頻理解工具箱
    太長不看版統一的框架:MMAction2 作為 OpenMMLab 的新一代視頻理解工具箱,同時支持了動作識別、時序動作檢測、時空動作檢測等多種任務和算法。用戶可以在一個框架中方便地調用不同的算法和模型。靈活的模塊化設計:MMAction2 延續了 OpenMMLab 系列的模塊化風格,用戶能夠基於這套框架靈活地增加新的功能和算法。
  • 測試人員,今天再不懂BDD就晚了!
    其次,新技術、新框架、新思路不斷湧現的今天,測試人員除了傳統的功能測試,也要不斷與時俱進,主動承擔起自動化測試、性能測試等。除了更多參與軟體流程,測試人員更要以自己的技術能力證明自己的價值!    再次,隨著敏捷開發模式的不斷迭代發展,敏捷開發的技術和管理模式,已經深入到傳統和新興的各個軟體公司。
  • Facebook 發布 Detectron2:基於 PyTorch 的新一代目標檢測工具
    ▲點擊上方 雷鋒網 關注雷鋒網 AI 開發者按:Detectron 是 FAIR 在 2018 年初公開的目標檢測平臺,包含了大量業內最具代表性的目標檢測、圖像分割、關鍵點檢測算法,該框架主要基於據官方介紹,Detectron2 是 FAIR 的下一代目標檢測和分割研究平臺。目前,它實現了最先進的目標檢測算法。