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]


コメントを残す

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

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

About Us

こんにちは!Webエンジニアとして働く傍ら、これまでに国内外を旅してきた経験を活かしてブログを運営しています。
このブログでは、【移動手段・宿選び・旅のコツ】など、実体験に基づいた信頼性の高い情報を発信しています。
特に「初めて行く場所で迷いたくない」「現地のリアルな事情を知りたい」という方に向けた記事が中心です。