最近因工作需要,開發了一個回歸測試的小工具。可以根據配置讀取不同交易報文並進行變量替換,然后自動發起交易並檢查結果。自我感覺挺好用的,與大家分享一下設計思路。(代碼要保密,就不上傳了。有需要可以根據設計思路自己開發。這個是我之前開發時積累的小心得:https://www.cnblogs.com/kingstarer/p/10291348.html loadrunner腳本編寫經驗)
設計背景:
目前系統交易越來越多,需求改動也比較頻繁。為防止代碼改動影響舊需求,每次修改代碼后都需要把相關交易回歸測試一次。
目前此項回歸測試工作主要靠程序員手工完成,存在以下問題:
1 回歸測試需要准備很多交易報文,耗時費力
2 由於回歸測試比較麻煩,加上版本迭代頻繁,有時只能對比較關鍵的業務場景進行回歸測試,存在一定風險。
解決方案:
為避免這種情況,項目組開發了自動化回歸測試工具。程序員每次開發完代碼后,針對需求的業務場景配置好測試案例,由工具根據案例配置自動執行交易(需要自動生成某些交易報文字段,例如全局流水)並判斷案例是否符合要求。
理想情況下,經過多次需求迭代后,測試案例即可全面覆蓋所有交易路徑。這樣可以節省開發人員回歸測試時間,對於系統重大升級時保障升級質量也有幫助。
測試工具使用loadrunner腳本編寫,這樣的好處是
1 可以借用loadrunner提供的豐富函數庫,如http交互函數,變量替換函數,日志輸出函數等
2 可以利用loadrunner的GUI界面
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 |