2019/08/27(火)に行われた「iOS Test Night #11」のまとめです。
ハッシュタグは#ios_test_nightです🐦
イベントページはこちら↓
開場
- 時間:19:15 -
主催はDeNAさんです。
会場はヒカリエの21Fです。iOSアプリのテストに興味のある方が、たくさん集まっています。

LT
iOSにおける自動テストの並列化
iOSにおける自動テスト並列化の歴史についての発表でした。
tarappoさんはとても落ち着いて話されていて、発表に慣れている印象を受けました。
私の知らないライブラリをたくさん紹介されていて、勉強になりました。
pxctest
シミュレータでiOSアプリのテストを並列実行するツール。Xcode 9でシミュレータのテスト並列実行をサポートしたため、現在はアーカイブされています。
Bluepill
シミュレータでiOSアプリのテストを並列実行するツール。pxctestと異なり現役です。
Flank
Firebase Test Labを使ったAndroidとiOSのテストランナー。シミュレータでなく実機でテストする点が、上記の2つと異なります。
「シャード数」という言葉を初めて聞いたのですが、「端末数」と考えればいいそうです。
iOSにおける自動テスト並列化の歴史をとても丁寧に説明されていて、わかりやすく学ぶことができました。
ちなみに私が担当しているアプリのCIでは、単体テストを1端末の最新OSのみで実行し、UIテストを複数端末で実行しています。みなさんのテスト並列化状況もぜひ知りたいです。
探索的テストの世界 for iOS Test Night #11
- 時間:19:50–20:05
- 発表者:mkwrdさん(@mkwrd)
水平思考と探索的テストについての発表でした。
Markさんの発表を初めて聞いたのですが、プレゼンと資料作成がうま過ぎました。スライドのデザインは海外カンファレンス、プレゼンのスキルは塾講師の経験から学んだとのことです。
探索的テストを行うにあたり、テストチャーターやタイムボックス、ペアテストなどの「テクニック」より、水平思考という「アプローチ」から学べばいいとのことです。
「水平思考」という言葉を初めて聞いたのですが、私の中にすごい刺さりました。
ざっくり説明すると、論理的に考える「垂直思考」と異なり、頭を柔らかくして直感的に考える思考です。テニスのたとえでわかりやすく説明されているので、詳細はスライドをご参照ください。
垂直思考を使って行うテストは、単体テストやUIテストなど「わかっている仕様を確認するテスト(形式的テスト)」です。水平思考を使って行うテストは、「わからない仕様を確認するテスト(探索的テスト)」です。
形式的テストと探索的テストの違いは↓のスライドがわかりやすいです。
気になったのが、「水平思考」の説明を聞いて、property-based testingと似ていると感じたことです。こちらはトビさんやかっくんさんとお話しして、私の中では「property-based testingは水平思考を使って行う形式的テスト」だと結論付けました。
水平思考を学ぶための本は↓です。
オチまでかっこよく、最後まで楽しませてくれる素晴らしい発表でした。
Testing a constraint-based layout of UIView
Auto Layoutの単体テストについての発表でした。
SCENEEさんが公開しているライブラリです↓
ポイントはUIKitのレンダラーを信頼することだそうですw でもその通りだと思います。
私が担当しているアプリでは「Viewを単体テストしない」と決めているのですが、今後Viewを単体テストすることになったら参考にしたいスライドです。
iOSでの効果的なBDDテスト
- 時間:20:10–20:15
- 発表者:Derek Leeさん(@derekleerock)
スライドは上げられていないようなので、みなさんのツイートを載せて補います。
Derek Leeさんが公開している、BDDで単体テストを実行するためのライブラリです↓
こちらを使うことで、簡単にBDDで単体テストのコードを記述できるようになるとのことです。
UIテストを実行する時間がない場合に使えるようです。
テストピラミッドの考えだと当たり前なのですが、やはりいかにしてUIテストに頼っている部分を減らし、単体テストで品質を担保するかを考えている方が多いです。
GitHub ActionsでiOSのCIを実現しよう
- 時間:20:15–20:20
- 発表者:nakashoさん(@nakasho_dev)
GitHub ActionsでiOSアプリのCIを行う発表でした。
GitHub Actionsは現在β版であり、私はまだ触ったことがなかったので勉強になりました。
みなさんも同じようです。
スライドで気になる点があったので載せておきます。
YAMLでワークフローを簡単に記述でき、使いやすそうです。
GitHub Actionsを使う際に参考にしたいスライドです。
What’s New in Testing
- 時間:20:20–20:25
- 発表者:tamakiさん(@alligator_tama)
Xcode 11でテストに関する主な変更についての発表でした。
5分のLTの中に多くの情報を入れていて、新しいテストについて一気に学ぶことができてよかったです。早口と言われていましたが、私自身が早口ということもあり、個人的にはちょうどいいスピードでした。
Test Planは気になったので、後ほど詳しく調べたいです。
パフォーマンステストでは、時間の他にメモリやCPUを指標(メトリクス)として計測できるようになるとのことです。適用したい指標を配列に入れるだけのようなので、簡単に使えそうです。
Localization TestingはXcode Localization Catalogを理解していないため、ついていけませんでした。
XCTUnwrap
は便利そうです。テストメソッドに throws
が付いているのを見たことがないので、どういう仕組みなのか気になります。
Xcode 11を使ってテストをする際に参考にしたいスライドです。
懇親会
- 時間:20:25–21:30
まい泉のかつサンドやおにぎりがデプロイされました🥪🍙✨
とてもおいしかったです。


懇親会ではMarkさんやなかしょさんなど登壇された方や、トビさん、かっくんさん、かりあどさんたちとお話しさせていただきました。
Markさんとは「モンキーテスト」と「探索的テスト」の違いについてもお話ししました。
何も考えずに操作するのがモンキーテスト、考えて操作するのが探索的テストとのことです。つまり、モンキーテストをしているつもりでも、優秀なテスターは知らずに探索的テストをしていることもあります。
今回は「iOSアプリ開発自動テストの教科書」の著者が2人とも参加されていました。私も拝読しましたが、まさに「教科書」といえる内容でした。
著名な方と気軽にお話しできる機会はあまりないので、とても有意義な時間を過ごすことができました。
実はサイン欲しかったです📝
勉強会に参加するたびにタグ付きでツイートしまくっていたからか、tamakiさんたちに名前を覚えていただいておりましたw
tamakiさんは最後にご挨拶できたのでよかったです。
tamakiさんは「iOSテスト全書」の著者の1人です。
執筆が少し遅れているとのことですが、今からとても楽しみです。
くれいんさんはどの方だったのだろう…今度勉強会でご一緒したらお会いしましょう!
おわりに
登壇者全員のレベルが非常に高く、発表内容も被っていなかったので、この短時間で多くの知識を身につけることができました。
また次回も参加したいです!