接口測試需要驗證數據庫麼?

問題: 

有的接口會返回很多數據,有的接口可能就返回一個狀態碼及success之類的消息,這些需要驗證數據庫麼?現在在寫一個測試框架,配置接口參數和預期返回值,生成xml文件管理用例,用一個比較方法對預期和返回作比較,不需要根據每個接口寫腳本,現在的疑惑只之比較返回值,並不清楚接口是否真的成功了,比如刪除之類的接口,返回說成功了,但數據是否真的刪除了?如果要驗證數據庫,感覺得爲每個用例寫腳本去驗證了,這就和初衷不符(只寫個比較函數,比較返回的所有值,不需要爲每個接口單獨驗證)

 

 回答:

 不少同學在做自動化是都會問要不要驗證數據庫?我的答案是不要!

 根據分層自動化測試的概念。

 UI層自動化模擬的是用戶操作,假設我是一個普通的用戶,在你家的系統上購買了一件商品,我怎麼知道有沒有購買成功?難道要去查你家系統的“已購買表”?沒權限,就算有權限我也不會!那我怎麼驗證?很簡單啊!系統不是有“已購買” 商品列表嘛!點開“已購買”菜單看就可以了!(如果沒有這功能,那說明你的系統設計有問題。用戶體驗不好,差評!!)

 接口自動化模擬的是開發的代碼操作,A開發寫的接口給B開發去調用,A系統的接口給B系統去調用,假設我是一個開發,我調用了微信的接口去做獲取用戶頭像,有個用戶獲取不到,來!微信團隊,你讓我查查你們的數據庫唄!微信肯定不答應。(數據庫不是你想查,想查就給你查!)

 那接口返回了“success”,但沒有把數據添加/刪除成功怎麼辦?從我兩年接口自動化的經驗來說,這中情況基本非常少見,因爲開發在寫代碼的時候,返回“success”的前提條件肯定是基於操作成功的。(開發寫代碼的時候肯定會自已運行一下啊!怎麼會運行都不運行,哪兒來的自信!)

 你們的開發就是粗心怎麼辦?我是這麼做的,開發提交了新的接口,我會邊讀接口代碼邊設計接口用例(如果接口邏輯看不懂接口數據可能就構造不出來,接口用例自然也不會寫。),代碼有問題就直接告訴開發改了,在這個過程中,我是會查數據庫的。一旦接口用例寫好之後,後面再回歸去跑的時候就不管了,當然,每條接口用例裏面肯定不會加查詢數據庫的動作。

 在特殊情況下,我調用了一個刪除數據的接口,有沒有真的刪除一條數據,我可以調用查詢數據的接口啊!查不出來剛纔刪除的數據,不就證明剛纔的刪除接口操作是ok的了。

 大多數測試問這個問題就是把自己當測試了,在做手工測試的時候就是這麼查數據庫的呀!典型的站在測試的思維上想問題。我做UI自動化的時候,我就是普通的用戶;我做接口測試的時候我就是開發。只不過,我會比普通用戶和開發更細緻更全面的“使用”系統所提供的功能而已。但“使用姿勢”和他們是一樣的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章