【勉強会】「iOS Test Night #11」まとめ

ウホーイ
10 min readAug 29, 2019

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テスト

スライドは上げられていないようなので、みなさんのツイートを載せて補います。

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

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人です。

執筆が少し遅れているとのことですが、今からとても楽しみです。

くれいんさんはどの方だったのだろう…今度勉強会でご一緒したらお会いしましょう!

おわりに

登壇者全員のレベルが非常に高く、発表内容も被っていなかったので、この短時間で多くの知識を身につけることができました。

また次回も参加したいです!

--

--

ウホーイ

iOSアプリを開発しています。Swift楽しい✨ Qiita:https://qiita.com/uhooi 趣味:テニス、アナログゲーム