ねえぶ

猫好きエンジニアのブログ

iOS Test Night #10 に行ったメモ

ブログを引っ越ししましたので,5秒後に移動します

今月からソフトウェア品質管理部門で仕事をするようになったこともあって,DeNAさんで行われたiOS Test Night #10に参加してきました.

イベント概要

目的

XCTTestやXCUITestを使ったテストはやったことがあったけど,PJや組織の特性によってそれ以外に選択・組み合わせ可能な要素にどのようなものがあるか学ぶ.

発表

19:35-19:50 15分枠(1) ぎぎにゃん / Azure Pipelines for iOS使ってみた

  • スライド
  • Azure PilelinesでXcodeプロジェクトのビルド(テスト)をする話
  • 小さい型にはまったプロジェクト(ライブラリとか)なら簡単にCIできる
  • パッケージ依存性があったりCDが必要な場合はちょっと面倒
  • カッコイイところ
    • 早い,安い
    • macOS/linux/windowsのコンテナが使える!!
    • GUIでパイプライン設定が作れ,YAMLに吐ける
    • ローカル環境のmacOSをスレーブにできる(セルフホスティング
    • XUITest/Appiumとかも使える
  • 適用プロジェクトは限られそうだけど,試してみたい

19:50-20:05 15分枠(2) susieyy / Snapshot Testing

  • スライド
  • Snapshot Testing
    • 正しいSnapshotとのdiffを取ってテストする
    • テストピラミッドのUTの中で上位に相当するレベルのテスト
    • 状態ごとの画面カタログとしても利用している
  • iOS SnapshotTestCaseを使ってる
  • 通信やアニメーションの途中でSnapshot取らないような工夫はいくつか必要
  • Snapshot Anything
    • 画像だけじゃなくてビューやJSONデータなど,なんでもSnapshotできる
    • ビューのフレームワークと階層など,UIの中でも変更の少ない部分をテストできる
    • よりドメインテストに近いレベルのテストができる
  • iOS SnapshotTestCaseはちょっとおよび腰に感じたけど,SnapshotAnythingはアリだなと感じた

20:05-20:10 5分枠(1) imaizume / iOSアプリのテストを書きたいのに書けないあなたへ

  • スライド
  • まずはすでにテスタブルで書きやすいところから書く
  • 大域変数をリポジトリパターンにするなど,テスタブルにリファクタリングしていく
  • 設計を責務単位にできるようにしていく
  • 良いアプローチだと感じた

20:10-20:15 5分枠(2) AkihisaSengoku / RxSwiftのテスト入門

  • スライド
  • RxSwiftのObservableをテストするために,RxTestTestSchedulerを使った
  • RxSwiftは使ったことがないけど,そんなにObservableに合わせてテストする必要があるんだろうか・・・と疑問に思った
    • @orga_chem さんが言ってのがその解なのかな?(よくわかってない)

20:15-20:20 5分枠(3) kariad / Viewのテストどうやりますか?

  • スライド
  • PresenterのテストでViewのテストを代替することもできる
  • UTならUIControlやSuccinctが便利
  • ROIに応じて適切なテストをしよう
  • ところどころ野菜の絵文字が出てきて美味しそうだった

20:20-20:25 5分枠(4) tobi462 / Swift で ParameterizedTest をやってみた話

  • スライド
  • XCTestではサポートされていないParameterizedTestを自前実装した話
  • 単にリストにテストデータを持たせてforでテストしても,どのテストデータがコケたのかわかりずらい
  • カスタムassertの実装により,テストデータの行を表示できるようにした
  • OSSにした: YusukeHosonuma/SwiftParamTest
  • カスタムassert初めて知った