Upgrade to Pro — share decks privately, control downloads, hide ads and more …

QA自動化チームの立ち上げとテスト自動化の現状 / Launch of QA automation team and current status of test automation

QA自動化チームの立ち上げとテスト自動化の現状 / Launch of QA automation team and current status of test automation

メルペイQAチームでは、よりよいサービスをお客さまに早く届けるために、日々品質保証活動に対し試行錯誤を繰り返しています。昨今、スピーディーにサービスを提供することにテストの自動化は欠かせなくなってきました。メルペイでもテストの自動化を全社的に推進はしていますが、まだまだ全チームが十分に自動テストを活用できているとは言えない状況です。そこでQA内で自動化専任のチームを立ち上げ、テストの自動化を推進することにしました。チームの立ち上げに伴い苦労したこと、またテスト自動化の現状を整理したので、その結果を伝えたいと思います。
------
Merpay Tech Fest 2022は3日間のオンライン技術カンファレンスです。
IT企業で働くソフトウェアエンジニアおよびメルペイの技術スタックに興味がある方々を対象に2022年8月23日(火)から8月25日(木)までの3日間、開催します。 Merpay Tech Festは事業との関わりから技術への興味を深め、プロダクトやサービスを支えるエンジニアリングを知れるお祭りです。 セッションでは事業を支える組織・技術・課題などへの試行錯誤やアプローチを紹介予定です。お楽しみに!

■イベント関連情報
- 公式ウェブサイト:https://events.merpay.com/techfest-2022/
- 申し込みページ:https://mercari.connpass.com/event/249428/
- Twitterハッシュタグ: #MerpayTechFest
■リンク集
- メルカリ・メルペイイベント一覧:https://mercari.connpass.com/
- メルカリキャリアサイト:https://careers.mercari.com/
- メルカリエンジニアリングブログ:https://engineering.mercari.com/blog/
- メルカリエンジニア向けTwitterアカウント:https://twitter.com/mercaridevjp
- 株式会社メルペイ:https://jp.merpay.com/

mercari
PRO

August 25, 2022
Tweet

More Decks by mercari

Other Decks in Technology

