PHP測試驅動(dòng)開(kāi)發(fā)介紹 軟件測試
摘要
本文向你介紹測試驅動(dòng)開(kāi)發(fā)的概念,并用一個(gè)簡(jiǎn)單的示例項目來(lái)做示范。
介紹xml:lang="en-us">
開(kāi)發(fā)PHP產(chǎn)品有很多不同的方法。我們大多數傾向于從一個(gè)簡(jiǎn)單的腳本開(kāi)始,逐步向前推進(jìn)。 或許我們可以預先列出我們的腳本,但是我們往往是停留在開(kāi)發(fā)階段,在需要測試的時(shí)候不會(huì )真正的去開(kāi)始測試;旧,我們是先開(kāi)發(fā)后測試。
但是這樣做或許不是最好的辦法,可能會(huì )在今后帶來(lái)問(wèn)題。這就是為什么一些開(kāi)發(fā)者提倡一種不同的開(kāi)發(fā)方式,叫做測試驅動(dòng)開(kāi)發(fā)(TDD)的原因- 就是先測試后開(kāi)發(fā)。
你可能會(huì )疑惑這樣該怎么做,而這正是本文將討論的。我將帶領(lǐng)你們通過(guò)一個(gè)真實(shí)的簡(jiǎn)單項目去示范TDD如何工作。本文和示例項目都基于Noel Darlow(“McGruff”)在論壇中向另一個(gè)論壇成員演示TDD如何工作的討論。
我們的示例項目是一個(gè)Biter類(lèi),它通過(guò)使用正則表達式可以“咬掉”字符串中的片段,就象這樣:
bite ('/pattern/');?>
我們的類(lèi)也將修改原始的字符串,把匹配的部分去除(所以我們叫它“吞噬者”)。
讓我們從設置測試框架開(kāi)始。
設置測試框架
由于我們從測試出發(fā),我們需要有一些測試框架。我將使用SimpleTest 框架,僅僅因為我最熟悉它。
下載一份SimpleTest的拷貝,把它安裝在你本機或者你的服務(wù)器上。然后創(chuàng )建一個(gè)叫做"test_biter.php"的新文件,里面寫(xiě)下面的代碼:
require_once 'simpletest/unit_tester.php';
require_once 'simpletest/reporter.php';
class BiterTestCase extends UnitTestCase {
function testSetup () {
$this->assertTrue(false);
}
}
$test = new BiterTestCase('TDD Biter Test');
$test->run(new HtmlReporter());
?>
讓我們分析一下這個(gè)例子。首先我們包含了一些SimpleTest框架的文件(你要確認一下路徑是否和你的一樣)。接著(zhù)我們建立了一個(gè)叫做 BiterTestCase的新類(lèi),它將用來(lái)測試我們的Biter類(lèi)。象你看到的一樣,BiterTestClase類(lèi)繼承于UnitTestCase 類(lèi),這個(gè)意味著(zhù)BiterTestClass是我們第一個(gè)真正意義上的測試用例。
BiterTestClass類(lèi)只有一個(gè)方法調用叫做'testSetup'。任何以“test”開(kāi)頭的方法都會(huì )被SimpleTest框架自動(dòng)執行,因此它們應該是被用來(lái)測試項目中的某個(gè)部分。在上面的例子中,我們通過(guò)調用assertTrue()方法來(lái)確認框架被正確設置。
例子中的后面兩行是建立一個(gè)測試用例的實(shí)例,然后運行所有測試。如果所有設置都正確的話(huà),你會(huì )得到下面的輸出:
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/