テストとは?プログラムが期待通り動くかを確認する考え方をやさしく整理

テストとは?プログラムが期待通り動くかを確認する考え方をやさしく整理のサムネイル
目次

テストとは

テストとは、プログラムが「期待した通りに動くか」を確かめる作業です。ここで大事なのは、ただ動くかどうかを見るのではなく、「どんな入力を入れたら、どんな結果になるはずか」を先に決めておくことです。たとえば、会員登録画面で正しいメールアドレスを入れたら登録できる、空欄ならエラーになる、といった約束を確認します。これができていると、あとで不具合が起きたときにも、何がずれているのか見つけやすくなります。

ITの現場では、テストは「正しさを証明するもの」というより、「間違いを早く見つけるための道具」と考えるとわかりやすいです。特に新しく機能を作るときは、最初から完璧にするより、少しずつ確かめながら進めるほうが安全です。小さな部品ごとに確認したいときは関数のような単位に分けて見ることが多く、変更の範囲が大きいときはテストの考え方がさらに重要になります。

よくある疑問:テストって、動いたら終わりではないんですか?

動くことは出発点です。大事なのは、想定した入力で、想定した結果になるかまで確かめることです。

テストの基本は「期待値」と「実際の結果」を比べること

テストの中心は、とてもシンプルです。まず、先に「期待値」を決めます。期待値とは、こうなってほしいという正しい結果のことです。そのあとでプログラムを動かし、実際の結果が期待値と合っているかを比べます。合っていれば合格、ずれていれば修正が必要です。ここで使う確認項目を「テストケース」と呼びます。テストケースは、入力、操作、期待結果をセットにしたメモのようなものです。

たとえば、ログイン機能なら「正しいIDとパスワードで入れる」「間違ったパスワードでは入れない」「何も入れずに送るとエラーになる」などがテストケースになります。大事なのは、よくある操作だけでなく、失敗しそうな操作も入れることです。人は正しい使い方だけを想像しがちですが、実際の利用者は想定外の操作もします。だからテストでは、うまくいく道だけでなく、失敗する道も確認します。

テストは一度やって終わりではありません。修正したあとに、同じ確認をもう一度行います。これを繰り返すことで、前に直した部分がまた壊れていないかも見られます。開発が進むほど変更点が増えるので、あとからまとめて見るより、こまめに確かめるほうが安心です。なお、テストで見つかった問題の原因を深く調べる作業はデバッグです。テストは「見つける」、デバッグは「原因を探して直す」と覚えると整理しやすいです。

テストの種類をざっくり知ろう

現場では、確認の粒度によってテストを分けます。まず、関数や小さな処理だけを確かめるのが単体テストです。次に、画面と保存処理のように、いくつかの部品をつなげて確かめるのが結合テストです。さらに、アプリ全体を通して使えるかを見るのがシステムテストです。名前は難しそうですが、考え方は同じで、「どこまでを1回で確かめるか」が違うだけです。

たとえば、入力チェックの関数があるなら、その関数だけを単体テストで確認できます。会員登録画面なら、画面から入力してサーバーに保存される流れまで見たいので、結合テストのほうが向いています。もし画面側の動きと保存側の動きが分かれているなら、フロントエンドとバックエンドの違いを意識して、それぞれに合ったテストを用意すると見通しがよくなります。なお、作業の切り分けにはGitのブランチを使い、確認が終わったらプルリクエストでレビューを受ける流れがよくあります。

身近なたとえで考えるとわかりやすい

テストは、料理のレシピを確かめる作業に近いです。レシピには「材料」「手順」「仕上がりの目安」があります。たとえば卵焼きなら、卵を何個使うか、何分焼くか、最後にどんな見た目になるかを先に決めます。作ってみたあと、味や形がレシピ通りかを見ます。もし焦げていたら、火が強すぎるのか、焼く時間が長すぎるのかを見直します。これがテストの考え方です。

