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

メルペイでのリグレッションテスト自動化推進のこれまでとこれから

 メルペイでのリグレッションテスト自動化推進のこれまでとこれから

約1年にわたるメルペイでのiOSアプリのリグレッションテストの自動化推進の流れを紹介したスライドとなります。/ This slide shows the flow of promoting the automation of iOS app regression testing at Merpay for a period of about a year.

Shingo Tamaki

April 13, 2021
Tweet

More Decks by Shingo Tamaki

Other Decks in Technology

Transcript

  1. 1
    メルペイでのリグレッションテスト自動化推進のこ
    れまでとこれから
    株式会社メルペイ iOS EM 玉城信悟

    View Slide

  2. 2
    Full Name : 玉城信悟(Shingo Tamaki) 

    Role: iOS EM 

    Joining Time : 2020/03/01 

    Career :
    KeywareSolutions→Techfirm→Origami→Merpay 

    Hobby : bouldering󰩥/airsoft🔫/martial
    arts(karate/kickboxing)🥊🤛

    玉城信悟


    View Slide

  3. 3
    これまでのリグレッションテスト自動化のあゆみ
    agenda
    1年の振り返り
    これからのやりたい事
    02
    03
    01

    View Slide

  4. 4
    ~2020/03

    View Slide

  5. 5
    ~2020/03


    - 主にマニュアルテスト

    - ボランタリーベースでUIテストの導入開始

    - UITestはCI環境がない。各メンバーのPC(ローカル)で実行

    - テストケースの管理はGoogle Spread sheets

    - XCUITestによる自動化をケース毎にチケット化

    メルペイのOrigami買収により3月から
    入社

    リグレッションテスト自動化開始 

    入社

    3月


    View Slide

  6. 6
    2020/04~2020/06

    View Slide

  7. 7
    2020/04~2020/06
    4月


    - ブランチ作成ルール

    - PageObject導入

    - 自動化対応数の可視化

    - 目標スループット設定

    - UIテストに関しては大きな変更
    なし

    - XCTSkip

    テストの方針整備

    WWDC20

    5月


    - iOS13対応

    - Activityによる構造化

    - Main Thread Checker

    テスト追加

    6月


    - ケース毎にトラブル
    シューティング

    - 振り返り

    テスト追加

    自動化率 

    30%


    View Slide

  8. 8
    2020/04~2020/06
    - 進捗の可視化、目標スループットの
    設定
    - テストケースによって実装難易度な
    どがかなり変わるため、着手順序の
    変更などを相談していた
    - Activityによる構造化とActivity名
    によるスプレッドシート上の IDとの紐
    付け

    View Slide

  9. 9
    2020/04~2020/06
    主な問題💥
    - UIView.AnimationEnable = falseを設定している
    場合に表示されなくなる要素がありテストが失敗
    - iOS13でのUIツリーの構造が変わった事により
    動かない問題
    - Main Thread Checkerによるテストの失敗
    - ビルド時間・UIテストの実装、デバッグ、実行時
    間の長さ

    View Slide

  10. 10
    2020/07~2020/09

    View Slide

  11. 11
    2020/07~2020/09
    7月


    - ドキュメンテーション

    - TestRail移行

    - テストユーザー問題

    - CI導入

    - PJ発足

    - API化

    テスト追加

    user-tkool機能拡張 

    8月


    - TestRail API調査

    テスト追加

    9月


    - TestRail連携

    - user-tkool APIクライアン
    ト開発

    - CI上での安定化

    - 振り返り

    テスト追加

    - XCUITestのつらさを乗り越え
    て、iOSアプリにUITestを導入
    する

    iOSDC

    - テスト系の話は特になし

    Recap of WWDC20

    自動化率 

    48%


    View Slide

  12. 12
    2020/07~2020/09
    - ドキュメンテーション
    - オンボーディング
    - Tips
    - TestRailへの移行
    - スプレッドシートの廃止
    - 自動テストの結果の連携
    - CircleCIでの実行
    - 新しいワークフローの作成

    View Slide

  13. 13
    主な問題💥
    - 一部のテストケースのユーザーの状態を作るの
    が難しい事がわかってきた
    - User-tkoolの機能追加要望の洗い出し
    - CircleCI上でのテスト安定化
    - 主な原因分析
    - XcodeGenでTestPlanが使えない
    2020/07~2020/09

    View Slide

  14. 14
    2020/10~2020/12

    View Slide

  15. 15
    2020/10~2020/12
    10月


    - 複数端末検討

    - 複数OS検討

    - xcresultの活用事例などを紹
    介

    テスト追加&安定化 

    Merpay Tech Talk

    11月


    - iOS12対応開始

    - CIの実行時間改善

    - テスト実装者の増加

    テスト追加&安定化

    12月


    - iOS14.2のSafariの不具
    合

    テスト追加&安定化 

    - テストユーザーのキャッシュ
    プール検討

    user-tkoolの大型新機能 

    自動化率 

    72%


    View Slide

  16. 16
    - テスト安定化のための施策検討
    - テストユーザーの作成の安定化
    - テスト環境の安定化
    - 複数端末&OS対応
    - iOS12~14
    - テストケースの最適化
    - 全体件数のスリム化検討
    - テスト実装者の増加
    - PJでUIテストの実装・メンテナンスが今後
    やっていけるようにチームでナレッジの共有
    や終わりに差し掛かった PJのメンバへのテ
    スト作成依頼
    2020/10~2020/12

    View Slide

  17. 17
    主な問題💥
    - ボトルネック調査
    - 自動化しにくいテストは何か
    - 新規に追加されたテストケースの確認
    - CircleCIのiOS12未サポート問題
    - 新機能による変更への対応
    - CircleCIのジョブの実行制限時間 (5h)問題
    - ジョブ分割
    - iOS14.2のSafariの不具合対応
    2020/10~2020/12

    View Slide

  18. 18
    2021/01~2021/03

    View Slide

  19. 19
    テスト作成と安定化

    2021/01~2021/03
    1月


    - CircleCI上でのiOS12検
    証

    - テスト実行時間短縮

    - 複数端末のつらさを乗り越え
    てiOS UITestを実行

    - 

    テスト作成と安定化

    Merpay Tech Talk

    2月


    - XCTSkipとTestRailの
    Skipの導入

    テスト作成と安定化

    3月


    -


    View Slide

  20. 20
    - テストの実行時間の短縮化
    - ブランチ名による限定的テストケースの実

    - ログイン済み起動対応
    - テストユーザーのキャッシュ機能による安定化
    - CircleCIのiOS12対応
    - CircleCIのワークフローのリファクタリング
    - 画面更新によるUIテストの更新
    2021/01~2020/03

    View Slide

  21. 21
    主な問題💥
    - テストユーザーの利用制限問題
    - user-tkoolで対応
    - CircleCIのPersisting Dataの制限問題
    - Workflowの見直し
    2021/01~2020/03

    View Slide

  22. 22
    1年を振り返って

    View Slide

  23. 23
    - テストを書いたら終わりではなく始まり
    - 運用されるまで根気強く続ける必要があった
    - 新しく追加される機能への追随するコストが見え
    始めた
    - 治具も合わせて開発して複雑化していく状態を作
    れるようにしていく必要がある
    1年を振り返って

    View Slide

  24. 24
    2021/04~

    View Slide

  25. 25
    - プロセス化されたリグレッションテストの自動化の
    実施
    - 視覚化とそれを利用した戦略的なテストの運用
    - より効率的なテストの実装の検討
    2021/4~

    View Slide

  26. 26
    以上

    View Slide

  27. 27
    We are hiring!!
    Link

    View Slide