はじめまして。メルペイのQA Engineerのsatomasaです。
本記事では私がメルペイのQA Engineerとして日々意識していることや取り組んでいることについて、紹介させていただきます。
特に特別なことはやっていないのですが、メルペイのQA Engineerが普段どんなことをやっているか少しでも伝われば幸いです。
メルペイのQAチームについて
メルペイのQAチームのメンバーはそれぞれ各プロダクトチームに所属し、日々業務を行っています。
メルペイでのQA活動については特に決まったやり方はありません。
所属しているチームの特性も違うので、メンバーそれぞれが自分なりのやり方を考えながらQA活動を行っています。
miisanさんやtakamaさんも記事を書いていますので、ご覧いただければと思います。
私はメルペイの社内向けの管理画面を開発するチームに所属しており、
PM、Backend Engineer、Frontend Engineer、QA Engineerで構成されています。
社内向けの管理画面といっても、メルペイ内にはいくつか種類があるのですが
私の所属しているチームでは
MSTool(Merchant Support Tool)
※メルペイをご利用いただけるお店、加盟店さまを管理する機能を持つ
と呼ばれるToolの開発をしています。
目指していること
私がQA Engineerとして活動する中で一番重要だと考えているのは
「ビジネス的にリリースしたいタイミングで高品質なプロダクトをリリースできるように品質保証を行う」
です。
これを実現するために
「テスト実施フェーズに検出される不具合の数をゼロにする」
※特に検出されると手戻り工数の多い考慮漏れなどのリリースブロッカーとなりうる不具合
という状態を目指すことで、より良いものを早く安全にリリースできる確率が高まると思っています。
各フェーズで意識していること、取り組んでいること
上流のフェーズで不具合を検出すべく意識していることや取り組んでいることについて紹介します。
企画検討フェーズ
企画の検討と仕様が決定されるフェーズとなり、仕様のレビューを行います。
私の所属しているチームでは、メンバーが集ってミーティングをしてレビューをしており、
PMが作成した仕様に対して主にBackend Engineer、Frontend Engineer、QA Engineerでレビューを行います。
レビューの観点については各Engineerで異なりますが、
私が特に意識している観点は主に以下の3つです。
- 新しい仕様によって、既存仕様と矛盾が発生しないか
- 過去にあった類似の障害、不具合に対する考慮がされているか(対策されているか)
- Toolとして使用したときに使い勝手はどうか
- 気になったことはどんな小さなことでも確認する
言うまでもなく、このタイミングで仕様の考慮漏れなどを検出することで手戻り工数を削減することができます。
レビュー対象の資料はPMが作成するのですが、各職種のエンジニアがそれぞれの観点でレビューを行い、チーム全員で協力して仕様を作り上げているという雰囲気があって良いなと思っています。
テスト設計フェーズ(テスト実施の準備フェーズ)
決定した仕様に対して、テスト設計を行っていきます。またテスト実施フェーズに向けた準備フェーズとなります。
このフェーズで意識していることは以下です。
再利用可能なテストケース(あとから見てもわかりやすいテストケース)を作成する
なぜか
テストケースは一度作って終わりではなく、リリース後も使用することがあります。
たとえば、似たような機能の改修があった際に過去のテストケースをもとに新しいテストケースを作成したり、リファクタリングがはいり以前やっていたテストケースを再度実行する場合などです。
そのときに見てもわからないテストケースだと、いちいち過去の仕様を紐解いて新規でテストケースを作成する必要があり、工数が余計にかかってしまいます。
そのため最初にテストケースを作成する際にリリース後も使用する前提で作成するように心がけています。
テスト実施フェーズに向けて準備を入念に行う
なぜか
テスト実施時にテストが進まなくなるようなことがないように
- テストデータの作成方法を明確にしておく
- テストデータの作成を自動化する
- 異常系のテストケースなど、テスト手順が難しくなりそうな部分について手順を明確化しておく
のようなことをこのフェーズで解決し、テスト実施がスムーズに行えるように心がけています。
テストケースレビューをできる限り早いタイミングで行う
なぜか
テストケースレビューの参加者はPM、Backend Engineer、Frontend Engineer、QA Engineerです。
テストケースレビューの目的はいろいろあると思いますが、一番の目的は各職種間で仕様に対する認識の齟齬がないかを確認する場としてセッティングしています。
テストケースを作成していくと、仕様レビューのときより機能に対する理解が深まっていくので、実際にToolとして使用したらどうなりそうとかイメージがつきやすくなっています。そのイメージを各職種間で共有することで、各職種間で認識の齟齬がないかを確認しています。
また、テストケースレビューを早いタイミングを行うことで、認識の齟齬を早期に解消し手戻り工数を削減できます。
テスト実施フェーズ
作成したテストケースを実施していくフェーズです。
実施するテストはAPIのテストとUIのテストなどがあります。
- テストケースの進め方
テストケースを上から順に実施するのではなく、まずはブロッカーとなる不具合がないかを全体的に確認するために、新規で実装された部分や重要な機能について不具合がないかを全体的に確認していきます。
- リグレッションテストのテストケース作成とテストコード実装
リグレッションテストは改修された内容によって想定しない影響が起きていないかを確認するためのテストです。
私の所属しているチームではテスト実施フェーズの最終確認としてリグレッションテストを実施し、問題なければリリースというフローになっています。
リグレッションテストの自動化にも取り組んでおり、テスト自動化の工数についてはQA工数に含む形で予め見積もることになっており、チーム全体としてテスト自動化について取り組んでいく方針になっています。
自動化についてはこちらの記事にあるようにcypressを使用しています。
テストコードの実装はその機能がリリースされる前のテスト実施フェーズで行っており、テストコードの実装はQA Engineer、レビューはFrontend Engineerという役割になっています。
Frontend Engineerのレビューによりコードの冗長な部分だったり、共通化すべき箇所のアドバイスをもらえるのでコードのメンテナンス性が高い状態を維持できています。
また現在はテスト実施フェーズでテストコードの実装を行っていますが、
理想としては、もっと早いタイミングでテストコードの実装を完了したいと思っています。
これによりテスト実施フェーズ開始とともに自動テストを実行し、手動テストの工数を削減したり、より早いタイミングでブロッカーとなるような不具合を検出することができます。
リリース後
- Production環境での確認
Production環境での確認は制限事項がいろいろとあり確認できる部分は限られるのですが、
新規開発の場合は疎通確認が重要となるため、予めProduction環境確認用のテストケースを準備し、関係するチームと調整し実施しています。
- リグレッションテストの定期実行
事前のテスト実施フェーズで自動化したリグレッションテストは定期的に実行されており、意図しない不具合やエラーが発生した際に気付けるようになっています。
- 振り返り
チームでは週次でKPTを行っているため、今回の開発では特にこういった不具合が多かったなど、気になることがあれば議題として挙げてチームで改善、検討を行っています。
一つのリリースが終わっても、すぐに次の機能開発のテスト設計を行う短いサイクルで断続的にリリースが行われます。
QAのテスト設計やテスト実施が遅延したり、他の要因でも遅れが発生した場合、一つのリリースが遅れるだけではなく、後続のリリースも遅延するリスクが高まります。
なので一つの機能開発に対してテスト計画を立てるだけではなく、1ヶ月単位、3ヶ月単位で計画も立てる必要があります。
まとめ
各フェーズで取り組んでいる内容について紹介させていただきましたが、実際には各フェーズが明確に区切られているわけではありません。そのため、前倒して行えるような業務があるなら、より上流のフェーズで業務を行うことを意識しています。
またメルペイのQAチームはフルスタックQAを目標として掲げており、メンバーの殆どが企画検討〜テスト設計〜テスト実施〜テスト自動化まで関わっています。
私自身も特定のフェーズや役割にこだわることなく、今以上に業務の幅を広げていきたいと考えています。
最後に
メルペイのQA Engineerとして私がやっていることを紹介させていただきました。
今回紹介させていただいた部分が業務の全部ではありませんが、メルペイQA Engineerに少しでも興味を持っていただけたら幸いです。
現在、メルペイのミッション・バリューに共感できるQA Engineerを募集しています。
一緒に働き、切磋琢磨できる仲間をお待ちしておりますので、興味を持っていただいた方のご連絡をお待ちしております。
- QA Engineer Lead [Mercoin / Merpay]
- QA Engineer [Mercoin / Merpay]
- Test Engineer [Mercoin / Merpay]
- QA Engineer Lead | 大阪 [Mercoin / Merpay]
- QA Engineer | 大阪 [Mercoin / Merpay]
- Test Engineer | 大阪 [Mercoin / Merpay]
8/27(金)のfreeeさまとの共同イベントにはメルペイQAチームのマネージャーであるGakuさんが登壇いたします。
メルペイQAチームの雰囲気なども感じられると思いますので、ご参加お待ちしております!
最後まで、お読みいただきありがとうございました!