システム開発をするにあたり、作成したソースコードをテストすることは避けて通れない。
しかし、効率的にテストを行わないとテストに膨大な時間がかかってしまい、システム開発全体に影響を及ぼしかねない。
そこでこのページでは、Javaでシステム開発をする時に、効率良くテストするためのJUnitというツールを紹介する。
JUnitとは何か
JUnitとは、Javaで書かれたプログラムのテストを自動化するためのツールだ。プログラムはユーザの要求を元に書かれるものだが、ユーザの要求通りにプログラムが動くかどうかはテストしてみなければわからない。
では、なぜテストのためのツールが必要なのか、まずはそこから始めよう。
なぜテストツールが必要か
なぜこのようなツールが必要なのだろうか。次のような場面を考えてみよう。
ユーザから依頼されてJavaで開発する場面だ。プログラムは商品の合計金額を商品の個数で割って単価を求めるというものだ。プログラムが出来上がった。さて、プログラムが正しく動くかテストしてみる。あなたならどうやってテストするだろうか。
ひとつの方法は、合計金額と個数を入力し、計算結果をプリント文(System.out.print()メソッド)でコンソールに表示しテストするというものだ。これは、テストデータの入力もテスト結果の確認も手動で行う。
これで大丈夫とユーザに出来上がったプログラムを使ってテストしてもらう。
ユーザが使ってみると商品の個数がゼロの時、エラーが発生してしまうことが指摘された。そうだ、ゼロで割るとJavaは例外が発生する。例外処理を入れればいい。例外処理を加えてテストする。
また、ユーザにテストしてもらう。
そうすると、ユーザからマイナスの個数が入力できてしまう。「個数は1以上だよ。チェックを入れてよ。」と言われてしまう。何だ、ゼロでの割り算の例外処理を入れる必要はなかった。個数が1以上の条件を入れればよかった。でも、エラーをどうやって知らせようか。そうだ、ゼロを返すことによってエラーとしよう。
さらに、ユーザにテストしてもらう。
こんなことが延々と繰り返される。その度にプログラムを修正して、テストをやり直すという作業が繰り返される。それに、これまで行ってきたテスト全てをやり直すのは疲れる。実際の開発では、ユーザの要求が山ほどあり、それに応じてテストが山ほど繰り返されるのだ。
そこで、これらの問題を解決するのがテストを自動化するテストツールだ。
テストツールJUnitを使った開発の概要を見てみよう。
テストツールを使った開発の概要
JUnitは、Javaによるソフトウエア開発の流れの中でプログラムをテストする工程で使われる。テストデータの入力とテスト結果の確認を自動的に行う。
このJUnitによる自動化テストプログラムを使った開発の流れは次ようになる。
最初にプログラマがユーザからの要求を聞く。その要求をテストプログラムにする。テストを通る要求を満たすプログラムを書く。そして、テストプログラムを実行してテストを行う。この流れが繰り返される。この時、テストプログラムは毎回新しく書くのではなく、新たな要求に対応したテストが追加される。
一度書いたテストプログラムは自動実行されるので新たな作業は必要ない。この自動化はユーザと開発者に大きなメリットとなる。また、テストプログラムを実際のプログラミングの前に書くことによって、ユーザの要求を明確にできる。
JUnitがどのように使われているかを実際のプログラムで見てみよう。
実際のテスト
実際のプログラムを以下に示す。JUnitが提供するメソッドはいくつかある。そのひとつassertEquals()メソッドはテストの期待値とテスト結果の比較を自動化する。このメソッドを使うと目で比較する必要はないのだ。
さらに、テスト結果を集計してまとめて見ることもできるので便利だ。結果をひとつひとつ見る必要はない。
さらにもしエラーがあれば、エラーの場所、期待値や計算結果を含む詳細なエラー情報も提供されるのだ。
ぜひ、使ってみて欲しいツールのひとつだ。
まとめ
プログラムのテストは、闇雲に行うと膨大な時間がかかるだけでなく、テストに漏れが発生しバグを見逃してしまう可能性もある。
そのために、今回紹介したJUnitを利用して、効率良く漏れのないテストを実施しよう。
僕もなれますか?
ご愛読いただきありがとうございます。
未経験の方々も勉強されてエンジニアになっております。
まず、始めることが大切ですので、授業体験などにご参加いただき、
ITに興味を持つところから初めていってみましょう。