LoginSignup
1
1

More than 5 years have passed since last update.

WWDC2017 Engineering For Testability要約とサンプルコード

Last updated at Posted at 2018-01-09

背景

最近自分の中でテストを書くことに大してモチベーションが上がってきている。
理由は簡単に言うと以下の2点。
- 品質を担保したい
- 新機能を開発する時に既存のモノを壊していないことの保証が欲しい

そして、iOSでのテストに明るくなかったのでググっていたら以下の記事に出会った。
A complete list of articles on Unit Testing with Swift from 2017

この中で紹介されているWWDC2017のセッション: Engineering For Testability でコンセプトが非常によくまとめられていて勉強になった気はしたのだが、どうも腹落ちせず、サンプルプロジェクトを作り、Githubにアップロードした

ポイント

詳細はビデオ見てもらうこととして、以下かんたんにポイントをまとめておく。

Testablity Techniques

テスト可能にするテクニックとして以下の2つがあげられている。
1. Protocols and parameterization
2. Separating logic and effects

1のProtocols and parameterizationはPreviewViewControllerで、2のSeparating logic and effectsはOnDiskCacheで説明されている。

これを見るとなぜ、単純に他のアプリを開く動作をするだけなら10行程で住む実装を、別クラスに分け、抽象化し、アプリコードだけ見ると複雑にみえる実装の理由がわかるはずだ。

Scalable Test Code

このセクションでは、(発表者も変わり)スケーラブルなテストコードについて語られている。前半部分はテストしやすいアプリコードの書き方についてだったが、このパートはテストコードについての解説だ。

処理ごとに抽象化するテクニックに時間を割かれていたが、個人的に印象的だったのは最後のことば:

Important to consider even though it isn't shipping. 
Test code should support the evolution of your app. 
Coding principles in app code also apply to test code.

ユーザが使う動作させるコードではないが、テストは真剣に取り扱われるべき。
テストでアプリの発展をサポートするべきだ。
アプリコードでのコーディングプリンシプルはテストコードでも適用されるべきだ。

要は、テストコードは、縁の下の力持ちだけど、表のアプリコードと同じくらいとても大事だよ、ということですね。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1