Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ANDPAD TechLive #2 SETチームでの品質向上の取り組み
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ANDPAD inc
February 25, 2021
Programming
2.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ANDPAD TechLive #2 SETチームでの品質向上の取り組み
2021/02/24 ANDPAD TechLive #2 Flutterって実際どうなの?設計からテストまで
ANDPAD inc
February 25, 2021
More Decks by ANDPAD inc
See All by ANDPAD inc
実行場所を意識させない i18n API を作った話
andpad
1
59
Go 1.27 における memory allocation の高速化
andpad
0
400
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
190
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
150
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
580
ANDPAD Ruby sponsor session in RubyKaigi 2026
andpad
0
270
AWS WAFの運用を地道に改善し、自社で運用可能にするプラクティス
andpad
2
1.3k
アプリから 360 度カメラ「RICOH THETA」に接続して写真を撮影する
andpad
0
95
アンドパッドが提供する Drinks and Local Meals と Drinkup を大公開
andpad
0
160
Other Decks in Programming
See All in Programming
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
710
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
170
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
190
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
150
iOSDC2026登壇資料.pdf
riofujimon
0
160
速習iPhone Duo対応
yuukiw00w
1
500
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
140
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
270
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
230
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
1
150
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Raft: Consensus for Rubyists
vanstee
142
7.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Embracing the Ebb and Flow
colly
88
5.2k
Design in an AI World
tapps
1
320
A Soul's Torment
seathinner
8
3.6k
Transcript
SET チームでの品質向上の取り組み ANDPAD TechLive #2 test
⾃⼰紹介 伊藤 智⾏ (@tmyk110) 組み込みエンジニア → モバイルアプリエンジニア 会社員 → フリーランス
→ 会社員 静岡県浜松市出⾝、CDO ⼭下と故郷が近かった事もあり親近感が⼊社の後押しに test
アンドバッドでのお仕事 アプリチーム ↓↑ 検査チーム ↓ SET アプリチーム(イマココ ) test
お詫び 今回のテーマがFlutter ということで、過去にも発表しています。 React Native 経験者がFlutter をさわってみた Flutter アプリをテストして、カバレッジを⾒える化する ネイティブとクロスプラットフォームが混在するアンドパッド
のアプリ開発 。。。が今回は「SET 」の話しになります。 (ご了承のほどよろしくお願いします ) test
アジェンダ SET アプリチームができるまで SET アプリチームの紹介 テストカバレッジ向上の取り組み 品質の⾒える化の取り組み SET チームで学んだこと、これから test
アジェンダ SET アプリチームができるまで SET アプリチームの紹介 テストカバレッジ向上の取り組み 品質の⾒える化の取り組み SET チームで学んだこと、これから test
SET アプリチームができるまで なぜ SET アプリチームを作ることになったか テストがないことに不安の声があった 機能開発以外の改善活動をする余⼒がなかった QA コストを抑えたい思いがあった test
SET アプリチームができるまで これまで⾏っていた品質に対する活動 定期的な社内勉強会 社内でテスト勉強会を始めてみた テスト勉強会第2弾「テストを知ろう」 テスト勉強会第5 弾「⾃動テストの基礎」 ユニットテスト作成のハンズオン 業務としてE2E
テストの⾃動化 test
SET アプリチームができるまで 継続が難しい プロダクト開発と兼務のため忙しくいときにできない メンバーによって品質意識の差 テストを書く書かないの判断 リファクタリング優先したい 対策に対する改善効果の理解 → 改めて専任チーム作ることに
test
アジェンダ SET アプリチームができるまで SET アプリチームの紹介 テストカバレッジ向上の取り組み 品質の⾒える化の取り組み SET チームで学んだこと、これから test
SET アプリチームの紹介 SET のおさらい Software Engineer in Test の略 Google
が提唱 https://testing.googleblog.com/2011/02/how-google-tests-software-part-two.html 最近ではSET エンジニアとしての求⼈もよく⽬にします test
SET アプリチームの紹介 ANDPAD の SET SET Rails SET アプリ ミッション
テクノロジーの⼒で品質にコミットし、全てのエンジニアが挑戦的な施策を安⼼して リリースできる仕組みを作る。 test
SET アプリチームの紹介 メンバー紹介 主にiOS エンジニア 1 名 ( 私) →
テストコードはあまり書いてきてない 主にAndroid エンジニア 1 名 → テストコードは結構書いてきた test
SET アプリチームの紹介 顧問の紹介 平⽥ 敏之さん(@tarappo) DeNA SWET グループ iOS テスト全書
Android テスト全書 定期的に相談会を開いてアドバイスをもらっています test
SET アプリチームの紹介 チーム運営 スクラム(2 ⼈だけれど) 1 週間スプリント プランニング、リファインメント、レトロスペクティブ Jira で課題を管理
Jamboard で振り返り test
アジェンダ SET アプリチームができるまで SET アプリチームの紹介 テストカバレッジ向上の取り組み 品質の⾒える化の取り組み SET チームで学んだこと、これから test
テストカバレッジ向上の取り組み ユニットテストのカバレッジ 30% を⽬指す ⾃分達のテスト技術を⾼める テスト追加のみであればプロダクトへの影響を与えない → 独⽴してできる 既存のテストがあることで、機能追加時のテスト作成の負担を減らす 30%
という数値が出るとテストへの意識も変わるのではという期待感 test
テストカバレッジ向上の取り組み テスト作成の進め⽅ ANDPAD の5 種類のアプリからユーザーが多いのが本体、チャット 開始時点でカバレッジが⾼かったのがチャットiOS アプリ フロー効率を重視し、規模の⼩さいところから 確実に⽬標達成して⼿応えが欲しい ViewModel
やロジックが実装されているコード( ⾮UI) を中⼼に test
テストカバレッジ向上の取り組み テストコードの書き⽅:パターン AAA(Act 、Arrange 、Assert) 、Four Phase Test 、Given-When-Then func
testAdd() { // Arrange let calculator = Calculator() // Act result = calculator.add(2,3) // Assert XCTAssertEqual(result, 5) } test
テストカバレッジ向上の取り組み テストコードの書き⽅:モック化 iOS → Cuckoo 、Mockolo 、Android → Mockito 、MockK
func testFetch() { let mockRepository = MockUserRepository() stub(mockRepository) { when($0.getUser() .thenReturn(User(name: "taro")) } let userViewmodel = UserViewModel(mockRepository) let user = userViewmodel.fetch() // この中でrepostitory がgetUser を⾏う } test
テストカバレッジ向上の取り組み テストコードの書き⽅: Rx や LiveData の対応 iOS の場合 // RxTest
let scheduler = TestScheduler(initialClock: 0) scheduler.scheduleAt(10) { self.viewModel.hoge() } scheduler.start() // RxBlocking let data = try! self.viewModel.hoge().toBlocking().first() test
テストカバレッジ向上の取り組み テストコードの書き⽅: Rx や LiveData の対応 Android の場合 class FetchProfileTest
{ // Rx を使っている場合 @get:Rule val rxTestRule = RxTestRule() // LiveData を使っている場合 @get:Rule var instantTaskExecutorRule = InstantTaskExecutorRule() } test
テストカバレッジ向上の取り組み 現在の実績 App ProductLines TestLines Coverage TestFiles チャットiOS 16k 12k
30% (9%) 31 チャットAndroid 26k 4k 9% (2%) 29 ※ cloc によるコード⾏数の計測 ※ Coverage の() 内は取り組み前の数字 test
テストカバレッジ向上の取り組み 作成したテストのカバレッジの確認 実⾏時にIDE 上で、PR のコメントで、Codecov のサイト上で test
テストカバレッジ向上の取り組み カバレッジの変化によるモチベーションアップ Codecov の折れ線、サンバーストグラフ、1 週間の実績 test
テストカバレッジ向上の取り組み 苦労した点 RxTest → TestScheduler クラスの使い⽅を平⽥さんに教わったり Firebase Emulator → 複雑な処理をすると動作不安定になったり
test
アジェンダ SET アプリチームができるまで SET アプリチームの紹介 テストカバレッジ向上の取り組み 品質の⾒える化の取り組み SET チームで学んだこと、これから test
品質の⾒える化の取り組み できることを広げるために 平⽥さんに相談 何が課題になっているか⾒えないと適切な対策を打てない SWET チームでの取り組みを参考に → 不具合分析 (Jira など
) 、 CI や Github の分析、コードの静的解析などをやってみる test
品質の⾒える化の取り組み システム構成例 定期的にCI の実⾏結果の分析を⾏い、グラフや通知で確認する test
品質の⾒える化の取り組み 成果物:グラフ 未使⽤コードの件数、CI ビルド時間 test
品質の⾒える化の取り組み 成果物:通知 カバレッジ向上率、未使⽤コードの件数、CI ビルド時間 test
品質の⾒える化の取り組み 取り組みは続く 不具合分析 → ポストモーテム、Jira のバグチケットなど CodeClimate → コードの複雑さを可視化、改善による効果の共有 test
アジェンダ SET アプリチームができるまで SET アプリチームの紹介 テストカバレッジ向上の取り組み 品質の⾒える化の取り組み SET チームで学んだこと、これから test
SET チームで学んだこと、これから SET は QA 、プロダクト開発と共に テスト計画のプロ(QA エンジニア) のもとでテスト⾃動化に貢献する E2E
テストでやるか単体テストでやるか、⼿動でやるか、⾃動でやるか ⾃動化する部分に対して技術⼒を発揮していく test
SET チームで学んだこと、これから SET は QA 、プロダクト開発と共に 機能開発に忙しいプロダクト開発エンジニアの、⼿の届かない課題を解決する 更新されないライブラリ、消えないビルドワーニング、実⾏されないコード 定期的に負債を返却する仕組み作り、時にはマンパワーの提供 test
SET チームで学んだこと、これから 今後について 今ままでできていなかったプロダクト開発との関わりを積極的にしていく さらなる品質の⾒える化の推進に挑戦 (CodeClimate 、SwiftInfo 、etc) 負債の返却、クリーンコードの実現、保持する仕組みの構築 パフォーマンス計測、エラー検知の仕組み作り
E2E テスト⾃動化の推進 XCUITest 、Espresso or MagicPod 、Autify test
ありがとうございました! SET アプリチームでは、コード品質や⽣産性の向上を ⼀緒に取り組んでくれる仲間を募集しています。 是⾮ともご応募ください https://hrmos.co/pages/andpad/jobs/0000098 test