日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自动化测试框架cucumber_自动化测试框架cucumber-java操作手册_从配置到生成测报...

發布時間:2024/1/23 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动化测试框架cucumber_自动化测试框架cucumber-java操作手册_从配置到生成测报... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、cucumber簡介

cucumber是BDD(Behavior-driven development,行為驅動開發)的一個自動化測試框架產品。cucumber使用自然語言來描述測試,通過設置中文描述可以連通業務人員和開發人員,使得需求清晰明了,實現需求的實例化。Gherkin是這種自然語言測試的簡單語法,Cucumber是可以執行它們的工具。

本文主要從實際的項目角度,將cucumber應用于自動化業務驗收測試,結合圖例介紹java對應的cucumber配置搭建至生成業務驗收測試報告的操作步驟。具體BDD及cucumber的語法及介紹可參考cucumber官網鏈接或其他文檔,如自動化測試之cucumber(一)。

二、實現cucumber業務驗收測試

2.1 配置IDEA插件

本項目為maven項目,開發的IDE為idea。

首先,在idea中加入Gherkin、Cucumber for Groovy、Cucumber for java三個插件。

idea中cucumber插件

2.2 配置pom文件

本項目java版本是1.8,使用的cucumber版本是6.8.1(此處說明:不同版本的cucumber對于代碼生成、配置文件格式等差異較大,需提前關注好cucumber的版本,筆者在此處踩過許多坑)。

pom.xml中加入cucumber依賴,如下:

1.8

6.8.1

io.cucumber

cucumber-java

${cucumber.version}

test

io.cucumber

cucumber-junit

${cucumber.version}

test

io.cucumber

cucumber-spring

${cucumber.version}

test

junit

junit

4.12

test

2.3 編輯feature和步驟定義文件

根據業務需求,在src/test/resources目錄下編輯.feature文件,在src/test/java目錄下撰寫每一個step對應的步驟定義java文件。

需要注意的是,cucumber可以支持多種語言,包括中文。本文僅介紹中文實現方式,具體關鍵字及其他語言的使用見官方文檔。

中文實現方式:在feature文件中加入:# language:zh-CN

在對應的步驟定義文件中加入:(tips:不同的cucumber版本,import的方式不同)import io.cucumber.java.zh_cn.*;

feature文件中文的關鍵字對照表如下:

feature文件中文對應的關鍵字

2.3.1 編輯feature文件

feature可以使用自然語言描述業務需求,實現業務需求的實例化,便于業務人員與開發人員的溝通與理解。

feature文件編輯示例

一個feature文件中可以有多個功能(Feature),一個功能(Feature)下可包含多個場景(Scenario)。但每個場景(Scenario)都是獨立存在的,不依賴于其他場景(Scenario),即放在任何feature文件中都可以獨立運行成功。

feature文件中功能(Feature)及場景(Scenario)示例

feature文件中可以通過標點區分step中的string、int等基礎參數字段類型(如上圖雙引號內的"張三"默認為string類型),并在生成步驟定義時自動識別為到方法的輸入參數。

當場景(Scenario)中具有多個參數,且參數的不同會導致不同的測試結果,這時可以使用場景大綱(Scenario outline)將所有參數排列組合的測試結果全部羅列下來,形成實例化需求。

Tips:Scenario Outline(場景輪廓)中可以使用多個Examples(例子),但是盡量不要將表格寫得太長,因為應把實例的說明性和代表性作為目標,而不是詳盡。在cucumber的驗收測試中,可讀性是最重要的。

場景大綱(Scenario outline)? 示例

上圖示例中使用到了數據表(step:假如 準入名單內已有下列的客戶),Gherkin可以傳遞List、Map,稱為DataTable,具體例子查看該github上的文檔。

2.3.2 撰寫步驟定義文件

步驟定義文件即StepDefine文件,又稱為膠水代碼,是連接feature文件和后端服務的橋梁,實現了將feature文件中業務需求的自然語言轉化為java代碼,通過發送請求對后端邏輯進行測試。

步驟定義中的方法通過@關鍵字與feature文件的step語句進行唯一匹配。也就是說,如果多個step描述相同,在步驟定義中是共用一個方法的,而如果我們想實現step與方法一一對應,需要在編寫feature文件時,對每一個step的描述仔細斟酌。

對應的步驟定義文件

在步驟定義java文件中,部分低版本的cucumber是通過正則表達式匹配feature文件中的step,但在本項目中6.8.1版本的cucumber可以直接使用雙引號及{string}的方式匹配step,更加便于理解了。

2.3.2.1 安全認證

在本項目中,由于加入了Security,在向后端發送請求時需要先進行安全認證,所以在驗收測試案例執行前需要先定義好登錄用戶。

"username"為"zhoutr"

"password"為"123456"

安全認證

2.3.2.2?清空數據表

在鋪數前,需要先清空數據表,防止已有數據的干擾對測試結果產生影響。//清除數據表

this.deleteAll("customer_info");

void deleteAll(final String tableName) {

this.apply(deleteAllFrom(tableName));

}

//執行數據庫操作

void apply(final Operation operation) {

new DbSetup(databaseDestianton, operation).launch();

}

2.3.2.3?鋪數

