まず、単体テストと呼ばれるかどうかはわかりません。名前が違う場合は、お気軽に修正してください。
私は現在、このようなWebアプリケーションを開発しています。
値をデータベースに保存するフォームを開発しているとしましょう。私は HTML と PHP を開発しています。私はときどきブラウザで F5 キーを押して、HTML/jQuery にバグがなく、PHP でセミコロンの欠落などのエラーが発生しないかどうかを確認します。
完成し、すべてをテストする準備ができたら、コードの小さな部分のテストを開始します。お気に入り;
- - $_POST 配列は、フォーム ファイルから値を正しく取得しますか? (print_rでテストしています)
- -「$email」変数は、有効な電子メールになるように正しくサニタイズされていますか? (たとえば、aaa@bbb、aa@bb.com、a@@b.net など、さまざまな可能性でテストします。)
- -送信されたフォームはすべてのコントロールを通過し、データベースに正常に挿入されていますか? (MySQL テーブルを確認します。)
- - フォームにエラー/成功メッセージが正しく表示されていますか?
- -...等。
正しい値で動作し、間違った値で失敗した場合。フォームは意図したとおりに機能しており、バグはないと信じているので、別の作業に進みます。
これを行う代わりに、物事が完全に機能することを確認したいのですが、それ以外の場合は、ブラウザーで F5 をスパムすることなく問題について通知します。
このような;
<?php
/* Unit Testing Start --
-ensure: isset($_POST['submit']) returns TRUE;
-ensure: isset($email) returns TRUE;
-ensure: isValidEmail($email) returns TRUE;
-ensure: connectDatabase() returns TRUE;
-ensure: getMysqlAffectedRows() returns 1;
-ensure: hasErrors() returns false;
*/
?>
私のフォームコードは、上に投稿した関数を使用しています。
実行すると、次のようなメッセージが表示されるはずです: (ログも記録することをお勧めします)
Test complete. Tested (6) possibilities, (4) succeeded, (2) failed.
Failed 1: isValidEmail() returned FALSE, expected: TRUE.
Failed 2: getMysqlAffectedRows returned NULL/0, expected INTEGER 1.
このようなことで、多くの時間を節約でき、コードの保守が容易になります。
私はこれをしたくありません:
$email = 'xxx@yyy.com';
echo isValidEmail($email) ? 'true' : 'false';
次に、PHP スクリプトからこれらの行を消去する必要があります。手動で削除しない限り、テストは永遠にそこにとどまる必要があります。それらはコメントのようにする必要があるため、本番 Web サイトでは実行されません。ただし、私の開発用 PC では、インストールする必要があるものはすべてインストールし、それらのコメントを解析/ログに記録する必要があります。
それで、ええ。それで全部です。質問に移りましょう:
PHPでできることはありますか?もしそうなら、どうすればこれを行うことができますか?
それは何と呼ばれますか、単体テストですか、それとも何ですか?
開発したものをどのようにテストしますか?
皆さんはどうやって巨大な Web アプリケーションを心配せずに開発できるのでしょうか? 「この機能を変更すると、ウェブサイト全体が壊れる可能性があります。」? また、機能を変更しても何も壊れていないことをどのように確信していますか? X ページは正常に動作するかもしれませんが、以前は考えられなかったことが原因で Y ページが壊れている可能性があります。同様に、X ページを 3 で割るとうまくいくかもしれませんが、Y ページを 0 で割ると間違いなくエラーになりますが、X ページだけをチェックしましたか?
私の質問に答えて、私がより良い開発者になるのを手伝ってくれたら、本当にうれしいです。
ありがとう!