Transcript

  1. QA自動化チームの立ち上げと テスト自動化の現状 Masatomo Takano 株式会社メルペイ QA Engineer

  2. Masatomo Takano / @nir_takemi 株式会社メルペイ QA Engineer • 金融系システムのQA経験約5年 •

    スマホ向けゲームのクライアント開発経験約 4年 • スマホ向けゲームのバックエンド開発経験約 1年 • メルペイにてQA Engineerとして参画 • 興味ある領域はテストの自動化 • 趣味はアプリ開発(今は英語学習アプリ作成中)
  3. 目次 01 課題 02 自動化チームの発足について 03 アクション • テスト自動化の現状整理 •

    自動化基盤の作成 • 自動テストの作成(サポート) など 04 おわりに
  4. 目次 01 課題 02 自動化チームの発足について 03 アクション • テスト自動化の現状整理 •

    自動化基盤の作成 • 自動テストの作成(サポート) など 04 おわりに
  5. • 全社的な状況 ◦ リリースしたい機能/サービスが多い ◦ リリーススピードを早くしたい • QA組織の課題 ◦ QAエンジニアがもっと必要!

    ▪ 1人が複数プロジェクトを兼任している状況 ▪ 協力会社の方々に多分にご協力いただいている状況 課題 → テストを自動化することで、少しでも緩和したいが、  自動化している時間が確保できない!
  6. 目次 01 課題 02 自動化チームの発足について 03 アクション • テスト自動化の現状整理 •

    自動化基盤の作成 • 自動テストの作成(サポート) など 04 おわりに
  7. • 自分の担当サービスでテスト自動化が進んでいた ◦ QA Engineer1年生の1年間で取り組んだことの紹介 ▪ https://engineering.mercari.com/blog/entry/20201225-78a1840466/ ◦ リグレッションテストの自動化を段階的に実装した話【 Merpay

    Tech Fest 2021】 ▪ https://engineering.mercari.com/blog/entry/20210928-mtf2021-day5-2/ ◦ QA Engineer2年生がQA的技術的負債と立ち向かった話 ▪ https://engineering.mercari.com/blog/entry/20220118-dfa7943248/ • リリース速度も安定していた • 自動化周りに興味があった 自動化チームの発足について
  8. • 自分の担当サービスでテスト自動化が進んでいた ◦ QA Engineer1年生の1年間で取り組んだことの紹介 ▪ https://engineering.mercari.com/blog/entry/20201225-78a1840466/ ◦ リグレッションテストの自動化を段階的に実装した話【 Merpay

    Tech Fest 2021】 ▪ https://engineering.mercari.com/blog/entry/20210928-mtf2021-day5-2/ ◦ QA Engineer2年生がQA的技術的負債と立ち向かった話 ▪ https://engineering.mercari.com/blog/entry/20220118-dfa7943248/ • リリース速度も安定していた • 自動化周りに興味があった 自動化チームの発足について チーム横断で動ける チーム(一人)として 動いてみたい!
  9. 自動化チームの発足について

  10. 自動化チームの発足について どうしよう?

  11. • 理想の状態を考えてみた ◦ 既存案件 ▪ リグレッションテストは自動テストを実行するだけ ◦ 新規案件 ▪ テスト計画の段階で、テストの自動化戦略が決定している

    ▪ リリースまでに自動テストが回せる状態になっている 自動化チームの発足について
  12. • 自動化チームのミッション ◦ まずは自動化の基盤を整えよう! ◦ 各QAチームが自動テストを書ける(メンテできる)状態にしよう 自動化チームの発足について

  13. ちょっとまって

  14. • 動こうにも知らないことだらけだった ◦ どのチームがどれだけ自動化できているのか? ◦ そもそも対象のサービスはどれだけあるのか? 自動化チームの発足について → 把握しているメンバーが誰もいない状態だった

  15. まずは状況を整理しよう!

  16. • ロードマップ(仮) a. テスト自動化の現状整理 b. サポート対象のチームを選定 c. 自動テストの作成(サポート) 自動化チームの発足について

  17. 目次 01 課題 02 自動化チームの発足について 03 アクション • テスト自動化の現状整理 •

    自動化基盤の作成 • 自動テストの作成(サポート) など 04 おわりに
  18. • ヒアリングポイント ◦ 対象のマイクロサービス ◦ テスト対象(バックエンド or フロントエンド or アプリ)

    ◦ 現状の自動化状況 ◦ 現状の利用ツール ◦ 今後自動化していきたいのか? • ※2021/11 時点のものでちょっと情報が古いです 現状整理
  19. • テスト対象に関する補足情報 ◦ マイクロサービス単位での品質保証 ▪ フロント、アプリとの結合前に見つかるべき不具合の発見 ▪ マイクロサービス間の結合で見つかるべき不具合の発見 ▪ マイクロサービス単位でのリリース

    現状整理 テスト ピラミッド
 「テストの基礎」の「テストを作成」より引用
 https://developer.android.com/training/testing/fundamentals#write-tests

  20. • 対象のサービス数 ◦ バックエンド:50+ ◦ フロントエンド:10+ ◦ アプリ:5+ 現状整理 =マイクロサービス数

    アプリから利用するマイクロサービス数 加盟店等に関するWebベースのサービス数
  21. • 自動化状況 現状整理

  22. • 自動化状況 現状整理 → 自動化できている割合  フロントエンド > バックエンド > アプリ

  23. • 自動化不要の理由 ◦ 規模が小さく、自動化するメリットが少ない ◦ QAがそもそも関与していない(社内サービス等) ◦ 現在稼働していない ◦ NFCなど実機依存のケースなど

    現状整理
  24. • 利用ツール 現状整理

  25. • 自動化状況(バックエンドのAPI/ジョブ別) 現状整理 → APIのテストよりもジョブのテストの方が自動化難易度が高そう

  26. • 利用ツール(バックエンドのAPI/ジョブ別) 現状整理

  27. • 利用ツール(バックエンドのAPI/ジョブ別) 現状整理 → バックエンドの内製ツールは、ジョブを単発で実行したりするものが多い

  28. • バックエンドの内製ツールでの自動化 ◦ ジョブを単発で実行したりするものが多い ◦ ジョブを実行、値のチェックもできるのは珍しい ▪ バッチ処理のリグレッションテスト自動化のトライ • https://engineering.mercari.com/blog/entry/20220412-try-batch-regressio

    n-test-automation/ ▪ リグレッションテストの自動化を段階的に実装した話【 Merpay Tech Fest 2021】 • https://engineering.mercari.com/blog/entry/20210928-mtf2021-day5-2/ 現状整理 〜バックエンドの利用ツール補足〜
  29. • 利用ツール(バックエンドのマニュアルテストのみ) 現状整理

  30. • 利用ツール(バックエンドのマニュアルテストのみ) 現状整理 • Postmanが使いやすい • スピード感を持って対応する際に Postmanが採用されやすい • scenarigoの利用が自動化前提で

    使われている(推測)
  31. • バックエンド ◦ APIテストはPostman or scenarigo を利用 ◦ APIテストのマニュアル実行で用いられる割合はPostmanが多い ◦

    ジョブのテストは内製ツール or scenarigo を利用 ◦ 開発チーム側ではgoのe2eテストツールでIntegration testまで実 行。APIテストからはQAチーム側で、異なるツールを用いて実行する ことが主 ▪ マイクロサービスの開発とテストファースト /テスト駆動開発 • https://engineering.mercari.com/blog/entry/gears-microservices/ 自動化の傾向まとめ
  32. • フロントエンド ◦ 基本的に Cypress ◦ Cypressで対応不可の部分はマニュアル実行 ◦ 開発エンジニアもIntegration testでCypressを利用

    ▪ メルペイフロントエンドのテスト自動化方針 • https://engineering.mercari.com/blog/entry/20211208-test-automation -policy-in-merpay-frontend/ 自動化の傾向まとめ
  33. • アプリ ◦ iOSは、XCUI ◦ Androidは、Espresso ◦ 開発エンジニアでのみ、テストコードを書いている状況 ◦ 機能追加時等、QAでのテストは100%マニュアルテスト

    ◦ 以前はappiumベースだった時もあった ▪ メルカリQA-SETチームが進めているテスト自動化についての質問まとめ • https://engineering.mercari.com/blog/entry/2017-10-03-093955/ 自動化の傾向まとめ
  34. • 全体 ◦ 開発/QAエンジニア共に近い環境で書けると自動化が進む傾向あり ▪ フロントエンド • 開発エンジニア:Cypress • QAエンジニア:Cypress

    ▪ バックエンド • 開発エンジニア:Go • QAエンジニア:Postman or scenarigo ▪ アプリ • 開発エンジニア:XCUI or Espresso • QAエンジニア:ほぼ関われていない 自動化の傾向まとめ
  35. • 全体 ◦ 基本的にツールは一つに絞る ◦ ツールの選定の要素として、 開発エンジニアが利用しやすい(馴染みある)ものに寄せる ◦ テストコードはシンプルに書くようにする(保守性/可読性重視) ▪

    開発エンジニアもQAもみんなが理解しやすいのを目指すべき ▪ 振る舞いこそ正義! 自動化ポリシー 「なぜE2Eテストでidを使うべきではないのか」 より引用(https://blog.autify.com/ja/why-id-should-not-be-used )
 

  36. • シンプルなテストコードの例 〜バックエンド〜 a. ユーザを作成 b. スマート払いで商品を購入 c. 月次ジョブを実行(清算可能状態にする) d. 清算をする

    e. 清算が正常に完了したか確認する 自動化ポリシー
  37. • シンプルなテストコードの例 〜フロントエンド〜 a. アドレスを入力 b. パスワードを入力 c. ログインボタンを押下 d. サービスのトップ画面に遷移することを確認する

    自動化ポリシー
  38. • バックエンド ◦ APIテストの自動化はscenarigoを用いる ◦ バッチのテストも基本scenarigoを用いる ▪ DebugAPI経由でバッチと同じ処理を実行 ▪ pluginでバッチを実行

    ◦ ただし内製ツールでデータ準備をする場合、 内製ツールを拡張して自動テストできるようにする 自動化ポリシー
  39. • フロントエンド ◦ Cypressを用いる • アプリ ◦ iOSは、XCUIを用いる ◦ Androidは、Espressoを用いる

    自動化ポリシー
  40. • 対応ポリシー ◦ バックエンドに対象を絞る ◦ サポート対象は以下の観点で優先付 ▪ 自動化の基盤が整っていないサービス ▪ リリース/リグレッションテストが定期的に発生し、

    自動化ができていないサービス ◦ スムーズに運用するために ツールの理解を深める働きかけをする どうしていこうか?
  41. • ロードマップ 修正版 a. テスト自動化の現状整理 b. サポート対象のチームを選定 c. 自動化基盤の作成 d.

    自動テストの作成(サポート) e. (並行して)自動化ツールの勉強会 こうしていこう!
  42. 目次 01 課題 02 自動化チームの発足について 03 アクション • テスト自動化の現状整理 •

    自動化基盤の作成 • 自動テストの作成(サポート) など 04 おわりに
  43. • APIテストのみを対象とするサービス a. scenarigoのsetup対応を請負 • テストのオペレーションの中で内製ツール等の実行が含まれる場合 a. 使い方をヒアリング b. 処理をscenarigoのpluginで実装

    c. scenarigoで自動化できるよう調整 自動化基盤の作成
  44. 目次 01 課題 02 自動化チームの発足について 03 アクション • テスト自動化の現状整理 •

    自動化基盤の作成 • 自動テストの作成(サポート) など 04 おわりに
  45. • 実際に自動テストを作成 • 作成した内容を勉強会で、他チームにもシェア • 相談ベースで自動化テスト作成のサポート 自動テストの作成 / サポート

  46. • 実際に自動テストを作成 • 作成した内容を勉強会で、他チームにもシェア • 相談ベースで自動化テスト作成のサポート 自動テストの作成 / サポート →

    一人チームだと対応量に限界が……
  47. • 優先度の高いプロジェクトによりフォーカスしてサポート • 開発エンジニア側にお任せできるところはお任せ (ケースはQAが考えて、テストコードの実装は開発エンジニアさん 等) 自動テストの作成 / サポート

  48. • 成果 a. テスト自動化の状況を可視化した b. 自動化の基盤を整えた(=自動化できる状況を提供できた) c. 複数チームで、自動化の一歩目を踏み出せた d. 自動化をどうしてけばいいかの方向性を出すことができた

    • 課題 a. ケースの追加とメンテナンスがまだまだ難しい状況 ▪ 対応可能な人が少 ▪ ツールの使い方が難 b. アプリの自動化が未だにノータッチ 自動化チームの成果と今後の課題
  49. • その他 a. 今回定めた自動化のポリシーが、他の新規プロジェクトでも活きた ▪ mercari NFT • バックエンド(管理ツール) •

    フロントエンド(未ログイン時) 自動化チームの成果と今後の課題 方向性は 間違って なさそう?
  50. 目次 01 課題 02 自動化チームの発足について 03 アクション • テスト自動化の現状整理 •

    自動化基盤の作成 • 自動テストの作成(サポート) など 04 おわりに
  51. • テストの自動化を推進するチームを作ってみた a. テスト自動化の現状を整理した b. 自動テストの基盤構築をサポートした c. 自動テストの作成をサポートした d. 自動テストで使用するツールの勉強会を実施した

    おわりに
  52. • 現状整理した結果 a. バックエンドの自動化が進むと嬉しい状況だった b. 利用ツール ▪ バックエンド:scenarigo|Postman|内製ツール ▪ フロントエンド:Cypress

    ▪ アプリ:XCUI|Espresso おわりに
  53. • 自動化ポリシーを定めた a. ツールは多用せず、基本1つに集約! ▪ バックエンド:scenarigo (条件によっては内製ツールも利用) ▪ フロントエンド:Cypress ▪

    アプリ:XCUI|Espresso b. テストコードは誰でも分かるくらいシンプルに! おわりに
  54. • 改めてチームで全員品質を意識して行動する大事さを感じました • 一人でできることの限界を感じました • テスト自動化周りに興味ある方は是非お声がけください! さいごに

  55. None