88to life book…

国内・海外旅行、日々の暮らしのフォトブログ

Java:単体テスト仕様書作成の網羅テストを簡単に!

      2015/05/31

プログラミングをしていて単体テスト仕様書を作る時にAND条件の網羅テストをすることがあります。

そこで テスト仕様書を機械的に作成する為にJavaプログラムを作ってみました。

網羅情報の配列に条件文を設定してJavaを実行すると表示されます。

一度プログラムを実行してから=部分をLIKE・<・>などに変更すると色んなバリエーションが出来きます。

網羅テスト用プログラム

import java.io.*;

/**
* 網羅テスト用プログラム
*
* @author Hayato
* @since 2011/01/29
*/
class Moura
{
public static void main(String args[]) throws IOException
{
// 網羅情報の配列
String value[][] =
{{顧客TBL.顧客ID,画面入力.顧客ID},
{注文.注文ID,注文明細TBL.注文明細ID},
{注文.論理削除フラグ,TRUE}};

// 配列の数
int count = value.length;

int equalCheck = 0;

// 等価記号
String equal = =;

// 不等価記号
String notEqual = ≠;

// 記号
String sign = ;

// 全一致項目パターン
System.out.println(★★★ 全一致項目パターン ★★★);
for (int i = 0; i < count; i++) {

for (int j = 0; j < 1; j++) {
System.out.println(value[i][j]+ + equal);
System.out.println( + value[i][j+1]);
}
}

System.out.println();

// 部分一致項目パターン
System.out.println(★★★ 部分一致項目パターン ★★★);
for (int k = 0; k < count; k++) {

for (int i = 0; i < count; i++) {

if (i == equalCheck) {
sign = notEqual;
} else {
sign = equal;
}

for (int j = 0; j < 1; j++) {
System.out.println(value[i][j] + + sign);
System.out.println( + value[i][j+1]);
}
}
equalCheck++;
System.out.println();
}

// 全不一致項目パターン
System.out.println(★★★ 全不一致項目パターン ★★★);
for (int i = 0; i < count; i++) {

for (int j = 0; j < 1; j++) {
System.out.println(value[i][j]+ + notEqual);
System.out.println( + value[i][j+1]);
}
}
}
}

## 網羅テストパターン実行結果

★★★ 全一致項目パターン ★★★
顧客TBL.顧客ID =
画面入力.顧客ID
注文.注文ID =
注文明細TBL.注文明細ID
注文.論理削除フラグ =
TRUE

★★★ 部分一致項目パターン ★★★
顧客TBL.顧客ID ≠
画面入力.顧客ID
注文.注文ID =
注文明細TBL.注文明細ID
注文.論理削除フラグ =
TRUE

顧客TBL.顧客ID =
画面入力.顧客ID
注文.注文ID ≠
注文明細TBL.注文明細ID
注文.論理削除フラグ =
TRUE

顧客TBL.顧客ID =
画面入力.顧客ID
注文.注文ID =
注文明細TBL.注文明細ID
注文.論理削除フラグ ≠
TRUE

★★★ 全不一致項目パターン ★★★
顧客TBL.顧客ID ≠
画面入力.顧客ID
注文.注文ID ≠
注文明細TBL.注文明細ID
注文.論理削除フラグ ≠
TRUE

Javaプログラムの他にサクラエディタで使えるマクロも作りました。

エクセルで作った条件を元に サクラエディタに張り付けてマクロを実行すると 網羅情報配列が出来あがるマクロです。

適当なテキストに保存して.macに拡張子を変更して使用します。

キーボードマクロのファイル

S_ReplaceAll('t', ',', 28); //
S_ReDraw(0); // 再描画
S_Up(0); // カーソル上移動
S_BeginBoxSelect(0); // 矩形範囲選択開始
S_Up(0); // カーソル上移動
S_Up(0); // カーソル上移動
S_Up(0); // カーソル上移動
S_Char(123); // 文字入力
S_Char(34); // 文字入力
S_ReplaceAll('rn', '},rn', 28); //
S_ReDraw(0); // 再描画
S_DeleteBack(0); // カーソル前を削除
S_DeleteBack(0); // カーソル前を削除
S_Char(125); // 文字入力
S_WordLeft_Sel(0); // (選択)単語の左端に移動
S_WordLeft_Sel(0); // (選択)単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_GoFileTop(0); // ファイルの先頭に移動
S_Char(123); // 文字入力

キーボードマクロ実行結果

顧客TBL.顧客ID<タブ>画面入力.顧客ID
注文.注文ID<タブ>注文明細TBL.注文明細ID
注文.論理削除フラグ<タブ>TRUE

プログラミングをしていて単体テスト仕様書を作る時にAND条件の網羅テストをすることがあります。

そこで テスト仕様書を機械的に作成する為にJavaプログラムを作ってみました。

網羅情報の配列に条件文を設定してJavaを実行すると表示されます。

一度プログラムを実行してから=部分をLIKE・<・>などに変更すると色んなバリエーションが出来きます。

網羅テスト用プログラム

