次の方法で共有


スクリプト言語でのデータ ドリブン テスト

このセクションを理解するには、スクリプト言語でテストを作成する方法を理解している必要があります。 このセクションでは、さまざまな TAEF データドリブン テストアプローチの詳細については説明しません。 簡単な概要については、さまざまな TAEF データドリブン テストコンストラクトを確認してください。

上記のいずれかの 1 つ以上のデータ ソースを使用して、データ ソースの組み合わせを選択することもできます。 詳細については、複数のデータソースの指定を参照してください。

スクリプト言語でのデータ ソースの指定

TAEF のデータ ドリブン テストでは、クラスまたはテスト レベルで DataSource を指定できます。 データ ドリブン クラスでは、クラスおよびテスト メソッドのセットアップ、クリーンアップ、およびクラス内のすべてのテスト メソッドでデータを使用できます。 DataSource パラメーターは、データの取得元を示す情報です。 テーブル ベースのデータ ドリブン テストの場合、この値には XML ファイルへの相対パスと、データが配置されている XML ファイル内の TableId が含まれます。 詳細については、上記のリンクを参照してください。

次の例は、DataSource プロパティを指定する方法を示しています。

1   <?xml version="1.0" ?>
2   <?component error="true" debug="true"?>
3   <package>
4       <component id="VBSampleTests">
5           <object id="Log" progid="WEX.Logger.Log" />
6           <object id="TestData" progid="Te.Common.TestData" />
7
8           <public>
9               <method name="TestOne">
10                  <TestMethodProperty name="DataSource" value="WMI:SELECT Label, Caption FROM Win32_Volume"/>
11              </method>
12
13              <method name="TestTwo">
14                  <TestMethodProperty name="DataSource" value="Table:ScriptExampleTable.xml#MyTable;WMI:SELECT Label, Caption FROM Win32_Volume"/>
15              </method>
16          </public>
17
18          <script language="VBScript">
19              <![CDATA[
20                  Function TestOne()
21                      dim caption
22                      caption = "NoCaption"
23                      Log.Comment("Caption is " + caption)
24
25                      If TestData.Contains("Caption") Then
26                      caption = TestData.GetValue("Caption")
27                      End If
28                      Log.Comment("Caption is " + caption)
29                  End Function
30
31                  Function TestTwo()
32                      Log.Comment("Calling TestTwo")
33                      dim caption
34                      caption = "NoCaption"
35                      Log.Comment("Caption is " + caption)
36
37                      If TestData.Contains("Caption") Then
38                      caption = TestData.GetValue("Caption")
39                      End If
40                      Log.Comment("Caption is " + caption)
41
42                      dim size
43                      If TestData.Contains("Size") Then
44                      size = TestData.GetValue("Size")
45                      End If
46                      Log.Comment("Size is " + CStr(size))
47
48                      dim transparency
49                      If TestData.Contains("Transparency") Then
50                      transparency = TestData.GetValue("Transparency")
51                      End If
52                      Log.Comment("Transparency is " + CStr(transparency))
53                  End Function
54              ]] >
55          </script>
56      </component>
57
58      <component id="JScriptSampleTests">
59          <object id="Log" progid="WEX.Logger.Log" />
60          <object id="TestData" progid="Te.Common.TestData" />
61
62          <TestClassProperty name="DataSource" value="Table:ScriptExampleTable.xml#MyTable"/>
63
64          <public>
65              <method name="ClassSetup" type="TestClassSetup"/>
66              <method name="ClassCleanup" type="TestClassCleanup"/>
67              <method name="MethodSetup"  type="TestMethodSetup"/>
68              <method name="MethodCleanup" type="TestMethodCleanup"/>
69
70              <method name="TestOne"/>
71              <method name="TestTwo">
72                  <TestMethodProperty name="DataSource" value="WMI:SELECT Label, Caption FROM Win32_Volume"/>
73              </method>
74          </public>
75
76          <script language="JScript">
77              <![CDATA[
78                  function ClassSetup()
79                  {
80                      Log.Comment("Calling class setup");
81                      var size;
82                      if(TestData.Contains("Size"))
83                      {
84                          size = TestData.GetValue("Size");
85                      }
86                      Log.Comment("Size is " + size);
87  
88                      var transparency;
89                      if(TestData.Contains("Transparency"))
90                      {
91                          transparency = TestData.GetValue("Transparency");
92                      }
93                      Log.Comment("Transparency is " + transparency);
94                  }
95
96                  function ClassCleanup()
97                  {
98                      Log.Comment("Calling class cleanup");
99                      return true;
100                 }
101
102                 function MethodSetup()
103                 {
104                     Log.Comment("Calling method setup");
105                     var size;
106                     if(TestData.Contains("Size"))
107                     {
108                         size = TestData.GetValue("Size");
109                     }
110                     Log.Comment("Size is " + size);
111
112                     var transparency;
113                     if(TestData.Contains("Transparency"))
114                     {
115                         transparency = TestData.GetValue("Transparency");
116                     }
117                     Log.Comment("Transparency is " + transparency);
118                     return true;
119                 }
120
121                 function MethodCleanup()
122                 {
123                     Log.Comment("Calling method cleanup");
124                     return true;
125                 }
126
127                 function TestOne()
128                 {
129                     Log.Comment("Calling TestOne");
130                     var size;
131                     if(TestData.Contains("Size"))
132                     {
133                         size = TestData.GetValue("Size");
134                     }
135                     Log.Comment("Size is " + size);
136
137                     var transparency;
138                     if(TestData.Contains("Transparency"))
139                     {
140                         transparency = TestData.GetValue("Transparency");
141                     }
142                     Log.Comment("Transparency is " + transparency);
143                 }
144
145                 function TestTwo()
146                 {
147                     Log.Comment("Calling TestTwo");
148                     var caption = "NoCaption";
149                     Log.Comment("Initial caption: " + caption);
150
151                     if(TestData.Contains("Caption"))
152                     {
153                         caption = TestData.GetValue("Caption");
154                     }
155                     Log.Comment("Caption is " + caption);
156
157                     var size;
158                     if(TestData.Contains("Size"))
159                     {
160                         size = TestData.GetValue("Size");
161                     }
162                     Log.Comment("Size is " + size);
163
164                     var transparency;
165                     if(TestData.Contains("Transparency"))
166                     {
167                         transparency = TestData.GetValue("Transparency");
168                     }
169                     Log.Comment("Transparency is " + transparency);
170                 }
171             ]] >
172         </script>
173     </component>
174 </package>

上の例では、6 行目と 60 行目では、データ ドリブン テストのデータへのアクセスを許可する TestData オブジェクトを宣言してインスタンス化します。

<TestMethodProperty> タグと <TestClassProperty> タグは、テストまたはクラスの DataSource を定義する行です。 VBSampleTests では、TestOne には DataSource として WMI クエリがあります。 パラメーター ラベルキャプションは、TestOne のセットアップ、クリーンアップ、およびテスト メソッドで使用できます。 同じクラスで、TestTwo には複数のデータソースが定義されています。 1 つ目はテーブル ベースの DataSource で、2 つ目は TestOne と同じ WMI ベースの DataSource です。

TAEF は、各 DataSource プロパティのパラメーター セットの組み合わせ拡張を生成します。 テスト メソッドの呼び出しごとに 1 つのパラメーター セットを使用できます。 WMI クエリが 4 セットの結果 (Win32_Volume) を返し、テーブル ベース の DataSource に 3 つの行がある場合、 TestOne は 4 回 (WMI クエリが返す各Win32_Volumeで 1 回) 実行されます。 一方、TestTwo は、テーブルが指定する Win32_Volume データと行の組み合わせごとに 12 (4 X 3) 回実行します。 データは、関連するセットアップおよびクリーンアップメソッドでも使用できます。

JScriptSampleTests では、データ ドリブン クラスの例を確認できます。 この例では、クラス レベルで DataSource を指定しているため、すべてのテスト メソッド、およびテスト およびクラス レベルのセットアップとクリーンアップメソッドでデータを使用できます。 TestTwo はデータ ドリブン クラス内のデータ ドリブン テストであるため、クラス レベルおよびテスト レベルの DataSource からのデータが TestTwo で使用できます。

スクリプト テストで使用できるデータ型

スクリプト言語では、次のパラメーター型を使用できます。 テーブル ベースのデータ ドリブン テストで指定できる型は次のとおりです。 既定のパラメーター型は String または BSTR (VT_BSTRを表します) です。

テーブル ベースの DataSource の 「パラメーター型」セクションでは、スクリプト言語でテストを作成するときに、使用可能なパラメーター型 (ネイティブ コードとマネージド コード) を表示する方法を示します。

データ ドリブン スクリプトの実行

/listproperties オプションは、メタデータだけでなく、テストの呼び出しごとに使用できるデータも一覧表示します。 (dll 全体での /listproperties オプションの実行は、閲覧者の演習として残します)。次の例では、選択クエリ言語を使用して VBSampleTests から TestOne の呼び出しを選択します。

f:\spartadev.binaries.x86chk\WexTest\CuE\TestExecution>te Examples\DataDrivenTest.wsc /listproperties /name:VBSampleTests::TestOne*

Test Authoring and Execution Framework v.R10 Build 6.1.6939.0 For x86

        f:\spartadev.binaries.x86chk\WexTest\CuE\TestExecution\Examples\DataDrivenTest.wsc
            VBSampleTests
                VBSampleTests::TestOne#0
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = C:\
                        Data[Label] =

                VBSampleTests::TestOne#1
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = D:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#2
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = F:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#3
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = E:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#4
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = G:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#5
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = H:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#6
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = K:\
                        Data[Label] =

/listproperties オプションは、TAEF がテスト メソッド VBSampleTests::TestOne を 7 回 (Win32_Volumeごとに 1 回) 呼び出したことを示します。 TAEF は、呼び出しごとに暗黙的な インデックス をテスト メソッドに追加して、各呼び出しを区別します。 また、テスト メソッドの呼び出しごとに使用できるデータとメタデータを確認することもできます。

/listproperties オプションの情報を使用して、データ値またはインデックス値に基づく選択クエリを適用して、実行するテスト呼び出しをより細かく制御できます。 次の例は、キャプションが E:\である呼び出しのみを実行する方法を示しています。

te Examples\DataDrivenTest.wsc /select:"@Name='VBSampleTests::TestOne*' and @Data:Caption='E:\'"

次のコマンドでは、インデックスを使用して同じテストを選択します。

te Examples\DataDrivenTest.wsc /select:"@Name='VBSampleTests::TestOne*' and @Data:Index=3"

スクリプト テストでの PICT ベースおよび軽量のデータドリブン テストの使用は、閲覧者の演習として残します。