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.5k
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
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
570
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
230
Building the Real World with Ruby
andpad
0
51
Catch Up: Go Style Guide Update
andpad
0
300
OSS開発者という働き方
andpad
5
1.8k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
170
プロダクト開発を支えるデータ利活用:中央集権から「民主化」までの軌跡
andpad
0
240
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
450
Other Decks in Programming
See All in Programming
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
1
190
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
Grafana:建立系統全知視角的捷徑
blueswen
0
270
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
210
Deno Tunnel を使ってみた話
kamekyame
0
300
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
9
1.2k
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
140
これならできる!個人開発のすゝめ
tinykitten
PRO
0
140
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
140
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
310
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
440
Featured
See All Featured
HDC tutorial
michielstock
1
290
Paper Plane (Part 1)
katiecoart
PRO
0
2.7k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
RailsConf 2023
tenderlove
30
1.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
140
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
270
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
400
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
410
Designing for humans not robots
tammielis
254
26k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
40
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
100
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