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

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

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

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

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

網羅テスト用プログラム

[code lang=java]
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]);
}
}
}
}
[/code]

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

[code lang=java]
★★★ 全一致項目パターン ★★★
顧客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
[/code]

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

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

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

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

[code lang=css]
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); // 文字入力
[/code]

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

[code lang=css]
顧客TBL.顧客ID<タブ>画面入力.顧客ID
注文.注文ID<タブ>注文明細TBL.注文明細ID
注文.論理削除フラグ<タブ>TRUE
[/code]

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

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

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

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

網羅テスト用プログラム

[code lang=java]
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]);
}
}
}
}
[/code]

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

[code lang=java]
★★★ 全一致項目パターン ★★★
顧客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
[/code]

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

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

[code lang=css]
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); // 文字入力
[/code]

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

[code lang=css]
顧客TBL.顧客ID<タブ>画面入力.顧客ID
注文.注文ID<タブ>注文明細TBL.注文明細ID
注文.論理削除フラグ<タブ>TRUE
[/code]

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

[code lang=text]
{{顧客TBL.顧客ID,画面入力.顧客ID},
{注文.注文ID,注文明細TBL.注文明細ID},
{注文.論理削除フラグ,TRUE}}
[/code]

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

[code lang=text]
{{顧客TBL.顧客ID,画面入力.顧客ID},
{注文.注文ID,注文明細TBL.注文明細ID},
{注文.論理削除フラグ,TRUE}}
[/code]

The following two tabs change content below.
渋谷でWebエンジニアをしています。 株主優待目的で日本株からはじめ、投資信託・米国株の流れで投資しています。 最近は懸賞もハマってます(笑) 旅の思い出ログ、投資運用ログ、株主優待ログが中心のブログです。 どうぞ、よろしくお願いします!

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

About Us

Sed gravida lorem eget neque facilisis, sed fringilla nisl eleifend. Nunc finibus pellentesque nisi, at is ipsum ultricies et. Proin at est accumsan tellus.