根據表1用戶登陸腳本、【案例隨機購買商品腳本用例】

測試腳本開發
圖1登陸腳本用例

隨機購買商品業務腳本用例如表2所示:

測試腳本開發
圖2隨機購買商品腳本用例

表2隨機購買商品兩個腳本用例,進行測試腳本的開發。

1. 用戶登陸腳本開發

(1) 利用BadBoy錄制用戶登陸過程,生成Jmeter腳本。

(2) 登陸用戶名進行參數化。

為模擬不同用戶登陸,更符合實際業務情景,需針對用戶名進行參數化。選擇“step1”,右鍵,“添加”-“配置元件”-“CSV Data Set Config”,設置相關信息,“Sharing mode”需設置為“All threads”,具體設置信息如圖3所示。

測試腳本開發
圖3登陸用戶名參數化設置

設置好CSV后,在請求中進行替換,替換后如圖4所示。

測試腳本開發
圖4用戶登陸用戶名替換參數

(3) 設置計時器

腳本錄制過程中,用戶輸入帳號及密碼,大概需5秒左右,其余操作則不考慮等待時間(可根據具體需求確定),需添加3個計時器:用戶登陸信息輸入5秒計時器、登陸成功等待選擇3秒計時器、用戶退出等待選擇3秒計時器,具體設計如圖5所示。

測試腳本開發
圖5用戶登陸業務計時器設置

(4) 設置斷言

為了判定用戶登陸是否成功,可設置斷言,檢驗用戶登陸成功標志位是否出現。經過分析,ECShop如果用戶登陸成功,在UI界面上將提示“登陸成功”信息,測試工程師則可以此為斷言信息。點擊發送登陸信息的請求,右鍵“添加”-“斷言”-“響應斷言”,輸入“要測試的模式”,如“登陸成功”,如圖6所示。

測試腳本開發
圖6用戶登陸狀態斷言

斷言設置后,如果失敗,則顯示如下內容,如果成功,則無結果返回。

Assertion error: false

Assertion failure: true

Assertion failure message: Test failed: text expected to contain /登陸成功/

(5) 添加“察看結果樹”、“聚合報告”,便于統計測試腳本執行過程中的數據表現。

(6) 如有需要,可將每個請求名稱修改為可識別的信息,因本腳本請求較少,故不做修改。

通過上述操作設置,用戶登陸腳本設計完成。

2. 隨機購買商品腳本開發

(1) 用BadBoy錄制用戶登陸、瀏覽商品、加入購物車、設置快遞方式、付款方式及收貨信息提交訂單等過程,生成Jmeter腳本。

(2) 針對用戶名進行參數化,方法類似用戶登陸腳本設置,這里不做贅述。

(3) 為了實現隨機選擇某種商品,然后進行購買行為,需在頁面中隨機獲取該商品的信息,通過對服務器返回結果分析,利用正則表達式提取器實現隨機獲取商品id。點擊登陸成功后返回首頁的請求,右鍵,“添加”-“后置處理器”-“正則表達式提取器”,設置相關信息如圖7所示。

測試腳本開發
圖7 設置正則表達式提取器

本處詳細介紹正則表達式提取器用法:

“名稱”:為了便于識別組件作用,將“名稱”改為“獲取商品編號”,測試工程師工作中可根據具體需求確定。

“引用名稱”:表示Jmeter其他組件調用該變量時的名稱。此處設置為“goods_id”,表示為商品id。

“正則表達式”:設為“?id=(.*)">

”之間去任意長度的字符。

“模版”:表示取哪個匹配值,本處只有一個,故設置為“$1$”。

“匹配數字”:表述獲取數據的方式,為了達到隨機的效果,這里設置為“0”。

“缺省值”:當沒有獲取到匹配的數據時,可取此處的缺省值。

其余選項默認設置即可。

測試工程師在實際測試中,為了更方便的利用正則表達式提取器獲取腳本所需的動態數據,可利用“RegexTester”正則表達式提取器工具進行測試,確定數據獲取正確后,再配置Jmeter中的正則表達式提取器。“RegexTester”使用界面如圖8所示。

測試腳本開發
圖8 RegexTester工具使用

通過“RegexTester”工具使用,可以快速的確定正則表達式編寫是否正確,是否取得測試腳本所需的動態數據。

(4) 獲取了動態的商品id后,在請求中替換,如圖9所示。

測試腳本開發
圖9替換商品id參數

(5) 分析腳本請求,發現Badboy并未錄制到將所選商品添加到購物的請求,因此需手動添加該請求。通過利用Fidder工具抓包分析,分析請求方式。如圖10所示。

測試腳本開發
圖10添加購物車請求方式

通過“Headers”頭文件信息,發現“添加購物車”請求方式為“Post”,再分析Post傳遞內容,查看“TextView”內容,如圖11所示。

測試腳本開發
圖11添加購物車傳遞數據內容

“TextView”中表明該Post請求發送了如下內容:

goods={"quick":1,"spec":[],"goods_id":70,"number":"1","parent":0}

通過上述分析活動,手動添加HTTP請求,模擬添加購物車活動。

選擇“Step1”,右鍵,“添加”-“Sampler”-“HTTP請求”,如圖12所示。

測試腳本開發
圖12 HTTP請求創建界面

“名稱”:設置易懂的名稱即可。這里可以設置為當前請求的作用,如“添加商品到購物車”。

“服務器名稱或IP”:設置服務器的IP,如“192.168.0.110”。

“端口號”:設置服務器提供服務的端口號,ECShop使用的Apache+PHP模式,故端口號為“80”。

“Implementation”:與其他請求一樣,選擇“Java”即可。

“協議”:填入“HTTP”

“方法”:通過Fidller分析可知,此處為“Post”

“路徑”:填寫發送請求的路徑,通過Fidller抓包分析可知,添加購物車請求路徑為“/ecshop/flow.php?step=add_to_cart”。

通過根據Fidller分析可知,本次Post請求內容為Body Data:

goods={"quick":1,"spec":[],"goods_id":70,"number":"1","parent":0}

調整“goods_id”為隨機參數,則添加購物車請求所有設置如圖13所示。

測試腳本開發
圖13添加購物車請求設置完成

(6) 設置收貨信息

每一個新會員首次購買商品時,需設置收貨地址信息,如圖14所示。

測試腳本開發
圖14 ECShop編輯收貨地址

BadBoy錄制過程中,使用的帳號是已經購買過商品的帳號,收貨信息已經存在,因此并沒有錄制到添加收貨地址的操作,測試工程師同樣可通過Fidller抓包分析,手動添加請求。添加HTTP請求后如圖15所示。

測試腳本開發
圖15編輯收貨地址請求

(7) 添加計時器

腳本錄制過程中,用戶輸入用戶名及密碼,需5秒左右,用戶登陸成功后,系統默認有3秒左右的用戶選擇操作時間,用戶選擇某件商品,然后添加到購物車,這個過程可增加計時器5秒,編寫收貨信息5秒,填寫快遞信息及付款方式5秒,用戶退出系統時,也存在同樣的選擇時間,大約3秒。總體設計如圖16所示。

測試腳本開發
圖16隨機購買商品計時器

訂單是否成功,可在ECShop后臺直接查詢,因此,本處不設置。

(8) 添加“察看結果樹”、“聚合報告”,便于統計測試腳本執行過程中的數據表現。

(9) 將所有請求名稱修改為可識別的信息,便于后續測試過程中定位問題,最終結果如圖17所示。

測試腳本開發
圖17隨機購物腳本請求列表

最新內容