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

How we automate End to End tests at mercari

How we automate End to End tests at mercari

システムテスト自動化カンファレンス2017-2
https://testautomationresearch.connpass.com/event/71564/

E8aaf6f975dda96c47412cf311089243?s=128

Tadashi Nemoto

December 10, 2017
Tweet

Transcript

  1. How we automate End to End tests at mercari Tadashi

    Nemoto
  2. 自己紹介 • 根本 征 (github: tadashi0713) • Since 2016 as

    new graduate • QA-SET(Software Enginner in Test) team at Mercari • Automation Engineer • Web・Mobile test automation (UI・End to End) • iOS・Android CI • 社内業務自動化・効率化
  3. 自己紹介 • AppiumからXCUITestに変え、そのためにSwiftを学び始め た話 • Android CIをBitriseに移行して開発者・QAが幸せになったこ と • 退屈なブラウザ作業はSeleniumにやらせようーーはじめてで

    もできるブラウザ操作自動化
  4. メルカリ • アプリリリースから4年 • 日米7500万ダウンロード • 月間の流通総額100億円超 • 3つのリージョン・100人以上のソフトウェアエンジニア •

    Tokyo, San Fransico, London Mercari Tech Conf 2017基調講演より
  5. QA-SETチームとして取り組んできたテスト自動化 (主にモバイルアプリEnd to End)の • これまでと現在 • 意識していること3つ についてお話しします

  6. これまでと現在

  7. SET(Software Engineer in Test)チーム • 2016年10月に発足 • 開発拠点にUKが入ったのがきっかけ • QA工数の増大

    • QA環境の整備 • 3人 • 開発環境・QA環境構築 2人 • アプリE2Eテスト 1人 → 2人
  8. 当時のプロダクト開発・QA状況 • USファーストの開発 • プロダクトチームの8~9割程度 • 3リージョン同じソースコード(API・iOS・Android) • QAはクライアントリリース前にマニュアルでリグレッション テストを実施

    • 繰り返し作業、リリースサイクルが早い • 他リージョンへの考慮も必要
  9. ターゲット • US版 iOS / Android • リリースが頻繁 & USファースト

    • マニュアルで行われていたテスト項目を自動化 • マニュアルテストの工数を削減 • Android: Appium(Python→Ruby) • iOS: XCTest UITest(Swift)
  10. 結果 • 両OS共にテスト項目50%自動化 • 人より早くバグを見つけたことも • QA内でのテスト自動化の認知が上がった しかし、 • iOS・AndroidはRegionごとにFork

    • US版はリニューアル版に移行 • よって中止
  11. JP US UK

  12. QA-SETチーム • 2017年4月に発足 • SET インフラエンジニア • SET 自動化エンジニア •

    E2EテストはJP版・US(リニューアル)版から • JPはリグレッションテスト全体の約3/4が自動化 • アプリE2Eテスト以外にも取り組み出している • 取引画面(Webview) • Postman, JMeterを使ったAPIテスト
  13. 意識していること3つ

  14. 認知・使ってもらうことにこだわる 安定化とメンテナンスのしやすさ Not Only Test Automation

  15. 認知・使ってもらうことにこだわる

  16. 認知

  17. None
  18. None
  19. None
  20. 使ってもらう

  21. QA・エンジニアに使ってもらう • 自動テストはQAが実行できるように • リリース前のリグレッションテストより前に実行する • より早くバグ or 仕様変更が分かる •

    リファクタリングのQA(API) • UnitTestは通っているものの、QA・エンジニア共に不安な部分 • iOSではlinkedin/bluepillを使用して複数シミュレータ(1OS)で並列 実行、約30分で終わる
  22. None
  23. None
  24. 安定化とメンテナンスのしやすさ

  25. テストレポート • 落ちたテストの原因を調べるコスト • バグなのか、QA環境・通信環境問題か、テストが悪いのか • 手元で実行? 再度実行する? • https://github.com/vbanthia/rspec_html_formatter2

    • スクリーンショット・スクリーンレコードをレポートに埋め込むこと が可能 • 作った人以外でも原因特定がしやすく
  26. マスター タイトルの書式設定 • マスター テキストの書式設定

  27. マスター タイトルの書式設定 • マスター テキストの書式設定

  28. マスター タイトルの書式設定 • マスター テキストの書式設定

  29. テスト環境 • Jenkinsのメンテナンスコスト(アップデート) • 自動化に使うためのデバイスを増やす際のコスト • デバイスに繋げているマシンのコスト • クラウドサービスで代用できるものはそちらを使ったほうが良い

  30. テスト環境(Android) ビルド テスト実行 apkを保存 デバイス管理

  31. マスター タイトルの書式設定 • マスター テキストの書式設定 どのアプリでも同じコードが書けるように selenium-webdriver capybara site_prism rspec

    appium-driver capybara-appium site_prism rspec helpers / formatter appium_kit
  32. https://www.slideshare.net/VishalBanthia1/andr oid-e2e-testing-at-mercari

  33. Not Only Test Automation

  34. プロダクトの品質向上 QA・プロダクトチームの生産性の向上

  35. テストデータ自動作成 • 検証の際に様々な出品・購入パターンが必要 • 大量に必要になるケースもある • テスト自動化用に作ったテストデータ作成RubyライブラリをQA に提供 • ターミナルから簡単に使えるように

  36. マスター タイトルの書式設定 • マスター テキストの書式設定 OpenSTF

  37. マスター タイトルの書式設定 • マスター テキストの書式設定

  38. Androidリリース作業自動化 手動でのリリース版ビルド & Play Storeへのアップロード エンジニアのコスト & オペミスの可能性

  39. Androidリリース作業自動化(Bitrise)

  40. Zapier • 複数のアプリを連携してワークフローを作成し自動化するツール • Slack, JIRA, Google Sheets, kintone, GitHub,

    AWSなど • ノンプログラマーなプロダクトメンバーでも簡単に業務自動化が できる • 詳細は弊社Tech Blogで公開予定
  41. Summary • 認知・使ってもらうことにこだわる • 安定性とメンテナンスのしやすさ • Not Only Test Automation