SlideShare une entreprise Scribd logo
1  sur  66
Télécharger pour lire hors ligne
minneにおける
テスト〜リリース〜
リリース後
にやっている事の紹介
SmartDrive
Masataka Kono
2017-3-9
DroidKaigi 2017
自己紹介
● PHP/Android
● minne(〜2016年12月)
● 株式会社スマートドライブ
● Twitter @mapyo
● GitHub @mapyo
minneとは?
minneとは
minneでのAndroid開発
● 2013年11月リリース
● Androidチーム 3人
● 3人で1つのアプリを開発
● 2週間に1回定期的にリリー
ス
今日伝えたい事
● 複数人数のアプリ開発事例
● フローを整えましょう
● いろいろと議論したい
目次
● 開発開始からリリースまで
● テスト・CI
● リリース前の検証
● リリース
● リリース後のフォロー
開発開始からリ
リースまで
開発からリリースまで
1. スプリント計画
2. 開発(Unit test, UI test)
3. 検証シート作成
4. 検証
5. 段階的リリース
6. リリース後のフォロー
開発からリリースまで
1. スプリント計画
2. 開発(Unit test, UI test)
3. 検証シート作成
4. 検証
5. 段階的リリース
6. リリース後のフォロー
開発からリリースまで
1. スプリント計画
2. 開発(Unit test, UI test)
3. 検証シート作成
4. 検証
5. 段階的リリース
6. リリース後のフォロー
2週間
テスト・CI
1. テストの種類と説明
2. CIで使用するツールと
サービス
3. CIの流れ
minneでのテスト
● Unit test
● UI test
● 検証時の手動テスト
minneでのテスト
● Unit test
● UI test
● 検証時の手動テスト
その前にAndroidのテストタ
イプの説明をします
Androidのテストタイプ
● Local unit test
(test)
● Instrumented test
(androidTest)
https://developer.android.com/studio/test/index.html
Local unit test
● JVM上で動くテスト
● Instrumented testに比べて
早い
● Androidフレームワークに依
存するテストはモックが必要
Instrumented test
● 実機・エミュレータ上で動くテ
スト
● Local unit testに比べて遅い
● Androidフレームワークに依
存しててもOK
minneでのテスト
● Unit test
● UI test
Unit test
● Local unit testで実行
● Robolectricでモック
● UIのテストはしない
※モックが難しい場合は
Instrumented test
Unit testでやってた事
● 単純なモデルのテスト
● MVPのPのテスト
● APIをモックしたテスト
● ディープリンクのテスト
● SharedPreferencesまわり
● Instrumented testで実行
● Espressoで記述
UI test
● 実行タイミングによって謎の
落ち方
● 実行時間が長い
● Espressoの書き方
MVPで書いてPのテストをUnit
testでやっていく!!
UI test 辛い。。
テスト・CI
1. テストの種類と説明
2. CIで使用するツールと
サービス
3. CIの流れ
● Drone
● AWS Device Farm
CIで使用するツール・サービス
● Travis CI, CircleCI, Wercker
と並ぶCIツール
● Docker
CIまわりの機能とUnit test
Drone
open source edition
Drone
詳しくはこちら。
https://speakerdeck.com/gs3/pepabowozhi-eruda-tong-ciji-pan-toren
AWS Device Farm
● クラウド上で実機を使ったテ
スト
● apkをアップし手動テスト
UI testを実行
テスト・CI
1. テストの種類と説明
2. CIで使用するツールと
サービス
3. CIの流れ
CIの流れ 〜Unit test〜
PUSH
CIの流れ 〜Unit test〜
PUSH
Unit test!
CIの流れ 〜Unit test〜
PUSH
Unit test!
CIの流れ 〜UI test〜
PUSH
Unit testを実行後に動
く
CIの流れ 〜UI test〜
PUSH
Device
Farm
web hookの仕組みが
ない...
CIの流れ 〜UI test〜
PUSH
Device
Farm
監視
サーバ
polling
テスト実行タイミング
● Unit test
→PUSH毎に実行
● Ui test
→develop, master, release
ブランチ
リリース前の
検証
1. リリース担当を事前に決める
2. リリース用issue立てる
3. 検証シート作成
4. 検証
5. 検証で出たバグを修正する
流れ
1. リリース担当を事前に決める
2. リリース用issue立てる
3. 検証シート作成
4. 検証
5. 検証で出たバグを修正する
流れ
● 検証シートへのリンク
● 検証開始〜リリースまで流れ
● 今回のリリースのメモ
随時修正・追記して
次回のリリース時にも使う
リリース用issue
1. リリース担当を事前に決める
2. リリース用issue立てる
3. 検証シート作成
4. 検証
5. 検証で出たバグを修正する
流れ
● どの画面?
● ログイン/ログアウト?
● どういう操作?
● 結果どうなればいい?
他の人が検証するために必要な
情報を書く
検証シートとは?
1. リリース担当を事前に決める
2. リリース用issue立てる
3. 検証シート作成
4. 検証
5. 検証で出たバグを修正する
流れ
検証 〜検証する人〜
● Androidエンジニア1〜2人
● ディレクター 1人
● 合計3人くらい
iOSエンジニアも検証しよう!
という流れも。
検証する!
● 検証シートに沿って粛々とやる
● バグを見つけたら再現手順や
スクショなどを貼る
● 機能開発した人に伝えた直して
もらう
● 再度検証
リリース
段階的な公開
● 20%リリース
● 2営業日後50%リリース
● 2営業日後100%リリース
休日の前日はなるべくリリースし
ない
リリース後の
フォロー
リリース後のフォロー
● クラッシュの監視
● アプリレビューの監視と対応
● ふりかえり
クラッシュの監視
● Crashlytics
● Slackと連携
● 毎朝Slackでリマインダ
アプリレビューの監視
● Slackに1日1回流す
● google-play-review-watcher
アプリレビューの監視と対応
https://github.com/Konboi/go-google-play-review-watcher
レビューの様子
レビューの対応について
● 当初はエンジニアが選定して
CSさんに依頼
● 現在はCSさんが直接返信
ふりかえり
● ふりかえりissueを立てる
● Androidチームの3人
● リリース後(20%)に実施
● 1時間程度
● Keep・Good/Problem/Try
まとめ
まとめ
● テスト・検証・リリース・リリース
後について話した
● チームによってそれぞれ違う
● ふりかえり重要
● 少しでも皆さんの参考になれば
幸いです
ありがとうござ
いました!!
ふろく
CIの流れ 〜UI test〜
PUSH
Device
Farm
監視
サーバ
polling
AWS Device Farm Gradle Plugin
https://github.com/awslabs/aws-device-far
m-gradle-plugin

