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

QAとはじめるログの発火テスト

06e251dd7c57b30b6771050dbe88683b?s=47 fumito-ito
October 16, 2018

 QAとはじめるログの発火テスト

ログが意図通りに出力されているか、テストをしていますか?

時として、ログは非常にビジネスインパクトの大きいデータになります。このスライドでは日経電子版アプリにおけるログ発火テスト自動化の取り組みを紹介します。

この資料は #otemachi_swift #02 で発表した内容です。
https://nikkei.connpass.com/event/98887/

06e251dd7c57b30b6771050dbe88683b?s=128

fumito-ito

October 16, 2018
Tweet

Transcript

  1. 1 QAとはじめる ログの発⽕テスト

  2. 2 ログのテスト してますか?

  3. 3 新機能追加やバグ修正で ログが 送られなくなっていた

  4. 4 • 画⾯遷移イベントが消えてた • コンバージョンイベントのログ が消えてた • 広告の表⽰ログが消えてた

  5. 5 広告表⽰のロギングは 絶対にミスれない

  6. 6 ログの収集項⽬は 常に変化しているので 全ケースのテストを 書くのは⼤変

  7. 7 絶対にミスれないログ v.s. ⼤量なテストのコスト

  8. 8 QAチームと協⼒して 進めたらどうか

  9. 9 QAにもメリットがある • テストが増えるとQAの作業が 減る • 結合レベルの振る舞いはQAの ⽅が詳しいこともある

  10. 10 この⽅法が うまくいかない原因は?

  11. 11 コードを書くのは難しい • 振る舞いに詳しくても
 コードに詳しいわけではない • QAしつつ多くのことを
 新しく覚えるのは困難

  12. 12 UIテストなら 振る舞いだけで 完結するのでは?

  13. 13 UIテストは難しい • XCUITestだとアプリのクラスにアクセス できない • ログ送信を監視するためにプロキシとか⽴ てる必要があってセッティングも確認も⼿ 間が多い

  14. 14 対応⽅針 • なるべくコードを書かなくて よくする • UnitTestで完結させる

  15. 15 進め⽅ • アプリの特徴とやりたいことの整理 • 実装 • フィードバック

  16. 16 アプリの特徴を整理 • 操作の種類は少ない • Tapする場所もセルか
 ナビゲーションバー上のボタンくらい • 操作のパターンをコードにしても
 10パターンくらいになりそう

  17. 17 やりたいことの整理 • UnitTestで完結したい • 振る舞いを記述するだけでテストが
 動いて欲しい • KIF, Appium,

    EarlGreyあたりが候補 • 今回はEarlGreyを採⽤した
  18. 18 Google / EarlGrey iOS UI Automation Framework https://github.com/google/EarlGrey

  19. 19 なぜEarlGrey? • UI, Network, スレッドなどの「待ち」を コードでカバーしなくてよい • いい感じに待ってくれる •

    書くコードをなるべく単純化したい
 現状にマッチした
  20. 20 実装の⽅針 • QAの知っている知識でなるべく完結させる • 画⾯名 • ログが出⼒されるタイミングと操作 • 操作はパターン化してなるべくコピペで済

    むように
  21. 21 実装例 ⻩⾊の部分だけ書く(setUp/tearDown含めて他の部分はコピペ)

  22. 22 ログ出⼒を監視して特定のログを検知したらテスト成功 実装例

  23. 23 監視する値はQAとの共通⾔語に対応するように定義した 実装例

  24. 24 AccessibilityIdentifierは共通イディオムで取得できるようにした 実装例

  25. 25 この辺のイディオムはチートシートを⽤意して覚えてもらう 実装例

  26. 26 ちょっとはまったところ • アプリケーションが起動してからテストが 実⾏されるまでラグがある • 起動時〜テスト開始までのログは
 バッファしてテスト開始時に
 まとめて流すようにした

  27. 27 QAからのフィードバック • 3画⾯くらいテストを書いてもらった • 「基本的なテストはカバーできそう」 • 「コピペでなんともならないテストは書け る気がしない」 •

    「⽚⼿間でやるのは正直⾟い」
  28. 28 せやな

  29. 29 完成への道のりは遠い • やりきるための⾊々 • いつまでにどこまでやるか決める • 必要な時間を計測して確保してもらう • しばらくは⼀緒にテストを書く

    • やり続けるための⾊々 • CIとか
  30. 30 まとめ • 重要かつ量の多いログのテストを書くため にQAに協⼒してもらいはじめた • テストを「書く」ことの壁は越えられた • 「書き続ける」ための取り組みを続けてい かなければ

  31. 31 RxDifferenceKit 作っています。 @fumito_ito fumito-ito https://github.com/fumito-ito/RxDifferenceKit