用語と記法について ======================= ------------ 用語 ------------ +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |用語 |説明 | +===================================+==========================================================================================================+ |単体テスト |機能単位について、入力と出力が正しいことを確認する。技法は多く存在する。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |結合テスト |機能単位の接続が正しいことを確認する。技法は多く存在する。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |TestSuite |XUnitにおいて、テスト対象に与えるパラメータのバリエーションを束ねた単位。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |TestCase |XUnitにおいて、TestSuiteを構成する子要素。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |コントロール |表示、入力、操作のための画面部品の総称。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |コントロール辞書 |コントロールの構造、特定するためのxpath、状態取得や操作法を記したExcelファイル。他にも、表題の指定、 | | |共通で使用するJavascript関数やマクロを記述する。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |項目ID |画面の中のコントロールを特定するための識別子。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |グループ |複合コントロールを構成するコントロールをまとめてグループと呼ぶ。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |アーキテクト |一般の開発者の技術指導を行い、プロジェクトにおいて共通部品の標準化を推進する。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |開発者 |アーキテクトが定めた標準規約に従いアプリケーションを開発する一般の開発者。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ ------------ 記法 ------------ 章題や項題において、対象とするスキルレベルを示す記法を示します。 +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |記法 |説明 | +===================================+==========================================================================================================+ |レベル1 |章題、項題の末尾に付与する。スキルレベル1(FT初心者)を対象とした内容であることを示す。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |レベル2 |スキルレベル1を対象にした内容を示す。jQueryを使用できるレベルの開発者が対象。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ |レベル3 |スキルレベル3を対象にした内容を示す。アーキテクトレベルでありFTの辞書を作成できる開発者が対象。 | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ 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で禁止している文字。例 <>& | +-----------------------------------+----------------------------------------------------------------------------------------------------------+ Javaアプリケーションテストの記法 --------------------------------- Javaアプリケーションテスト固有の記法を示します。 .. csv-table:: :header-rows: 1 :widths: 3, 7 記法,説明 $0,テスト対象のオブジェクトを意味する。(Javassistの記法) $n,n=1 2 ...は引数を意味する。(Javassistの記法) $_,返却値を意味する。(Javassistの記法) 予約キー(...),①引数の属性(もしくはその子孫)がオブジェクトであった場合、その生成ロジックをReservedDicシートのB列に記述(JsonもしくはJava)することができる。A列が、その展開するための予約キーとなる。予約キーはブックでユニークである。②実行後の検証時には、評価する文字列の短縮形として使用することもできる。 #関数名(...),設定値の文字列中に埋め込む。例えば、実行時の日付などを使用して評価するためである。評価時に、対応するJavaの処理を実行し、置換した文字列となる。関数名はプロジェクト内でユニークである必要がある。 TestSuiteの命名規約を決めておきましょう ======================================== TestSuiteの命名規約をあらかじめ検討しておくと、テスト実行のコマンドを作成する際に便利です。 実行時に、SQLのlike文のように「%」を付けることで、テスト実行する範囲にフィルターをかけることができます。 ------------------------------------- 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の頭に識別用の文字列を追加します。 * 業務フローの遷移ルートを辿るためのチェックポイントを設定します。 * この画面の操作と検証方法を設定します。 ------------------------------------- JavaアプリケーションテストのTestSuite ------------------------------------- TestSuiteの名前はシート名が割り当てられます。従って、プロジェクトでユニークな識別名となるように命名法を定める必要があります。また、シート名として使用できる文字であることが必要です。 テスト仕様書のレイアウトについて =================================== ------------------------------------- Webアプリケーションテストの場合 ------------------------------------- 表項目名は辞書に従って標準化されていることが前提です。 テスト仕様書の書式は、FTが生成する表のレイアウトを崩さない限り自由に記述できます。レイアウトを崩さない限り、その周囲の行や列を追加したり、セルに説明文などを書き込んだりすることができます。 また、設計書と同じ表項目名であれば、テスト仕様書作成にあたり、読み込むこともできます。 .. image:: ./img/s_layout.png :scale: 40% :align: center 上の画像はS型シートのレイアウトを示したものです。 * 画面名:画面の名前を記入します。人が画面の機能を理解しやすくするための名前です。テストの実行には使用しません。 * 画面ID:画面を識別するIDを記入します。シート名と連動しています。テストの実行のために必要です。 * モード:画面の構造が同じでも振る舞いが異なる場合があります。そのため同じ画面でも機能の際を識別するために使用します。シート名と連動しています。テストの実行のために必要です。 * パラメータ組:この画面の操作の流れを指定します。 テストの実行は、パラメータ組の列に対して上から順に行われます。  各列の操作は別のテストとして実行されます。各テストはブラウザをクリアにした状態で行われるので、互いの結果が影響を及ぼすことはありません。 入力操作については、セルに「〇」が指定されている場合に行います。 遷移操作については、遷移先が指定されている場合に行います。同じ列に対して、複数の行で遷移先が指定されている場合、各遷移先に対して同じ入力操作が行われ、別のテストとして実行します。 ※ パラメータの名前はシートのカラムでユニークに名付ける必要があります。 * 前提条件:この画面のテストを実行する前に行う処理を記述します。。 + 経路:この画面に至るまでの画面のルートを、通過する画面のIDをカンマつなぎで指定します。 + 外部設定:テスト実行前に、データベースを設定したり、外部プロセスを起動したりします。。 * 入力操作:この画面に表示されているコントロールに対して、選択項目をクリックしたり、テキストを入力したりする操作を指定します。 * 遷移操作:画面遷移を引き起こすコントロールへの操作と遷移先を指定します。 このレイアウトはテストのバリエーションを見やすくするためのものです。 ※ C型のレイアウトは、前提条件および遷移操作を除去したものになります。C型シートにおいては、入力操作の設定値に、評価式を記述することが可能です。 C型は単画面の機能の確認のためのものです。各画面に対して、ImplementDicシートにてURLを設定することが必要です。 ------------------------------------- Javaアプリケーションテストの場合 ------------------------------------- .. image:: ./img/layout_ObjectSheet.png :scale: 40% :align: center 上の画像はJavaのメソッドテスト仕様書のサンプルです。 以下で構成されます。 * クラスとメソッドを指定する欄。 * 実行前のデータベース、オブジェクト、引数オブジェクトを設定する欄 * 実行後のデータベース、オブジェクト、引数オブジェクトの状態を確認する欄