継続的テストの手引き

この記事はRaj Subrameyerによるゲスト投稿です。

組織はかつてないスピードで高品質の製品をリリースしようと奮闘しています。現在の市場で競争力を維持するためのプレッシャーは相当なものです。この市場での生き残りを可能にする人気のアジャイルアプローチがDevOpsです。

DevOpsは開発プロセスから無駄を省くのに役立ちます。そして、DevOpsの導入を成功させる鍵となるコンポーネントが継続的テスト(CT)です。

DevOpsにおける継続的テストとは

従来、QAは機能がQA環境にプッシュされて初めてアプリケーションのテストを開始していました。このアプローチの問題は、開発プロセスの後期に欠陥が見つかるため、結局、その時点では修正に時間とコストがかかりすぎるという点にありました。

継続的テスト(CT)では、テストは早期の計画フェーズから実施され、運用および監視フェーズまで開発プロセス全体を通して継続します。これは、「シフトレフト」パラダイムとも関連します。

CTでは、開発プロセスの各ステージで即座にアプリケーションに関するフィードバックが返されます。コードがチェックインされるたびに自動テストが実行されるため、すばやく情報を得て決定を下すことができます。

また、運用環境で致命的な欠陥が見つかり、無用なコスト、時間、労力を要するリスクを軽減できます。鍵となるのは、できるだけ早期にテストし、できるだけ早く欠陥を見つけることです。

TestRail製品ページ

継続的テストを軌道に乗せる

1.既存のテストプロセスの穴を特定する

CT導入の手順を計画する前に、CTでどのような既存の問題を解決できる可能性があるかを把握しておきましょう。現在のテスト成果物、テストプロセス(手動テスト、自動テスト、探索テストなどが含まれるでしょう)、見つかった欠陥のタイプを見直し、品質の高い機能のタイムリーなリリースを妨げているボトルネックを突き止めます。

これらの情報は、どのようにCTを導入し、どのようなテストを含め、開発プロセスのさまざまなステージで実行するかを決定するのに役立ちます。

2.インフラをセットアップする

作業を支援する適切なインフラの準備も、シームレスなCTパイプライン構築の一部です。これには以下のような作業が含まれます。

  • チームを再調整する
  • 運用時と同様のデータを開発、QA、ステージング環境に統合する
  • デプロイメントプロセスを変更する
  • さまざまなブランチにコードがチェックインされるたびに自動テストが実行されるようセットアップする
  • APIテストでサービス仮想化を使用する
  • ビルド、デプロイメント、リリースサイクルを自動化するTravis CIなどのCI/CDツールを準備する
  • DockerおよびKubernetesを使用したコンテナー化を実装する
  • テストをすばやくデプロイして実行するためのクラウド環境を準備する
  • 開発およびリリースプロセスの可視性を改善するモニタリングツールをセットアップする

3.適切なツールとリソースの選定

さまざまなアクティビティに対して適切なツールを使用することに投資する必要があります。たとえば以下のようなツールがあります。

  • 単体テスト、UIテスト、APIテスト、パフォーマンステスト、セキュリティテスト、アクセシビリティテスト用のテストツールおよびフレームワーク
  • バージョン管理ツール 
  • CI/CDツール
  • モニタリングツール
  • セキュリティスキャナー

また、開発プロセスの中でこれらのツールを効果的に使用できるスキルの高いメンバーも必要です。レポートの分析、問題のトラブルシューティング、問題発生時の速やかな修正などを行う能力が必要です。

4.適切なトレーニングの実施

効果的なCTパイプラインを実現するには、マインドセットの変化も必要です。テストを特定の期間にだけ発生するものとして捉えるのではなく、開発プロセスのあらゆる段階に不可欠な部分として捉えなおす必要があります。

そのためには、みなが新しい考え方に適応できるよう、適切なトレーニングを実施しなければなりません。テストのシフトレフトが前進のための規範となることを受け入れることが必須です。

5.できるだけ自動化する

自動化は、CTとDevOpsパイプラインを結合する接着剤のようなものです。適切に自動化をセットアップすれば、リリースサイクルを短縮するとともに、リリースサイクルの信頼性を改善するのに役立ちます。 

自動化可能なあらゆるものを自動化するべきです。これには、単体テスト・デプロイメントテスト・インテグレーションテスト・スモークテスト・セキュリティテスト・パフォーマンステストなどが含まれるでしょう。テスターは、早期に自動化を開始し、いち早く欠陥を発見できるようにすることで、DevOpsおよびCTプロセスにおいて不可欠の役割を果たします。

6.結果を継続的にモニターする

シームレスなCTパイプラインに必要なあらゆるものをセットアップしたとしても、進捗を計測して実装がうまくいっているかどうかを把握しなければ、無駄でしかありません。

