課題解決のためのアプローチ
ここまで述べた3つの課題に対しての解決アプローチを挙げます。
課題 | 解決アプローチ |
---|---|
各チームによる自動テストの運用保守の効率化 | 自動テスト実装・保守支援ツールの活用 |
統合チームによる手動テストの運用保守の効率化 | テスト管理ツールの活用 |
各開発チームによる製品全体像の把握の促進 | 探索的テストの活用 |
各アプローチについて詳細に見ていきましょう。
1.自動テスト実装・保守支援ツールの活用
従来、自動テストの適用を支援するツールといえば、テストの実行を自動化するものが大半で、テスト実装など、テスト実行の前工程に対する自動化の支援機能はほとんどありませんでした。そのため、自動テストを実施するには、プロダクトコード開発と同様に、テストスクリプト開発を行う必要がありました。
ところが近年は、ツールによる支援範囲が拡大し、テスト実装についても支援機能が強化されています。例えば、扱う製品がWebアプリケーションやモバイルアプリケーションの場合、実際の製品画面を操作しながらテストの実行スクリプトを自動で生成する、あるいは、テストエンジニアがGUI上で即時編集するといったことが可能になっています。また、開発の結果として製品の内部構造に変化があった場合、テスト実行の過程でその変化を検知し、自動でテストスクリプトの修正を提案してくれるといった保守支援機能を搭載した商用ツールも出てきています。
こうした市販ツールを活用できる場合は、積極的に取り入れることによって効果が期待できます。一方、市販ツールでは対応できない製品の場合は、一定の投資は必要になりますが、長期にわたる開発が見込めるならば、プロジェクト内で製品に合った高度自動テスト支援ツールを開発し運用することもアジリティ向上に寄与します。
2.テスト管理ツールの活用
自動テストでは一般的に、実行基盤であるCI/CDツールなどがテスト結果を自動的にレポートしてくれます。ただ、大規模アジャイル開発では、前述したように自動テストに加えて手動テストも運用することになるケースが多くあります。手動テストについて、迅速にテスト計画を立案し実施状況を可視化するには、テスト管理ツールの導入が有効です。その際のテスト管理ツールには、以下の3つの機構が備わっていることが求められます。
- 製品バージョンに追随する形でテストケースのバージョンが管理可能:製品仕様とテストケースそれぞれの変更の同期が取れるため、テストケースの運用保守が容易になる。
- テストケースそのものとその実行結果について、独立して管理可能:繰り返し実行されるテストについて、テストケースを毎回作り直すことなく、特定の開発期間におけるテストの実行結果を管理・可視化することができる。
- テスト結果の記入とリアルタイムでの集計・可視化が可能:統合チームだけでなく、企画チームを含むプロジェクト関係者全員が常にテストの最新状況を把握できるため、迅速な意思決定が可能になる。
3.探索的テストの活用
前述したように、分業体制を取る大規模アジャイル開発では、各開発チームは製品の全体像を把握する機会がほぼありません。こうした状況を避けるためには、統合された製品を各開発チームが動作させる時間を、正式な開発プロセスとして組み込むことが有効です。もちろん、各メンバーが自由に製品を触るだけでも一定の効果はありますが、開発チームによる探索的テストの時間を確保することで、より効率的な開発プロセスとすることができます。
探索的テストは、通常のテストとは異なります。事前に詳細なテストケースを用意せずに、テストの指針のみを決めた上で、テスト実施者が製品を動作させながら、その動きを見て「次は何をテストするべきか」を考えるテスト手法です。
開発チームが定期的に探索的テストを実施すると、開発チームの各メンバーは常に製品全体の振る舞いを把握することができます。その過程で得られた気付きを全体へ共有すれば、企画チームは製品の改善につながるヒントとすることができ、プロジェクト全体にメリットをもたらすことができます。
おわりに
本記事では、アジャイル開発、特に大規模アジャイル開発において顕在化しやすいソフトウェアテストの課題と、その解決アプローチについてご紹介しました。これらを実践していただければ、チームや製品規模が大きくなっても、ソフトウェアテストの生産性を落とすことはなく、また、チーム全体が自律的に開発製品へ向かうことで、アジリティの高い大規模製品開発を実現することができるでしょう。