Q. テストコードとは何ですか?
A. テストコードとは、自分が書いたプログラム(処理)が、意図した通りに正しく動作するかどうかを、別のプログラムを使って自動的に確認するための仕組みです。「入力Aを与えたら、結果Bが返ってくるはずだ」という期待値を、あらかじめコードとして書いておき、それを実行することで確認します。
Q. なぜ人が目で見て確認するのではダメなのですか?
A. 人の目による確認では、確認漏れや思い込みによる見落としが起こりやすく、また同じ確認作業を毎回手作業で繰り返すのは非常に手間がかかります。テストコードを一度書いておけば、何度でも同じ確認を、正確かつ一瞬で自動的に繰り返すことができます。
Q. 具体的にはどんなことを確認するのですか?
A. 例えば「2つの数字を渡すと、その合計を返す関数」があったとします。この関数に対して、「1と2を渡したら、3が返ってくるはずだ」という確認を、テストコードとしてあらかじめ書いておきます。プログラムを修正した後にこのテストを実行し、正しく3が返ってくれば「今回の修正で、この機能は壊れていない」と確認できます。
Q. いつテストコードを実行するのですか?
A. 主に、以下のようなタイミングで実行されます。
- 新しい機能を追加した後
- 既存のコードを修正した後
- チームメンバーが書いたコードを、自分のプログラムに取り込む前
以前の記事で紹介した「CI/CD」の仕組みと組み合わせることで、コードの変更のたびに、自動的にテストが実行される体制を作ることもできます。
Q. テストコードを書くことのメリットは何ですか?
A. 主に以下のようなメリットがあるとされています。
- 修正のたびに、既存の機能が壊れていないかを素早く確認できる
- 「正しく動作する」という基準が明文化されるため、チームでの認識のズレを防ぎやすい
- 将来、コードを見返した際に、「この処理は何を意図して書かれたものか」を理解する手がかりにもなる
運営者自身も学習中に同じ疑問を持ったことがあり、その経験も踏まえてまとめています。
押さえておきたいポイント
システム改修の相談では、テストコードが整備されていないと、修正のたびに『どこかを壊していないか』という不安がつきまといます。最初は主要な機能だけでも整備しておくと、後々の改修が格段に楽になります。
テストコードは、「プログラムが正しく動くこと」を、人の記憶や感覚に頼らず、仕組みとして保証するための重要な習慣です。小さな確認から、少しずつ書く習慣をつけてみることをおすすめします。