📋

ソフトウェア品質を左右するテスト活動の品質管理に注力しよう!

2024/07/10に公開

はじめに

2024年7月10日の記事は、2023年3月に入社しましたSoftware QAチーム所属 takumi_sakao が担当します。
私は、弊社が提供するworkhubやhomehubといったサービスのソフトウェアテストに従事し、テスト分析〜テスト完了までを担当しています。
2023年10月頃からは、上記のテスト活動に加えて、Software QAチーム全体のテスト活動における品質管理(QC)も担当しています。

https://www.workhub.site/

https://www.homehub.site/

本記事のテーマは「テスト活動におけるQC」です。
テスト活動に加えQCにも携わっている私のQC活動や今後の展望についてご紹介します!

QCとは

一般的にQCとは、製品やサービスを提供する際に、品質基準や顧客の要求を満たしているか検査・検証を行い、保証することを指します。この活動には、必要に応じて検査・検証の工程に対する改善や修正も含まれます。

では、テスト活動におけるQCとは何か?
テスト活動におけるQCとは、テスト活動の妥当性を管理することだと考えます。
テスト活動の妥当性を管理すること」を掘り下げると2つの観点があります。

  • テスト活動そのものの工程において、品質基準に沿った検証ができているか、また顧客の要求を満たす品質になっているかどうかを監視すること
  • 必要に応じてテスト活動の工程に対して改善を行うこと。この改善は、一度だけでなく継続的に行い、改善後のテスト活動の工程においても品質基準や顧客要求を満たしているかの妥当性を確認すること

上記2つの観点が満たされるように活動することがテスト活動におけるQCだと考えます。

対象読者

本記事は、テスト活動をマネジメントしている方向けの内容です。
自社の品質保証もしくは第三者検証として、ソフトウェアのテスト活動を行いサービスの品質担保に貢献しているが、現状のテスト活動に課題を感じているもしくはテスト活動を改善したいと考えている方にとって参考になると考えています。

結論

QCは品質向上に寄与できます!
テスト活動は、ソフトウェアの品質を保証する活動ですが、そのテスト活動で必要な観点を検証できておらず不具合を検知できていなかった。また、テスト活動による成果物をステークホルダーに提供できていなかったなどの問題があった場合、テスト実行の妥当性や成果物の品質など、テスト活動そのものについて改善する必要があります。

そのため、QCはテスト活動を支える重要な取り組みです。それを弊社ではどのようにやっているのかを紹介することで、テスト活動の営みを改善するヒントを得られると考えます。

テスト活動における課題

弊社のSoftware QAチームはプロダクトごとに少数精鋭に分かれてテスト活動を行っています。
現在では、主に7つのチームに分かれチームごとにリーダーを立てて、そのリーダーのまとめ役としてマネージャーが指揮を取るような構成になっています。

チームごとにプロダクト特性に沿ってテスト活動を行なっているため、Software QAチームでQC活動を開始する前は、チーム全体としてテスト活動に一貫性がなくチームごとに最適化されたテスト活動になっていました。
そのような状態のテスト活動では、以下のような課題がありました。

  • どんな活動にどの程度時間がかかっているのか認識しづらく、稼働時間のモニタリングができていない
  • テスト活動で必要となる備品や環境の準備に関するプロセスが定義されていない
  • テストプロセスに一貫性がなく、開発やCXなどの他チームから見てどんな活動をしているのか理解しにくい
  • 機能修正や新規機能追加によりリグレッションテストが日に日に増大しているが、各QAチームのリーダーレベルで個別最適化しているに留まっている

弊社での取り組み

前段で挙げた課題には、QCとして横断的に取り組んでいます。QC活動は今でも継続的に行っています。
その活動内容をより深く理解していただくために、私たちがどのような視点からQC活動に取り組んでいるのか、具体的に3つの視点を紹介していきます。

1.取り入れる

QC活動として行う視点として多いものが「取り入れる」です。
日々のテスト活動の中で顕在化した課題に対して、新しい取り組みを行うことで業務改善を図る視点です。
普段のテスト活動に加えて、Software QAチーム全体として必要な活動を各チームに取り組んでもらうよう働きかけます。

どんな活動にどの程度時間がかかっているのか認識しづらく、稼働時間のモニタリングができていない

上記の課題に関して、工数管理を徹底的することにしました。
例えば、「新機能の追加に伴う検証において、テスト分析は合計3時間要した」などの工数を記録します。
誰が、どんな作業にどのくらい時間がかかったのか細く計測し、チームごとに集計を行います。リリースごとの周期で集計結果を棒グラフとして表現します。

工数集計表

これにより、チームごとのテスト活動にかかる工数を把握することできるようになりました。工数が明示的になることによって、テスト計画での見積もりを行う際に参考にすることで見積もり精度の向上を図れます。
また、テスト活動によって残業をしすぎていないか、メンバーに過度な負担がかかっていないかをモニタリングすることができ、健全なテスト活動を行えるようコントロールしやすくなります。

テスト活動で必要となる備品や環境の準備に関するプロセスが定義されていない

続いて上記の課題においては、チーム全体としてのプロセスを定義し管理を徹底します。
テスト活動に必要な備品の申請や管理をSlackとGoogleスプレッドシートを用いてプロセスを定義し、誰でも同じ要領で実施できる仕組みを構築しました。(今のソフトウェアテストに欠かせないiPhoneやAndroidの調達や管理)
テスト活動に関する備品の申請などはSlackのワークフローから行い、記録としてGoogleスプレッドシートに情報を蓄積させています。

備品申請

