大企業、スタートアップ、またはあなた自身のために働いているかどうかにかかわらず、ユニットテストは有用であるだけでなく、しばしば不可欠です。単体テストを使用してコードをテストしますが、テストが間違っているか不完全な場合はどうでしょうか。テストをテストするために何を使用できますか? 検査官を監督するのは誰ですか?
キーポイント
- バリエーションテストは、少数の変更されたテストで品質を評価する手法であり、テスト自体のテストに使用できます。元のテストの「バリアント」またはバリアントを作成し、これらの変更がテストによって検出されるかどうかを確認することが含まれます。
- Humbugは、コードカバレッジを生成するために使用できるPHPのバリアントテストフレームワークです。ただし、PHPunit固有であり、異なるテストフレームワークを使用しているユーザーにとって問題がある可能性があります。
- バリアントテストは価値がありますが、主にパフォーマンスに反映されている欠点もあります。これは、コード行の相互作用、テスト数、コードカバレッジのレベル、コードとテストのパフォーマンスなどの多くの要因に依存するため、これは遅いプロセスです。
- アプリケーションの複雑さが増すと、100%のコードカバレッジを維持することの重要性が増加します。 Humbugのようなツールは、特にエンタープライズエコシステムでこのようなカバレッジを維持するために重要です。
突然変異テスト
いいえ、それはそのような突然変異ではありません。バリエーションテスト(またはバリエーション分析)は、ソフトウェアテストの品質を作成および評価するために使用される手法です。テストを非常に小さな方法で変更することが含まれます。各修正バージョンはバリアントと呼ばれ、テストは元のバージョンをバリアントとは異なる動作にすることにより、バリアントを検出および拒否します。突然変異は元のコードのエラーであり、分析では、テストがこれらのエラーを検出するかどうかをチェックします。要するに、テストが突然変異の後もまだ有効である場合、それは良いテストではありません。
突然変異テスト
Humbugは、PHPのバリアントテストフレームワークです。 Humbugがコードカバレッジを生成するには、マシンにXDebugをインストールして有効にする必要があります。その後、グローバルツールとしてインストールできます。
composer global require 'humbug/humbug'
の後、実行する場合
humbugコマンドは、いくつかのハンバグのインストール情報と、humbug.jsonファイルがないことを示すエラーを確認できる必要があります。
ブートプログラム
Humbugを構成して使用する前に、テストできるプロジェクトが必要です。単体テストと突然変異テストを実行する小さなPHP計算機パッケージを作成します。 A /Calculatorフォルダーを作成しましょう。その中で、 /SRCおよび /テストフォルダーを作成しましょう。 /SRCフォルダーには、アプリケーションコードがあります。また、パッケージでphpunitを使用する必要があります。最良の方法は、作曲家を使用することです。次のコマンドを使用してphpunitをインストールしましょう
composer global require 'humbug/humbug'計算機を作成しましょう。 /srcフォルダーで、calculator.phpファイルを作成し、次のものを追加します。
これはかなり単純なプログラムです。基本的な算術、パーセンテージおよび対数操作とπ値を返す関数を備えた単純な計算機。次に、 /テストフォルダーで、計算機の単体テストを作成しましょう。 PHPでのユニットテストのサポートが必要な場合は、このチュートリアルをご覧ください。 calculatortest.phpファイルを作成し、以下を追加します
humbug
これは初期のテストスタックになります。 phpunitコマンドを実行すると、それが正常に実行され、4つのテストと4つのアサーションが渡されます。すべてのテストに合格する必要があることが重要です。そうしないと、humbugが失敗します。
composer global require phpunit/phpunit
構成humbug
humbugは、humbug.json.distファイルを作成して、または次のコマンドを実行して自動的に構成することができます。
このコマンドを実行すると、いくつかの質問に答えるように依頼します:
<?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); } }
どのソースディレクトリを含めたいですか?
ここでは、ソースコードディレクトリであるSRC/を使用します。- ソースディレクトリからどのディレクトリを除外したいですか? は、テストしたくない外部ベンダーディレクトリなど、場合によっては役立ちます。現在の状況には適用されません。
- シングルテストスイートタイムアウト(秒)。 これを30秒間使用しましょう。これは多すぎるかもしれませんが、すべてが実行するのに十分な時間があることを確認したいと考えています。
- テキストログはどこに保存しますか? humblog.txtデフォルト値として、保持します。
- JSONログをどこに保存しますか(必要に応じて)? デフォルト値は空ですが、humblogjson.jsonに保存します。
- 「humblog.json.dist」を生成しますか?このファイルが生成された後、提供されたばかりのすべての構成値が含まれます。何かを変更したい場合は、手動で編集できます。
- humbug を使用します
結果はこれに近いものでなければなりません:
ハンバグの結果の解釈
作成された突然変異の数は、テストをテストするためにHumbugによって導入された小さな変更の数にすぎません。殺された突然変異(。)は、テストを引き起こす突然変異です。混乱しないでください、これは前向きな結果です!脱出変異(M)は、まだテストに合格する突然変異です。これは肯定的な結果ではありません。テストに戻って、欠落しているものを確認する必要があります。覆われていない突然変異は、単体テストでカバーされていない行で発生する突然変異です。致命的なエラー(E)とタイムアウト(T)は、それぞれ致命的なエラーを引き起こし、それぞれ無限ループを作成する突然変異です。
インジケータはどうですか?
バリエーションスコアメトリックは、検出された変異の割合を表します。私たちの目標は100%です。バリエーションコードカバレッジは、突然変異でカバーされているテストの割合を表します。バリエーションスコアメトリックは、既存のテストの有効性についてのアイデアを提供できます。 Humbugログを分析すると、9つの発見された突然変異といくつかの非常に悪いメトリックがあることがわかります。 humblogjson.jsonファイルをご覧ください。このファイルは、humblog.txtファイルのように自動的に生成され、障害の原因、場所、理由に関するより詳細な情報が含まれています。パーセンテージ、π、および対数関数をテストしませんでした。さらに、数値を0で割っている場合をカバーする必要があります。欠落している状況をカバーするためにさらにテストを追加しましょう:
composer global require 'humbug/humbug'
今回は、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 サイトの他の関連記事を参照してください。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

ストレージ:: Laravelフレームワークのダウンロード方法は、ファイルストレージの抽象化を管理しながら、ファイルのダウンロードを安全に処理するための簡潔なAPIを提供します。 サンプルコントローラーでストレージ::ダウンロード()を使用する例は次のとおりです。

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Laravelのサービスコンテナとサービスプロバイダーは、そのアーキテクチャの基本です。 この記事では、サービスコンテナ、詳細サービスプロバイダーの作成、登録、および実用的な使用法を例で説明します。 Oveから始めます


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック









