いざアサートせよ
緑の光あれ
我ら Javaの騎士
少し前に『実践JUnit』の書籍が発売されました。
対象とする読者に書かれているよう、ユニットテストの記述に慣れていない人を対象にしているものです。ツールの詳細などにはあまり踏み込みませんが、 どのようなテストが良いとされるのか というプラクティスや考え方がまとまっています。
ユニットテストフレームワークは随分使われてきました。その中で蓄積されたプラクティスを知って取り組むのと、知らずに取り組むのでは考え方の洗練されかたに差がでますよね。きっと。
この考え方は開発者テストと言われるユニットテスト以外にも、統合であったりシステムであったり、様々なスコープのテストコードを考える上でも共通して使えるものです。なので、 具体的なツールはある程度知っているけれど、どのような粒度、もしくは内容を意識してテストコード書けば良いか、そもそもの指標もわからない という人はかなり適したものな気がします。
私個人は、どのようなテストが良いのか?といったポイントは見聞きしたことがあるものでした。ただ、JUnit4 + Hamcrestの組み合わせのフレームワークの使い方には疎かったので、ツール自体は知っていましたがそれらを使ったフレームワークの遷移が面白かったです。他、テストのリファクタリングの テストの臭い は面白かったです。TDDであったり、 活きたドキュメントとしてのテストコード まで言及されていたのはさすがでした。
いくつかかいつまんで…
良いテスト
- FIRST
- Fast
- Isolate
- Repeatable
- Self-Validating
- Timely
テスト対象
- Right-BICEP
- Right
- Boundary
- Inverse
- Cross-check
- Error
- Performance
境界条件
- CORRECT
- Conformance
- Ordering
- Range
- Reference
- Existence
- Cardinality
- Time
テストの臭い
不具合ありそうなコードの臭いみたいなのと同じで、よくなさそうなテストコードの臭いです。
- 不必要なコード
- アブストラクションの欠如
- 無関係な情報
- 肥大化したコンストラクタ
- 複数のアサーション
- 不必要な詳細さ
- 誤解を招く構成
- 暗黙の位置付け
ここら辺で言われているのはテストコードに限った話ではないですね。
締め
気になる方は、ぜひ書籍を購入してみてください。もしくは、近くの知見を持っている人に相談してみたりすると良いと思います。
私自身、テストコードの記述にまだ集中して取り組むまでに色々できていません。が、プラットフォームの差はあれどテストコードを書くことが広まった現在、設計された最低限のテストコードで最大限の成果を出せるようにしたいですね。そのための知見なんかは持ち合わせたい。
1 Comment