2010年6月14日月曜日

The Test Smells

xUnit Test Patterns』 に載っている、CodeSmell の xUnit バージョン。

どうもこの本は、まとめ方が若干惜しい。掲載されているテストのノウハウは、量も多く網羅的で、プログラマなら(特にプログラマのリーダ的な立場の人は)、知って置きたいテクニックが満載なんだけど、見せ方がいまいち。

自分は、特に「Test Smell」のパートがこの本の中でも重要な部分だと思っているけど、ここも違和感がある。一個の Test Smell のカタログ項目として、複数の Causes(原因)が列挙されているが、これら自体が Test Smell だったりして、何だかややこしい。

以下のような Test Smells が掲載されている。
  • Project Smells
    • Production Bugs:
      公式なテストで(開発チームの手を離れてからのテスト)、または出荷した後に見つかるバグが多すぎる
    • Buggy Tests:
      テスト自体にバグが多い
    • Developers Not Writing Tests:
      テストコードが書かれていない
    • High Test Maintenance Cost:
      メンテするのが大変すぎる
  • Behavior Smells
    • Fragile Test:
      テスト対象コードに含まれない、他所の部分の改修によって、テストが通らなくなる
    • Assertion Roulette:
      テストメソッド中の、どのアサーションが失敗してるのか分かりにくい
    • Erratic Tests:
      その時々で、あるテストが通ったり通らなかったりする
    • Frequent Debugging:
      テストが通らない原因が、いちいち手動デバッグしないと分からない
    • Slow Tests:
      テストの実行に時間かかりすぎる
  • Code Smells
    • Obscure Test:
      何がどうなる事を検証しているのかが不明瞭
    • Conditional Test Logic:
      テストロジックの中に条件分岐があって、場合によって実行パスが通ったり通らなかったりする
    • Hard-to-Test Code:
      テスト対象コードのテスタビリティが低すぎて、テストが書けない
    • Mannual Intervention:
      いちいち手作業で何らかの介入をしないと進まない
    • Test Code Duplication:
      テストコードが重複している
    • Test Logic in Production:
      製品コードにテストコードが含まれてしまっている

xUnit に慣れているプログラマなら、上記のほとんどの Test Smells について、常識だと思うかもしれないけど、熟練者がいないチームで暗中模索しながら書かれたテストコードなんかだと、かなりの頻度で遭遇するアンチパターンだったりする。

0 件のコメント:

コメントを投稿