たとえば、次のような手順でCTの考課を継続的にモニターします。

  • 毎日のスタンダップミーティング、チームミーティング、レトロスペクティブミーティング、その他のチャネルを通じて、何がうまくいっており、何が改善を必要としているかに関するフィードバックを収集する
  • 週に1回、チームでチェックインミーティングを開き、CTプロセスの成果を分析、議論する
  • 進捗を計測するKPIを決定する
  • 収集されたフィードバックに基づいてCTパイプラインを変更する

CTプロセスを適切にセットアップするには反復的なアプローチが必要であり、より詳しくデータを調べるほど、プロセスを最適化するうえでよりよい洞察が得られます。

製品の品質を追跡するためのKPI

CTはDevOpsプロセスの一部であるため、DevOpsプロセスに適用されるメトリクスはCTにも適用できます。

  • テストケースのカバレッジ
  • 単体テストのカバレッジ
  • 成功/失敗率
  • 実行済みのテスト数
  • APIの成功/失敗率
  • テストによってカバーされた要件
  • ブロックされたテストケース
  • 自動テストケースの割合
  • 成功したコードのビルド
  • 新規欠陥
  • 重大な欠陥
  • リスクによって優先度を付けられた自動テスト
  • コードカバレッジ
  • リリース期日
  • 見つかった欠陥の合計
  • 新たに見つかった API の欠陥

これらのメトリクスを利用すると、実装プロセスに不足しているものを判断し、ただちに修正アクションをとることができます。

継続的テストの実装に必要なツール

開発プロセスのさまざまなフェーズで継続的テストを可能にする多数のツールやフレームワークがあります。たとえば、Travis CIやJenkinsなどのCI/CDツール、SeleniumやAppiumなどの自動テストフレームワーク、Ranorexなどのテスト自動化ツール、JUnit、NUnit、Jasmineなどの単体テストツール、SplunkやGraphiteなどのモニタリングツール、TestRailなどのテスト管理ツールがあります。

特に、テスト管理ツールは開発プロセスで行われたすべてのテストの詳細を1つのダッシュボードで参照するのに役立ちます。テスト管理ツールは、他のステークホルダーと共有可能なレポートを生成することもできます。チーム内のコラボレーションを促進し、全体的なテストの進捗を追跡できる適切なテスト管理ツールを選択することが重要です。 

たとえば、CTパイプラインでTestRailを使用すると、次のようなレポートを生成できます。

コードのチェックインによって自動化された回帰テストが実行された後に生成されたレポートのサンプル

継続的テストは、DevOpsの導入を成功させるうえで重要な役割を果たします。現在のテストプロセスの穴を特定し、CTによって穴を埋め、DevOpsに移行する必要があります。これは、欠陥を可能なかぎり早期に捕捉し、品質の高い製品を高速にデリバリーするのに役立ちます。

Raj Subrameyerは豊富な技術的バックグラウンドを持つ国際的な基調講演者、ライター、技術キャリアコーチです。自身のブログrajsubra.com/blog/では、読者がより良い人生を送るのに役立つニュース、リソース、最新情報を投稿しています。

(この記事は、開発元Gurock社の Blog 「Guide to Continuous Testing」2022年4月7日の翻訳記事です。)

関連する製品

テスト管理ツール TestRail

テストケースの管理やテスト結果の記録、チームでの情報共有など、Excelを使ったテスト管理の業務に限界を感じていませんか?TestRailはシンプルで使いやすいUIを提供し、テストにかかるさまざまな管理コストの削減に貢献します。

■ TestRailの特長 ■

  • テストにさまざまな情報を関連づけて一元管理
  • Webブラウザー上でテストケースを簡単に入力や編集可能
  • テスト実施の準備と結果の共有が容易
  • 進捗や比較などのレポートを提供
  • 要件 / 課題管理ツールやテスト自動化ツールと連携

日本国内では、テスト管理にExcelを使っていたお客さまからの乗り換えが多く、Web上で完結するテスト管理を実現されています。

TestRail でテスト管理のお悩みを解決しませんか?

テストの生産性向上をTestRailでお試しください

クラウドおよびオンプレミス、デモサイトでTestRailがお試しいただけます。

  • TestRailクラウド(クラウドサービス)
    • クラウドサービス環境でTestRailをお試しいただけます。
  • TestRailサーバー(オンプレミス版)
    • お客様のマシンにTestRailをインストールしてお試しいただけます。
  • TestRailデモサイト
    • インストールなどの設定なしにTestRailにサンプルデータが登録された環境にて操作をお試しいただけます。

eBook 公開中

Paul Gerrard著 効果的なテスト管理12の秘密 (日本語)

テスト計画やテスト管理に役立つ12のトピックを解説します。

詳細はこちら