概述(Overview)

2018-02-24 15:40 更新

測試

測試是軟件開發(fā)的一個(gè)重要組成部分。不管我們是否意識(shí)到,我們一直在不斷地進(jìn)行測試。 例如,當(dāng)我們?cè)谟?PHP 寫一個(gè)類的時(shí)候,我們可能用 echo 或者 die 語句一步一步簡單的調(diào)試 驗(yàn)證我們實(shí)現(xiàn)的代碼是否按照最初的計(jì)劃工作。在開發(fā) web 應(yīng)用的時(shí)候,我們?cè)诒韱沃休斎?一些測試數(shù)據(jù)來確保頁面能夠如預(yù)期那樣和我們進(jìn)行交互。

測試過程可能是自動(dòng)的,所以每次我們需要驗(yàn)證的時(shí)候,我們只需要調(diào)用它就可以測試代碼 了。 驗(yàn)證代碼執(zhí)行結(jié)果是否符合我們的計(jì)劃叫做測試,測試過程的創(chuàng)建以及進(jìn)一步執(zhí)行叫做 自動(dòng)化測試,這是這些測試章節(jié)的主要主題。

帶著測試進(jìn)行開發(fā)

測試驅(qū)動(dòng)開發(fā)(TDD)和行為驅(qū)動(dòng)開發(fā)(BDD)在開始編寫實(shí)際代碼之前,首先通過描述一段 代碼的行為或?qū)⑵渥鳛橐唤M場景或測試的全部特征,然后創(chuàng)建符合這些測試預(yù)期驗(yàn)證的行為 實(shí)現(xiàn)。

開發(fā)一個(gè)功能的過程如下:

  • 創(chuàng)建一個(gè)描述一個(gè)功能被實(shí)現(xiàn)測試。
  • 運(yùn)行這個(gè)測試來確保功能失敗.因?yàn)檫@是沒有實(shí)現(xiàn)之前的預(yù)期。
  • 編寫簡單代碼確保這個(gè)測試通過。
  • 運(yùn)行所有測試確保所有測試都通過。
  • 優(yōu)化代碼確保測試依然可以通過。

走完上面的過程之后,為其他功能或者擴(kuò)展重復(fù)上面測試過程。如果功能發(fā)生變化,測試也需 要跟著變化。

技巧: 如果你覺得你做一些很小很簡單的迭代是在浪費(fèi)時(shí)間,請(qǐng)嘗試覆蓋更多的測試 場景,這樣你就可以在執(zhí)行測試之前做更多的嘗試。如果你的調(diào)試過多,試著做相反的工作。

在做一些具體的實(shí)現(xiàn)之前創(chuàng)建測試的原因是,這允許我們后期專注于我們想要的實(shí)現(xiàn),并且 可以花費(fèi)更多的精力到實(shí)現(xiàn)細(xì)節(jié)。在涉及功能調(diào)整的時(shí)候,這會(huì)使得抽象更合理、測試維護(hù) 更簡單或者使得耦合元件更少。

這種做法的優(yōu)點(diǎn)如下:

  • 在計(jì)劃和實(shí)現(xiàn)發(fā)生變更的時(shí)候,可以讓你在同一時(shí)間只專注于一件事情。
  • 更多功能更詳細(xì)的覆蓋測試的結(jié)果,如果測試都通過好比再也沒有什么問題了。

在很長一段時(shí)間內(nèi),這通常會(huì)給你提供一個(gè)有效的時(shí)間節(jié)省。

技巧: 如果你想了解更多關(guān)于收集軟件需求和建模的原則,最好去學(xué)習(xí)?Domain Driven Development (DDD)。

什么時(shí)候測試,怎么測試?

在測試的時(shí)候,對(duì)于一些相對(duì)復(fù)雜的項(xiàng)目上面的內(nèi)容是非常有意義的,但對(duì)于一些比較 簡單的項(xiàng)目就做的有些極端了。適用場景如下:

  • 項(xiàng)目已經(jīng)很大且復(fù)雜。
  • 項(xiàng)目需求開始變得復(fù)雜起來。項(xiàng)目不斷發(fā)展。
  • 項(xiàng)目歷時(shí)很長。
  • 失敗的代價(jià)非常高。

在現(xiàn)有的實(shí)現(xiàn)行為中進(jìn)行覆蓋測試是非常適合的。

  • 項(xiàng)目是一個(gè)逐步更新的遺產(chǎn)。
  • 你有一個(gè)還沒有經(jīng)過測試的項(xiàng)目要做。

在一些情況下,任何形式的自動(dòng)化測試都是過于極端的:

  • 項(xiàng)目很簡單,也不會(huì)變得復(fù)雜。
  • 過期不再工作的一次性項(xiàng)目。

假如你有很多的時(shí)間,在這種情況下進(jìn)行自動(dòng)測試也很好。

深度閱讀

  • Test Driven Development: By Example / Kent Beck. ISBN: 0321146530.
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)