ビジネスロジックのテスト自動化
Open System Solutions
●1 障害件数が減らないのはなぜか?
テストには、単体テスト(UT)、結合テスト(IT)、システムテスト(ST)、ユーザ受入れテスト(UAT)などの工程がありますが、
私の経験からいうと最も障害が発生する確率が高いテストは結合テストだと思います。 なぜ、そんな事になるのかというと以下のような理由からです。
単体テスト工程が、関数レベルのテストとなり、ビジネスロジックとしてのテストがされない。
単体テスト工程で完全なテスト項目を作り上げ、完全なテストを実施する事はまれである。
では、どうすれば結合テストにおける障害件数を抑制する事が出来るのでしょうか?
結合テスト以降の障害件数を少なくするには、以下のようにテストを実施すれば良いのです。
ビジネスロジックレベルのテストを単体テスト工程で実施する。
ブラックボックスレベルで完全なテスト項目によるテストを実施する。
しかし、実際には、結合テスト以前にビジネスロジックレベルのテストが実施される事はまれです。
何故かというと、JUnitなどの単体テストツールを利用しても、ビジネスロジックレベルのテストを実施するにはかなりのコーディングを
する必要があるからなのです。
それでは、ビジネスロジックレベルのテストを、コーディングをしないでテストする事はできないでしょうか?ビジネスロジックは、沢山の情報を入出力として利用する為、int型、double型、String型などの型では、引数が多くなりすぎてしまいます。従って、ビジネスロジックのテストを実施しようとした場合、入出力は、オブジェクトを利用します。
この入出力で利用するオブジェクトをテキスト化してテストケースのデータとする事によって、テストを簡単に自動化して実施する事が可能となります。
●2-1 ビジネスロジックをテストする(サンプルのセットアップ)
ダウンロードしたファイルを解凍し、プロジェクト名をAutoTestとしてEclipseにインポートして下さい。
(この汎用プログラムは、Eclipseでの起動を前提としています。)
●2-2 ビジネスロジックをテストする(サンプルの実行)
サンプルを実行するには、SampleCalcModelTestクラスをJUnitテストで実行して下さい。
JUnitを実行すると、TestCase.csvファイルに定義した想定入力データファイル、結果データファイル、想定結果データファイルごとに1件のテストケースと して、ビジネスロジックが自動的にテストされます。その時、テストモジュールは以下のように動作します。
テストケース(CSV)を読み込んで、対象行がなくなるまで1行ごとに(〜を繰り返し)テストを実施する。
想定入力データ(XML)を読込んで、オブジェクトに変換する。
ビジネスロジックに、オブジェクトをセットして、処理を実行する。
ビジネスロジックから、処理後のオブジェクトを取得して結果データ(XML)に変換する。
結果データ(XML)を保存して、読込む。
想定結果データ(XML)を読込む。
結果データ(XML)と想定結果データ(XML)を比較して、差異をチェックする。
●2-3 ビジネスロジックをテストする(起動用クラスの解説)
実際に、ビジネスロジックを作成する場合に最低限必要なものは、テストケースファイル(TestCase.csv)、想定入力データファイル(input.xml)、想定結果データファイル(expected.xml)、それから、JUnit起動用クラス(AutoTestクラスを継承し、TestIFクラスをimplements)になります。
JUnit起動用クラスは以下のようになっています。 import java.util.ArrayList; import java.util.List; import junit.framework.Test; public class SampleCalcModelTest extends AutoTest implements TestIF { public static Test suite() throws Exception { PROJECT_NAME = "AutoTest"; ///** テストデータ用フォルダ名称 */ //FOLDER_NAME = "TestData"; // ///** テストケースファイル名称 */ //TEST_CASE_NAME = "TestCase.csv"
■Next Page
・Full Browser
ja.abc-yoga.podzone.org | Contact