自動化用例的自動生成技術
發表于:2012-12-27來源:淘測試作者:雷藏點擊數:
標簽:自動化用例
閑話少說,直奔主題。 先來看看用例構成:輸入數據(包括方法入參,數據庫狀態)+ 方法調用+ 預期結果+ 結果比對 而這里面“方法調用”,“結果比對”都是固定的可以封裝起來,所以用例的核心就是數據:輸入數據,預期數據。只要解決了這兩個問題所有
閑話少說,直奔主題。
先來看看
用例構成:輸入數據(包括方法入參,
數據庫狀態)+ 方法調用+ 預期結果+ 結果比對
而這里面“方法調用”,“結果比對”都是固定的可以封裝起來,所以用例的核心就是數據:輸入數據,預期數據。只要解決了這兩個問題所有問題就解決了。
空說無憑,將這兩天做的一個日常作為實例來說明問題。
需求說明:
根據B2B用戶nick,獲取用戶信息(user),用戶旺旺處罰規則code(ruleCode),用戶狀態(suspended),處罰中心相關數據(punishData),如果是子帳號還需要獲取子帳號相關信息(mmpData)
詳細設計流程圖如下:

1、解決輸入數據問題
第一步,對上述詳細設計進行分析,整理出輸入、輸出,這里的輸入包括“方法調用入參”,“數據庫數據”:
輸入數據 |
入參nick
旺旺規則數據wwLimitData
用戶狀態suspended
處罰中心數據punishData
子帳號數據mmpData |
輸出數據 |
用戶信息user
旺旺ruleCode
用戶suspended
處罰數據punishData
子帳號數據mmpData |
第二步,整理出所有輸入數據的取值范圍,這里就要把我們生平所學的所有業務知識、
測試理論全都用上,什么等價類啊,邊界值啊,隨便吧,總之八仙過海各顯神通,不過這里數據取的不好是會影響
測試用例質量的哦!(PS:數據庫字段數據的取值范圍有個偷懶的辦法,可以去線上庫distinct一下,立馬就有了):
輸入數據 |
類型 |
取值范圍(包含異常取值) |
取值個數 |
nick |
String |
“”,空串
null
“1233211”,不存在的用戶nick
“leizang_test”, 淘寶帳號
“leizang_btob_1”,B2b帳號
“ leizang_btob_1:subnick01”, 子帳號 |
6 |
suspended |
Integer |
0,1,2,3,-9 |
5 |
wwLimitData |
String |
null
“true”
“OK_WW”
“ LIMIT_WW”
“ {"ruleCode":"","wwuic-limit":"OK_WW"}”
“ {"ruleCode":"xxxx","wwuic-limit":"LIMIT_WW"}” |
6 |
punishData |
String |
null
"UEsDBBQACAAIAGL/Ua61XfDlBLBwi2PNplVAAAAPwDAAA=" |
2 |
mmpData |
String |
null
“{"accountStatus":-1}”
“{"accountStatus":3,"owedStatus":-1}” |
3 |
一旦輸入范圍確定,用例的輸入就好解決了,最笨的辦法就是把所有的數據排列組合一遍,肯定能測試到所有的場景,只是用例的數量龐大一點而已,排列組合后的用例個數為:6*5*6*2*3= 1080個,哇靠,這么多啊,果然不是人能做出來的,看你以后老板還敢不敢要求腳本數量。不過呢,這里面水分很多,有很多重復場景,那有效場景到底有多少呢?我們先放一放,容后再談,先來解決一下預期數據的準備問題。
2、解決預期數據問題
梳理流程圖,整理出依賴關系,“A-- > B”表示A依賴于B:

整理出的依賴關系如下:
中間對象 |
被依賴對象 |
user |
nick |
ruleCode |
user, wwLimitData |
isFrozen |
user, wwLimitData |
suspended |
user, isFrozen |
punishData |
user, punishData, suspended |
mmpData |
user, mmpData |
這樣,我們可以針對每一個“中間對象”(沒想到好名字,姑且先這么叫)編寫一個獲取中間對象取值范圍的方法。注意這里用詞是“取值范圍”,跟
開發的程序邏輯是不一樣的,是我們根據“輸入的數據”并按照“業務規則”得出的,我們直接用數據說話,那么到底該如何編寫呢?接著往下看。
原文轉自:http://www.anti-gravitydesign.com