Bagikan melalui


Pengujian berbasis data dalam Bahasa Skrip

Untuk memahami bagian ini, Anda harus terbiasa dengan cara menulis pengujian dalam bahasa pembuatan skrip. Bagian ini tidak akan membahas detail berbagai pendekatan pengujian berbasis data TAEF. Untuk gambaran umum singkat, tinjau berbagai konstruksi pengujian berbasis data TAEF:

Anda bahkan dapat memilih untuk memiliki kombinasi sumber data dengan memiliki satu atau beberapa sumber data dari salah satu hal di atas. Lihat Menentukan Beberapa Sumber Data untuk detailnya.

Menentukan sumber data dalam bahasa skrip

Pengujian berbasis data di TAEF memungkinkan Anda menentukan DataSource di tingkat kelas atau pengujian. Dalam kelas berbasis data, data tersedia untuk pengaturan metode kelas dan pengujian, pembersihan, dan semua metode pengujian di kelas . Parameter DataSource adalah informasi yang memberi tahu dari mana data akan diambil. Dalam kasus pengujian berbasis data berbasis tabel, nilai ini menyertakan jalur relatif ke file XML dan TableId dalam file XML tempat data berada. Lihat tautan yang tercantum di atas untuk detail selengkapnya.

Contoh berikut menunjukkan cara menentukan properti 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>

Dalam contoh di atas, baris 6 dan 60 mendeklarasikan dan membuat instans objek TestData yang memungkinkan akses ke data untuk pengujian berbasis data.

Tag <TestMethodProperty> dan <TestClassProperty> adalah baris yang menentukan DataSource untuk pengujian atau kelas. Dalam VBSampleTests, TestOne memiliki kueri WMI sebagai DataSource-nya. Label parameter dan caption tersedia untuk metode penyiapan, pembersihan, dan pengujian TestOne. Di kelas yang sama, TestTwo memiliki Beberapa DataSources yang ditentukan. Yang pertama adalah DataSource berbasis Tabel, dan yang kedua adalah DataSource berbasis WMI yang sama dengan TestOne.

TAEF menghasilkan perluasan gabungan dari set parameter untuk setiap properti DataSource . Satu set parameter tersedia untuk setiap pemanggilan metode pengujian. Jika kueri WMI mengembalikan empat set hasil (Win32_Volume) dan ada tiga baris dalam DataSource berbasis tabel, TestOne akan dijalankan empat kali - sekali dengan setiap Win32_Volume yang dikembalikan kueri WMI. Di sisi lain, TestTwo mengeksekusi 12 (4 X 3) kali untuk setiap kombinasi data Win32_Volume dan Baris yang ditentukan tabel. Data juga tersedia untuk metode penyiapan dan pembersihan terkait.

Di JScriptSampleTests, Anda dapat melihat contoh kelas berbasis data. Karena contoh menentukan DataSource di tingkat kelas, data tersedia untuk semua metode pengujian - serta metode penyiapan dan pembersihan tingkat pengujian dan kelas. Karena TestTwo adalah pengujian berbasis data dalam kelas berbasis data, data dari DataSource di tingkat kelas serta dari tingkat pengujian tersedia untuk TestTwo.

Jenis data yang tersedia untuk pengujian skrip

Jenis parameter berikut tersedia untuk bahasa skrip. Ini adalah jenis yang dapat Anda tentukan dalam pengujian berbasis data berbasis tabel. Jenis parameter default adalah String atau BSTR (mewakili VT_BSTR).

Bagian Jenis Parameter di DataSource berbasis Tabel memperlihatkan cara melihat jenis parameter yang tersedia (dalam Kode asli dan terkelola) saat menulis pengujian dalam bahasa skrip.

Menjalankan skrip berbasis data

Opsi /listproperties tidak hanya mencantumkan metadata tetapi juga data yang tersedia untuk setiap pemanggilan pengujian. (Menjalankan opsi /listproperties di seluruh dll dibiarkan sebagai latihan kepada pembaca.) Contoh berikut memilih pemanggilan TestOne dari VBSampleTests menggunakan bahasa kueri pemilihan :

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] =

Opsi /listproperties menunjukkan bahwa TAEF memanggil metode pengujian VBSampleTests::TestOne 7 kali - sekali untuk setiap Win32_Volume. Untuk setiap pemanggilan, TAEF menambahkan indeks implisit ke metode pengujian untuk membedakan setiap pemanggilan. Anda juga dapat melihat data dan metadata yang tersedia untuk setiap pemanggilan metode pengujian.

Dengan menggunakan informasi dari opsi /listproperties , Anda dapat menerapkan kueri pilihan yang didasarkan pada nilai data atau nilai indeks untuk mendapatkan kontrol yang lebih baik dari pemanggilan pengujian mana yang akan dijalankan. Contoh berikut menunjukkan cara menjalankan hanya pemanggilan di mana caption adalah E:\:

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

Perintah berikut menggunakan indeks untuk memilih pengujian yang sama:

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

Menggunakan pengujian berbasis PICT dan ringan berbasis data dalam pengujian skrip dibiarkan sebagai latihan kepada pembaca.