[イベントレポート] iOS Test Night #5 に参加してきました! #ios_test_night

2017.07.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

おばんです、型乞食の田中です。型をください。

今回の記事は、7/26(水)に開催 iOS Test Night #5 の参加レポートになります!

イベント概要

本イベントはiOSにおけるテスト周りに関する知識を共有することを目的としたものです。

テスト周りに関するものであれば何でもOKです。 例をあげるとすれば以下のようなものなどです。

・テストをはじめてみた&ここで苦労した ・このテスティングフレームワークはここがハマりどころ ・テスティングフレームワークをこうやって使い分けている ・こうやって工夫してテストしている ・オレが考えるiOSアプリにおけるテスタビリティの高い設計 ・弊社のCI/CD環境はこんな感じにしている ・WWDC2017での熱をこの場にぶつけたい

上記のような内容について「話したいことがある!」「聞いてみたい!」という方は是非参加してください。

今までのiOS Test Nightの資料についてはこちらを参考にしてください。

Connpass より引用

発表

「Property-based testing with SwiftCheck」 Yusuke Hosonumaさん

Property-based testingとSwiftCheckというライブラリの紹介です。Property-based testingとは、ランダムに生成した多数の値を入力値として、テスト対象の性質をテストするテスト戦略のこと。SwiftCheckはその値をランダムに生成してくれるフレームワークです。

また、Property-based testingとSwiftCheckの具体的な例も紹介いただきました。

「AbemaTV iOSチームにおける継続的ナントカについて」 toshi0383さん

  • 手元でのビルドが10分以上かかる
  • Jenkinsのテストが遅いのと不安定でなかなかマージできない
  • JenkinsがいるMacが不機嫌?

上記の問題を解決したくてやったことの紹介です。一部を取り上げると、以下の方法を紹介いただきました。

  • 非同期のテスト結果を待ちすぎていた
  • コンパイルの高速化(時間がかかって居るところだけ型推論をやめる)
  • 10回に1回でも失敗するテストは捨てる
  • ビルドとテストそれぞれのジョブにタイムアウトを設定

この他にはCarthageを使うなどの工夫や、bitriseについて紹介いただきました。ハイライトは「Jenkins職人の人件費よりbitriseを使った方が安い」。

「単体テストのハジメ」 yokoyasさん

明示的な入出力とは?暗示的な入出力とは? テストのしづらい暗黙的な入出力のテスト例の紹介をいただきました。

暗黙的な入出力とは、大域変数を用いた入出力テストのこと。具体例としてはUserDefaultsが大域変数に当てはまり、環境に対して副作用を与えてしまうため、テストがしづらい。これを解決するために、スタブを用いた方法などが紹介いただきました。

「VIPER Architecture から学ぶ Dependency Injection」 star__hoshiさん

VIPER Architectureの View, Presenter, Router のDIに着目した発表です。SwiftによるDIを実装する上で、Protocolを用いることで各役割が具象クラスに依存するのではなく、抽象Protocolに依存させるようにしている。

VIPER Architectureで実装したアプリのサンプルはこちらとのことなので、合わせてお読みくださいとのことです。

「テストを書かない言い訳をした結果② -負債にならないテストを求めて-」 takasekさん

テストを書かない言い訳をするために、Pythonで使われているdoctestという手法の紹介をいただきました。doctestというのは対話環境をそのままテストにできる手法のようです。Swiftでそれを行うには...?

また、先の発表とネタ被りしてしまいましたが、Property-based testingについても紹介いただきました。

「手動リグレッションテストをE2Eテストに置き換えてみて、分かってきたこと」 nemoto_tadashiさん

[公開され次第スライドを挿入します]

「とりあえず全部自動化」。Bluepillを用いた自動テストによってよかったこと、見えた課題について紹介いただきました。テストケースでよく見る「正しく〜ができていること」の正しいとは何か?などの話題も出てきました。

「What's New in Testing!!!」 tamakiさん

WWDC 17で紹介されたiOSのテストに関するアップデートの紹介をいただきました。圧倒的網羅性!

まとめ

iOS Test Nightさんは初級、中級、上級者それぞれに向けた内容の発表が毎回されるので、カバー範囲が広く、質の高い勉強会だと感じます。テストに関して初心者な自分にとって、いつも新しい気づきがあるので、今後も参加したいと思いました!