テスト

プログラミングでテストを書く意味【安心して機能追加・修正できる】

どうも、つよぽんです!

今回は、プログラミングで「テストコードを書く意味」について解説していきます。

今回の記事の内容は以下の解説記事でも使っているスライドの内容をさらに詳しく解説したものとなります。

あわせて読みたい
なぜテストをするのか?【関数の挙動確認・自動化・安心の獲得】今回はテストをなぜ作る必要があるのかについて学習します。結論から言うとテストを作らなくてもサービス・アプリケーションを作成できます。しかし、開発を保守・運用までの長い目で見たときに「テストあり」と「テストなし」で確認作業の大変さが大きく変わってきます。...

今回の記事は次のような方に向けて書きました。

想定読者
  1. テストコードって何?
  2. テストツールのメリットを知りたい

この記事を読み終えた後のあなたは次のことがわかるようになっています。

この記事を読み終えた後のあなた
  • テストコードとはどういうものか分かる
  • テストツールのメリットが分かる

それでは以下の内容で話を進めていきます。

今回の内容
  1. テストコードとは
  2. テストツールを使うメリット

テストコードとは

テストコードとは「実装した機能(=関数)が正しく動くかどうかを確認するためのコード」のことを言います。

ここでいう「機能」とは「関数」とイコールだと思っていただけたらと思います。

そして、実装した関数が正しく動くかどうか確認する方法はいくつかあります。

今回は次の2通りのテスト方法を説明します。

  1. 比較演算子とログ出力の機能を使う
  2. テストツールを使う

比較演算子とログ出力の機能を使う

テストコードを書くときは、次に紹介する「テストツール」を使ってテストを書くほうが一般的ですが、「簡単に挙動を確かめたい」ということであれば、わざわざテストツールを使う必要はないです。

JavaScriptを例にすると、「比較演算子」と「console.log」を使えば、実装した関数の挙動を確認することができます。

以下の画像は実際に「比較演算子」「console.log」を使って実装した関数の挙動を確かめたようすになります。(※画像をクリックすると別タブで画像が開きます。)

実装した関数の挙動をconsole.logで確認している様子実装した関数の挙動をconsole.logで確認している様子

上の画像で使っているコードは以下のリンクから直接確認できます。

sub関数の挙動をテストした様子

ここで注目していただきたいのは、1つの関数にたいして、いろんなパターンで関数を実行しているところです。
(今回の場合は、引数に「異なる値」を数パターンセットして実行している。)

「console.log」で出力される内容が意図通りであれば、実装した関数は正しく動いているということが確認できます。

テストツールを使う

前の章では「比較演算子」「console.log」を使うことで、簡単に関数のテストを行えることを説明しました。

しかし、実際の開発現場では「テストツール」を使ってテストを書くことが一般的です。

テストツールについては、別記事で改めて解説しますが、テストツールを使うことで次の章で解説する「メリット」を得られます。

それでは、テストツールを使うことでどんなメリットを得られるのか1つずつ見ていきましょう。

テストツールを使うメリット

テストを作ることでリグレッションテストを自動化出来る

リグレッションテスト」というのは「コードの修正によって、修正していない他の部分で影響が起きていないか確認するテスト」のことを言います。

修正のたびに、他の関数の挙動を毎回手動で確認するのは骨が折れる作業です。

しかし、テストツールを使ってテストコードを管理することで、テストの実行を自動化することができます。

「Git」「GitHub」を使って開発をするときに、コミット毎・Push(=アップロード)するごとに、自動化することができます。(テストの自動実行を行う設定をする必要あり。)

こうすることで、コードの修正を行うたびにテストが自動で実行されるため、修正のたびに手動でテストを行う必要は無くなります。

また、修正を行い自動で実行されたテストで問題が発生したときは、直近の修正によって発生した問題となるので、直近の修正箇所を見直せばよくなります。

つまり、「自動的に毎回テストが実行される」「エラーが出ても直近の修正の確認だけを行えば良い」ということから、「リグレッションテスト」の工数がだいぶ抑えられるのです。

テストを作ることで安心してリファクタリング出来る

リファクタリング」とは、既存コードの挙動を変えずに「より読みやすいコードに修正する」「複数の箇所で行われている共通処理を関数化する」などの作業を指します。

ここでは「既存コードの挙動を変えず」という部分が重要です。

もし、既存のコードの挙動が変わってしまう、そのコードを使っているところの動きも変わるので、バグ(=プログラムの不具合)が発生する可能性が高くなります。

リファクタリングによって、バグが発生する可能性があるならば「リファクタリングをしなければ良いのでは?」という考えが出てくるかもしれません。

しかし、もしリファクタリングをしないで、どんどんプログラムを書いていくと、「同じ機能を持った関数の重複」「コピペコード」「読みにくいコード」がどんどん生まれて、コードの保守・運用が大変になります。

つまり、サービスを大きくしないのであれば保守・運用は避けて通れない道になるので、保守・運用コストを下げるためにも「リファクタリング作業」が必要になるのです。

そこで出てくるのが、さきほども話した「テストの自動化によるリグレッションテスト」です。

リファクタリングによって修正されたコードも「テストの自動化」の対象にすれば、リファクタリングによって発生したバグもすぐに発見できるようになります。

つまり、テストツールを使うことで、安心して「リファクタリング」が出来るということです。

まとめ

今回の話をまとめると次のとおりです。

今回のまとめ
  • 「テストコード」とは、実装した機能の挙動を確かめるプログラムのこと
  • 「テストツール」を使うことで、テストを自動化できる
  • テストの自動化により「リグレッションテスト」の工数を下げられ、安心して「リファクタリング」も行える

今回の内容は以下の記事内のスライドの補足資料として作成しました。スライドの全部を確認したい方は以下の記事も参照して頂けたらと思います。

あわせて読みたい
なぜテストをするのか?【関数の挙動確認・自動化・安心の獲得】今回はテストをなぜ作る必要があるのかについて学習します。結論から言うとテストを作らなくてもサービス・アプリケーションを作成できます。しかし、開発を保守・運用までの長い目で見たときに「テストあり」と「テストなし」で確認作業の大変さが大きく変わってきます。...
【3つの特典付き】Webエンジニアに必要な基礎スキルを体系的に効率良く身につけたいですか?

LINE登録で無料特典を受け取る

次のような方向けに、学習をサポートするコンテンツを無料プレゼントしています。

  • Webエンジニアになりたいけど何から学習を始めれば良いかわからない
  • 今まで独学で頑張ってきたけど、独学に限界を感じてきた
  • プログラミングは出来るけど、大きめのコードが書けない

「プレゼント詳細が知りたい」「プレゼントを受け取りたい」といった方は、以下のボタンをクリックして詳細ページをご確認ください。

無料特典を受け取る

 

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です