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

測試腳本開發(fā)
圖1登陸腳本用例

隨機(jī)購買商品業(yè)務(wù)腳本用例如表2所示:

測試腳本開發(fā)
圖2隨機(jī)購買商品腳本用例

表2隨機(jī)購買商品兩個腳本用例,進(jìn)行測試腳本的開發(fā)。

1. 用戶登陸腳本開發(fā)

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

(2) 登陸用戶名進(jìn)行參數(shù)化。

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

測試腳本開發(fā)
圖3登陸用戶名參數(shù)化設(shè)置

設(shè)置好CSV后,在請求中進(jìn)行替換,替換后如圖4所示。

測試腳本開發(fā)
圖4用戶登陸用戶名替換參數(shù)

(3) 設(shè)置計時器

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

測試腳本開發(fā)
圖5用戶登陸業(yè)務(wù)計時器設(shè)置

(4) 設(shè)置斷言

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

測試腳本開發(fā)
圖6用戶登陸狀態(tài)斷言

斷言設(shè)置后,如果失敗,則顯示如下內(nèi)容,如果成功,則無結(jié)果返回。

Assertion error: false

Assertion failure: true

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

(5) 添加“察看結(jié)果樹”、“聚合報告”,便于統(tǒng)計測試腳本執(zhí)行過程中的數(shù)據(jù)表現(xiàn)。

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

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

2. 隨機(jī)購買商品腳本開發(fā)

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

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

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

測試腳本開發(fā)
圖7 設(shè)置正則表達(dá)式提取器

本處詳細(xì)介紹正則表達(dá)式提取器用法:

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

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

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

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

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

“匹配數(shù)字”:表述獲取數(shù)據(jù)的方式,為了達(dá)到隨機(jī)的效果,這里設(shè)置為“0”。

“缺省值”:當(dāng)沒有獲取到匹配的數(shù)據(jù)時,可取此處的缺省值。

其余選項(xiàng)默認(rèn)設(shè)置即可。

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

測試腳本開發(fā)
圖8 RegexTester工具使用

通過“RegexTester”工具使用,可以快速的確定正則表達(dá)式編寫是否正確,是否取得測試腳本所需的動態(tài)數(shù)據(jù)。

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

測試腳本開發(fā)
圖9替換商品id參數(shù)

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

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

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

測試腳本開發(fā)
圖11添加購物車傳遞數(shù)據(jù)內(nèi)容

“TextView”中表明該P(yáng)ost請求發(fā)送了如下內(nèi)容:

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

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

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

測試腳本開發(fā)
圖12 HTTP請求創(chuàng)建界面

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

“服務(wù)器名稱或IP”:設(shè)置服務(wù)器的IP,如“192.168.0.110”。

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

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

“協(xié)議”:填入“HTTP”

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

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

通過根據(jù)Fidller分析可知,本次Post請求內(nèi)容為Body Data:

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

調(diào)整“goods_id”為隨機(jī)參數(shù),則添加購物車請求所有設(shè)置如圖13所示。

測試腳本開發(fā)
圖13添加購物車請求設(shè)置完成

(6) 設(shè)置收貨信息

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

測試腳本開發(fā)
圖14 ECShop編輯收貨地址

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

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

(7) 添加計時器

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

測試腳本開發(fā)
圖16隨機(jī)購買商品計時器

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

(8) 添加“察看結(jié)果樹”、“聚合報告”,便于統(tǒng)計測試腳本執(zhí)行過程中的數(shù)據(jù)表現(xiàn)。

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

測試腳本開發(fā)
圖17隨機(jī)購物腳本請求列表

最新內(nèi)容