はじめに
テスト自動化エンジニアのシラバスを再度読み直し、各章をDailyで読めるようにしてみた
4.1 Test Automation Development を今回は翻訳・解説する
テスト自動化の導入プロセス
ソフトウェアの開発において、品質を確保するためにテストは欠かせません。ただ、このテストを手動で行なっていては時間がかかり、人的ミスも起こりやすいため、テストの自動化が求められている。
テスト自動化パイロットとは、テスト自動化を実際に導入する前に、その効果や課題を検証するための小規模なプロジェクトのことです。このパイロットを通して、本格的なテスト自動化への移行をスムーズに進めることができる。
テスト自動化パイロットの目的
パイロットプロジェクトの主な目的は以下のとおりである。
- テスト自動化に関して詳細を学ぶ
現在の手動テストプロセスと比較して、自動化がどのように効率化を図れるかを理解する。
自動化ツールの選定やスクリプトの作成方法を学ぶ。 - 現在のプロセス、ツールのどこに適合するか、どんな変化が起きるかを見極める
自動化が既存の開発プロセスやツールチェーンにどのように統合されるかを評価する。
自動化導入によるプロセスの変化や必要な調整を予測する。 - テスターに合った自動化I/Fを設計する
テスターが使いやすいインターフェースを設計し、効率的に自動化スクリプトを作成・管理する。
ユーザビリティを重視し、テスターの負担を軽減する。 - 自動化の利用の標準を決める
自動化のベストプラクティスや標準手順を確立し、チーム全体で共有する。
一貫性のある自動化プロセスを構築する。 - テスト自動化の利用状況、有用性、保守性、拡張性などをモニタリングするためのメトリックスを決める
自動化の効果を測定するための指標(例:テストカバレッジ、バグ検出率、テスト実行時間)を設定する。
定期的に評価し、改善点を見つける。 - 妥当コストで効果があるかを評価する
自動化ツールの導入コストと得られる効果を比較し、コスト対効果を評価する。 - どんなスキルが必要で、現在そのスキルを満たしているかどうかを見極める
自動化に必要なスキルセットを特定し、チームメンバーのスキルレベルを評価する。
必要に応じてトレーニングやスキルアップの計画を立てる
テスト自動化パイロットのスコープ定義
テスト自動化パイロットを開始する前に、以下の要素を明確にする必要があります。
- 対象システム (SUT)
自動化の対象となるシステムを特定。 - プログラミング言語
テストスクリプトを作成するプログラミング言語を選択。 - 自動化ツール
適切なテスト自動化ツールを選択 - テストレベル
単体テスト、統合テスト、システムテストなど、どのレベルのテストを自動化するかを決定 - テストケース
自動化するテストケースを厳選 - テストケース開発アプローチ
テストケースの作成方法を決定
なお、テスト自動化のプロジェクトを選ぶ時、2点考慮する
- 重要なプロジェクトで、テスト自動化の結果が影響するプロジェクトを避ける。テスト自動化がうまくいかないリスクを考慮する
- かんたんなプロジェクは、主だった成果を得られず、またこれから自動化にかかる工数や見積もりなどを学習できないため、避けた方が良い
パイロットプロジェクトの実行
- 初期プロトタイプの作成
異なるアプローチで複数のプロトタイプを作成し、比較する。 - タイムラインの定義
パイロットプロジェクトのスケジュールを明確にする - CI/CDへの統合
テスト自動化を継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインに組み込む - 非技術的な要素の評価
チームメンバーのスキル、チーム構造、ライセンスなど、非技術的な要素も評価対象とする
パイロットプロジェクトの評価
パイロットプロジェクトが完了したら、以下の点を評価し、本格的なテスト自動化への移行を決定します。
レビューする時は、ステークホルダー全員を呼んで行うことが重要である。
- テスト効率の改善
テスト実行時間がどれくらい短縮されたか。 - テストカバレッジの向上
どの程度のテストケースが自動化されたか。 - バグ検出率の向上
自動化によって、どれだけのバグが検出されたか。 - チームの反応
チームメンバーは自動化に対してどのような反応を示したか。 - コスト対効果
自動化ツールの導入コストと、得られる効果を比較します。
テスト自動化の成功要因
本導入するときに、以下の点を考慮すると、テスト自動化がうまく軌道になる
- 他の組織に展開し、新たなユーザーをサポートする。これは自動化の拡大を意味している。考えうるボトルネックは、起きる前に先んじて解決する。
- プロセスを適合するように修正・改善する。
- 新しいユーザーへのトレーニングを提供する。
- 利用ガイドラインを整備する。FAQなどを用意し、質問へのサポートの負担を軽減する。
- 実例を集め、自動化がどの部分で使われたかを示す。
- 自動化のメリットとコストをモニタリングし、ビジネスへの貢献を可視化する。
- テストチームやデプロイチームを支援する。
- 全チームで評価し、学んだことを明示化し、さらに改善につなげる。
- 評価結果から改善ステップに進む。