第4章 自動テストと品質保証 自動テストと品質保証
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
テストと品質保証(QA)は、通常、新しいソフトウェアコードが本番環境にデプロイされる前に通らなけ ればならない最後の関門である。QAの最終的な目的は、コードレビュー(前章で説明)を通過したバグや目立つ問題を発見し、本番環境への投入を回避することである。
QAプロセスは、コードが開発され、レビューされ、コードベースにマージすることが承認された後に行われる。テストとQAの間には、時々概念が混同されることがある。おそらく、伝統的に関与してきた関係者が、会社によってテストエンジニアと呼ばれたり、QAエンジニアと呼ばれたりするからだろう。しかし、どのような呼称であろうと、彼らは通常、この章で扱うプロセスを担当している。
一般的に、QA プロセスは、コードレビュープロセスを逃れたバグを捕捉するために、本番環境と密接に一致し、 ユーザの振る舞いを模倣した環境で、手動テストや自動テストを実施することから一貫性を持つ。
テスト/QA中にそのようなバグが発見された場合、その機能は開発ステータスにリグレッションされる。実装を担当した元のソフトウェア・エンジニアは、その機能を再度レビューとQAに回す前に問題を修正しなければならない。これらの回帰ループは、最終的にデプロイされるコードが本当にバグフリーであることを保証することを目的としている。
これらのプロセスは、どのソフトウェア開発チームにとっても重要である。自動と手動の2つに大別できる。
- 自動テスト
-
自動テストは、アプリケーション上で事前にスクリプト化されたテストを実行するために、特殊化されたソフトウェアツールを用いる。このメソッドは、新しいコード変更を検証するために必要な時間を短縮するため、パターンと繰り返しのテストに非常に効率的である。自動化は一貫性と精度を保証し、ヒューマンエラーのリスクを最小化し、広範なテストカバレッジを可能にする。自動テストは24時間実行することができ、迅速なフィードバックを提供し、継続的インテグレーションと継続的デリバリ(CI/CD)パイプラインを可能にする。自動テストの初期化には労力が必要であり、その維持にも労力がかかるが、長期的な利点としては、リリースサイクルの短縮、精度の向上、不具合の迅速な検出と対処が可能になることなどが挙げられる。
- 手動テスト
-
手動テストでは、自動化ツールの支援を受けずに、人間のテスト担当者がテストケースを綿密に実行する。エンドユーザの振る舞いをシミュレートして不具合を特定し、実世界のシナリオでソフトウェアが期待通りに動作することを確認する。このアプローチは、微妙な理解と適応性を可能にし、ユーザインタフェースの不具合やユーザビリティの懸念など、自動化されたスクリプトが見逃す可能性のある問題をしばしば捕捉する。手動のテストは時間と労力がかかるが、予期せぬバグを発見し、シームレスなユーザ体験を確保する上で創造性と直感が重要な探索的テストには不可欠であることに変わりはない。
QAはその自然さゆえ、綿密で慎重なプロセスであり、しばしば機能の本番稼働を遅らせるボトルネックとなる。そのため、このプロセスのさまざまな部分を高速化するAIツールの市場がある。この章では、特に2つのツールに焦点を当てる。
AIは、自動テストのあらゆる側面を変えつつある。例えば、ごく最近まで、テストの自動化には複雑なスクリプトを書く必要があった。しかし現在では、多くの自動テストツールが、コードを一行も書かずにテストを作成する行を提供している。シンプルでわかりやすい英語で、ソフトウェア・アプリケーションのすべての構成要素と機能をチェックする自動化テストを作成できる。ビジュアル・テストも、ビジュアル・バグを自動的に検出するAI搭載ツールによって簡素化され、ユーザ・インタフェースが意図したとおりに見え、動作することを保証する。これらの改善により、テストプロセスはより効果的かつ効率的になり、テスト担当者はソフトウェア全体の品質向上に集中できるようになる。 ...