概述(Overview)

2018-02-24 15:40 更新

測(cè)試

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

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

帶著測(cè)試進(jìn)行開(kāi)發(fā)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

深度閱讀

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)