どのようなソフトウェアテストを知っていますか?テスト駆動開発、ユニットテストなどについて聞いたことがありますが、それらの重要性と違いを理解できません。たとえば、なぜ回帰テストや受け入れテストを使用するのでしょうか。彼らが提供する利点は何ですか?
私の心の広いカテゴリーは:
ブラックボックステスト 。アプリケーションやシステムの内容が隠されているため、コードを見ることができず、ある程度盲目的にテストしているだけです。したがって、この場合、人々はすべてのエラーケースを知っているわけではなく、すべてのケースを見つけるのが明白な場合とそうでない場合があるさまざまな境界条件を推測する必要があります。
ホワイトボックステスト 。コードを確認し、使用されているコード経路を確認できるため、 コードカバレッジ をメトリックとして使用して、すべてのロジックがシステムで使用されていることを確認できます。ここでの考え方は、コードがどのようにテストをガイドするのに役立つかを知ることで、ブラックボックステストほど不思議ではありません。
グレーボックステスト は、前の2つを組み合わせたものです。
境界ケースは、ヒットするテストを記述するコードで確認するさまざまな条件があるため、ホワイトボックステストで確認できるものになる傾向があります。数値を要求するプログラムがあり、誰かがXを入力した場合、これがどのように処理されるかは、コードのどこかに示されているはずです。
テストの一般的な分類は次のとおりです。
単体テスト 。これらは一般的に、かなり具体的なものをテストする最小のテストです。このメソッドはこの境界ケースを処理しますか? 依存性注入 は、テストの依存性を減らすために mock オブジェクトが関係する場合に使用できます。
統合テスト 。これらは、いくつかのコンポーネントが接続されているテストであり、テストが実行されて、コンポーネントが適切に連携することを確認します。単体テストは独立して動作する可能性がありますが、これらのテストがさまざまな問題を捕捉するのに役立つ原因となるレイヤー間の誤通信がある可能性があるため、ここで物事がうまくいくかどうかのテストが行われます。 エンドツーエンドテスト という用語は、コンポーネントの完全なチェーンが「アプリケーションのエンドポイントから別のエンドポイントへ」(それが何であれ)からテストされる統合テストに使用されます。
回帰テスト 。これらは過去に行われたテストであり、修正された内容が修正されたままであり、バグがコードに再導入されていないことを確認するために再度実行されます。
ユーザビリティテスト 。これらは、エンドユーザーがソフトウェアをどのように操作してさまざまなタスクを完了することができるかを確認するために行われるテストです。何かをより速くするために自動化したり、より使いやすいようにUIを調整したりできる場所。
ユーザー受け入れテスト 。これらはエンドユーザーによって行われるテストであり、何かがどのように機能するかを直接確認し、ソフトウェアがそもそもそれを要求したビジネスニーズを満たしていることに同意することができます。
機能テスト は、テスト対象のソフトウェアの機能仕様に基づくすべての種類のテストです。これらは常にブラックボックステストです。
パフォーマンステスト 。これらは、システムが遅くなりすぎずに一定量の負荷を処理できることを確認するために行われるテストです。たとえば、サーバーの新しいWebファームをテストすると、サイトに同時にアクセスする100人のユーザーを処理できますが、これはパフォーマンステストの例です。これらは、「負荷テスト」または「ストレステスト」とも呼ばれます。一般に、ここでの考え方は、システムを限界までプッシュするか、システムが別の部門からの予測を処理できることを確認することです。これらのテストの理論的根拠は、ボトルネックを発見し、これに関する問題に対処するために少なからずの作業を必要とする最適化するための多くの構成設定があることが多いことです。ここでのボトルネックは、メモリ、I/O、CPU、またはネットワーク帯域幅であり、システムが期待どおりに応答しなくなる可能性があります。これには、一般に、負荷のシミュレーションと、システムを監視してボトルネックを特定するためのツールが必要です。
テスト駆動開発 は方法論であり、特定の種類のテストを参照するのではなく、テストがコードの前に記述されるため、テストは開発を駆動するものではなく 動作 、 domain 、または feature は、プロセスに関する他のいくつかの例です。
継続的インテグレーション は、ユニット、インテグレーション、リグレッションテストなどのいくつかのテストを定期的に実行して、変更がテストに違反した場合に、これを可能な限り早期に捕捉する方法です。
回帰テストは、システムへの新しい変更が既存の機能を破壊していないことを確認するために実行されます想定変更による影響を受けていなかった。
受け入れテストは通常、顧客/クライアント/ビジネスユーザーによって行われ、他の形式のテストよりも高レベルであることが多く、変更をリクエストした人が満足できるように行われ、変更をお客様に宣伝できるようになります。生産システム。