2011-12-06 104 views
3

首先,我是測試軟件的新手。我想我很綠。仍然爲這個項目,我需要它來確保所有的計算都是正確的。目前我正在使用單元測試來測試C#中的每個模塊,以確保它完成它應該做的事情。使用哪種測試方法?

我瞭解一些不同的測試方法(集成,單元​​測試),但我不能似乎找到關於測試的任何好的圖書資料一般。他們中的大多數都在某個特定領域(如單元測試)。這對於如何最好地測試軟件以及使用哪種方法來說非常困難(對於我來說)。

例如,我也在使用GUI元素,我應該測試它們嗎?我是否應該通過使用它來進行測試,然後通過視覺確認一切正常?我知道這取決於它是否至關重要,但是在什麼時候你會說「讓我們不測試它,因爲它不是真的相關/重要」?

所以摘要:如何選擇哪種檢驗方法是最好的,你在哪裏畫線,當你用它來測試你的軟件的方法是什麼?

+0

您使用哪種技術? WPF /的WinForms/ASP.net? –

+0

主要是Winforms,它是一個桌面應用程序。也沒有真正需要訪問數據庫/互聯網。只需在驅動器上配置文件即可。 –

回答

2

有幾種類型的測試,但恕我直言,最重要的是單元測試,組件測試,功能測試和終端到終端的測試。 (JUnit)。

  • Unit tests檢查您的類是否按預期工作。這些測試是測試環境的基礎,因爲它們可以告訴您的方法是否有效。您的目標是100%覆蓋率,因爲這些是您測試中最重要的部分。
  • Component tests檢查幾個類如何在代碼中一起工作。組件可以是代碼中的很多東西,但它基本上不僅僅是單元測試,還不及功能測試。目標覆蓋率約爲75%。
  • Function tests正在測試您實施的實際功能。例如,如果您想要一個將某些輸入數據保存到數據庫的按鈕,那是程序的功能。那是你測試的。目標覆蓋率在50%左右。
  • End-to-end tests正在測試您的整個應用程序。這些可以是相當強大的,你可能不能,也不想測試一切,這個測試是在這裏檢查整個系統是否工作。目標覆蓋率約爲25%。

這是非常重要的太順序。

雖然這些東西沒有「好」的東西。您可以運行任何測試來檢查代碼是否按預期工作,同樣好。

你可能最希望你的測試自動化:這樣你就可以測試,而你有一個休息時間或您的服務器可以檢驗一切,而你是遠離工作,然後檢查在上午的結果。GUI測試被認爲是測試中最難的部分,並且有幾個工具可以幫助您,例如Selenium用於瀏覽器 - 圖形用戶界面(GUI)測試。 像Model-View-Presenter這樣的幾種體系結構模式試圖分離應用程序的GUI部分,因此可以使用盡可能笨的GUI來避免錯誤。如果你能夠成功地分離你的圖形,你將能夠嘲笑應用程序的GUI部分,並將其從大部分測試過程中排除出去。

僅供參考,我建議Elfriede Dustin的「有效軟件測試」,但我對這個主題的書不熟悉;可能會有更好的。

0

它真的取決於你需要測試的軟件。如果您主要關注背後的邏輯(計算),那麼您應該編寫一些集成測試,這些測試不僅可以測試單獨的方法,還可以測試從開始到結束的工作流程,因此請嘗試模擬典型用戶將執行的操作。我很難想象用戶調用某種特定的方法 - 很可能是某些特定的方法順序。如果計算正確 - 那麼GUI的顯示錯誤的可能性很低。除了GUI的自動化是耗時的過程,它需要大量的技巧和能量來構建和維護,因爲每一個簡單的變化都可能會阻礙一切。我的建議是從編寫集成測試開始,使用不同的值來涵蓋最常見的場景。

0

此答案是特定於您所涉及的應用程序的類型 - WinForms 對於GUI使用MVC/MVP模式。避免在代碼背後編寫任何代碼。這將允許您單元測試您的UI代碼。當我說UI代碼時,這意味着您將能夠測試您的代碼,這些代碼將在單擊按鈕時調用,或者在UI事件發生時需要執行的任何操作。

你應該能夠單元測試你的每個類文件(UI代碼除外)。這將主要關注基於狀態的測試。

此外,您將能夠編寫涉及多個類文件的測試的交互測試用例。這應該涵蓋大部分流量。

所以有兩件事要重點關注基於狀態的測試交互測試

+0

所以你所建議的是從GUI中分離出邏輯,單元測試邏輯,並在點擊按鈕時指向方法(並通過本地化給出來自GUI的信息)? 我對交互測試有點不確定,應該自動執行這個(ala單元測試)還是自己嘗試(即通過測試用例運行)?或者只是調用一個公共方法,例如calculateThis(),它具有來自不同類的多個方法? 無論如何,很好的答案! –

+0

當我說交互測試時,我並不是指自動UI測試。我不喜歡使用某些腳本進行自動UI測試。交互測試是一種使用模擬框架進行的端到端測試,或者使用手工創建。如果您的代碼隱藏文件中沒有代碼,則應該可以執行此操作。另外,我會建議手動使用模擬框架/模擬來嘲弄你的配置文件,以便在單元測試期間不與實際文件交互。 –