ホームページ >バックエンド開発 >PHPチュートリアル >テストをテストしますか?誰が監視員を見ますか?
大企業、スタートアップ、またはあなた自身のために働いているかどうかにかかわらず、ユニットテストは有用であるだけでなく、しばしば不可欠です。単体テストを使用してコードをテストしますが、テストが間違っているか不完全な場合はどうでしょうか。テストをテストするために何を使用できますか? 検査官を監督するのは誰ですか?
キーポイント
突然変異テスト
いいえ、それはそのような突然変異ではありません。バリエーションテスト(またはバリエーション分析)は、ソフトウェアテストの品質を作成および評価するために使用される手法です。テストを非常に小さな方法で変更することが含まれます。各修正バージョンはバリアントと呼ばれ、テストは元のバージョンをバリアントとは異なる動作にすることにより、バリアントを検出および拒否します。突然変異は元のコードのエラーであり、分析では、テストがこれらのエラーを検出するかどうかをチェックします。要するに、テストが突然変異の後もまだ有効である場合、それは良いテストではありません。
突然変異テスト
Humbugは、PHPのバリアントテストフレームワークです。 Humbugがコードカバレッジを生成するには、マシンにXDebugをインストールして有効にする必要があります。その後、グローバルツールとしてインストールできます。
<code class="language-bash">composer global require 'humbug/humbug'</code>
の後、実行する場合
<code class="language-bash">humbug</code>コマンドは、いくつかのハンバグのインストール情報と、humbug.jsonファイルがないことを示すエラーを確認できる必要があります。
ブートプログラム
Humbugを構成して使用する前に、テストできるプロジェクトが必要です。単体テストと突然変異テストを実行する小さなPHP計算機パッケージを作成します。 A /Calculatorフォルダーを作成しましょう。その中で、 /SRCおよび /テストフォルダーを作成しましょう。 /SRCフォルダーには、アプリケーションコードがあります。また、パッケージでphpunitを使用する必要があります。最良の方法は、作曲家を使用することです。次のコマンドを使用してphpunitをインストールしましょう
<code class="language-bash">composer global require 'humbug/humbug'</code>計算機を作成しましょう。 /srcフォルダーで、calculator.phpファイルを作成し、次のものを追加します。
これはかなり単純なプログラムです。基本的な算術、パーセンテージおよび対数操作とπ値を返す関数を備えた単純な計算機。次に、 /テストフォルダーで、計算機の単体テストを作成しましょう。 PHPでのユニットテストのサポートが必要な場合は、このチュートリアルをご覧ください。 calculatortest.phpファイルを作成し、以下を追加します
<code class="language-bash">humbug</code>
これは初期のテストスタックになります。 phpunitコマンドを実行すると、それが正常に実行され、4つのテストと4つのアサーションが渡されます。すべてのテストに合格する必要があることが重要です。そうしないと、humbugが失敗します。
<code class="language-bash">composer global require phpunit/phpunit</code>
構成humbug
humbugは、humbug.json.distファイルを作成して、または次のコマンドを実行して自動的に構成することができます。
このコマンドを実行すると、いくつかの質問に答えるように依頼します:
<code class="language-php"><?php namespace package\Calculator; class Calculator { /** * 基本运算 */ public function add($a1, $a2) { return $a1 + $a2; } public function subtract($a1, $a2) { return $a1 - $a2; } public function multiply($a1, $a2) { return $a1 * $a2; } public function divide($a1, $a2) { if ($a2 === 0) { return false; } return $a1 / $a2; } /* * 百分比 */ // 这将返回 a1 的 a2 百分比 public function percentage($a1, $a2) { return ( $a1 / $a2 ) * 100; } /* * π */ // 返回 π 的值 public function pi() { return pi(); } /* * 对数 */ // 返回以 10 为底的基本对数 public function log($a) { return log10($a); } }</code>
どのソースディレクトリを含めたいですか?
ここでは、ソースコードディレクトリであるSRC/を使用します。結果はこれに近いものでなければなりません:
作成された突然変異の数は、テストをテストするためにHumbugによって導入された小さな変更の数にすぎません。殺された突然変異(。)は、テストを引き起こす突然変異です。混乱しないでください、これは前向きな結果です!脱出変異(M)は、まだテストに合格する突然変異です。これは肯定的な結果ではありません。テストに戻って、欠落しているものを確認する必要があります。覆われていない突然変異は、単体テストでカバーされていない行で発生する突然変異です。致命的なエラー(E)とタイムアウト(T)は、それぞれ致命的なエラーを引き起こし、それぞれ無限ループを作成する突然変異です。
バリエーションスコアメトリックは、検出された変異の割合を表します。私たちの目標は100%です。バリエーションコードカバレッジは、突然変異でカバーされているテストの割合を表します。バリエーションスコアメトリックは、既存のテストの有効性についてのアイデアを提供できます。 Humbugログを分析すると、9つの発見された突然変異といくつかの非常に悪いメトリックがあることがわかります。 humblogjson.jsonファイルをご覧ください。このファイルは、humblog.txtファイルのように自動的に生成され、障害の原因、場所、理由に関するより詳細な情報が含まれています。パーセンテージ、π、および対数関数をテストしませんでした。さらに、数値を0で割っている場合をカバーする必要があります。欠落している状況をカバーするためにさらにテストを追加しましょう:
<code class="language-bash">composer global require 'humbug/humbug'</code>
今回は、100%がすべての変異が殺され、完全なコードカバレッジがあることを意味します。
突然変異試験とハンバグの最大の欠点は、パフォーマンスです。バリエーションテストは、コードの行、テストの数、コードカバレッジレベル、コードとテストのパフォーマンスなどの多くの要因に依存するため、プロセスが遅いためです。 Humbugは、初期テストの実行、ロギング、およびコードカバレッジも実行し、合計期間が増加します。さらに、HumbugはPHPunit固有であり、他のテストフレームワークを使用しているユーザーにとって問題になる可能性があります。つまり、Humbugは積極的な開発中であり、改善を続けます。
結論
humbugは、アプリケーションの寿命を維持するための重要なツールになります。アプリケーションの複雑さが増加するにつれて、テストの複雑さも増加し、特にエンタープライズエコシステムを扱う場合は、常に100%のテストを維持することが非常に重要になります。このチュートリアルで使用されているコードは、ここでクローン化できます。 Humbugを使用しましたか?他の方法で突然変異テストを行っていますか?これについてあなたのすべての考えを教えてください!
「インスペクターを監督するのは誰ですか?」 この文の起源は「検査官を監督するのは誰ですか?」
ソフトウェアテストのコンテキストでは、「検査官を監督するのは誰ですか?」テストが適切に機能し、正確な結果が得られるように、誰または何が監視されているかを疑問視します。これは、開発中のソフトウェアの品質と信頼性を保証するため、ソフトウェア開発の重要な側面です。
テストが信頼性と正確であることを確認するにはどうすればよいですか?
ソフトウェアテストの一般的な落とし穴は何ですか?
グラフィック小説「ウォッチマン」とソフトウェアテストの関係は何ですか?
ソフトウェアテスターの役割は何ですか?
ソフトウェアテストスキルを改善するにはどうすればよいですか?
ソフトウェアテストの詳細については、利用できるリソースがたくさんあります。これらには、オンラインコース、本、ブログ、フォーラムが含まれます。いくつかの推奨される本には、グレンフォードJ.マイヤーズによる「ソフトウェアテストの芸術」、「ソフトウェアテスト:The Craftsman Method」によるPaul C. Jorgensen、Seim KarnarとJack Falke "Testing Computer Software" by Huang Q. Ruanが含まれます。
ソフトウェアテストの将来は、技術の進歩によって強く影響を受ける可能性があります。これには、テストにおける自動化と人工知能の使用の増加、およびバーチャルリアリティやブロックチェーンなどの新興技術に適応するための新しいテスト方法の開発が含まれます。ただし、ソフトウェアテストの基本原則 - ソフトウェアの品質と信頼性を確保することは、同じままです。
以上がテストをテストしますか?誰が監視員を見ますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。