スクリプト言語でのデータ ドリブン テスト
このセクションを理解するには、スクリプト言語でテストを作成する方法を理解している必要があります。 このセクションでは、さまざまな 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 ベースおよび軽量のデータドリブン テストの使用は、閲覧者の演習として残します。