20170209 ios/android app_build/test pipeline

21
Copyright © DeNA Co.,Ltd. All Rights Reserved. iOS/Android App Build/Test pipeline CI/CD NIGHT, February 9, 2017 Masashi Kurita SWET(Software Engineer in Test) Gr. System Management Unit DeNA Co., Ltd.

Transcript of 20170209 ios/android app_build/test pipeline

Page 1: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

iOS/Android App Build/Test pipeline

CI/CD NIGHT, February 9, 2017

Masashi KuritaSWET(Software Engineer in Test) Gr.System Management UnitDeNA Co., Ltd.

Page 2: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

自己紹介■ 栗田真史(くりたまさし)■ 株式会社ディー・エヌ・エー

⁃ 2015/4 - 現在■ SWET (Software Engineer in Test)

⁃ 事業サポートチーム• iOS/Androidアプリ開発プロジェクトに参加

2

Page 3: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

What’s SWET?

■ SWET (Software Engineer in Test)⁃ http://www.slideshare.net/masaki/dena-software-engineer-in-test

• プロダクト・サービスの品質向上 (Product Quality)• エンジニアの開発生産性向上 (Engineer Productivity)

⁃ 事業サポートチーム• テスト文化の醸成

⁃ テスト戦略の策定⁃ テスト環境構築 (Jenkins構築 , テスト FW 導入 ...etc)

• QA/開発プロセス改善⁃ テスト基盤チーム

• 品質向上につながる仕組みづくり• テスト効率・生産性向上につながる仕組みづくり

3

Page 4: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Agenda

現在ジョインしている iOS/Androidアプリ開発プロジェクトで、「どんな課題があり」「どんな戦略をたて」「どう実施したか」について、お話をします。1.Situation2.Strategy3.Implementation

4

Page 5: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

1. Situation

5

Page 6: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

プロジェクトにジョインしてから行ったこと■どんな課題があるのかを知りたい

⁃ プロジェクトに何らかの課題がある時• 品質という形で現れる

⁃ 品質面からの現状分析をする⁃ 改善前後の効果がわかるように

• 分析結果を定量化したい⁃ 定量的に分析するため、何らかのメトリクスをとる

6

Page 7: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

不具合分析■QAで見つかるバグは、どんなものが多いか調査

7

Page 8: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

■配布漏れ⁃ 現象 : QA対象機能が、 QA環境に反映されていない⁃ 原因 : 手動デプロイによる作業漏れ⁃ 対策 : PRマージ時に自動デプロイ

■ 実装ミス⁃ 現象 :

• 画面項目の表示崩れ• 項目表示漏れ

⁃ 原因 : 正常系 /準正常系のパターン考慮漏れ・動作確認漏れ⁃ 対策 : UIテストの一部自動化

原因と対策

8

Page 9: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

2. Strategy

9

Page 10: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

対策方針■ 配布漏れ

⁃ 自動デプロイ環境の構築■ 実装ミス

⁃ 頻繁に変更が入る画面の UI変更検知⁃ => 手動リグレッションテストで全て見るのは厳しい

• 端末 /OSカバレッジ• 対象画面への全遷移パス網羅

⁃ => UIテストの一部自動化

10

Page 11: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

配布漏れ : アプリ自動デプロイパイプライン1. PRマージ2.ビルド

a. App build

b. Signing

c. Versioning

3.デプロイa. Upload to beta distribution service

4.通知

11

Page 12: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

UIテストの一部自動化■UI自動テスト実装方針⁃ 不具合の多い画面に絞る⁃ 機能実装後の UI変更を検知

• 意図した変更かどうかを確認できるように⁃ テストは実機で実行

• 実機固有不具合の検知

12

Page 13: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

3. Implementation

13

Page 14: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

自動デプロイ環境の構築

14

1.Merge PR 2.Trigger Job

3.Build

4.Deploy

5.Notify

Page 15: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

UIテストの一部自動化■ テスト環境 : Jenkins + STF

⁃ STF とは?• Device Farm を構築するための OSS

⁃ https://github.com/openstf/stf• Open STF Plugin を使うことで、 CIでの実機テストが容易に

⁃ https://wiki.jenkins-ci.org/display/JENKINS/Open+STF+Plugin⁃ SWET のエンジニアが開発

■テスト FW&ツール : Espresso + Spoon⁃ Spoon とは?

• Espresso でスクリーンショットを取るための OSS⁃ https://github.com/square/spoon

15

Page 16: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

UI自動テスト環境の構築

16

1.Merge PR 2.Trigger Job

3.Build

4.Test

5.Notify・・・

Page 17: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

効果測定■不具合分析

17

Page 18: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

今後の課題■ ビルド間でのスクリーショット差分の自動検出■ 差分の Jenkinsビルド結果画面での表示

18

Masayoshi Sakamoto
実行結果のスクリーショット一覧のJenkinsページを見せれるなら見せた方がわかりやすいと思いました。
Page 19: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

宣伝iOS Test Night #33.13 (Mon) @ DeNA, 渋谷ヒカリエ

https://testnight.connpass.com/event/49561/

19

Page 20: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

最後に

20

■ SWETグループは人材を募集しております!!⁃ プロダクト・サービスの 品質向上 (Product Quality)⁃ エンジニアの 開発生産性向上 (Engineer Productivity)⁃ 上記にフォーカスしたい方はぜひ!

• (特に )クライアント周りをやりたい方

OpenSTF

Jenkins

自動テストFirebase

iOSAndroid

Docker

CI/CD

AWS Device Farm

Unity

Page 21: 20170209 ios/android app_build/test pipeline

Copyright © DeNA Co.,Ltd. All Rights Reserved.

ご清聴ありがとうございました

21