簡體   English   中英

SQL測試最佳實踐

[英]SQL testing best practice

除了自動測試之外,SQL測試(存儲過程,視圖,查詢,觸發器...)的最佳實踐是什么? 大多數情況下,查詢有效或返回數千行,因此檢查它們有點困難。 我想知道您通常如何測試SQL查詢。 您能指出我一個很好的(在線)參考資料嗎?

嘗試消除額外的變量。

方法:

  • 每次測試應僅測試一個功能(視圖,存儲過程等)
  • 使用已知的測試數據(它應該來自真實環境(而不是真實環境)
  • 使用最少的測試數據即可充分測試該功能。

對於插入,更新,刪除,我在運行proc之前和之后檢查表的狀態,以查找滿足插入更新或刪除條件的記錄。 因此,如果我要添加7條記錄,則它們不應該事先在表中,而應該在表后。

具有數千條記錄的選擇可能會更加困難。 真正了解您的數據以及您期望獲得的結果無可替代。 例如,我知道某個客戶大約有2000名銷售代表。 如果我運行一個查詢,其中應該包含所有代表,而其中只有大約1000個,那么我知道有些問題。 有時,我會將查詢結果放在臨時表中,這樣就可以對其進行統計。 如果我正在做一個與會者報告,那么根據我的查詢,可以看到該報告期內該報告中有200個不同的會議。 如果我僅查看該表並看到在同一時間段內有350個會議,那么我會去查看什么是排除會議,通常會查看一個或多個被排除的會議的詳細信息以及與之相關的表,以了解其原因沒有出現。 通常,您會發現需要說明的狀態或某種錯誤數據。

我還尋找重復的記錄。 如果我希望每個會議有一個記錄,而同一個會議有兩次記錄,那么我知道聯接表之一的記錄比查詢條件要多。

我經常要求我們的一些運營人員也查看報表查詢的結果。 因為它們比我更接近使用數據,所以它們經常會發現我沒有的東西。

另一種技術是將測試的where子句故意限制為較小的數據子集,您可以手動檢查這些數據子集,以查看是否期望得到的結果。 如果您有大量計算或復雜計算,這將特別有用。 每當我進行復雜的計算時,我都會查看一種典型情況下的原始數據並根據原始數據手動計算公式,然后可以檢查查詢中的公式是否正確。

我首先通過將觸發器編寫為常規查詢進行測試(首先創建並填充#inserted和#deleted的臨時表之后)。 我確保將多個記錄添加到我的臨時表中,因為每個觸發器都必須能夠正確處理多個記錄的插入/更新或刪除。 然后,我編寫代碼以顯示before狀態和after狀態,並將其全部放入事務中,以便在測試時將其回滾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM