2. 用語と記法について

2.1. 用語

用語

説明

単体テスト

機能単位について、入力と出力が正しいことを確認する。技法は多く存在する。

結合テスト

機能単位の接続が正しいことを確認する。技法は多く存在する。

TestSuite

XUnitにおいて、テスト対象に与えるパラメータのバリエーションを束ねた単位。

TestCase

XUnitにおいて、TestSuiteを構成する子要素。

コントロール

表示、入力、操作のための画面部品の総称。

コントロール辞書

コントロールの構造、特定するためのxpath、状態取得や操作法を記したExcelファイル。他にも、表題の指定、 共通で使用するJavascript関数やマクロを記述する。

項目ID

画面の中のコントロールを特定するための識別子。

グループ

複合コントロールを構成するコントロールをまとめてグループと呼ぶ。

アーキテクト

一般の開発者の技術指導を行い、プロジェクトにおいて共通部品の標準化を推進する。

開発者

アーキテクトが定めた標準規約に従いアプリケーションを開発する一般の開発者。

2.2. 記法

章題や項題において、対象とするスキルレベルを示す記法を示します。

記法

説明

レベル1

章題、項題の末尾に付与する。スキルレベル1(FT初心者)を対象とした内容であることを示す。

レベル2

スキルレベル1を対象にした内容を示す。jQueryを使用できるレベルの開発者が対象。

レベル3

スキルレベル3を対象にした内容を示す。アーキテクトレベルでありFTの辞書を作成できる開発者が対象。

2.2.1. Webアプリケーションテストの記法

Webアプリケーションテスト固有の記法を示します。

記法

説明

画面ID#モード

画面を特定するための記法。画面IDとモードを#でつなぐ。モードが指定されていない場合には#以下は略。 実行時に、テスト対象のテストケースを検索する際に、like文で類似検索するので、画面IDの命名規約は、先頭から、 大分類・中分類・小分類の識別子が並んでいると、テスト実行の際に便利である。 禁止文字は次の9文字と空白。 -> :[]/*.()

$

文字列の先頭にある場合、単なる文字列ではなく、識別子やオブジェクトを表現する文字。

$項目ID(引数)

操作名(引数),同じシートにおいて「項目ID」で指定されたコントロールの操作に引数を渡して実行する。

$画面#モード.項目ID(パラメータ組)

「画面ID#モード」の画面遷移型シートに設定された操作パターンのうち、項目IDで指定された遷移型コントロールと 指定されたパラメータ組を実行するマクロである。

C型画面テスト

同じ画面の範囲で行うテスト。画面内の表示制御や入力値チェックなどの確認を行う。 このの操作を記述シートをC型シートと呼ぶ。

S型画面テスト

ある画面Aでの入力を元に別の画面Bに遷移した場合の遷移先やデータベースなどの状態を確認する。 画面Aの操作を記述シートをS型シート、遷移先画面Bの確認内容を記述するシートをV型シートと呼ぶ。

#関数名(...)

設定値の文字列中に埋め込む。実行時に、対応するJavaの処理を実行し、実行結果に置換した文字列となる。

関数名(...)

$や#から始まらない関数は、コントロールのメソッドもしくはコントロール辞書で定義されたJavascript関数である。

ID、属性値の禁止文字

htmlで禁止している文字。例 <>&

2.2.2. Javaアプリケーションテストの記法

Javaアプリケーションテスト固有の記法を示します。

記法

説明

$0

テスト対象のオブジェクトを意味する。(Javassistの記法)

$n

n=1 2 ...は引数を意味する。(Javassistの記法)

$_

返却値を意味する。(Javassistの記法)

予約キー(...)

①引数の属性(もしくはその子孫)がオブジェクトであった場合、その生成ロジックをReservedDicシートのB列に記述(JsonもしくはJava)することができる。A列が、その展開するための予約キーとなる。予約キーはブックでユニークである。②実行後の検証時には、評価する文字列の短縮形として使用することもできる。

#関数名(...)

設定値の文字列中に埋め込む。例えば、実行時の日付などを使用して評価するためである。評価時に、対応するJavaの処理を実行し、置換した文字列となる。関数名はプロジェクト内でユニークである必要がある。

3. TestSuiteの命名規約を決めておきましょう

TestSuiteの命名規約をあらかじめ検討しておくと、テスト実行のコマンドを作成する際に便利です。 実行時に、SQLのlike文のように「%」を付けることで、テスト実行する範囲にフィルターをかけることができます。

3.1. WebアプリケーションテストのTestSuite

  • C型画面テストにおけるTestSuite名

    • C.画面ID#モード

  • S型画面テストにおけるTestSuite名

    • S.画面ID#モード.遷移ボタンのID.2.遷移先画面ID#モード

同じ画面ID#モードのテスト項目を二つ以上のシートに分ける際には、モード欄に識別する文字列追加するとよいでしょう。

C型のテスト仕様を記述するシートを「C型シート」と呼びます。

S型においては、操作を記述するシートを「S型シート」、遷移後の画面の検証内容を記述するシートを「V型シート」と呼びます。

※ 結合テスト以降

結合テスト後に、業務フローに従ったテストを行うことが多いですが、その場合、S型のTestSuiteを再利用することができます。手順としては、

  • 業務フローの最終画面のS型シートを作成します。既存のS型シートをコピーするとよいでしょう。

  • シート名を既存のS型シートと競合しないように、画面IDの欄にある画面IDの頭に識別用の文字列を追加します。

  • 業務フローの遷移ルートを辿るためのチェックポイントを設定します。

  • この画面の操作と検証方法を設定します。

3.2. JavaアプリケーションテストのTestSuite

TestSuiteの名前はシート名が割り当てられます。従って、プロジェクトでユニークな識別名となるように命名法を定める必要があります。また、シート名として使用できる文字であることが必要です。

4. テスト仕様書のレイアウトについて

4.1. Webアプリケーションテストの場合

表項目名は辞書に従って標準化されていることが前提です。 テスト仕様書の書式は、FTが生成する表のレイアウトを崩さない限り自由に記述できます。レイアウトを崩さない限り、その周囲の行や列を追加したり、セルに説明文などを書き込んだりすることができます。

また、設計書と同じ表項目名であれば、テスト仕様書作成にあたり、読み込むこともできます。

../_images/s_layout.png

上の画像はS型シートのレイアウトを示したものです。

  • 画面名:画面の名前を記入します。人が画面の機能を理解しやすくするための名前です。テストの実行には使用しません。

  • 画面ID:画面を識別するIDを記入します。シート名と連動しています。テストの実行のために必要です。

  • モード:画面の構造が同じでも振る舞いが異なる場合があります。そのため同じ画面でも機能の際を識別するために使用します。シート名と連動しています。テストの実行のために必要です。

  • パラメータ組:この画面の操作の流れを指定します。

    テストの実行は、パラメータ組の列に対して上から順に行われます。

 各列の操作は別のテストとして実行されます。各テストはブラウザをクリアにした状態で行われるので、互いの結果が影響を及ぼすことはありません。

入力操作については、セルに「〇」が指定されている場合に行います。 遷移操作については、遷移先が指定されている場合に行います。同じ列に対して、複数の行で遷移先が指定されている場合、各遷移先に対して同じ入力操作が行われ、別のテストとして実行します。

※ パラメータの名前はシートのカラムでユニークに名付ける必要があります。

  • 前提条件:この画面のテストを実行する前に行う処理を記述します。。

    • 経路:この画面に至るまでの画面のルートを、通過する画面のIDをカンマつなぎで指定します。

    • 外部設定:テスト実行前に、データベースを設定したり、外部プロセスを起動したりします。。

  • 入力操作:この画面に表示されているコントロールに対して、選択項目をクリックしたり、テキストを入力したりする操作を指定します。

  • 遷移操作:画面遷移を引き起こすコントロールへの操作と遷移先を指定します。

このレイアウトはテストのバリエーションを見やすくするためのものです。

※ C型のレイアウトは、前提条件および遷移操作を除去したものになります。C型シートにおいては、入力操作の設定値に、評価式を記述することが可能です。

C型は単画面の機能の確認のためのものです。各画面に対して、ImplementDicシートにてURLを設定することが必要です。

4.2. Javaアプリケーションテストの場合

../_images/layout_ObjectSheet.png

上の画像はJavaのメソッドテスト仕様書のサンプルです。

以下で構成されます。

  • クラスとメソッドを指定する欄。

  • 実行前のデータベース、オブジェクト、引数オブジェクトを設定する欄

  • 実行後のデータベース、オブジェクト、引数オブジェクトの状態を確認する欄