プログラムの要素の中には、本質的にテストが難しい、あるいは不可能なものがあります。 このような要素に含まれるロジックは、バグが発生しやすく、進化させるのも大変です。 この問題を軽減するために、できるだけ多くのロジックを「テストが難しい要素」から「テストがしやすい部分」へ移動させます。 テストできないオブジェクトを質素(Humble)にすることで1、邪悪なバグが潜む可能性を減らすのです。

よくある例としては、ユーザーインターフェイスがあるでしょう。 プラットフォームのなかには、UIコントロールに対して自動テストを実行するためのフックが用意されていないものがあります。 フックを用意しているプラットフォームであっても、設定が複雑だったり、特殊なフレームワークを使っていたり、テストの実行速度が遅かったりと、テストが難しい場合があります。 このようなときは、プレゼンテーションモデル(MVVM)パッシブビューなどのパターンを使用して、UIコントロールの振る舞いを最小限にすれば、効果的にテストできます。

このアプローチの詳細については、Gerard Meszarosの『xUnit Test Patterns』を参照してください。 「Humble Object」の項目はオンラインで公開されています。 バリエーションや例も含めて、詳しく説明されています。

  1. 「質素(Humble)」という用語は、Michael Feathersの記事に由来します。