banner

ブログ

May 31, 2023

最新の CI/CD パイプラインのための効果的なテスト自動化アプローチ

InfoQ ホームページ アーティクル 最新の CI/CD パイプラインのための効果的なテスト自動化アプローチ

この商品は日本語で表示されます

2023 年 5 月 31 日 20 分で読む

による

クレイグ・リシ

によってレビュー

マット・キャンベル

CI/CD の台頭は、ソフトウェア テストの世界に大きな影響を与えました。 開発者はソフトウェアの更新が成功したかどうかについてパイプラインに迅速なフィードバックを提供することを要求しているため、多くのテスト チームは既存のテスト自動化アプローチを見直し、品質を犠牲にすることなく配信を高速化できる方法を見つけることを余儀なくされています。 テストの世界では、これら 2 つの要素が互いに矛盾することがよくあります。これは、テスト担当者が希望するテスト カバレッジを可能な限り徹底的に達成しようとする際に、時間が最大の敵となることが多いためです。

では、CI パイプラインが迅速にフィードバックを返すという期待に応えながら、高品質の自動テストを確実に提供できるようにするには、チームはこの重要な変更にどのように対処すればよいでしょうか? これについてはさまざまな見方がありますが、理解することが重要なのは、ソリューションは技術的なものではなく、より文化的なものであるということです。テスト フレームワークに対する大幅な技術的な強化ではなく、テストへのアプローチを移行する必要があるということです。

おそらく最も明白なことは、左にシフトすることです。 「シフトレフト」(主に設計と単体テストのレベルで、テストが開発サイクルの早い段階に移される)という考え方は、業界ではすでに一般的なものであり、多くの組織によって推進されており、ますます一般的になりつつあります。 単体テストに重点を置くことは、コードを迅速にテストし、迅速なフィードバックを提供するための良い方法です。 結局のところ、単体テストはほんのわずかな時間で実行され (コンパイル中に実行でき、システムの残りの部分とさらに統合する必要がないため)、適切に実行すれば良好なテスト範囲を提供できます。

多くのテスターが単体テストの概念を敬遠しているのを見てきました。単体テストはコードの非常に小さなコンポーネントに対するテストを作成するものであり、重要なことが見逃される危険性があるからです。 これは多くの場合、単体テスト自体の失敗ではなく、プロセスの可視性の欠如や単体テストの理解不足による単なる恐怖です。 単体テストの強力なベースがあると、コードが CI パイプラインで構築されるときに迅速に実行できるため、機能します。 できるだけ多くの種類を用意し、可能な限りあらゆる種類のシナリオをカバーすることが合理的です。

最大の問題は、多くのチームがそれを正しく行う方法を常に知っているわけではないことです。 まず、単体テストはチェック ボックスのアクティビティとして扱うべきではなく、テスターが通常適用するテスト設計への適切な分析とコミットメントを持って取り組む必要があります。 これは、単体テストを開発者の手に委ねるだけではなく、テスターをプロセスに参加させる必要があることを意味します。 テスターがコーディングに詳しくない場合でも、テストでどのパラメータを探すべきか、後でテストする統合機能に適切な結果を提供するためにアサートする適切な場所を特定するのに役立ちます。 テスト専門家を単体テストのアプローチから除外すると、単体テストでいくつかの重要な検証領域が見逃される可能性があります。 これが、多くのテスターが単体テストの評価を悪くしていると聞く理由です。 それは単体テストが効果がないからではなく、単に適切なシナリオをカバーしていないことが多いからです。

テスターを早期に参加させることの 2 番目の利点は、単体テストの取り組みが可視化されることです。 テスターは自動テストですでにカバーされているものを単にテストするだけになってしまうため、チームがテスト作業を重複して浪費する可能性のある時間 (およびお金) の量は、おそらく非常に多くなります。 独立した検証を行うべきではないというわけではありませんが、シナリオがすでにカバーされている場合は、過度に検証する必要はありません。 代わりに、テスターは、より優れた探索的テストを提供できるようにすることに集中するだけでなく、他の方法では決してカバーできなかったエッジ ケースの統合テストに独自の自動化の取り組みに集中することができます。

共有