有用なテストケースのための開発者の姿勢
(meetup.toast.com)テストは現代のソフトウェア開発において欠かせない要素ですが、テストケースも結局は開発者が書くコードであるため、場合によっては問題が発生することがあります。オブジェクト指向の観点から「有用な」テストケースについて考察する文章を紹介します。(韓国語)
要点は、テストが[カプセル化された別のモジュールをテストする責任を持つモジュール]だという点です。これは、テストもまた厳然たる開発コードの一部であり、したがって(オブジェクト指向パラダイムにおいて)オブジェクト指向の原則を守りながら継続的に改善し、リファクタリングしていくべきだという意味です。そうだとすれば、テストケースはテスト対象モジュールの具体的な内部要素(private メソッドなど)にアクセスしたり依存したりしてはならない、ということも SOLID 原則から導けます。テストケースが検証すべきなのは、あくまでそのモジュールの抽象的な責務であるため、それを反映する当該モジュールの外部インターフェースを通じてのみテストが行われるべきです。
個人的には、この内容はプログラミング初心者が乗り越えるべきいくつもの山の一つではないかと思います。私もオブジェクト指向を初めて学んだとき、講義で「private メソッドを直接テストしてはいけない」ということと、その理由について説明を聞きましたが、正直そのときはきちんと理解できていませんでした。この内容についてある程度理解できるようになったのは、それからかなり時間がたってからでした。
まだコメントはありません。