これにより、チーム全体として一貫性を持って備品調達が行え、いつ誰が何を申請したのかを把握することができ、管理コスト削減や備品紛失などの事故防止に繋がります。

2.変更する

QC活動として実施する次の視点として「変更する」です。
今までのテスト活動の中で行ってきた一部の業務を別の手段に置き換える視点です。業務の手段を変更することはチームにとって、メンバーにとっても負担が伴うことがありますが、その分価値も生まれます。

テストプロセスに一貫性がなく、開発やCXなどの他チームから見てどんな活動をしているのか理解しにくい

上記の課題は、テスト活動に使用しているツールを一部変更する対応を行いました。
Software QAチームのテスト活動では、主にGoogleスプレッドシートを使用しています。テスト分析からテスト設計、テスト実装、テスト実行は、Googleスプレッドシートで実施していました。

Googleスプレッドシートを活用したテスト活動では、開発やCXなどの他チームがファイルにアクセスできない、どこのフォルダに何のファイルが格納されているわからないなど、テスト活動の透明性が悪いという問題も抱えていました。
その状態から、まずはテスト実装とテスト実行を「Qase 」というテスト管理ツールに変更しました。

Googleスプレッドシートのテストケース

Qaseのテストケース

これにより、チームごとにばらつきのあったテストプロセスを一部改善することができ、Software QAチーム全体として一貫性を獲得することができます。
また、開発やCXなどの他チームからテスト活動でやっていることを把握しやすくなり、テスト活動の透明性向上を図れます。

3.削ぐ

QC活動として実施する3つ目の視点は「削ぐ」です。
今までのテスト活動から業務の一部を無くす、もしくは減らすといった視点です。

機能修正や新規機能追加によりリグレッションテストが日に日に増大していく

上記の課題については、リグレッションテストの実施範囲を絞るという取り組みを行い、テスト実行の負担軽減を行っています。
チーム別に機能とテスト環境/条件ごとに影響範囲を明確したマトリクスを作成して、開発の修正内容に応じて影響範囲はどこかを炙り出し、影響範囲に応じてリグレッションテストを回しています。
さらに、CXからユースケースを聴取しユーザーが普段使用している機能と使用していない機能を明確にして、リグレッションテストとして必ず実施する範囲と機能修正に応じて実施すべきリグレッションテストに判別して、日々のテスト活動を行うよう対応しました。

影響範囲をマトリクスとして図示した表

これにより、リグレッションテストのテスト実行における工数の削減に繋げています。ソフトウェアの特徴として、リリースがあるごとにSoftware QAチームとして担保すべき機能の範囲が拡大していきますが、影響範囲を明確にすることで担保すべき部分と工数のバランスをうまく調整しています。

まとめ

ご紹介した3つの視点でQC活動を行い、テスト活動の課題を解決したり、業務の効率化を図っています。
これらのQC活動により、テスト実行の妥当性や成果物の品質を向上させ、ソフトウェアの品質担保に貢献しています。
テスト活動におけるQC活動で重要なことは、目的に沿って妥当性のあるテスト活動を営めるように継続的に業務改善を図ることです。漫然と同じ手法、同じプロセスでテスト活動を続けるのではなく、日々の業務から課題を吸い上げテスト活動そのものに対して改善を継続的に行うことが重要なのです。
目の前の検証業務で忙しい、もしくはリソースが足りないとしてもテスト活動の改善を行うことが、ソフトウェアの品質を向上させるために必要な活動だと考えます。

今後の展望

弊社のSoftware QAチームは、QC活動を行うことで多くの課題を解決してきました。
しかし、課題は山積みです。現状の課題は日々のQC活動で解決していきつつ、今後もテスト活動の継続的な改善を図っていきたいと思っています。
私個人として、QC活動を通してどんなSoftware QAチームにしていきたいか、今後の展望を少し話したいと思います。

私が目指しているSoftware QAチームとしては大きく3つあります。

  • ステークホルダーへテスト活動の妥当性を提示できる
    • 観点の抜け漏れなく不具合を検知でき、仕様通りの挙動をしていることはもちろん、ユーザー体験を向上させることができるかという視点でテスト活動が行われるようにしたいと思っています。
  • QC活動についてメンバーの納得感を得られる
    • QC活動でテスト活動の改善を行う際は少なからずメンバーと摩擦が生じます。こちらが良かれてと思って行う活動でも、メンバーからすると負担が増えているだけで価値を感じないという場面があります。そのため、メンバーの納得感を大事にしていきたいです。
    • 業務指示だからやるという形ではなく、QC活動による取り組みは価値があることを提示し納得してもらった上で、お互いが気持ちよく業務に取り組める環境になることがベストだと考えています。
  • メンバーが成長でき、楽しさを感じられる労働環境を作る
    • 弊社のSoftware QAチームでは、ソフトウェア領域のみならずファームウェア領域、ハードウェア領域も包括的にシステム統合テストを行なっており、テストの観点もテストケース数も膨大です。それを我武者羅に実施するのではなく、客観的に必要十分かつ定量的なエビデンスをもとに、無理なくテスト活動を行いつつ、楽しさや自身の成長を感じられるような労働環境を構築したいと考えています。
    • そのためにも、稼働時間をモニタリングしたり見積もり精度を上げてバッファを持った計画のもとテスト活動を行い、メンバーの負担をできるだけ減らしたいと思っています。

終わりに

弊社Software QAチームで実践しているテスト活動のQCについて話してきました。本内容を通してテスト活動においてのQC活動の重要さをお伝えできたら嬉しいです。
また、現状のテスト活動に課題を感じている、もしくはテスト活動を改善したいと考えている方にとって参考になれば幸いです。

Bitkey Developers

Discussion