エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【意訳】The 5 principles of Unit Testing ~ユニットテストの5原則 ~

経緯

無茶苦茶いいねが付いていたので、目に止まったので、内容を意訳・要約してみた。

原文

The 5 principles of Unit Testing - DEV Community

意訳・要約

  1. ユニットテストの基本的な原則 ユニットテストはコードの一部分を対象とし、その部分が期待通りに機能しているかを確認するもの。 単一の関数やメソッドにフォーカスすることが一般的。

  2. 独立性の確保 ユニットテストは他の要因に左右されずに実行できる必要がある。 テストケース同士が影響しあわないように、テスト間で独立性を保つ。

  3. 自動化 ユニットテストは手動ではなく、自動化されるべき。 テストスクリプトを実行することで、コードの変更に対する即座のフィードバックを受けられる。

  4. 可読性と保守性 テストコードは他の開発者が理解しやすく、将来的な変更に対応しやすいように記述するべき。 テストケースの名前やコメントを工夫して、テストの目的や意図を明確に伝える。

  5. カバレッジの追求 ユニットテストカバレッジを高めることが目標。 カバレッジはコードのどれだけの部分がテストされたかを示す指標であり、高いカバレッジを追求することでコードの品質向上が期待される。

ユニットテストを効果的に活用し、ソフトウェアの品質向上に貢献するために、これらの原則を遵守することが重要。

気になったポイント

UTは、カバー率を注視する現場が大半だと思うが、それに釘を指しているのはよかった。
本当にチェックスべきビジネスロジック以外のところに注力すれば、カバー率100にできるけど、無意味だと思うんだよね。
ビジネスロジックが集中するクラスを設計して、それのカバー率を注視したほうが、いいと思う。
最近は、AIによるコーディングなんかも出てきて、クラス設計の重要性をひしひしと感じる。

あとは、UTコードは、普通のコーディングとは違う旨に言及していたのも納得できる。
テスト名で何をやっているのか分かるようにする、どのような期待値を必要としているのか明確化するのは、基本だと思う。

テストの構造化ってのが、意外と面白かった。
AAAパターンと言っていた。最初見たときは、なんで音楽グループの名前が?って思った。
ちなみに、トリプルエーは、仮面ライダー電王のOPで知った。
話を戻すと、アレンジ・アクト・アサートの頭文字をとってAAAらしい。
アレンジで必要なセットアップ、アクトで実行、アサートで検証という構造にしたいらしい。
見ていると、アレンジの部分がコード量多くなりそうな気がするが。