測試人員關注資料庫表設計是“測試左移”的一種手段,可以把有關資料庫的潛在bug消滅在系統測試之前,從而提高交付效率。
以MySQL為例,QA可從以下方面對資料庫表設計做測試的左移:
1、資料表功能
表結構
- 確保每張表都有主鍵,且主鍵值唯一且非空,以保證表中每行資料的唯一性和可識別性
- 檢查外來鍵約束是否有效,即外來鍵值必須是對應主鍵表中存在的值,避免出現孤立資料或無效關聯
- 表之間存在關聯的,驗證表與表之間的關聯關係是否正確建立(如主鍵和外來鍵的設定是否準確,關聯欄位的資料型別和長度是否一致)
- 評估資料表結構對業務變化的適應性(是否能夠靈活地進行調整和擴充套件,以滿足不斷變化的業務需求)
表欄位
- 欄位的資料型別是否符合業務要求(比如資料量大的欄位型別設計成int,使用unsignedint或bigint)
- 欄位的長度設計是否合理(是否有合理的buffer,相容後續新業務)
- 不同表,相同含義的欄位命名是否統一(多分參與開發時,歧義少,也就降低了bug出現的可能性)
- 不同表,相同含義欄位的型別、長度是否一致(不一致時,可能會出現表A正常落庫,表B因不能正常落庫而發生bug)
- 敏感字斷是否經過加密處理(如銀行卡號,身份正號,手機號等)
- 約束條件是否符合業務要求(介面設計欄位可以空,但表設計欄位NOT NULL,提交的時候顯然會報錯)
- 冗餘欄位是否貼合實際業務要求(很多時候,RD為了提高擴充套件性,設計很多無效的字斷,會拉低CURD效能)
- 欄位有預設值的,檢查預設值是否符合業務要求
- 日期字斷需要特別關注,是否業務上對日期格式的要求
2、資料表效能
- 對於查詢操作會操作的表,是否有設計索引(經常用於查詢條件、連線條件或排序的欄位,需建立索引)
- 索引的建立是否合理,是否能有效提高查詢效能(設計索引的欄位應為查詢條件的過濾欄位)
- 索引是否過度建立(合理的索引可以提高查詢效能,但過多的索引會拉低增刪改的效能)
- 檢視是否合理建立(如果新增表參與聯表查詢,考慮是否可以使用檢視來提高查詢速度)