#presentation Date : 2021/6/24 [https://youtu.be/TGDXOaKrIeg](https://youtu.be/TGDXOaKrIeg) 「リリースを早めるQA」というテーマの元に以下の3つのテーマ を freee と メルペイ で話す会 ## 上流工程で何をしてるか - メルペイ - 計画の段階からバグが発生しないようにというのを意識してる - 他社の決済フレームとかでIFを決める段階とかで入って話す - freee - 1週間スプリントのスプリント計画の時にQAが入って要件定義とかしてる - 実装してるタイミングでQAはテスト設計を行なって実装が終わる前にテスト設計を終えて実装が終わったタイミングで実施をする - テストのレビューよりもテストのディスカッションをしてる - こういうテストしますけど、実装漏れないですよね?みたいな関係 - 仕様の抜け漏れとかを一緒に見るイメージ - 実装前に抜け漏れがわかることがポイント ## 開発中のテスト - メルペイ - 開発段階からフィードバックをする - 開発が完了したらすぐテストを実施するようにする - 案件中にリグレッションテストも作成してる - APIの自動テストを実装したりしてる postman とか - postman はQAエンジニアしかメンテしていなかったりした - 今は社内ツールに移行してて全エンジニアがケースを作成したりできる - [https://engineering.mercari.com/blog/entry/20201225-78a1840466/](https://engineering.mercari.com/blog/entry/20201225-78a1840466/) - freee - フィードバックを早くすることで開発を早くするという思想 - 開発時にはユニットテストを書いてる - ステージング環境でのAPI自動テストとかを実施したり - E2Eテストとかの整備とか、並列化とかをQAエンジニアがやってたりする ## リリースした後の改善活動はどうしてる - メルペイ - 改善活動として自動化に重きを置いてる - 最初はマニュアルのQAをやってしまったのでリリースしたあとに自動テストを書いたりしてる - freee - バグを資産として管理していて、バグの原因を分析して再発防止策を強く進めたりする - プロダクトマネージャーや税理士を招いてシナリオ作ったりしてる ## 質問 - Q. 決済という難しいドメインの中でどうやって要件定義などをしてるか to merpay - 立ち上がりに時間かかってしまう - オンボーディングを整えたりとかで対応してる - 技術的なことをざっくりと説明できることが重要なので課題形式でテスト実行してるときに「今DBどうなってるの?」とかっていう感じで課題形式でやってたりする - マイクロサービス間の関係などをQAが一番詳しかったりする - 開発者はサービスに完結してるが、QAはいろんなシステムの間を知らないといけないのでそこを重点的に見てる - freee でも他のチームのQAと話して連携してたりもする - Q. 自動テストの実装はQAエンジニアが対応されているのでしょうか? - freee はテストピラミッドにおける上位のUIテストやIntegration Test は QAエンジニアが書いてる - ユニットテストは、開発者 - メルペイは逆でUIテストとかを開発者で書いて、バックエンドのテストとかをQAエンジニアが書いたりしてる - UIテストはモバイルアプリとかで XCTest とかを使っているので開発者がメインになってる - Q. マニュアルテスト、ユニットテスト、E"Eテストなどがどういう割合か (そもそもQAエンジニアはどの領域が専門?) - freee - ユニットテスト -> 開発者 - UIテスト -> SEQ (QAエンジニア) - メルペイ - 開発者とQAエンジニアでそれぞれできる人が書くという感じ - チームのテストに詳しい開発者としてのQAエンジニア - Q. これができる人材を生み出すためのキャリアパス - メルペイ - SETとかという枠を作らずにフルスタックQAエンジニアを目指してる - freee - ベンダーさんも含めて自動テストが書けるように勉強中 - Q. プロダクトの規模間とQAの人数や比 - メルペイ - マイクロサービス数は40でそれぞれによって違う - プロセスもプロジェクトに合わせてやっている - freee - サービスはチームによって進め方が違う - Q. 技術的負債に対しての取り組み - メルペイ - QAエンジニアとしては技術的負債の棚卸しをした - [https://engineering.mercari.com/blog/entry/20210309-f189ebeb4e/](https://engineering.mercari.com/blog/entry/20210309-f189ebeb4e/) - freee - QAエンジニアとしてリファクタリングやテストの不足を指摘したりとか - git log を見てどの年代にどういう機能にバグが出てるかを調べたりしてる - Q. ユーザービリティーのテスト - QA側でアクセシビリティを担保してテストを回したりしてる - ユーザーテストは、開発する前にユーザーに対してインタビューするとかも含めて実施してる (これは別の組織で) - Q. JSTQBやIVECなどの知識をQAに生かしてるかどうか - 現場でがっつり使ってるかというとそうでもないけど、 - Q. 負荷試験とか性能試験とかはどうやってるか - セキュリティチームが最初からチームに入ってレビューをしたりする - 性能はSRE と協力しつつ QAエンジニアサイドで [https://dev.classmethod.jp/articles/gatling/](https://dev.classmethod.jp/articles/gatling/) を使ったりしてやったりする # 感想