大規模アジャイル開発におけるソフトウェアテストの課題
昨今、大規模アジャイル開発は、自動車業界のコネクテッドシステムや金融業界の決済基盤システムなど、非常に社会的責任の大きな領域にも取り入れられるようになってきています。こういった領域では特に、小規模なアジャイル開発と比べて求められる品質も高くなり、場合によっては従来型のウォーターフォール型開発と同等の品質保証が必要となることも少なくありません。
このように品質レベルは維持しつつ、リリースのリードタイム短縮、および頻度増加が求められる大規模アジャイル開発を実現するためには、以下の3つのソフトウェアテスト領域の課題に取り組む必要があります。
- 各チームによる自動テストの運用保守の効率化
- 統合チームによる手動テストの運用保守の効率化
- 各開発チームによる製品全体像の把握の促進
各課題について詳細に見ていきましょう。
1.各チームによる自動テストの運用保守の効率化
アジャイル開発では従来の開発と比べリリース頻度が格段に増えるため、ソフトウェアテストの方法としてテスト自動化が推奨されます。頻繁なリリースのたびに手動テストをしていてはデリバリーのボトルネックとなってしまうからです。
ただ、製品規模が大きくなると、それに比例して自動テストの規模も大きくなります。つまり、テスト自動化では製品の変化に追随したメンテナンスコストがボトルネックとなるのです。大規模アジャイル開発ではこの問題が顕著に表れます。そのため、開発・統合チームともに、いかにアジリティを落とさずに自動テストをメンテナンスしていくかが重要です。
2.統合チームによる手動テストの運用保守の効率化
一般的に、大規模アジャイル開発が採用されるのは、前述のとおり自動車システムのような、ソフトウェアだけで完結せずにハードウェアが関連する製品であったり、金融システムのような、複数の組織によって運用されるシステム間連携がある製品だったりと、複雑なものであるケースが大半です。
そのため、統合チームは自動テストだけでなく、手動テストも一定程度、並行して実施する必要があります。従来の大規模開発と同等のテストを高頻度で実施する必要があるため、統合チームは迅速にテストを計画し、テストの実施状況を把握した上で状況を可視化し、企画チームを含むプロジェクト関係者全員が常に把握できるようにする必要があります。
3.各開発チームによる製品全体像の把握の促進
通常の小規模なアジャイル開発では、開発する製品が一つの開発チームで完結します。開発チームは通常のテストの過程で、自分たちが開発中の製品がどのような振る舞いをするのか、どのようにユーザーに利用されるのかを理解することができます。ここで得た気付きを製品の企画チームにフィードバックすることも可能です。
一方、大規模アジャイル開発においては分業となるため、各開発チームは製品の全体像を把握しにくくなります。アジャイル開発をアジャイル開発たらしめる要素の一つは、各開発チームのメンバーが製品をより良くしようと自律的に振る舞うことにあります。大規模アジャイル開発では、各開発チームが、製品の全体像を理解できるような追加の仕組みが必要です。