?
本文檔使用 PHP中文網(wǎng)手冊 發(fā)布
測試是軟件開發(fā)的一個重要組成部分。不管我們是否意識到,我們一直在不斷地進行測試。 例如,當(dāng)我們在用 PHP 寫一個類的時候,我們可能用 echo 或者 die 語句一步一步簡單的調(diào)試 驗證我們實現(xiàn)的代碼是否按照最初的計劃工作。在開發(fā) web 應(yīng)用的時候,我們在表單中輸入 一些測試數(shù)據(jù)來確保頁面能夠如預(yù)期那樣和我們進行交互。
測試過程可能是自動的,所以每次我們需要驗證的時候,我們只需要調(diào)用它就可以測試代碼 了。 驗證代碼執(zhí)行結(jié)果是否符合我們的計劃叫做測試,測試過程的創(chuàng)建以及進一步執(zhí)行叫做 自動化測試,這是這些測試章節(jié)的主要主題。
測試驅(qū)動開發(fā)(TDD)和行為驅(qū)動開發(fā)(BDD)在開始編寫實際代碼之前,首先通過描述一段 代碼的行為或?qū)⑵渥鳛橐唤M場景或測試的全部特征,然后創(chuàng)建符合這些測試預(yù)期驗證的行為 實現(xiàn)。
開發(fā)一個功能的過程如下:
走完上面的過程之后,為其他功能或者擴展重復(fù)上面測試過程。如果功能發(fā)生變化,測試也需 要跟著變化。
技巧: 如果你覺得你做一些很小很簡單的迭代是在浪費時間,請嘗試覆蓋更多的測試 場景,這樣你就可以在執(zhí)行測試之前做更多的嘗試。如果你的調(diào)試過多,試著做相反的工作。
在做一些具體的實現(xiàn)之前創(chuàng)建測試的原因是,這允許我們后期專注于我們想要的實現(xiàn),并且 可以花費更多的精力到實現(xiàn)細節(jié)。在涉及功能調(diào)整的時候,這會使得抽象更合理、測試維護 更簡單或者使得耦合元件更少。
這種做法的優(yōu)點如下:
在很長一段時間內(nèi),這通常會給你提供一個有效的時間節(jié)省。
技巧: 如果你想了解更多關(guān)于收集軟件需求和建模的原則,最好去學(xué)習(xí)?Domain Driven Development (DDD)。
在測試的時候,對于一些相對復(fù)雜的項目上面的內(nèi)容是非常有意義的,但對于一些比較 簡單的項目就做的有些極端了。適用場景如下:
在現(xiàn)有的實現(xiàn)行為中進行覆蓋測試是非常適合的。
在一些情況下,任何形式的自動化測試都是過于極端的:
假如你有很多的時間,在這種情況下進行自動測試也很好。