テスト設計における開発との明確な合意〜効果的なテストのための重要性〜
はじめに
はじめまして、株式会社ビットキーでSoftware QAチームに所属しております要と申します。
普段はworkhubという、働く人と空間においてあらゆるものをコネクトし、それぞれの働き方に即した体験を提供することができるプラットフォームのQAを行っています。
workhubに関してはこちらのページをご覧ください。
2020年からQA業務に従事しておりますが、その中でもテスト設計に関しては株式会社ビットキーに入社して1年とちょっとのまだ修行中の身です。
今回アドベントカレンダーにて記事を書くにあたり、このテスト設計において認識しておきたいことを教えていただいた経験談を書こうと思いつきました。
テスト設計は完璧!という方にとっては当たり前のことかもしれませんが、改めて意識してみることで本番での不具合を未然に防ぐことができ、ひいてはより質の高い提供へと繋げることが出来ると思います。
ことの経緯
いつも通りテスト設計を行う中、不具合内容が書かれたレポートに開発側から
検証は、意図的に再現させることが難しいので○○の確認だけできれば良いです
という旨が記載してありました。
エンジニアとしての観点から上記で問題ないと判断され、そのように記載されたのだと思います。
意図的に再現できない不具合はしばしば起こりうるものなので私はあまり深く考えずその記載通りに
『修正された箇所のメインの確認観点は再現が難しいため実施しない。
リグレッションの確認観点として○○の確認を実施する』
と記載し、作成したテスト方針書のレビューをしてもらいました。
返ってきたレビュー
「これは開発へ確認した?」
レビューが返ってきた際に、口頭でこのように指摘されました。
私:「レポートに開発から不具合の再現ができないので○○の確認だけで良い旨が書かれていましたよ」
レビュアー:「”再現できないから実施しない”というのは実施しない理由にならないよ」
私:「え」
私は開発の方がそのように記載しているからと愚直にそのままを書き記してテスト方針書を作成し、開発へ「こういった検証で良いか?」と言う確認をしていなかったのです。
大事なこと
つまりここで大事だったのは開発側との合意形成です。
「確認テストはこういう方針でいくけれど、実装観点から何か懸念ありますか?なければこれでいきます」という合意形成を進めていく必要があったのでした。
もしお互いに認識を合わせて合意することを怠ると…
開発は『QAが見ていると思っていた』、QAは『開発が見ていると思っていた』と認識齟齬が発生してしまい、本番での不具合に繋がってしまう恐れがあるのです。
今回の対応
レビュー者との会話の後、私は開発へ認識確認をした上で、
「△△を意図的に再現することは難しいかつ、××を考えると現実的ではない。
そのため、実際の挙動は開発による検証で動作を担保し、QA検証では○○されていることを確認するリグレッションの観点のみの実施で機能が正常であることの確認は十分であると考えられる。」
という一文をテストの方針に追記しました。
以上のような形で今回の”実施しない点”においては、開発がやらなくていいと言ったからQA検証しないのではなく「QA検証がなくても大丈夫だといえるのか」「妥当性を説明できるか」を考える癖をつけること、また開発とコミュニケーションし認識を合わせて進めていくことが大切であると教えていただきました。
その後
いつも通りテスト設計を行う中、不具合内容が書かれたレポートに開発側から
今回の検証範囲はX領域のA機能の範囲とする
そのように記載されていました。
それまでの私であれば深く考えず、その記載通りの範囲でテスト方針書を作成していたと思います。
上記までの経験の後、私は改めて意識的に合意形成を行うよう心掛けています。
私:「Aという機能の範囲を確認するのであれば、利用顧客の種類を考えるとX領域だけでなくY領域の検証も実施する必要があると考えられますが、Y領域に関しては別機会の検証で実施する旨で問題ないでしょうか?」
開発:「確かに、Y領域にも影響しそうなので、一旦確認させてください」
そのようなやりとりで合意形成を行ないました。
その結果として「Y領域のA機能の機能修正が漏れていたため追加でその対応を行いました。検証はX領域とY領域ともに今回で実施するほうが望ましい」という結論に至りました。
領域を横断していたため、開発担当者レベルでは気づかなかった領域だったのです。つまり、合意形成を行ったことでお互いの認識齟齬を防ぎ、修正箇所の抜け漏れを未然に防ぐこともできたのです。
まとめ
開発との合意を取ることは、プロジェクトの進行や品質、リスク管理、チームの協力に直接影響を与えます。
QAとは単にテスト活動を行うだけではなく、品質に対するコミュニケーションの構築も含むと私は考えます。
開発、QA、PdMなどの関係者が円滑に連携し、意見交換や問題解決を行いながら質の高い提供へと繋げることが重要だと感じました。
Discussion