こんにちは!QAチームのまりあです。
最近、QAチームの業務フローやら何やらをドキュメント化することが多いのですが、ふと「あれ…そういえばQAチームのテスト業務内容を、チーム外に紹介した事無いよなぁ…」と思い、せっかくだから記事にしちゃえ!という勢いだけでこの記事を作りました。
何かしら皆さんの心に留まると幸いです。
現在のQAチーム構成
我がQAチームは基本3名で構成されています。
・Aさん:QAプロジェクトの全体管理、自動化テスト管理全般、その他品質管理業務を広く担当(ときにはテスト設計~実施管理も行うスーパーマン)
・Bさん:テスト設計・実施・管理、オフサイトメンバー立ち上げ・管理(既存仕様の共有、開発プロジェクトの仕様共有、テスト概要説明など)
・私:テスト設計・実施・管理、オフサイトメンバー立ち上げ・管理(Bさん同様)、QAナレッジ・テストデータ管理、ユーザー受け入れテストサポート、QA相談窓口、Aさんの業務補佐
大中合わせて(大小と言いたいけど小プロジェクトが無い…)年間で15~25プロジェクトほど進行しているため潤沢なQAリソースとは言えませんが、それでも最低限必要なテストは漏れなく実施し、システムの品質向上に取り組んでいる状況です。
チームメンバー同士の関係は良好。
言いたいことを言えるし、ふと投げかけられた質問には全力で回答があるし、どんなくだらない発言にもナイス返答が飛んでくる素晴らしいチームです。
(…ですよね?そう思ってるのは私だけじゃないですよね…?)
QAチームに求められている役割
もちろん最上位概念でのリクエストは「高品質なサービスを提供し続けるため、品質管理向上施策の検討と実行」ですが、これを具体的なレベルまで分解していくと「開発プロジェクトのシステムテストをQAチームで担い、品質を担保すること」が求められる役割のひとつです。
システムテストフェーズで実施しているセキュリティテストや負荷テストなどの非機能テストは開発チームで実施してもらっていますが、要求仕様通り開発されていることの確認である機能テストに関してはQAチームがメインで担当しています。
※例外として、システムインテグレーション案件などAPI動作確認メインの開発プロジェクトに関しては、QAチームでなく開発チームに担当してもらうこともあります。
システムテストフェーズまで進んだプロジェクトは、不具合対応を行う開発メンバー数人を残し次のプロジェクトの準備に移ります。
これにより次プロジェクトの早期立ち上げが可能となるため、システムの品質担保とシステム開発スピードの向上を同時に実現できています。
メイン業務紹介「開発プロジェクトのシステムテスト運営管理」
さて、QAメンバーのほぼメイン業務ともいえる「開発プロジェクトのシステムテスト運営管理」について、私たちのQAチームでは具体的にどのように実施しているか、をご説明します。
使用するテストツールやテスト手法、開発プロセスや開発工程の違いなど、各会社ごとに様々なQAスタイルがありますよね。
主にアンケート管理システム(アンケート画面作成から配布、回答報酬のポイント付与・交換など)を開発運用している弊社だからこそ!の手法もありますが、少しでも参考になればと思います。
プロジェクト極初期
明確に開発プロセスに落とし込まれている訳ではないですが、特に私は開発してほしい内容の要望を挙げた業務側のメンバーと開発チームとの要件定義の場に参加させてもらうことがあります。
既存仕様や開発仕様が難しいものであればあるほど、積極的に初期段階から参加するようにしています。
私が元々、アンケートシステムを使って業務を行う立場(オペレーション部→現在はQAへ異動した)だったため、使用者視点を持ちつつシステムの追加や変更による懸念点や、影響範囲の指摘をすることで多少なりともシフトレフトに貢献できると思い、自分の勉強も兼ねて参加させてもらっています。
まだ手探り状態ですが、最初からQAがいて良かった!と言ってもらえるような効果を上げるのが目標です。
プロジェクト初期~中期
ある程度要件が固まった段階で、開発リーダーに開発要件&仕様レビューの実施を依頼します。
この時点で開発要件やある程度詳細になった仕様の把握ができるため、テスト見積やテスト設計がスタートできます。
テスト見積やテスト設計では管理ツールを導入しておらず、主にExcelを使って作業していますが、テスト観点の洗い出しだけはmindmapを活用し、俯瞰的に要件や仕様を眺めながら発散と収束を繰り返し、抜け漏れが無いよう管理しています。
↑加工しているので分かりづらいですが、テスト観点洗い出し中…
テスト実施は、主に外部パートナー企業とテスターさんのスポット契約を結んで実施しているため、一般的汎用ツールであるExcelだと使い勝手が良い。というメリットもあります。(もちろんデメリットもありますが…)
テスト観点の洗い出しが完了すると、いよいよテストケース作成に移ります。
弊社システムの特徴として「細やかな設定による高いカスタマイズ性」があります。これによりテスト条件項目が多くなりがちで、例えば「アンケート報酬のポイント付与数が正しいことを確認する」といったテスト観点に対し、確認画面数が約10画面、画面ごとの確認ケースが約25~35ケースということが割と頻繁に発生します。
そこで私たちQAチームでは、デシジョンテーブルを使ってテストケース作成を行うのが日常です。
QAの仕事を覚え始めた頃は、難解で何度もヒーヒー言いながらテストケース作成を行ったものですが、今思うとうちのシステムにフィットした手法であることを実感します。
↑加工しているので分かりづらいですが、ピンク色部分が条件項目です
テストケース完成後は開発リーダーとのレビューを実施し、テスト観点の最終確認や不具合傾向、重点的にテストが必要な機能などをヒアリングします。
この情報がかなり重要で、得た情報からテストケースの優先度や濃度といったテスト方針の調整だったり、開発側とのテスト方針の合意形成だったり、テスト実施前の最終調整を行うことができるのです。
ここがズレちゃうと、効果の低いテストになってしまいますしね。
プロジェクト中期~後期
さて、いよいよシステムテスト実施フェーズです。
テスターさん達に、既存仕様や開発プロジェクトの説明、テスト概要や実施ルールの共有など、初日から数日はタスクがてんこ盛りです。
特に難しく時間も掛かるのは、システムの既存仕様や開発仕様の説明です。
アンケート総合管理システムであることから、このシステムで出来ることの範囲が幅広いことと、前述の通り「細やかな設定による高いカスタマイズ性」のあるシステムであることが相まって「この壁のボタンを押すと、台所の電気が付くと同時に水道から水が出て、その後ガスレンジの下から自動でフライパンが出てきた10秒後に油が大さじ1程度自動投入されます」みたいなことが起こります。(あくまで例です)
これをひとつひとつ紐解きながら説明し、かつ「今回のプロジェクトで、水道から出るのがお湯になって手を洗うためのハンドソープがワンプッシュ出るようになります」ということを説明します。(しつこいですが、あくまで例です)
仕様説明の山を無事越えた後は、テスト実施管理や不具合チケットの起票、テスターさんのサポート、時にはテスト実施、テストレポートの作成などが待っていますので、管理の腕の見せどころです。
開発リーダーを中心に開発チームの皆さんとも連携を取りながら、開発システムを最高品質の状態にするべく立ち回ります。
不具合管理はRedmineを使用しています。
社内で長らく使っているツールのため、開発・QA共に使い慣れており不具合管理に必要な要件も十分だと感じています。
不具合を見つける、改善提案をする、といった仕事柄、開発チームにとっては「悪いニュースを持ってくる人、色んな指摘をしてくる人」の悪いイメージがあるかもしれません。
ですが、QAチームによるテスト、ひいてはプロジェクトの最終ゴールは「良い品質のシステムをお客さん(社内外ともに)に届けること」であり、開発に携わるメンバーを責めることではありません。
この達成に向けてテストを実施している意識を忘れず、メンバーを尊重して一緒にテスト終了まで駆け抜けるように心がけています。
ちょっとおまけで…
ある程度QAでのシステムテストが進んだ段階から、社内の業務側のメンバーにユーザー受け入れテストを実施してもらっています。
ただ、ユーザー受け入れテストの担当者はテストの専門家ではないため、必要な情報の共有やテスト観点の相談、テスト実施サポートなど必要に応じてフォローし、ユーザー受け入れテストで見つかるべき改善提案や、実務レベルでの操作をしたからこそ見つかる不具合を掘り出すための支援をしています。
もちろんユーザー受け入れテストは不具合検知がメインの目的ではないですが、このフェーズで見つかる不具合は、やはり実際に日常的に使っている人だからこそ見つけられる、価値あるものだと思っています。
QAのお仕事はテスト業務だけでなく、こういった品質向上に繋がる活動も幅広く含まれますしね!
というわけで、ここまでが開発プロジェクトでのQAチームの業務紹介でした!
おわりに
今後取り組みたいこととしては(少々個人的な興味も入りますが)
効果的なプロジェクト管理の追求やテスト結果分析、テスト自動化にテスト&品質管理の社内勉強会など、多岐に渡ります。
私自身まだまだQAは勉強中の身なので、色んなところから知識を吸収し、もっと広い視点から品質向上に向けた取り組みができたら良いなと考えています。
いつになく真面目に執筆してしまいましたが、普段、開発プロジェクトで私たちQAチームが何をやっているのか、雰囲気だけでも分かってもらえたら嬉しいです。
本当は、リグレッションテストで導入している自動化テストにも触れたかったのですが、想いが溢れて良きボリュームになってしまったので、今日はこの辺にしようと思います。
最後までご覧になっていただき、ありがとうございました!