Contenu connexe

Tendances

20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
 

Tendances (20)

Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
 
AndroidLint #DroidKaigi
AndroidLint #DroidKaigiAndroidLint #DroidKaigi
AndroidLint #DroidKaigi
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントはじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイント
 
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
 
Android Dev Tools Knowledge
Android Dev Tools KnowledgeAndroid Dev Tools Knowledge
Android Dev Tools Knowledge
 
はてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテストはてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテスト
 
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
 
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違いPHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
 
AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行
 
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略Androidアプリのストレージ戦略
Androidアプリのストレージ戦略
 
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
 
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
 
あるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクルあるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクル
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
 
ABC2016Spring Androidアプリ実装アンチパターン(暫定)
ABC2016Spring Androidアプリ実装アンチパターン(暫定)ABC2016Spring Androidアプリ実装アンチパターン(暫定)
ABC2016Spring Androidアプリ実装アンチパターン(暫定)
 
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
 
ABS2015 のセッション紹介
ABS2015 のセッション紹介ABS2015 のセッション紹介
ABS2015 のセッション紹介
 
Androidアプリケーション開発入門
Androidアプリケーション開発入門Androidアプリケーション開発入門
Androidアプリケーション開発入門
 
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグEclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
 
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
 

En vedette

aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
negabaro
 

En vedette (8)

歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유
 
메리 미커 인터넷 트렌드 요약
메리 미커 인터넷 트렌드 요약메리 미커 인터넷 트렌드 요약
메리 미커 인터넷 트렌드 요약
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
빅데이터 개요
빅데이터 개요빅데이터 개요
빅데이터 개요
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 

Similaire à minneにおけるテスト〜リリース〜リリース後にやっている事の紹介

Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介
Kenji Kinukawa
 
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
Hiroko Umetsu
 

Similaire à minneにおけるテスト〜リリース〜リリース後にやっている事の紹介 (20)

初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
 
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
 
Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
 
Visual Studio App Centerで始めるCI/CD(Android)
Visual Studio App Centerで始めるCI/CD(Android)Visual Studio App Centerで始めるCI/CD(Android)
Visual Studio App Centerで始めるCI/CD(Android)
 
Androidとは何か
Androidとは何かAndroidとは何か
Androidとは何か
 
DevLOVE広島 第1回 その改善いつするの?
DevLOVE広島 第1回  その改善いつするの?DevLOVE広島 第1回  その改善いつするの?
DevLOVE広島 第1回 その改善いつするの?
 
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしようわんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
 
Stripeを1年使ってみて思ったこと
Stripeを1年使ってみて思ったことStripeを1年使ってみて思ったこと
Stripeを1年使ってみて思ったこと
 
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会
 
設計ビギナーが語るソフトウェア設計
設計ビギナーが語るソフトウェア設計設計ビギナーが語るソフトウェア設計
設計ビギナーが語るソフトウェア設計
 
知っておきたいWordPress開発環境 2016年10月編
知っておきたいWordPress開発環境 2016年10月編知っておきたいWordPress開発環境 2016年10月編
知っておきたいWordPress開発環境 2016年10月編
 
Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!
 
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!ゲーム開発環境、もっと楽にできるよ♬  マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
 
自動テストとJenkinsの活用 公開版
自動テストとJenkinsの活用 公開版自動テストとJenkinsの活用 公開版
自動テストとJenkinsの活用 公開版
 
Androidが起こしたオープン・イノベーション
Androidが起こしたオープン・イノベーションAndroidが起こしたオープン・イノベーション
Androidが起こしたオープン・イノベーション
 
成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-
 
Trat_sprint3
Trat_sprint3Trat_sprint3
Trat_sprint3
 
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
 
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
 

Dernier

Dernier (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

minneにおけるテスト〜リリース〜リリース後にやっている事の紹介