import java.io.*;

/**
* 網羅テスト用プログラム
*
* @author Hayato
* @since 2011/01/29
*/
class Moura
{
public static void main(String args[]) throws IOException
{
// 網羅情報の配列
String value[][] =
{{顧客TBL.顧客ID,画面入力.顧客ID},
{注文.注文ID,注文明細TBL.注文明細ID},
{注文.論理削除フラグ,TRUE}};

// 配列の数
int count = value.length;

int equalCheck = 0;

// 等価記号
String equal = =;

// 不等価記号
String notEqual = ≠;

// 記号
String sign = ;

// 全一致項目パターン
System.out.println(★★★ 全一致項目パターン ★★★);
for (int i = 0; i < count; i++) {

for (int j = 0; j < 1; j++) {
System.out.println(value[i][j]+ + equal);
System.out.println( + value[i][j+1]);
}
}

System.out.println();

// 部分一致項目パターン
System.out.println(★★★ 部分一致項目パターン ★★★);
for (int k = 0; k < count; k++) {

for (int i = 0; i < count; i++) {

if (i == equalCheck) {
sign = notEqual;
} else {
sign = equal;
}

for (int j = 0; j < 1; j++) {
System.out.println(value[i][j] + + sign);
System.out.println( + value[i][j+1]);
}
}
equalCheck++;
System.out.println();
}

// 全不一致項目パターン
System.out.println(★★★ 全不一致項目パターン ★★★);
for (int i = 0; i < count; i++) {

for (int j = 0; j < 1; j++) {
System.out.println(value[i][j]+ + notEqual);
System.out.println( + value[i][j+1]);
}
}
}
}

## 網羅テストパターン実行結果

★★★ 全一致項目パターン ★★★
顧客TBL.顧客ID =
画面入力.顧客ID
注文.注文ID =
注文明細TBL.注文明細ID
注文.論理削除フラグ =
TRUE

★★★ 部分一致項目パターン ★★★
顧客TBL.顧客ID ≠
画面入力.顧客ID
注文.注文ID =
注文明細TBL.注文明細ID
注文.論理削除フラグ =
TRUE

顧客TBL.顧客ID =
画面入力.顧客ID
注文.注文ID ≠
注文明細TBL.注文明細ID
注文.論理削除フラグ =
TRUE

顧客TBL.顧客ID =
画面入力.顧客ID
注文.注文ID =
注文明細TBL.注文明細ID
注文.論理削除フラグ ≠
TRUE

★★★ 全不一致項目パターン ★★★
顧客TBL.顧客ID ≠
画面入力.顧客ID
注文.注文ID ≠
注文明細TBL.注文明細ID
注文.論理削除フラグ ≠
TRUE

Javaプログラムの他にサクラエディタで使えるマクロも作りました。
エクセルで作った条件を元に サクラエディタに張り付けてマクロを実行すると 網羅情報配列が出来あがるマクロです。
適当なテキストに保存して.macに拡張子を変更して使用します。

キーボードマクロのファイル

S_ReplaceAll('t', ',', 28); //
S_ReDraw(0); // 再描画
S_Up(0); // カーソル上移動
S_BeginBoxSelect(0); // 矩形範囲選択開始
S_Up(0); // カーソル上移動
S_Up(0); // カーソル上移動
S_Up(0); // カーソル上移動
S_Char(123); // 文字入力
S_Char(34); // 文字入力
S_ReplaceAll('rn', '},rn', 28); //
S_ReDraw(0); // 再描画
S_DeleteBack(0); // カーソル前を削除
S_DeleteBack(0); // カーソル前を削除
S_Char(125); // 文字入力
S_WordLeft_Sel(0); // (選択)単語の左端に移動
S_WordLeft_Sel(0); // (選択)単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_WordLeft(0); // 単語の左端に移動
S_GoFileTop(0); // ファイルの先頭に移動
S_Char(123); // 文字入力

## キーボードマクロ実行結果

顧客TBL.顧客ID<タブ>画面入力.顧客ID
注文.注文ID<タブ>注文明細TBL.注文明細ID
注文.論理削除フラグ<タブ>TRUE

※ <タブ>は\tのタブとなります。

{{顧客TBL.顧客ID,画面入力.顧客ID},
{注文.注文ID,注文明細TBL.注文明細ID},
{注文.論理削除フラグ,TRUE}}

※ <タブ>は\tのタブとなります。

{{顧客TBL.顧客ID,画面入力.顧客ID},
{注文.注文ID,注文明細TBL.注文明細ID},
{注文.論理削除フラグ,TRUE}}
The following two tabs change content below.
渋谷でWebエンジニアをしているHayatoです。 趣味はプログラミング、海外旅行。 カフェでTitanium mobileを使ってスマホアプリを作ってます。 海外旅行は年1回で、に行きました。国内旅行は2〜3ヶ月に1回のペース。 直近は、3月にタイ(バンコク)・カンボジア(シェムリアップ)へ行きました。 旅の思い出アルバム、投資運用報告が中心のブログ構成です。

 - Java