您當前的位置:首頁 > 動漫

Cucumber測試場景應用

作者:由 測試高飛 發表于 動漫時間:2023-01-05

應用場景

“這個

測試用例

的前置條件、步驟、檢驗點是什麼?”

“讓我看下程式碼。”

這可能是大多數做

自動化測試

的朋友遇到一種場景吧。

用例多了、程式碼有時候也就 “亂” 了。 清晰明瞭地組織自己的測試場景,讓領導、同事一看就明白的你的測試步驟與檢查點,不用費神費力地解釋,又簡單快速地維護用例程式碼。

這就是今天向大家介紹的BDD,讓你的測試工作變得更高效、更簡潔。

溫馨提示

如果閱讀者想按示例進行操作,您一定要具備以下的配置, 當然您也可以使用其它IDE。

自動化框架:Cucumber+Selenium

語言:Java

專案:Maven

IDE:IntelliJ IDEA

知識重點

Cucumber配置

Cucumber場景描述(Gherkin語言)

Cucumber引數傳遞(Example應用)

Cucumberstep definition

Cucumber執行

POM設定

首先我們建立Maven專案,然後如下圖所示,新增必要的Cucumber的dependency。

Cucumber測試場景應用

Cucumber測試場景應用

安裝Cucumber Plugin

在IDE開發的專案中,依次開啟File>Settings>Plugins, 確保Cucumber for Java和Gherkin已經安裝。 如下圖所示:

Cucumber測試場景應用

  建立測試場景

建立demoTest。feature檔案,feature檔案是BDD概念中的核心部份,它是應用Gherkin描述性語言來表述一個測試場景,使得測試場景易讀、易懂。

如本例中描述了測試場景對

百度

首頁面的搜尋功能進行測試。

Scenario Outline: 表述當前測試場景的目的(由於這裡用了Example,Outline就是必須的)

Given: 可以看作是執行步驟的前置條件

When: 是指具體的執行動作

Then: 是描述動作執行後的結果

And:由於前置條件,動作,執行結果都可能是一系列的,可以用And來繼續表述(如示例中When語句結束後,就用了And語句)

Example:列出了三種不同的測試用例

1。 輸入正常的查詢字元

2。 輸入JavaScript指令碼語言

3。 輸入空查詢字元

從這個測試場景中可以瞭解到,這三個測試例在前置條件,執行步驟上都是一樣的,唯一不同是要驗證的測試結果,前兩個用例我們期待看到查詢結果,並且結果列表裡要有輸入的查詢關鍵字,最後一個用例是期待保持當前查詢頁面不變。

這樣組織測試場景是不是很有條理性。任何時候,任何人看了這個場景的表述,瞬間對測試用例一清二楚,使用的測試資料也是一目瞭然。

Cucumber測試場景應用

開發測試指令碼

在BDD中,場景被描述在。feature檔案 ,具體的測試程式碼被稱做step definition(java 檔案中)。

顧名思義,就是在場景中描述的每個動作都會對應一段程式碼的執行。簡單地說,這段程式碼也就是一個Java的方法。

如下圖,如果對應的表述沒有相應的方法時(Given的表述),表述中顯示的顏色引數部分是不會變藍的,且整條表述語句的背景顯示為淺灰色。

這就是為什麼要安裝Gherkin plugin的原因。透過加亮程式碼讓我們迅速地知道我們要做什麼或不需要做什麼。

  建立step definition

點選對應的提示框 “黃色的警示燈”,會出現Create step definition、Create all step definitions,這裡我們點選 Create step definition > ,接著出現另一個對話方塊: Create new file,<已有的java file name>。

本例中,已經有一個建立好的 step definition java 檔案 ,我們選擇

  修改step definition

首先,要修改Given 中的表述,在場景描述中 Url 是加了雙引號與尖括號的,這裡表示Url是一個引數,可能有些朋友已經猜到,Url的值就是在example裡對應的標題Url。

由於java語言的規則,雙引號是要由轉義符\開始, 尖括號在這裡變成了圓括號,結尾處多加了識別符號$。這一段動作的描述被放在括號與雙引號裡。

新增執行動作

這裡的動作就是開啟要測試Url在

瀏覽器

裡。示例中用的是selenium webdriver模擬開啟的瀏覽器 。

當這些步驟都做好以後,在回到測試場景中 (demoTest。feature),Given的描述就被加亮,引數 “”也會變成藍色了。

如果您用的是IDE:Itelligence,那麼試試用滑鼠指向Given描述的同時點按Ctrl,整條描述是不是都加亮了,變藍了。試著點選一下(這說明描述語句與步驟定義已經關聯正確)。

接著一個步驟一個步驟把剩下的幾句描述也創建出對應的程式碼吧。

Cucumber測試場景應用

Create all step definitions

Cucumber測試場景應用

選擇definition Java檔案

Cucumber測試場景應用

系統自動生成的step definition方法

Cucumber測試場景應用

修改生成的step definition方法

Cucumber測試場景應用

可連結的場景步驟描述

  Selenium的設定

為了不使大家麻煩,這裡就把selenium的dependency與driver配置的指令碼貼圖一下以供參考。

注:chromedriver。exe 就放在當前專案driver 的資料夾下 (完整的Maven專案路徑:D:\ideaProjects\CucumberProject\driver)。

Cucumber測試場景應用

Pom。xml: selenium dependency

Cucumber測試場景應用

demoTestStep。java: selenium driver

建立執行檔案

好啦,現在建立一個執行檔案吧。

執行檔案

示例中是RunCucumberTest。java。如圖<執行檔案>所示,需要用到junit。Cucumber以及其它兩個Library。

執行測試

執行檔案寫好以後,現在去到專案的目錄下,執行mvn test,從執行結果中可以看到執行了3個場景、12個步驟,耗費18。796s。

3 Scenarios (3 passed)

12 Steps (12 passed)

0m18。796s

檢視報表

通常在target >cucumber-reports > index。html。

現在,我們再開啟報表看看,您會遇到一個彈出的對話方塊

記得嗎,我們有一個測試用了查詢字元JavaScript alert,沒想到cucumber的報表沒有處理JavaScript,在瀏覽器裡竟然把它當做彈出框了。

不過,這一點不用擔心,自有其它整合的報表可以使用。

Cucumber測試場景應用

執行檔案

Cucumber測試場景應用

執行測試

Cucumber測試場景應用

執行結果

Cucumber測試場景應用

測試執行報表

結語

執行操作下來,是不是有所感悟啊?

對了,這型別的自動化框架設計特別適用於有著不同的狀態轉換與身份不斷變換的業務,比如ERP、CRM、 銀行、訂單,這型別系統的

記錄

狀態根據不同角色的操作變動著,但原始記錄的資料始終保持不變,測試重點就是要確保原始資料一致性,有些欄位又要根據狀態的改變進行修改,或者新增。

這樣一條業務鏈手動測試下來時間長不說,最主要的是測試到一半,被其它重要事情耽擱了,再重新測回時,又必須重新來過,真真是耗時耗力。趕快試試這個框架組織你的業務記錄測試吧。

文章轉載連結

Cucumber測試場景應用 - 51Testing軟體測試網

標簽: 測試  場景  STEP  cucumber  Definition