最近因工做須要,開發了一個迴歸測試的小工具。能夠根據配置讀取不一樣交易報文並進行變量替換,而後自動發起交易並檢查結果。自我感受挺好用的,與你們分享一下設計思路。(代碼要保密,就不上傳了。有須要能夠根據設計思路本身開發。這個是我以前開發時積累的當心得:https://www.cnblogs.com/kingstarer/p/10291348.html loadrunner腳本編寫經驗)html
目前系統交易愈來愈多,需求改動也比較頻繁。爲防止代碼改動影響舊需求,每次修改代碼後都須要把相關交易迴歸測試一次。程序員
目前此項迴歸測試工做主要靠程序員手工完成,存在如下問題:數據庫
1 迴歸測試須要準備不少交易報文,耗時費力ide
2 因爲迴歸測試比較麻煩,加上版本迭代頻繁,有時只能對比較關鍵的業務場景進行迴歸測試,存在必定風險。函數
爲避免這種狀況,項目組開發了自動化迴歸測試工具。程序員每次開發完代碼後,針對需求的業務場景配置好測試案例,由工具根據案例配置自動執行交易(須要自動生成某些交易報文字段,例如全局流水)並判斷案例是否符合要求。工具
理想狀況下,通過屢次需求迭代後,測試案例便可全面覆蓋全部交易路徑。這樣能夠節省開發人員迴歸測試時間,對於系統重大升級時保障升級質量也有幫助。post
測試工具使用loadrunner腳本編寫,這樣的好處是測試
1 能夠借用loadrunner提供的豐富函數庫,如http交互函數,變量替換函數,日誌輸出函數等url
2 能夠利用loadrunner的GUI界面spa
3 經過簡單修改配置,可讓本工具用於非功能壓測
不方便的地方有:
1 須要電腦安裝了loadrunner工具才能夠執行測試工具
2 loadrunner提供的ide不方便調試
3 沒法引用開源靜態庫(網上只找到引用動態庫的方法)
4 因爲loadrunner內置編譯器與gcc存在部分不兼容,沒法直接複用rcc現有功能函數,暫時不能自動檢查數據庫記錄,檢查交易日誌等。
配置文件打#開頭的行是註釋行,腳本讀取時會忽略註釋行
每一行配置表明一個測試案例,或者一個控制語句
測試案件通常由四個字段組成,字段用空白符分隔,第一個字段表明交易報文名稱,腳本執行時會根據報文名稱讀取對應的xml文件,並對裏面配置的變量作替換,而後組裝成rcc交易報文發往測試機器並獲取返回報文。
第二個字段是案例名稱,做用是方便測試人員理解案例用途,對於腳本無心義。
第三個字段是案例驗證方式,通常是這樣的格式:「狀態碼-錯誤碼-自定義檢查方法」,例如"00-0000000000-have(成功)",意思是指望交易返回報文狀態碼字段是00,錯誤碼字段是0000000000,返回的內容裏面包含"成功"字樣。若是有一個條件不知足,腳本會認爲案例驗證失敗,輸出日誌提醒測試人員。
第四個字段是附加動做,通常可填none表明無附加動做。附加動做須要使用的場景, 通常是案例有上下文關係時。例如要測試消費撤銷交易,須要先發起消費交易,而後發送撤銷交易請求,但此時須要用到前面消費交易的全局流水號。這個時候就須要在前面執行消費交易時使用附加動做save,指示腳本保存這次交易生成的全局事件跟蹤號,後面撤銷交易時才能夠獲取到。
控制語句是一些輔助配置測試案例的指令,例如for指令,能夠指示腳本重複執行配置案例,適用於指望相同案例重複執行的場景,避免冗餘配置。goto/skip指令,能夠跳到/跳過指定案例執行,適合調試特定案例的場景。echo,輸出日誌/變量信息,方便案例驗證失敗後定位問題。
指令名稱 |
指令說明 |
適用場景 |
stop |
退出案例測試 |
調試某個測試配置時能夠用,避免後面案例干擾,查日誌方便 |
sleep N |
休眠N毫秒 |
暫停一會再進行下一個測試案例執行,給測試人員思考時間 |
skip N |
跳過下面N個案例配置 |
新增案例配置後能夠直接執行新增的內容,不須要跑老的案例 |
goto label |
跳到指定案例執行 |
新增案例配置後能夠直接執行新增的內容,不須要跑老的案例 |
repeat N |
重複執行後面一個配置N次 |
交易包含static變量時,可使用此指令指定重複執行測試案例 |
for N/endfor |
重複執行下一個endfor出現以前的配置N次,可嵌套 |
同上,若是須要重複執行的案例比較多可用 |
echo message |
輸出日誌信息,message裏面可包含變量 |
輸出日誌信息,特別是變量值,方便調試 |
set var value |
設置變量值,var和value均可以包含變量 |
設置變量值,方便後面報文使用。 |
檢查方法 |
說明 |
have() |
交易返回內容包含指定關鍵字 |
haveno() |
交易返回內容不包含指定關鍵字 |
true |
交易返回報文狀態碼爲00 |
false |
交易返回報文狀態碼不爲00 |
支持同時指定多個自定義檢查方法,用&&鏈接
爲方便配置報文,腳本預設計了許多變量,測試人員能夠直接引用。
若是有須要能夠在vugen自行添加,但切記不要修改(loadrunner修改變量的界面很是奇怪,沒有保存功能,只要瀏覽變量值時用鼠標點選不一樣值就會自動保存,要當心)
檢查方法 |
說明 |
save |
把S_traceId保存到變量Save_S_traceId |
savefile |
把S_traceId保存到sn_hist_{P_vuserId}.txt |
get |
從S_traceId取自變量Save_S_traceId而不是從新生成 |
getfile |
讀取sn_hist_{P_vuserId}.txt一行記錄,並從中生成S_traceId,主要用於衝正退貨 |
save(field_name) |
從請求報文中截取field_name指定的xml字段值,保存到變量Save_field_name |