プログラムでも同じです。先に「この画面では、未入力なら赤いメッセージを出す」「この計算では、100円の支払いに対して80円のおつりを返す」といった期待値を決めます。そして、実際の結果を見て、レシピ通りかどうかを比べます。ここで大切なのは、「たぶん合っているはず」で終わらせないことです。人の目は思い込みに引っぱられやすいので、書き出して確認するだけでもミスが減ります。

もう1つのたとえは健康診断です。健康診断は、元気そうに見えても、見えない問題がないかを確認します。テストも同じで、画面が表示されていても、裏側の計算や保存に問題があることがあります。だから、見た目だけでなく、見えない部分まで確認する必要があります。クライアントとサーバーの違いを知っておくと、どこをテストすべきかも考えやすくなります。

実務ではどう使うのか

実務でのテストは、単に「正しいか」を見るだけではありません。変更の影響を早く見つける役目もあります。たとえば、会員登録画面に新しい入力項目を追加したとします。見た目は問題なくても、裏で送るデータの形が変わり、保存処理が失敗することがあります。そういうとき、テストがあると「どこまで動いていて、どこから壊れたのか」が見えやすくなります。

実際の作業では、まずローカルや開発環境と本番環境の違いを意識した確認用の場所で試します。本番と同じ条件に近づけないと、開発環境では通ったのに本番では失敗することがあるからです。たとえば、環境ごとの設定値を変えるときは環境変数で管理することがあります。こうした設定の違いも、テストで確認しておくと安心です。

また、テストはチーム作業とも相性がいいです。1人が書いたコードを、別の人が読むと見落としが減ります。そのとき、テストがあると「このケースは合格」「このケースは失敗」という共通の物差しになります。レビューで見つかった修正が終わったら、同じテストをもう一度実行して、前より悪くなっていないかを見ます。必要なら、画面の表示を速くするキャッシュや、保存された情報を覚えるCookieのような仕組みも合わせて確認します。機能が増えるほど、確認すべき場所も増えるので、テストは後回しにしないほうが安全です。

図解で整理

テストの流れ
期待値を先に決めて、実際の結果と比べる

テストは、次の流れで考えると整理しやすいです。

  • まず、期待する結果を決める
  • 次に、入力や操作を用意する
  • プログラムを動かす
  • 実際の結果を確認する
  • ずれがあれば直して、もう一度確かめる

この流れのポイントは、「動いたか」だけで終わらず、「期待した結果と同じか」まで見ることです。たとえば送信ボタンを押して画面が変わっても、データが正しく保存されていなければテストは合格ではありません。逆に、見た目は少し変でも、仕様どおりに動いていれば合格のこともあります。見た目の好みと、正しく動くかは分けて考える必要があります。

現場では、テスト結果をメモしておくことも大切です。何を入れて、どうなったかが残っていれば、あとで同じ確認をしやすくなります。新しい機能を足したあとに古い機能が壊れていないかを見るときも、このメモが役立ちます。つまりテストは、今の動作を確認するだけでなく、これからの変更を安全にするための土台でもあるのです。

クイズ

Q1. テストの目的として最も近いものはどれ?

  • A. プログラムを速く書くこと
  • B. 期待した結果になるかを確かめること
  • C. 画面をきれいに見せること
  • D. 何も確認せずに公開すること
答えを見る

答え:B. 期待した結果になるかを確かめることです。

Q2. 入力欄が必須なのに、何も入れずに送信したらどうなるのが自然ですか?

答えを見る

答え:入力不足を知らせるエラーが出て、送信が止まるのが自然です。

Q3. テストで見つかったずれを直す前に、まず行うとよいことは何ですか?

答えを見る

答え:期待値と実際の結果を見比べて、どこがずれているかを確かめることです。

まとめ

テストとは、プログラムが期待通りに動くかを確認する考え方です。ポイントは、先に期待値を決めてから、実際の結果と比べることです。単体テスト、結合テスト、システムテストのように粒度は違っても、考え方は同じです。小さく確かめて、ずれを早く見つける。これが、開発を安全に進めるための基本です。

まずは「何を確認したいのか」を言葉にしてみてください。それだけで、テストの見え方がぐっと変わります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次