8章ユニットテストとデバッグ
どのようなプログラミング言語でどのようなソフトウェアを開発するかにかかわらず、ユニットテストを書くことはよいソフトウェア開発のための重要なプラクティスの1つです。ソフトウェアのテストは対象となるものの単位によって何種類かに分類されますが、ユニットテストはその中でも最も小さい単位(モジュールやクラス、関数)を対象とするテストです。ユニットテストは他のテストと比べて書くのが簡単で高速に実行でき、高い信頼性と再現性があって、テスト失敗時の原因の特定も容易です。また、ソフトウェアの変化に対して壊れにくく、それどころかソフトウェアの内部構造を外部から見た挙動を変えずに整理するリファクタリングと呼ばれる作業を強力にサポートします。ユニットテストはソフトウェアテストの中で最も投資効率が高く、それゆえ最も多く書くべきものとして、テストピラミッドの最下層に配置されます(図8-1)。
テストピラミッドにおける各層の大きさはそれぞれのテストの数の多さを表します。ここで、UIテスト(またはE2Eテスト)は実際にユーザーがソフトウェアを使うときのように、UIからソフトウェアを操作して挙動を確認するテストです。また、サービステスト(または結合テスト)ではUIは扱わずにサービスレベル(たとえば単一のWeb APIのレベル)でソフトウェアの挙動をテストし、複数のユニットが正しく結合して動作することを確認します。
テストが失敗したときやソフトウェアに何らかの不具合が見つかったとき、その原因を突きとめて修正する作業が ...
Get ハンズオンNode.js now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.