我們剛開始寫集成測試,以測試數據庫,數據訪問層,Web服務調用等 目前,我有一些想法寫集成測試,如 1)總是重新創建表在初始化函數中。 2)如果您在同一功能中保存新內容,請務必清除功能內的數據。編寫集成測試,測試數據庫,Web服務調用
但我想知道一些更好的做法。
我們剛開始寫集成測試,以測試數據庫,數據訪問層,Web服務調用等 目前,我有一些想法寫集成測試,如 1)總是重新創建表在初始化函數中。 2)如果您在同一功能中保存新內容,請務必清除功能內的數據。編寫集成測試,測試數據庫,Web服務調用
但我想知道一些更好的做法。
當單元測試DAL,我不喜歡這樣寫道:
[TestFixtureSetUp]
public void TestFixtureSetUp()
{
//this grabs the data from the database using an XSD file to map the schema
//and saves it as xml (backup.xml)
DatabaseFixtureSetUp();
}
[SetUp]
public void SetUp()
{
//this inserts test data into the database from xml (testdata.xml)
//it clears the tables first so you have fresh data before every test.
DatabaseSetUp();
}
[TestFixtureTearDown]
public void TestFixtureTearDown()
{
//this clears the table and inserts the backup data into the database
//to return it to the state it was before running the tests.
DatabaseFixtureTearDown();
}
如同所有的測試,就必須從已知狀態一個啓動,並在測試完成,明確降到乾淨的狀態。
此外,測試代碼經常被忽視,因爲不是真正的代碼,因此不能正確維護... 它比代碼更重要。至少同樣多的設計,應該進入你的測試架構。規劃合理的抽象級別,例如,如果您正在測試Web應用程序,請考慮具有這樣的層級:抽象化您的瀏覽器交互,抽象頁面上的組件,抽象頁面和測試。測試與頁面和組件交互,頁面與組件交互,組件與瀏覽器交互層交互,瀏覽器交互層與您的(可能是第三方)瀏覽器自動化庫進行交互。
如果您的測試代碼沒有得到適當的維護或經過深思熟慮,那麼它們會成爲一種障礙,而不是編寫新代碼的幫助。
如果你的團隊是新的測試,有很多coding katas在那裏,旨在教的良好測試(進出這是以良好的代碼),他們一般集中在一個單元測試水平的重要性,但是許多校長是一樣的。
一般來說,我建議你看看嘲笑你的數據庫訪問層和Web服務調用類,以使其更具可測性。關於這個問題有很多書籍,如Osherove的單元測試藝術。
之前已經說過,集成測試應該是可重複的。因此,我會選擇選項1來編寫一個腳本,該腳本可以從頭開始用測試數據重新創建數據庫。選項2比較困難,因爲它很難確定清潔功能不會留下不必要的數據殘留。
可能dublicate http://stackoverflow.com/questions/1328730/integration-testing-best-practices –
我看過那個帖子,但更多的是關於分離快速和慢速測試。 – alice7