Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ANDPAD TechLive #2 SETチームでの品質向上の取り組み
Search
ANDPAD inc
February 25, 2021
Programming
0
2.6k
ANDPAD TechLive #2 SETチームでの品質向上の取り組み
2021/02/24 ANDPAD TechLive #2 Flutterって実際どうなの?設計からテストまで
ANDPAD inc
February 25, 2021
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
建設DXを支えるANDPAD: 2025年のセキュリティの取り組みと卒業したいセキュリティ
andpad
0
65
小規模 SRE チームで支える、 Atlantis で実現するインフラ管理のセルフサービス化
andpad
1
57
Go コードベースの構成と AI コンテキスト定義
andpad
1
210
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
1k
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
290
Building the Real World with Ruby
andpad
0
73
Catch Up: Go Style Guide Update
andpad
0
340
OSS開発者という働き方
andpad
5
1.9k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
200
Other Decks in Programming
See All in Programming
野球解説AI Agentを開発してみた - 2026/02/27 LayerX社内LT会資料
shinyorke
PRO
0
350
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
1k
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
490
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
140
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
120
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
7
2.6k
Angular-Apps smarter machen mit Gen AI: Lokal und offlinefähig - Hands-on Workshop!
christianliebel
PRO
0
130
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
340
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
800
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.9k
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
190
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
1.1k
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
810
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
830
The browser strikes back
jonoalderson
0
810
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
220
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
230
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
490
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
130
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