アジャイル開発におけるQAの役割
アジャイル開発をしている、またはやろうとしている組織は年々増えてきています。
弊社に開発、品質面で相談を持ちかけてくださる企業様も、以前に比べ高い割合でアジャイル開発を採用しているように思います。しかし一方で、品質保証の仕方やプロセスに対し知見がなく困っているといった声も多く寄せられます。具体的には、「テストの自動化をどこから着手したらいいかわからない」「開発メンバーが各自でテストをしているが、品質担保できていない」などが挙げられます。
こういった課題に対処すべくQAメンバーが存在するわけなのですが、その役割とは何なのか?といった部分と、加えて品質を可視化することについてお話したいと思います。
1. QAの役割
一言で言ってしまえば、製品の品質保証です。
実のところ具体的に何をすればよいということが決まっているわけではありません。
ウォーターフォール開発のように単体テスト、結合テスト、システムテスト……と順序立ててやっていけば良いという訳でもなく、アジャイル開発だからといって全部のテストを自動化しなければならないということもありません。
この記事では知識と経験を踏まえ、どのような活動が効果的になりやすいかという視点で話を進めていきます。
① QAが目指すべきところ
QAが目指すべき大きな目標として
- 品質の高いプロダクトをリリースする
- 開発者のモチベーションを高め、安心しながら開発を進められる土台を作る
といったことが挙げられると考えます。
品質とは顧客満足と同義なので、顧客視点を常に持ちながら、保証するための方法を決める必要があります。
行った変更に対して品質が保証されることに開発者が安心でき、繰り返し手動で行うような作業を減らすことによりモチベーション高く成果物に注力できる環境を用意することもQAの責務です。
② QAの活動
QAメンバーとして行うべき活動は主に以下だと考えます。
- 品質の可視化
- 自動テスト(単体、API、E2Eなどの機能テスト)の作成・メンテナンス
- 非機能テストの作成・メンテナンス
- CI/CDプロセスの構築
- 機能追加・変更のレビュー
- プロダクトバックログに品質観点を盛り込む
- (随時)手動テスト
- PO/開発メンバーとの製品・プロセスに関する認識の相違をなくす
この他、開発活動にも参加する、ユーザビリティテストを行う、POとリリース判定基準を握る、など状況によって実施した方がよいことも多くあります。
すべてQAだけで完結するのではなく、可能であれば開発メンバーからの協力を仰げるようOneチームの体制でいることが望ましいです。
チームの一員として、よりチームに合った方式で品質保証活動をしていくべきだからです。
上に挙げたどの活動についてもアジャイル開発において品質を作り込む上で重要なのですが、今回は品質の可視化といったところを掘り下げていきます。
2. 品質の可視化
品質保証活動をする上で、品質の可視化は欠かせません。
以下のように、品質の種類ごとに何をチェックするべきかを明確にします。
-
内部品質
カバレッジ、複雑度、ネスト数などの測定 -
外部品質
E2Eテスト、APIテストなどがPASSしていることの確認
スループットやサーバリソースなどの性能指標を満たしているかをテストで確認 -
利用時品質
ペルソナに合致する人を対象にしたときのユーザビリティテストのフィードバック
レビュープロセスが行われたことの確認
上記は一例なので、ISO/IEC 25010:2011の品質特性などを参考に、製品ごとの観点で可視化すべき品質を定めていくことが必要です。
これらの可視化はアジャイル開発でなくても実践しているチームも多いことと思いますが、アジャイル開発では、変更があった箇所に対してそのイテレーション内に品質が担保されなければなりません。
その実現方法の1つとして、プロダクトバックログにこれら品質項目を折り込むといったことが挙げられます。
ユーザーストーリーに品質を含め、完了要件として品質特性の各観点から必要とされるテストやメトリクスの基準値を設けることで、品質の作り込みとともにプロダクトバックログを完了させることができます。
3. まとめ
QAの役割や、品質の可視化について簡単に紹介させていただきました。
今回触れなかったテストの自動化やCI/CDプロセスの導入、非機能テストの実施なども開発プロセスの中で品質保証をしていくための取り組みとして非常に重要なものになります。
繰り返しにはなりますが、製品やチームによってQAとしての動き方も、担保すべき品質も変わります。
何よりも重要なのは、積極的なコミュニケーションによって、チームと製品のあるべき形を模索し実現させていくために挑戦をし続けることだと考えます。