我最近開發的一個自動化回歸測試工具


  最近因工作需要,開發了一個回歸測試的小工具。可以根據配置讀取不同交易報文並進行變量替換,然后自動發起交易並檢查結果。自我感覺挺好用的,與大家分享一下設計思路。(代碼要保密,就不上傳了。有需要可以根據設計思路自己開發。這個是我之前開發時積累的小心得: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都可以包含變量

設置變量值,方便后面報文使用。
  (例如要生成一個全部配置共用的隨機數字,可以使用set my_rand {P_rand3})

 

自定義檢查方法說明:

 

檢查方法

說明

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM