自動テスト・フレームワーク

Autotest FrameworkはGuiコントロールのテストを自動化するフレームワークです。以下のような特徴があります。

・シンプルなスクリプトを書くだけで、単一のコントロール、あるいはその他のGraphicのテストができます。
・一つのテストアプレットで複数のテストを実行でき、実行したテストとその結果を表示します。
・イベントを発生させることができ、その結果が期待通りかどうかチェックできます。

このAPIの使用およびサンプルの起動はCDEまたはIDEのインストールが
必要になります。以下よりダウンロードしてください。
http://curlap.com/download/ide/index.html

サンプル

autotestframework.jpg


http://developers.curlap.com/curl/curl-ext/hp2/checkbuttontests.curl

このサンプルはチェックボックスの動作をテストします。
背景色がテストのステータスを表します。未実行のテストはグレー、成功したテストは緑、失敗したテストはピンクになります。

テスト1

  • チェックボックスコントロールの、左から0mm,上から2mmの点をマウスで左クリックして、以下の項目を確認する。
    1.ValueChangedEvent,ValueFinishedEventが発生する。
    2.値が”CB1″となる。
  • この状態から、左から2mm,上から0mmの点をマウスで左クリックして、以下の項目を確認する。
    1.ValueChangedEvent,ValueFinishedEventが発生する。
    2.値がnullとなる。

テスト2

  • チェックボックスコントロールにフォーカスがあり、valueプロパティがfalseの状態でキーボードからAlt+Tを押下して、以下の項目を確認する。
    1.valueプロパティがtrueとなる。
  • この状態でキーボードからスペースキーを押下する。
    1.valueプロパティがtrueとなる。

使い方

テストを定義して、GuiTest.setupを呼びます。
テストはGuiTestクラスのオブジェクトで表現します。これは 1.ターゲットとなるオブジェクト、2.テストの簡単な説明、3.テストステップの三つの部分から成ります。テストのステップはUIクラスのインスタンスで表現します。ここでは以下のようなものが使用されています。

|| valueプロパティの値がfalseであることを確認する。
{UI.check-property “value”, false}   
|| マウスで、コントロールの左から1cm,上から0mmのポイントを左クリックする。
{UI.click 1cm, 0mm}                     
|| キーボードで、altキーとtキーを同時にタイプする。
{UI.type alt? = true, “t”}

UIクラスはユーザインタフェースの操作をシミュレーションするために、列挙型UiGestureの値を使用します。以下の物があります。

{define-enum public UiGesture
  || マウスジェスチャー
  press,
  release,
  move,
  click,
  right-click,
  double-click,

  || キーボードジェスチャー
  focus,
  type,
  press-key,

  || ターゲットオブジェクトのチェック
  check-selection,
  check-value,
  check-events,
  check-property,
  check,

  || その他のアクション
  clear-selection,
  do,
  scroll,
  set-value,
  set-view,
  wait
}

各ジェスチャーごとにコンストラクタがあります。たとえば、サンプルでも使用されていますが、pressジェスチャーについては以下のようになっています。

{press
  || ターゲットオブジェクト内のx座標です。
  x:any,
  || ターゲットオブジェクト内のy座標です。
  y:any,
  || クリックするボタンです。
  button:int = left-button,
  ||GuiInputEventのフィールドに渡される値です。
  shift?:bool = false,
  ||GuiInputEventのフィールドに渡される値です。
  ctrl?:bool = false,
  ||GuiInputEventのフィールドに渡される値です。
  alt?:bool = false,
  ||GuiInputEventのフィールドに渡される値です。
  menu?:bool = false,
  ||GuiInputEventのフィールドに渡される値です。
  command?:bool = false,
  ||プラットフォームを指定できます(win32, linux, macなど)
  platform:String = “”,
  ||ターゲットとなるオブジェクトです。
  target:#Graphic = null,
  ||操作後、次のステップへ移る前の待機時間です。
  delay:Time = 50ms
}

ターゲットオブジェクトがTextControlだった場合、x,yを指定する際に単位を省略すると文字数を表します。