簡體   English   中英

測試從數據庫返回的數據集

[英]Testing a dataset returned from a database

如果我正在測試數據庫行集,那么將根據什么標准進行測試?

我應該測試是否存在名稱為A等的行(數據庫中有什么)嗎? 這是一個壞主意嗎? 這種測試很脆弱,因為數據可以更改,但查詢可以正確。

考慮到這一點,最好檢查一下我在數據集中返回的列名嗎? 就像這樣(http://stackoverflow.com/questions/696782/retrieve-column-names-from-java-sql-resultset)。

謝謝

測試數據庫中的內容是沒有意義的,除非它是數據靜態參考數據表(而且您通常可以將它們設置為只讀,所以又沒有意義)。

測試列名稱? 為什么會有這些變化? 希望開發人員不對生產服務器進行更改嗎?

您可能想要的是,作為CI構建過程的一部分,以將數據庫(將所有增量更改腳本[您有權利嗎?]應用所有增量更改腳本)完全部署到測試服務器。

除了數據庫和代碼可以工作之外,您不需要測試有關數據庫的任何內容。

因此,然后使用您在測試環境中創建的數據庫,將使用該數據庫的代碼連接到該數據庫,並測試其是否可以執行預期的操作。

請記住,在測試中,很少需要檢查如何完成某事,而應該測試圓頂事物實際上是否已完成。

例如,如果您使用休眠來持久化實體,則可能有一個名為canRoundTripAFooBar的測試,該測試保存一個foobar,然后再次加載它,並比較每個字段以確保您加載的字段和保存的字段相同(除了不一樣的那些位,例如Ids或其他內容)

不要測試數據庫中的內容。 僅提供一些示例,說明您的系統如何實現價值。

如果該值是真正存在於數據庫中的(例如,另一項服務使用該數據),則根據該值描述系統提供的內容。 例如:

  • 我的系統可以拯救一個有四個孩子的家庭和另一個國家的配偶的用戶。
  • 我的系統可以處理日語地址。
  • 我的系統可以提供歷史價格數據。

如果確實需要,則可以將大塊數據(而不是單個行)與它們匹配的域概念相關聯。 刪除一些重復項(例如,將其放入自定義測試查詢中)將有助於減少重復性。

如果您能想到系統提供的示例,那么您可能也可以涵蓋其提供的所有數據。

使測試變得更不那么脆弱的另一種方法是使用持久層或服務的系統的持久層(例如,Hibernate)將數據轉換回域對象,這對於這些示例更有意義。

這也將幫助您檢查所提供的數據是否真正有價值,而不是僅僅在那里 如果您要為其提供價值的系統是自己的,則可以這樣做,並在涉及用於存儲數據的格式時保留完全的自由。 您還可以執行以下操作:

  • 我的系統不允許我在沒有父母的情況下存放孩子。
  • 我的系統不允許一行中包含超過150個字符的地址。

並檢查數據庫異常-還可讓您驗證約束。

暫無
暫無

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

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