Test basati sui dati in linguaggi di scripting
Per comprendere questa sezione, è consigliabile acquisire familiarità con come creare test nei linguaggi di scripting. Questa sezione non illustra i dettagli dei vari approcci di test basati sui dati TAEF. Per una rapida panoramica, vedere i diversi costrutti di test basati sui dati TAEF:
- Test basati sui dati basati su tabelle
- Test basati su dati basati su WMI
- Test basati sui dati basati su PICT
- Test basati sui dati di peso leggero
È anche possibile scegliere di avere una combinazione di origini dati con una o più origini dati di una delle origini dati precedenti. Per informazioni dettagliate, vedere Specifica di più origini dati .
Specifica dell'origine dati nel linguaggio di scripting
I test basati sui dati in TAEF consentono di specificare DataSource a livello di classe o test. In una classe basata sui dati, i dati sono disponibili per la configurazione, la pulizia e tutti i metodi di test nella classe. Il parametro DataSource è le informazioni che indicano da dove verranno recuperati i dati. Nel caso dei test basati su tabelle, questo valore include il percorso relativo del file XML e tableId nel file XML in cui si trovano i dati. Per altre informazioni, vedere i collegamenti elencati sopra.
Nell'esempio seguente viene illustrato come specificare la proprietà 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>
Nell'esempio precedente, le righe 6 e 60 dichiarano e creano un'istanza di un oggetto TestData che consente l'accesso ai dati per i test basati sui dati.
I< tag TestMethodProperty e TestClassProperty>>sono righe che definiscono DataSource per il test o la< classe. In VBSampleTests TestOne ha una query WMI come dataSource. Le etichette dei parametri e le didascalia sono disponibili per i metodi di installazione, pulizia e test di TestOne. Nella stessa classe TestTwo è definito più origini dati . Il primo è datasource basato su tabella e il secondo è lo stesso datasource basato su WMI di TestOne.
TAEF genera un'espansione combinatoria dei set di parametri per ognuna delle proprietà DataSource . Un set di parametri è disponibile per ogni chiamata al metodo di test. Se la query WMI restituisce quattro set di risultati (Win32_Volume) e sono presenti tre righe nella tabella basata su DataSource, TestOne verrà eseguito quattro volte, una volta con ogni Win32_Volume restituita dalla query WMI. Invece, TestTwo esegue 12 (4 X 3) volte per ogni combinazione di dati Win32_Volume e Riga specificata dalla tabella. I dati sono disponibili anche per i metodi di installazione e pulizia associati.
In JScriptSampleTests è possibile visualizzare un esempio di classe basata sui dati. Poiché l'esempio specifica DataSource a livello di classe, i dati sono disponibili per tutti i metodi di test, nonché i metodi di configurazione e pulizia a livello di test e classe. Poiché TestTwo è un test basato sui dati all'interno di una classe basata su dati, i dati provenienti da DataSource a livello di classe e che dal livello di test sono disponibili per TestTwo.
Tipi di dati disponibili per i test di script
I tipi di parametri seguenti sono disponibili per i linguaggi di scripting. Questi sono i tipi che è possibile specificare nei test basati sui dati basati su tabella. Il tipo di parametro predefinito è String o BSTR (che rappresenta VT_BSTR).
Nella sezione Tipi di parametri in DataSource basato su tabella viene illustrato come visualizzare i tipi di parametri disponibili (in Codice nativo e gestito) durante la creazione di test in un linguaggio di scripting.
Esecuzione di script basati sui dati
L'opzione /listproperties elenca non solo i metadati, ma anche i dati disponibili per ogni chiamata del test. L'esecuzione dell'opzione /listproperties nell'intera dll viene lasciata come esercizio per il lettore. Nell'esempio seguente viene selezionata la chiamata di TestOne da VBSampleTests usando il linguaggio di query di selezione :
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] =
L'opzione /listproperties mostra che TAEF ha richiamato il metodo di test VBSampleTests::TestOne 7 volte - una volta per ogni Win32_Volume. Per ogni chiamata, TAEF aggiunge un indice implicito al metodo di test per distinguere ogni chiamata. È anche possibile visualizzare i dati e i metadati disponibili per ogni chiamata del metodo di test.
Usando le informazioni dell'opzione /listproperties , è possibile applicare una query di selezione basata sul valore dei dati o sul valore dell'indice per ottenere un controllo più corretto delle chiamate di test da eseguire. Nell'esempio seguente viene illustrato come eseguire solo la chiamata in cui la didascalia è E:\:
te Examples\DataDrivenTest.wsc /select:"@Name='VBSampleTests::TestOne*' and @Data:Caption='E:\'"
Il comando seguente usa l'indice per selezionare lo stesso test:
te Examples\DataDrivenTest.wsc /select:"@Name='VBSampleTests::TestOne*' and @Data:Index=3"
L'uso di test basati su PICT e di peso leggero in un test di script viene lasciato come esercizio per il lettore.