自動測試
讓程式來幫我們做測試,自動幫我們驗證結果是否正確。
加入自我測試程式
在 cart.php
尾端加入以下程式碼:
<?php
// ... 加入以下程式碼
// 測試碼
if (isset($argv[1]) && 'test' === strtolower($argv[1])) {
$cart = new Cart();
// Test 1
$quantities = [
1, 0, 0, 0, 0, 0,
];
$cart->updateQuantities($quantities);
if (199 !== $cart->getTotal()) {
echo "Test 1 failed!\n";
} else {
echo "Test 1 OK!\n";
}
// Test 2
$quantities = [
1, 0, 0, 2, 0, 0,
];
$cart->updateQuantities($quantities);
if (797 !== $cart->getTotal()) {
echo "Test 2 failed!\n";
} else {
echo "Test 2 OK!\n";
}
}
執行以下指令:
C:\project> php cart.php debug
Test 1 OK!
Test 2 OK!
優點
不需要開啟瀏覽器,直接測試關鍵程式。
將預期結果寫在程式中,直接用程式比對。
缺點
測試不是只有比對值的相等,常見的模式還有:
- 是否為某變數類型
- 陣列是否包含某值
- 類別是否有某屬性
- 是否有預期的錯誤
每一種比對模式都要寫好多程式,結果用程式寫測試反而增加了負擔。
測試要能夠自動化,最好是幫我們定義好所有可能的比對模式。
練習
思考看看手動測試和自動測試的差異是什麼?
把測試寫在要測試的程式中有什麼好處或風險?