PHP 自動化測試架構的原理和實現
在清單 3中的運行樣本中,實際的執行語句是 “ $HOME/php-5.2.8/sapi/cli/php run-tests.php $HOME/php-5.2.8/sapi/cli/tests/001.phpt ” 。其中,“ 001.phpt ” 是測試指令碼;“ run- tests.php ” 為 PHP 測試的驅動指令碼,是官方指令碼;而 “ $HOME/php-5.2.8/sapi/cli/php ” 是運行 驅動指令碼的 PHP 可執行對象。這裡需要指出的一點是,環境變數 TEST_PHP_EXECUTABLE 中設定的 PHP 可執行對象和這裡運行測試指令碼中的 “ $HOME/php-5.2.8/sapi/cli/php ” 雖然指向的是同一個可執行 對象,但其意義是不一樣的。環境變數 TEST_PHP_EXECUTABLE 中設定的 PHP 是被測試對象,而運行測試 中使用的 “ $HOME/php-5.2.8/sapi/cli/php ” 只是為了用來驅動測試指令碼運行。
在圖 1 中可以具體的看出 PHP 測試過程中兩個 PHP 可執行對象及兩個 PHP 指令碼的關係。在測試的 過程中,首先是由 “ $HOME/php-5.2.8/sapi/cli/php ” 去運行指令碼 “ run-tests.php ” (第 1 步 )。 在 “ run-tests.php ” 指令碼中,將解析環境變數的值 “ TEST_PHP_EXECUTABLE =$HOME/php- 5.2.8/sapi/cli/php ” (第 2 步)。這裡 PHP 可執行對象是被測試的 PHP 。“ run-tests.php ” 指令碼中還將把測試指令碼 “ 001.phpt ” 中的 FILE 段解析為 PHP 指令碼 “ 001.php ” (第 3 步), 用 “ TEST_PHP_EXECUTABLE ” 設定的那個 PHP 可執行對象去執行 “ 001.php ” (第 4 步)並得到 實際輸出結果,在比對實際輸出結果和 EXPECT 段的期待結果後,輸出測試結果(第 5 步)。以上運行 過程可以從對 “ run-tests.php ” 指令碼的分析中得出。
圖 1. PHP 測試回合關係圖