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
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
56
Go 1.27 における memory allocation の高速化
andpad
0
380
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
180
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
140
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
540
ANDPAD Ruby sponsor session in RubyKaigi 2026
andpad
0
260
AWS WAFの運用を地道に改善し、自社で運用可能にするプラクティス
andpad
2
1.2k
アプリから 360 度カメラ「RICOH THETA」に接続して写真を撮影する
andpad
0
90
アンドパッドが提供する Drinks and Local Meals と Drinkup を大公開
andpad
0
160
Other Decks in Programming
See All in Programming
Flow は今どうなっているか
mizdra
PRO
0
900
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.7k
新卒PdEのリアル
ryu1013
1
330
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
330
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
140
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
53
35k
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
2
1k
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
typoなんかねぇよ
raspython3
0
660
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
0
210
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
210
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
400
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
500
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
240
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
590
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
290
Ethics towards AI in product and experience design
skipperchong
2
360
Rebuilding a faster, lazier Slack
samanthasiow
85
9.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