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

Merpay Tech Fest 2021_リグレッションテストの自動化を段階的に実装した話 / The story of a step-by-step implementation of regression test automation

Merpay Tech Fest 2021_リグレッションテストの自動化を段階的に実装した話 / The story of a step-by-step implementation of regression test automation

Merpay Tech Fest 2021は5日間のオンライン技術カンファレンスです。

IT企業で働くソフトウェアエンジニアおよびメルペイの技術スタックに興味がある方々を対象に2021年7月26日(月)から7月30日(金)までの5日間、開催します。 Merpay Tech Festは事業との関わりから技術への興味を深め、プロダクトやサービスを支えるエンジニアリングを知れるお祭りです。 セッションでは事業を支える組織・技術・課題などへの試行錯誤やアプローチを紹介予定です。お楽しみに!

■イベント関連情報
- 公式ウェブサイト:https://events.merpay.com/techfest-2021/
- 申し込みページ:https://mercari.connpass.com/event/215035/
- 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

July 30, 2021
Tweet

More Decks by mercari

Other Decks in Technology

Transcript

  1. #MerpayTechFest
    Session Title
    リグレッションテスト 自動化を
    段階的に実装した話
    Masatomo Takano
    株式会社メルペイ QA Engineer

    View Slide

  2. #MerpayTechFest
    株式会社メルペイ QA Engineer
    Masatomo Takano
    ● 金融系システム QA経験約5年
    ● スマホ向けゲーム クライアント開発経験約
    4年
    ● スマホ向けゲーム バックエンド開発経験約
    1年
    ● メルペイにてQA Engineerとして参画
    ● 興味ある領域 テスト 自動化
    ● 趣味 ゲーム開発(今 スマホ向けアプリ)

    View Slide

  3. #MerpayTechFest
    前置き
    ● 担当マイクロサービスにおけるQAチーム 課題感
    ○ QA方法が難しい
    ■ バックエンドに閉じたサービスで、
    ツールを駆使してQAする必要がある
    ■ QA時にミスがあって、手戻りが度々発生していた
    ■ 機能単位で属人化していく傾向があった
    ○ 仕様が複雑
    ■ QA方法と相まって、キャッチアップに時間がかかる
    ■ 人が足りない!となった時に、単純な増員が難しい

    View Slide

  4. #MerpayTechFest
    前置き
    ● 課題感に対し取り組んだこと
    ○ せめてQA方法 簡略化したい!
    ■ 手間 かかる手順 なるべく機械化
    ● QAEngineerで簡単なスクリプトを作成
    ● 開発チームに協力をあおぐ
    → 段階的に取組みをしていったら、
     コマンド1つで、リグレッションテストができる状態になった!
     という話をさせていただきます。

    View Slide

  5. #MerpayTechFest
    担当するマイクロサービスについて(概要)
    ● お客さま 与信情報を取り扱うサービス
    ● メルカリや、指定信用情報機関(CIC)から信用情報を取得
    ● 取得した信用情報にも基づき、メルペイ側で定額払い 審査を実施
    信用情報照会
    定額払い申込み
    信用情報
    審査結果
    お客さま
    担当
    マイクロサービス

    View Slide

  6. #MerpayTechFest
    担当するマイクロサービスについて(概要)
    ● お客さま 与信情報を取り扱うサービス
    ● 月一でメルペイ 利用情報を登録する機能
    利用情報登録
    → 今回 こちら 機能について 取組みを紹介します!
    お客さま
    担当
    マイクロサービス

    View Slide

  7. #MerpayTechFest
    担当するマイクロサービスについて(月次登録)
    個人情報
    利用情報
    ①情報取得
    ②ファイル作成
    ③ファイル送信

    マイクロサービス

    View Slide

  8. #MerpayTechFest
    担当するマイクロサービスについて(月次登録)
    ④ファイル受信
    ⑤データ反映
    結果
    Spanner
    (DB)

    View Slide

  9. #MerpayTechFest
    担当するマイクロサービスについて(QA方法)
    ● QA実施時に 、内製 QAツールを利用
    ● 内製 QAツール 初期版 DB 初期化、ジョブ実行くらい 機能
    (新規 マイクロサービスだったため)
    ● 確認対象(全て目視確認だった)
    ○ DB 出力データ
    ○ 作成したファイル
    ○ GCS(Cloud Strage) 出力ファイル
    ○ スタブサーバへ出力された送信ファイル

    View Slide

  10. #MerpayTechFest
    ファイル作成部分をシーケンス図に表すと
    個人情報
    利用情報
    ①情報取得
    ②ファイル作成
    ③ファイル送信

    マイクロサービス

    View Slide

  11. #MerpayTechFest

    The Go gopher was designed by Renée French.

    View Slide

  12. #MerpayTechFest

    shell
    The Go gopher was designed by Renée French.

    View Slide

  13. #MerpayTechFest
    全自動化に至るまで
    ● 一気に全自動化を目指したわけで ない
    (そんな時間もなかった)
    ● 手間 かかる作業を細かい単位で順次機械化
    ○ QAEngineerで簡単なスクリプトを作成
    (shellスクリプト& python)
    ○ 開発チームに協力をあおいだ
    (全員品質!)
    → 時系列順に取組み 内容を、簡単に一部紹介させていただきます

    View Slide

  14. #MerpayTechFest
    取組み1:内製ツール 改修依頼
    ● 内容
    ○ 以下 ように、内製 QAツールに対して、
    Assert処理が書けるように機能拡張をお願いした
    ● 効果
    ○ テスト結果を機械的にチェックできるようになった
    The Go gopher was designed by Renée French.

    View Slide

  15. #MerpayTechFest
    取組み2:イメージ タグ名取得スクリプト 作成
    ● 内容
    ○ gcloud コマンドで、
    一覧 取得&フィルタリングまで
    できた
    ○ さらにタグ名をパースする形で、
    特定 タグ名を取得
    ○ さらにpbcopyコマンドを使い、
    クリップボード コピーまで実施
    ● 効果
    ○ コマンド一つで、
    特定 タグ名をクリップボードにコピーできるようになった
    shell

    View Slide

  16. #MerpayTechFest
    取組み3:GCS ファイル有無チェックをスクリプト化
    ● 内容
    ○ ブラウザで5クリックくらいし、
    ファイル 有無を目視確認していたが地味に辛かった
    ○ gsutilツールを用いて、特定 ファイルがDLできるかどうかを
    判定するスクリプトをpythonで作成
    ● 効果
    ○ ブラウザ操作がなくなり、コマンド実行 みで
    GCS ファイル有無をチェックできるようになった

    View Slide

  17. #MerpayTechFest
    取組み4:取組み3 スクリプト 移植依頼
    ● 内容
    ○ pythonで自作したスクリプト 処理を
    内製 QAツール(Golang)に移植してもらった
    ○ リリース後 フェーズで、開発チームにも少し余裕が出た
    タイミングであった
    ● 効果
    ○ 別途python スクリプトを実行して確認していたが、
    内製ツール シナリオに組み込めたため、
    別途実行する手間がなくなった
    The Go gopher was designed by Renée French.

    View Slide

  18. #MerpayTechFest
    取組み5:機能単位でリグレッションテスト 自動化
    ● 内容
    ○ 取組みで作成したスクリプト、及び内製 QAツール 実行を
    順次実行するようなshellスクリプトを作成
    ● 効果
    ○ 1コマンドで、機能単位で リグレッションテスト実行が可能に
    shell

    View Slide

  19. #MerpayTechFest
    再掲(月次登録について)
    個人情報
    利用情報
    ①情報取得
    ②ファイル作成
    ③ファイル送信

    マイクロサービス

    View Slide

  20. #MerpayTechFest
    再掲(昔)
    The Go gopher was designed by Renée French.

    View Slide

  21. #MerpayTechFest
    再掲(今) shell
    The Go gopher was designed by Renée French.

    View Slide

  22. #MerpayTechFest
    取組み6:全機能に対するリグレッションテスト自動化
    ● 内容
    ○ 機能単位で リグレッションテストを
    全て呼び出すシェルスクリプトを作成
    ● 効果
    ○ 全機能に対し、1コマンドで リグレッションテスト実行が可能に
    shell

    View Slide

  23. #MerpayTechFest
    再掲(月次登録について)
    個人情報
    利用情報
    ①情報取得
    ②ファイル作成
    ③ファイル送信

    マイクロサービス

    View Slide

  24. #MerpayTechFest
    再掲(月次登録について)
    ④ファイル受信
    ⑤データ反映
    結果
    Spanner
    (DB)

    View Slide

  25. #MerpayTechFest
    全実行(一部省略)
    shell
    The Go gopher was designed by Renée French.

    View Slide

  26. #MerpayTechFest
    取組み一覧
    1. 内製ツールでAssertを書けるように依頼
    2. イメージ タグ名取得スクリプト 作成
    3. GCS ファイル有無チェックスクリプト 作成
    4. 3 スクリプトを内製ツールへ移植依頼
    5. 機能単位で、リグレッションテストを実行するスクリプト 作成
    6. 全機能に対し、リグレッションテストを実行するスクリプト 作成
    shell
    shell
    shell

    View Slide

  27. #MerpayTechFest
    自動化 効果
    ● 実行時 ミス(手戻り)も0に!
    ● 誰でも再実行可能に!
    ● 全リグレッションテスト実行時 コスト
    ○ before
    ■ 約270分(4.5時間)
    ○ after
    ■ 約90分(1.5時間)+基本放置
    約1/3!

    View Slide

  28. #MerpayTechFest
    保守性について
    ● 半年くらい経つが、1,2回 修正で済んでいる
    ● スクリプト 単位が小さいため、
    ○ マイクロサービス プログラム改修に対する影響もほぼなし
    ○ キャッチアップする際も、
    スクリプト書けるレベルであれ 容易に読める量
    ● 何かしら 原因でスクリプトが動かなくなっても、
    元々マニュアルで実行していたも をスクリプト化している で、
    一部マニュアルで実行することで、QAが止まること ない

    View Slide

  29. #MerpayTechFest
    おわりに
    ● 少しずつQA作業を機械化することで、
    最終的に全自動化できるケースがあった
    ● 自動化することで、QAコストを大幅に下げ、
    実行に対する属人化が解消することができた
    ● 今回構築した自動化基盤が次 プロジェクトでも活用できている
    ● まだまだやりたいこと たくさん!
    ○ 環境未セットアップな人でもリモートで実行できるようにしたい
    ○ Slack bot経由で実行したい
    ○ 内製 QAツール(Golang)をQAEでも修正できるようにしたい
    → 常にGo Boldに色々な挑戦を引き続きしていきたい思いです

    View Slide

  30. #MerpayTechFest
    ご清聴いただきありがとうございました

    View Slide