為什麼你需要建立測試

2021-08-25 08:20:18 字數 1670 閱讀 2512

測試是檢查**操作的簡單例程。

測試在不同的級別上執行。一些測試可能應用於乙個微小的細節(特定的模型方法返回值是否像預期的那樣),而另一些測試則檢查軟體的整體操作(在站點上的使用者輸入序列是否會產生預期的結果?),它使用shell來檢查方法的行為,或者執行應用程式並輸入資料來檢查它的行為。

自動化測試的不同之處在於,測試工作是由系統完成的。您可以建立一組測試,然後當您對應用程式進行更改時,您可以檢查您的**是否仍然按照您最初的預期工作,而無需執行耗時的手工測試。

那麼為什麼要建立測試,為什麼現在呢?

你可能會覺得你已經有足夠的時間去學習python/django了,還有一件事要學習和做,可能看起來是壓倒性的,也許是不必要的。畢竟,我們的poll 應用現在很愉快; 經歷建立自動化測試的麻煩不會使它工作得更好。如果建立poll應用程式是您將做的最後一點django程式設計,那麼true,您不需要知道如何建立自動化測試。但是,如果不是這樣,現在是學習的好時機。

在一定程度上,「檢查它似乎起作用」將是乙個令人滿意的測試。在更複雜的應用程式中,元件之間可能有數十個複雜的互動。

任何這些元件的更改都可能對應用程式的行為產生意想不到的後果。檢查它是否仍然有效,可能意味著你要執行你的**的功能,使用20個不同的測試資料,以確保你沒有破壞什麼——這不是很好地利用你的時間。

當自動化測試可以在幾秒鐘內完成這項工作時,這一點尤其正確。如果出現問題,測試也將有助於識別導致意外行為的**。

有時候,把自己從高效的、創造性的程式設計工作中剝離出來,去面對那些單調乏味、毫無激情的編寫測試的工作,尤其是當你知道你的**執行正常的時候,這似乎是一件苦差事。

然而,編寫測試的任務要比花幾個小時手動測試應用程式或試圖確定新引入問題的原因要更有成就感。

把測試僅僅看作是發展的消極方面是錯誤的。

如果沒有測試,應用程式的目的或預期行為可能是相當不透明的。即使是你自己的**,你有時也會發現自己在裡面戳了一下,試圖找出它到底在做什麼。

測試改變;他們從內部點亮你的**,當出現問題時,他們會把注意力集中在錯誤的部分——即使你甚至沒有意識到它出了問題。

您可能已經建立了乙個優秀的軟體,但是您會發現許多其他開發人員會拒絕檢視它,因為它缺乏測試;沒有測試,他們就不會相信。django的原始開發者之一jacob kaplan-moss說:「沒有測試的**被設計破壞了。」

其他開發人員希望在他們認真對待之前在您的軟體中看到測試,這是您開始編寫測試的另乙個原因。

前面的要點是根據維護應用程式的單個開發人員的觀點編寫的。複雜的應用程式將由團隊維護。測試可以保證同事不會在無意中破壞你的**(而且你不知道他們的**是不會破壞的)。

有很多方法可以進行編寫測試。

一些程式設計師遵循一種叫做「測試驅動開發」的規程;實際上,他們在編寫**之前就已經編寫了測試。這聽起來似乎有違常理,但實際上它與大多數人通常會做的事情相似:他們描述了乙個問題,然後建立了一些**來解決這個問題。測試驅動的開發只是在python測試用例中形式化了問題。

更常見的情況是,測試新手將建立一些**,然後決定應該進行一些測試。也許在更早的時候寫一些測試會更好,但是開始的時候永遠不會太遲。

有時很難弄清楚從**開始編寫測試。如果您已經編寫了數千行python,那麼選擇要測試的東西可能並不容易。在這種情況下,在下一次修改時編寫第乙個測試是很有成效的,或者當您新增乙個新特性或修復乙個bug時。

為什麼需要單元測試

軟體開發的標準過程包括以下幾個階段 需求分析階段 設計階段 實現階段 測試階段 發布 其中測試階段通過人工或者自動手段來執行或測試某個系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。測試過程按4個步驟進行,即單元測試 整合測試 系統測試及發版測試。其中功能測試主要檢...

為什麼需要單元測試

軟體開發的標準過程包括以下幾個階段 需求分析階段 設計階段 實現階段 測試階段 發布 其中測試階段通過人工或者自動手段來執行或測試某個系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。測試過程按4個步驟進行,即單元測試 整合測試 系統測試及發版測試。其中功能測試主要檢...

為什麼需要單元測試

軟體開發的標準過程包括以下幾個階段 需求分析階段 設計階段 實現階段 測試階段 發布 其中測試階段通過人工或者自動手段來執行或測試某個系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。測試過程按4個 步驟進行,即單元測試 整合測試 系統測試及發版測試。其中功能測試主要...