如題。
最近有些同學一直在問我一些概念和設計自動化的一些問題。
比如,需不需要驗證數據庫是否正確?
這里我覺得還是跟你公司,跟你所在團隊,跟你所在的測試方法或策略有關的。
為什么這么說?
因為在我之前的那家公司,因為上市公司,很厲害的。所以測試根本沒有數據庫權限,你別說想看數據了,可能你要連接數據庫的那個權限都需要領導層層申請。
所以當時設計的自動化測試框架比較簡單,只是自動校驗json格式是否正確。
所以,你看到了,團隊不允許,你就不能數據庫驗證。
那么如果有條件,或者測試可以有測試環境的權限的話:我強烈建議驗證數據庫!
下邊說一下我的觀點:
1. 一般前后台數據交互都是通過json數據進行,那么json數據是從數據庫中得來的。這里就涉及到json數據的校驗。
那么格式校驗是格式校驗,字段值是否正確是字段值正確校驗。
那么對字段值的校驗最合適的方式就是查詢數據庫。
2. 在特殊情況下,我調用了一個刪除數據的接口,有沒有真的刪除一條數據,我可以調用查詢數據的接口啊!查不出來剛才刪除的數據,不就證明剛才的刪除接口操作是ok的了。另一種方式就是查詢數據庫中是否存在我的數據,如果沒有就是刪除了。
關鍵是什么?關鍵是有些刪除操作之后,還會有連帶的關聯數據進行刪除(如果大家對業務不了解,或者表結構不了解,需要問一下開發)。那么是不是把關聯數據刪除掉了?那么是不是要驗證數據庫?
3. 對於測試來說,請求一個接口之后,需要知道這個接口在背后做了哪些事情(其實無非就是對數據庫的增刪改查操作),了解邏輯,對於多接口的測試,它背后更加復雜的邏輯更需要詳細清楚。表結構,關聯方式,字段參數變化,含義等。不光開發清楚,測試也要爛熟於胸。
我覺得或許做到以上幾點才能算得上是"基於業務功能的接口測試,不是耍流氓"。
那么要做到以上幾點需要:
1. 接口流程需要爛熟於胸,接口功能,每個字段含義需要清楚,需要知道參數的變化。響應數據的變化,比如我們公司有開發同學定義的yapi接口定義文檔(各公司接口文檔可能平台不一,但大體相同)。需要測試同學耐心一點,仔細看看~~
2. 需要了解數據庫字段、數據庫關系、表之間的關系等等,你要清楚比如字段代表的含義,如何修改?邏輯對應接口中哪些字段?可能有時還需要到redis中去獲取緩存數據,那可能就有點稍微復雜了。
怎么樣,你看完之后,覺得我們在做接口自動化測試時,需要驗證數據庫嗎?歡迎大家來評論,讓思想碰撞出火花,為了更好地測試前進。