在某個測試案例的所有數據獲取完成后,發送請求前的最后一步是集中鋪數,即向數據庫中插入測試案例中的數據。下圖中這個場景下有5個字段,即客戶名稱、證件類型、證件號碼、客戶類型、客戶狀態。

鋪數代碼

Tips:本項目中使用了DbSetup for Ningjia實現數據庫操作。

2.3.2.4 發送請求至后端

在鋪好數據后,就可以向數據庫發送post請求了。

在發送前需要先確認后端對于返回碼的定義,例如本項目中返回碼code為0,msg為“成功”時,代表發送請求成功,返回該客戶允許準入。若返回碼code為1,msg為“失敗”時,代表發送請求成功,返回該客戶由于命中黑名單而不允許準入。

發送請求至后端

Tips:

1、判斷成功與否應使用唯一標識返回碼,如本項目中的code取值0、1、2、3等,不可以使用msg取值“成功”、“失敗”,因為失敗的情況有很多種,msg的返回并不唯一。

2、如果想對比校驗接口是否成功以及成功的返回信息,可以使用postman對比測試。

2.4 cucumber測試運行

2.4.1 運行前提

在運行前,需要有兩個先決條件,如果有一個條件未滿足,測試就無法運行:

1、服務器已處于成功運行狀態

2、用于測試的數據庫已連接

建議新建一個單獨用于cucumber業務驗收測試的數據庫(本項目使用的是本地MySQL數據庫),因為在測試前會先清空數據表,然后鋪數、最后再測試。如果與開發或生產共用同一個數據庫,數據刪除后可能會導致不可預估的后果。

在src/test/java目錄下,一般會有一個主運行函數CucumberTest.java,其中@CucumberOptions是對測試運行方式進行配置,具體介紹見Cucumber之五Cucumber Options詳解,本項目中僅設置了feature文件所在位置(features)和生成基礎測報的格式(plugin)。測報的生成會在下文中具體介紹。

CucumberTest.java

此處需要注意的是,不同版本的cucumber對@CucumberOptions內參數的編寫格式不同,如果寫錯了,運行時會報錯(筆者在此處踩過坑 QAQ)。

2.4.2 cucumber測試運行

一切準備就緒后,測試的運行就變得很簡單啦~

可以整體運行,也可以單獨運行:

1、整個項目的測試案例運行:點擊CucumberTest中的運行按鈕,或者右鍵Run CucumberTest.java,即可運行。

2、某個feature文件或某個場景(Scenario)單獨運行:點擊feature文件中功能(Feature)或場景(Scenario)前面的運行箭頭,即可運行。

遇到的問題及解決方法

1、無法通過點擊feature文件中的運行箭頭直接運行。即,明明是passd的steps,但通過該方式點擊運行顯示都是undefined。

解決方法:在IDEA的Run Configuration中,對于該場景的運行設置Glue路徑,即該feature文件匹配的步驟定義文件路徑。

Run Configuration配置

三、生成cucumber測試報告

3.1 本地官方測報

在CucumberTest.java文件的@CucumberOptions中,寫入生成json及html報告。plugin = {"pretty",

"json:target/cucumber-report/json-files/cucumber.json",

"html:target/cucumber-report/cucumber.html"},????//生成本地json和html測試報告

注意:不同的cucumber版本寫入格式不同。

本地官方測報配置

運行后,根據配置好的路徑,在target文件下可看到生成的本地官方測報。

本地官方測報生成路徑

HTML格式測試報告:

本地官方html測試報告樣式

JSON格式測試報告:

本地官方json測試報告樣式

3.2 遠程官方測報

在src/test/resources目錄下新建cucumber.properties文件,文件中寫入#生成遠程官方測試報告

cucumber.publish.enabled=true

運行測試后,即可在官網上生成遠程測試報告:

生成遠程官方測試報告

測報樣式如下圖,但該測報生成必須聯網,且該測報生成后只能保留24小時。

遠程官方測試報告樣式

3.3 cluecumber測試報告

cluecumber為生成測試報告的第三方插件,可以生成html測報,該測報生成需以本地json測報的生成為基礎(見本文3.1章節),官方介紹連接cluecumber-reporting。

pom.xml中加入依賴:

com.trivago.rta

cluecumber-report-plugin

2.5.0

com.trivago.rta

cluecumber-report-plugin

2.5.0

report

post-integration-test

reporting

d:/CMIS/Legend/target/cucumber-report/json-files

d:/CMIS/Legend/target/cluecumber-generated-report

Cmis-Server Report

添加依賴后,執行mvn cluecumber-report:reporting

然后再Run CucumberTest.java,就可以在指定目錄下(target/cluecumber-generated-report)看到生成的html報告。

生成測報

打開index.html就可以看到cluecumber的測報,該測報可以從Scenarios、Scenario Sequence、Tags、Steps、Features等多種維度分析測試結果。

Scenarios

Steps

Features

cluecumber生成的測報更關注用圖形化表示整體結果,而本地測報能夠從細節看出每一個step的內容和執行情況,在具體的項目中,可以將兩種測報結合使用。

Tips:更多的測試報告可參考官方測試報告。

后續計劃研究下cucumber的標簽功能(Tags),嘗試結合selenium進行前端頁面的測試,并完善驗收測試報告的優化,本文將持續更新。

總結

以上是生活随笔為你收集整理的自动化测试框架cucumber_自动化测试框架cucumber-java操作手册_从配置到生成测报...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。