Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ANDPAD TechLive #2 SETチームでの品質向上の取り組み

ANDPAD inc
February 25, 2021

ANDPAD TechLive #2 SETチームでの品質向上の取り組み

2021/02/24 ANDPAD TechLive #2 Flutterって実際どうなの?設計からテストまで

ANDPAD inc

February 25, 2021
Tweet

More Decks by ANDPAD inc

Other Decks in Programming

Transcript

  1. ⾃⼰紹介 伊藤 智⾏ (@tmyk110) 組み込みエンジニア → モバイルアプリエンジニア 会社員 → フリーランス

    → 会社員 静岡県浜松市出⾝、CDO ⼭下と故郷が近かった事もあり親近感が⼊社の後押しに test
  2. SET アプリチームの紹介 SET のおさらい Software Engineer in Test の略 Google

    が提唱 https://testing.googleblog.com/2011/02/how-google-tests-software-part-two.html 最近ではSET エンジニアとしての求⼈もよく⽬にします test
  3. SET アプリチームの紹介 ANDPAD の SET SET Rails SET アプリ ミッション

    テクノロジーの⼒で品質にコミットし、全てのエンジニアが挑戦的な施策を安⼼して リリースできる仕組みを作る。 test
  4. SET アプリチームの紹介 メンバー紹介 主にiOS エンジニア 1 名 ( 私) →

    テストコードはあまり書いてきてない 主にAndroid エンジニア 1 名 → テストコードは結構書いてきた test
  5. SET アプリチームの紹介 顧問の紹介 平⽥ 敏之さん(@tarappo) DeNA SWET グループ iOS テスト全書

    Android テスト全書 定期的に相談会を開いてアドバイスをもらっています test
  6. テストカバレッジ向上の取り組み テストコードの書き⽅:パターン 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
  7. テストカバレッジ向上の取り組み テストコードの書き⽅:モック化 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
  8. テストカバレッジ向上の取り組み テストコードの書き⽅: 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
  9. テストカバレッジ向上の取り組み テストコードの書き⽅: Rx や LiveData の対応 Android の場合 class FetchProfileTest

    { // Rx を使っている場合 @get:Rule val rxTestRule = RxTestRule() // LiveData を使っている場合 @get:Rule var instantTaskExecutorRule = InstantTaskExecutorRule() } test
  10. テストカバレッジ向上の取り組み 現在の実績 App ProductLines TestLines Coverage TestFiles チャットiOS 16k 12k

    30% (9%) 31 チャットAndroid 26k 4k 9% (2%) 29 ※ cloc によるコード⾏数の計測 ※ Coverage の() 内は取り組み前の数字 test
  11. SET チームで学んだこと、これから SET は QA 、プロダクト開発と共に テスト計画のプロ(QA エンジニア) のもとでテスト⾃動化に貢献する E2E

    テストでやるか単体テストでやるか、⼿動でやるか、⾃動でやるか ⾃動化する部分に対して技術⼒を発揮していく test