ホームページ >バックエンド開発 >PHPチュートリアル >テストをテストしますか?誰が監視員を見ますか?

テストをテストしますか?誰が監視員を見ますか?

Christopher Nolan
Christopher Nolanオリジナル
2025-02-14 09:41:10334ブラウズ

Testing Your Tests? Who Watches the Watchmen?

大企業、スタートアップ、またはあなた自身のために働いているかどうかにかかわらず、ユニットテストは有用であるだけでなく、しばしば不可欠です。単体テストを使用してコードをテストしますが、テストが間違っているか不完全な場合はどうでしょうか。テストをテストするために何を使用できますか? 検査官を監督するのは誰ですか? Testing Your Tests? Who Watches the Watchmen?

キーポイント

  • バリエーションテストは、少数の変更されたテストで品質を評価する手法であり、テスト自体のテストに使用できます。元のテストの「バリアント」またはバリアントを作成し、これらの変更がテストによって検出されるかどうかを確認することが含まれます。
  • Humbugは、コードカバレッジを生成するために使用できるPHPのバリアントテストフレームワークです。ただし、PHPunit固有であり、異なるテストフレームワークを使用しているユーザーにとって問題がある可能性があります。
  • バリアントテストは価値がありますが、主にパフォーマンスに反映されている欠点もあります。これは、コード行の相互作用、テスト数、コードカバレッジのレベル、コードとテストのパフォーマンスなどの多くの要因に依存するため、これは遅いプロセスです。
  • アプリケーションの複雑さが増すと、100%のコードカバレッジを維持することの重要性が増加します。 Humbugのようなツールは、特にエンタープライズエコシステムでこのようなカバレッジを維持するために重要です。

突然変異テスト

Testing Your Tests? Who Watches the Watchmen? いいえ、それはそのような突然変異ではありません。バリエーションテスト(またはバリエーション分析)は、ソフトウェアテストの品質を作成および評価するために使用される手法です。テストを非常に小さな方法で変更することが含まれます。各修正バージョンはバリアントと呼ばれ、テストは元のバージョンをバリアントとは異なる動作にすることにより、バリアントを検出および拒否します。突然変異は元のコードのエラーであり、分析では、テストがこれらのエラーを検出するかどうかをチェックします。要するに、テストが突然変異の後もまだ有効である場合、それは良いテストではありません。

Humbugを使用した

突然変異テスト

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/を使用します。
  • ソースディレクトリからどのディレクトリを除外したいですか? は、テストしたくない外部ベンダーディレクトリなど、場合によっては役立ちます。現在の状況には適用されません。
  • シングルテストスイートタイムアウト(秒)。 これを30秒間使用しましょう。これは多すぎるかもしれませんが、すべてが実行するのに十分な時間があることを確認したいと考えています。
  • テキストログはどこに保存しますか? humblog.txtデフォルト値として、保持します。
  • JSONログをどこに保存しますか(必要に応じて)? デフォルト値は空ですが、humblogjson.jsonに保存します。
  • 「humblog.json.dist」を生成しますか?このファイルが生成された後、提供されたばかりのすべての構成値が含まれます。何かを変更したい場合は、手動で編集できます。
  • humbug
  • を使用します
アプリケーションを実行してテストし、Humbugをインストールしたので、Humbugを実行して結果を確認しましょう。

結果はこれに近いものでなければなりません:

ハンバグの結果の解釈

作成された突然変異の数は、テストをテストするために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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。