测试无数据_无数据驱动自动化测试
在自動化測試中,經(jīng)常會聽到一個詞數(shù)據(jù)驅(qū)動,大意是講通過測試數(shù)據(jù)驅(qū)動自動化用例的執(zhí)行。其他相關(guān)的內(nèi)容相信已經(jīng)耳熟能詳了,這里不多說,今天給大家分享一個次叫做無數(shù)據(jù)驅(qū)動,主要思路就是盡量取消在測試用例中的數(shù)據(jù)引入,把主要的測試數(shù)據(jù)的維護放在自動化測試用例以外,節(jié)省成本的同時提高用例的健壯性。
無數(shù)據(jù)驅(qū)動自動化測試的目標(biāo)就是,通過測試用例最小量的數(shù)據(jù)引入,編寫無限運行的測試用例,以降低維護工作量。
下面分享一個案例,以某一個商品售賣接口以及相關(guān)接口組成的一條測試用例。這個接口購買某一個header的接口,主要參數(shù)gid, pid,在這個用例里面寫死了,具體多少我忘記了,三年前的代碼了,翻出來已經(jīng)很不容易。主要業(yè)務(wù)邏輯非常簡單,購買成功(有效期30天,自然天),然后屬性中增加響應(yīng)的值,余額減少響應(yīng)的值,順便對于購買這會額外贈送另外一個header的七天有效期。
?/**??*?購買月卡用例
??*/
?public?void?testDemo001()?{
??String?label?=?"購買月卡用例"?+?TAB?+?Thread.currentThread().getStackTrace()[1];
??Headgear?headgear?=?new?Headgear(base);
??Long?aLong?=?headgear.getHeadgearInfo().get(27);
??int?balance?=?NajmBase.getUserBalance(drive.user_id);
??long?deadTime?=?drive.getDeadTime();
??Verify?verify?=?new?Verify(drive.bugMonthCard(gid,?pid));
??int?balance1?=?NajmBase.getUserBalance(drive.user_id);
??long?deadTime1?=?drive.getDeadTime();
??Long?aLong1?=?headgear.getHeadgearInfo().get(27);
??JSONObject?result?=?new?JSONObject();
??result.put("狀態(tài)碼為0",?verify.isRight());
??result.put("用戶金額減少",?balance?-?balance1?==?2000);
??result.put("用戶月卡有效期增加",?deadTime1?-?deadTime?==?30?*?DAY);
??result.put("用戶贈送頭套正常",?aLong1?-?aLong?==?7?*?DAY);
??MySqlTest.saveTestResult(label,?result);
?}
關(guān)于為什么測試用長成這個樣子,有興趣的歡迎關(guān)注FunTester測試框架:
- Gitee地址https://gitee.com/fanapi/tester
- GitHub地址https://github.com/JunManYuanLong/FunTester
末尾我會放上FunTester測試框架的視頻講解,視頻做得時間有點早,有些新功能,特別是性能測試方面缺失的略微多了些。可以參考我之前寫過性能測試的文章。
在上面的測試用例中,我首先新建了一個基于User的業(yè)務(wù)模塊類Headgear對象,為了完成接下來的模塊中的接口調(diào)用。還有基礎(chǔ)類NajmBase中我寫了一些靜態(tài)方法,這里應(yīng)該是要單獨拿出來做一個單個項目的工具類,三年前前的代碼了。然后這個driver對象,是該用例類的基礎(chǔ)驅(qū)動對象,也是一個模塊類的對象,用于完成改模塊的接口調(diào)用,因為當(dāng)前類就是該模塊的用例類,所以做了一個公共的類static對象。
這里的用例方法邏輯比較容易懂:第一步先從用戶個人headers信息中心獲取到27號的截止時間,然后獲取用戶的賬戶余額,然后用戶去購買指定id的header,然后保存響應(yīng)對象,將響應(yīng)轉(zhuǎn)換成通用的驗證對象verify,在獲取用戶余額,ID為27的header的截止日期。最后通過之前保存的對象和數(shù)據(jù)信息進行業(yè)務(wù)的判斷。
當(dāng)然所有的用例都需要進行setup和setdown,這個用例需要維護的數(shù)據(jù)有幾項,下面分享一下我的處理方案。
- ID為gid, pid的header的確定存在,而且執(zhí)行用例的用戶必需保證初始化就是購買過且在有效期,相信這個不難做到。
- ID為gid, pid的價格恒定在2000,且執(zhí)行用例用戶余額在購買之前要大于這個數(shù),這個不難辦到,在setup中能夠辦到。
- ID為gid, pid的header有效期30天,贈送的headerID為27的基本屬性也跟ID為gid, pid的header一樣各項屬性保持穩(wěn)定。
- 保證隨時跟進業(yè)務(wù)變更,這個也不難。
這里花費較多時間去設(shè)計維護比如gid, pid這樣的參數(shù)所對應(yīng)的信息,以及用戶金額等。
后期可以把這些信息全都優(yōu)化掉,不必設(shè)置固定的gid, pid不必驗證有效期,可以從header信息的接口獲取。這樣gid, pid可以不需要,價格2000也是不需要,有效期30天和7天也是不需要的,贈送的ID為27的header也不一定需要(需要看業(yè)務(wù)接口提供不提供贈送規(guī)則)。
在實際運行中,幾乎沒有因為自動化用例的問題,基本做到了write once,run everywhere !。
幾乎的那一次原因如下:連開100年會員會怎樣,由此引起的用例執(zhí)行預(yù)警方便調(diào)整以后再講。
雖不完美,足以表達(dá)我的思路!
下面是測試框架的視頻講解:
接口測試視頻
- FunTester測試框架視頻講解(序)
- 獲取HTTP請求對象--測試框架視頻講解
- 發(fā)送請求和解析響應(yīng)—測試框架視頻解讀
- json對象基本操作--視頻講解
- GET請求實踐--測試框架視頻講解
- POST請求實踐--視頻演示
- 如何處理header和cookie--視頻演示
- FunRequest類功能--視頻演示
- 接口測試業(yè)務(wù)驗證--視頻演示
- 自動化測試項目基礎(chǔ)--視頻講解
- JSONArray基本操作--視頻演示
- 自動化項目基類實踐--視頻演示
- 模塊類和自動化用例實踐--視頻演示
- 性能框架多線程基類和執(zhí)行類--視頻講解
- 定時和定量壓測模式實現(xiàn)--視頻講解
- 基于HTTP請求的多線程實現(xiàn)類--視頻講解
FunTester,非著名測試開發(fā),文章記錄學(xué)習(xí)和感悟,歡迎關(guān)注,交流成長。
FunTester熱文精選
- 綁定手機號性能測試
- 固定QPS壓測初試
- 性能測試中圖形化輸出測試數(shù)據(jù)
- Groovy在JMeter中應(yīng)用專題
- 基于WebSocket的client封裝
- 基于Socket.IO的Client封裝
- Socket.IO接口多用戶測試實踐
- Java和Groovy正則使用
- 鏈路壓測中如何記錄每一個耗時的請求
- JSON對象標(biāo)記語法驗證類
總結(jié)
以上是生活随笔為你收集整理的测试无数据_无数据驱动自动化测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jsch设置代理_Java使用JSch组
- 下一篇: python 文件操作的模块_Pytho