#PHP コード テスト機能のブラック ボックス テストとホワイト ボックス テスト技術の分析
はじめに:
テストは、PHP アプリケーションを開発および保守する際に非常に重要です。リンク。テストを通じて、コードの正確性、安定性、セキュリティを検証し、アプリケーションの品質を向上させることができます。この記事では、PHP コードのテスト機能に焦点を当て、一般的に使用される 2 つのテスト手法、ブラック ボックス テストとホワイト ボックス テストに焦点を当て、理解を深めるためにいくつかのコード例を示します。
1. ブラック ボックス テスト
ブラック ボックス テストは、テスト対象のプログラムをブラック ボックスとして扱い、プログラムの内部実装の詳細は考慮せず、入出力のみを考慮する機能テスト手法です。 。ブラック ボックス テストによく使用される 3 つの手法には、同値クラス分割、境界値分析、および誤差推測が含まれます。
例 1:
/** * 判断输入年份是否为闰年(能被4整除但不能被100整除,或者能被400整除) * * @param int $year * @return bool */ function isLeapYear($year) { if (($year % 4 == 0 && $year % 100 != 0) || $year % 400 == 0) { return true; } else { return false; } } // 测试用例 assert(isLeapYear(2000) === true); // 基本等价类:2000为能被400整除的年份,属于闰年 assert(isLeapYear(1900) === false); // 基本等价类:1900为能被100整除但不能被400整除的年份,不属于闰年 assert(isLeapYear(2020) === true); // 附加等价类:2020为能被4整除但不能被100整除的年份,属于闰年 assert(isLeapYear(2021) === false); // 附加等价类:2021为既不能被4整除也不能被100整除的年份,不属于闰年
例 2:
/** * 判断输入的数值是否在范围内 * * @param int $number * @return bool */ function isInRange($number) { if ($number >= 10 && $number <= 100) { return true; } else { return false; } } // 测试用例 assert(isInRange(5) === false); // 边界情况:最小边界值,不在范围内 assert(isInRange(10) === true); // 边界情况:最小边界值,正好在范围内 assert(isInRange(50) === true); // 正常情况:在范围内 assert(isInRange(100) === true); // 边界情况:最大边界值,正好在范围内 assert(isInRange(200) === false); // 边界情况:最大边界值,不在范围内
例 3:
/** * 判断输入的字符串是否为有效的邮箱地址 * * @param string $email * @return bool */ function isValidEmail($email) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } // 测试用例 assert(isValidEmail('abc@domain.com') === true); // 正常情况:有效的邮箱地址 assert(isValidEmail('abc@domain.') === false); // 异常情况:无效的邮箱地址,缺少顶级域名 assert(isValidEmail('abc@@domain.com') === false); // 异常情况:无效的邮箱地址,多个@符号 assert(isValidEmail('abc@domain') === false); // 异常情况:无效的邮箱地址,缺少顶级域名
2. ホワイトボックス テスト
ホワイトボックス テストは、プログラム内の実装の詳細に焦点を当てた構造的なテスト方法です。プログラムの構造とロジックを理解することで、各分岐とパスの実行を検証するための適切なテスト ケースを設計します。ホワイト ボックス テストには、ステートメント カバレッジ、決定カバレッジ、条件カバレッジの 3 つの一般的に使用される手法があります。
例 4:
/** * 计算两个数的和 * * @param int $a * @param int $b * @return int */ function sum($a, $b) { if ($a > $b) { return $a + $b; } else { return $b; } } // 测试用例 assert(sum(3, 5) === 8); // 正常情况:$a > $b assert(sum(5, 3) === 8); // 正常情况:$a < $b assert(sum(5, 5) === 5); // 边界情况:$a = $b
例 5:
/** * 判断输入的数值是否为正数 * * @param int $number * @return bool */ function isPositive($number) { if ($number > 0) { return true; } else { return false; } } // 测试用例 assert(isPositive(5) === true); // 正常情况:正数 assert(isPositive(0) === false); // 边界情况:零不是正数 assert(isPositive(-5) === false); // 正常情况:负数不是正数
例 6:
/** * 判断输入的两个数值是否相等 * * @param int $a * @param int $b * @return bool */ function isEqual($a, $b) { if ($a == $b || $a - $b < 1e-6) { return true; } else { return false; } } // 测试用例 assert(isEqual(5, 5) === true); // 正常情况:两个数值相等 assert(isEqual(5, 4.999999) === true); // 正常情况:两个数值相差很小 assert(isEqual(5, 4) === false); // 正常情况:两个数值不相等
結論:
この記事の導入部を通じて、PHP コードのテストで一般的に使用されるブラック ボックス テストとホワイト ボックス テストの手法について学びました。 。ブラック ボックス テストは入力と出力に焦点を当て、等価クラス分割、境界値分析、誤差推測を通じてテスト ケースを設計します。ホワイトボックス テストは内部構造に焦点を当て、ステートメント カバレッジ、決定カバレッジ、条件カバレッジを通じてテスト ケースを設計します。適切なテスト手法を採用することで、PHP コードをより包括的にテストし、アプリケーションの品質と安定性を向上させることができます。
以上がPHPコードテスト機能のブラックボックステストとホワイトボックステスト技術の解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。