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

Merpay Tech Fest 2021_リグレッションテストの自動化を段階的に実装した話 ...

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

July 30, 2021
Tweet

More Decks by mercari

Other Decks in Technology

Transcript

  1. #MerpayTechFest 株式会社メルペイ QA Engineer Masatomo Takano • 金融系システム QA経験約5年 •

    スマホ向けゲーム クライアント開発経験約 4年 • スマホ向けゲーム バックエンド開発経験約 1年 • メルペイにてQA Engineerとして参画 • 興味ある領域 テスト 自動化 • 趣味 ゲーム開発(今 スマホ向けアプリ)
  2. #MerpayTechFest 前置き • 担当マイクロサービスにおけるQAチーム 課題感 ◦ QA方法が難しい ▪ バックエンドに閉じたサービスで、 ツールを駆使してQAする必要がある

    ▪ QA時にミスがあって、手戻りが度々発生していた ▪ 機能単位で属人化していく傾向があった ◦ 仕様が複雑 ▪ QA方法と相まって、キャッチアップに時間がかかる ▪ 人が足りない!となった時に、単純な増員が難しい
  3. #MerpayTechFest 前置き • 課題感に対し取り組んだこと ◦ せめてQA方法 簡略化したい! ▪ 手間 かかる手順

    なるべく機械化 • QAEngineerで簡単なスクリプトを作成 • 開発チームに協力をあおぐ → 段階的に取組みをしていったら、  コマンド1つで、リグレッションテストができる状態になった!  という話をさせていただきます。
  4. #MerpayTechFest 担当するマイクロサービスについて(QA方法) • QA実施時に 、内製 QAツールを利用 • 内製 QAツール 初期版

    DB 初期化、ジョブ実行くらい 機能 (新規 マイクロサービスだったため) • 確認対象(全て目視確認だった) ◦ DB 出力データ ◦ 作成したファイル ◦ GCS(Cloud Strage) 出力ファイル ◦ スタブサーバへ出力された送信ファイル
  5. #MerpayTechFest 全自動化に至るまで • 一気に全自動化を目指したわけで ない (そんな時間もなかった) • 手間 かかる作業を細かい単位で順次機械化 ◦

    QAEngineerで簡単なスクリプトを作成 (shellスクリプト& python) ◦ 開発チームに協力をあおいだ (全員品質!) → 時系列順に取組み 内容を、簡単に一部紹介させていただきます
  6. #MerpayTechFest 取組み1:内製ツール 改修依頼 • 内容 ◦ 以下 ように、内製 QAツールに対して、 Assert処理が書けるように機能拡張をお願いした

    • 効果 ◦ テスト結果を機械的にチェックできるようになった The Go gopher was designed by Renée French.
  7. #MerpayTechFest 取組み2:イメージ タグ名取得スクリプト 作成 • 内容 ◦ gcloud コマンドで、 一覧

    取得&フィルタリングまで できた ◦ さらにタグ名をパースする形で、 特定 タグ名を取得 ◦ さらにpbcopyコマンドを使い、 クリップボード コピーまで実施 • 効果 ◦ コマンド一つで、 特定 タグ名をクリップボードにコピーできるようになった shell
  8. #MerpayTechFest 取組み3:GCS ファイル有無チェックをスクリプト化 • 内容 ◦ ブラウザで5クリックくらいし、 ファイル 有無を目視確認していたが地味に辛かった ◦

    gsutilツールを用いて、特定 ファイルがDLできるかどうかを 判定するスクリプトをpythonで作成 • 効果 ◦ ブラウザ操作がなくなり、コマンド実行 みで GCS ファイル有無をチェックできるようになった
  9. #MerpayTechFest 取組み4:取組み3 スクリプト 移植依頼 • 内容 ◦ pythonで自作したスクリプト 処理を 内製

    QAツール(Golang)に移植してもらった ◦ リリース後 フェーズで、開発チームにも少し余裕が出た タイミングであった • 効果 ◦ 別途python スクリプトを実行して確認していたが、 内製ツール シナリオに組み込めたため、 別途実行する手間がなくなった The Go gopher was designed by Renée French.
  10. #MerpayTechFest 取組み一覧 1. 内製ツールでAssertを書けるように依頼 2. イメージ タグ名取得スクリプト 作成 3. GCS

    ファイル有無チェックスクリプト 作成 4. 3 スクリプトを内製ツールへ移植依頼 5. 機能単位で、リグレッションテストを実行するスクリプト 作成 6. 全機能に対し、リグレッションテストを実行するスクリプト 作成 shell shell shell
  11. #MerpayTechFest 自動化 効果 • 実行時 ミス(手戻り)も0に! • 誰でも再実行可能に! • 全リグレッションテスト実行時

    コスト ◦ before ▪ 約270分(4.5時間) ◦ after ▪ 約90分(1.5時間)+基本放置 約1/3!
  12. #MerpayTechFest 保守性について • 半年くらい経つが、1,2回 修正で済んでいる • スクリプト 単位が小さいため、 ◦ マイクロサービス

    プログラム改修に対する影響もほぼなし ◦ キャッチアップする際も、 スクリプト書けるレベルであれ 容易に読める量 • 何かしら 原因でスクリプトが動かなくなっても、 元々マニュアルで実行していたも をスクリプト化している で、 一部マニュアルで実行することで、QAが止まること ない
  13. #MerpayTechFest おわりに • 少しずつQA作業を機械化することで、 最終的に全自動化できるケースがあった • 自動化することで、QAコストを大幅に下げ、 実行に対する属人化が解消することができた • 今回構築した自動化基盤が次

    プロジェクトでも活用できている • まだまだやりたいこと たくさん! ◦ 環境未セットアップな人でもリモートで実行できるようにしたい ◦ Slack bot経由で実行したい ◦ 内製 QAツール(Golang)をQAEでも修正できるようにしたい → 常にGo Boldに色々な挑戦を引き続きしていきたい思いです