Bagikan melalui


Pengujian berbasis data ringan

Kemungkinan ada skenario di mana pengujian berbasis data XML DataSource dan Table yang lengkap mungkin terlalu berat untuk kebutuhan skenario pengujian Anda. Pengujian berbasis data ringan memungkinkan cara cepat dan mudah untuk mendapatkan dukungan pengujian berbasis data ketika data untuk pengujian Anda sederhana dan dapat dengan mudah diekspresikan sebagai metadata. Mari kita gunakan contoh dan lihat caranya.

Data untuk pengujian berbasis data ringan dinyatakan sebagai sekumpulan metadata (pada tingkat pengujian, kelas, atau modul). Untuk setiap nilai dalam set ini, metode pengujian yang bersangkutan, bersama dengan pengaturan terkait dan metode teardown akan dijalankan untuk setiap nilai dalam set. Mari kita lihat cara menulis ini dalam kode asli:

1  #include "WexString.h"
2  #include "WexTestClass.h"
3
4  using namespace WEX::Common;
5  using namespace WEX::TestExecution;
6  using namespace WEX::Logging;

7  namespace WEX { namespace TestExecution { namespace Examples
8  {
9      class SimpleDataDrivenExample
10     {
11         TEST_CLASS(SimpleDataDrivenExample);
12         ...
13         BEGIN_TEST_METHOD(SetsOfDataTest)
14             TEST_METHOD_PROPERTY(L"Data:Color", L"{Purple, Maroon, Brown}")
15         END_TEST_METHOD()
16     };

Perhatikan nilai parameter untuk TEST_METHOD_PROPERTY di baris 14. Nilai metadata pengujian dimulai dengan "{" dan diakhapi dengan "}" yang menunjukkan bahwa daftar nilai yang dipisahkan koma atau titik koma telah ditentukan. TAEF akan menjalankan kembali metode pengujian yang bersangkutan, SetsOfDataTest() sekali untuk setiap nilai dalam set ini.

Perhatikan juga bahwa nama metadata dimulai dengan "Data:". Ini menyiratkan bahwa kumpulan metadata benar-benar menentukan variasi untuk parameter pengujian berbasis data dan akan tersedia untuk metode pengujian aktual seperti parameter data dari pengujian berbasis data berbasis Tabel seperti:

11     ...
12
13     void SimpleDataDrivenExample::SetsOfDataTest()
14     {
15         String color;
16         if (SUCCEEDED(TestData::TryGetValue(L"color", color)))
17         {
18             Log::Comment(L"Color retrieved was " + color);
19         }
20     }
21 } /* namespace Examples */ } /* namespace TestExecution */ } /* namespace WEX */

Saat bekerja dengan kode terkelola, spesifikasi dan pengambilan himpunan data sama seperti contoh aslinya. Perhatikan:

1  namespace WEX.Examples
2  {
3      using Microsoft.VisualStudio.TestTools.UnitTesting;
4      using System;
5      using System.Collections;
6      using System.Data;
7      using WEX.Logging.Interop;
8      using WEX.TestExecution;
9
10     [TestClass]
11     public class CSharpDataDrivenSimpleExample
12     {
13         ...
14         [TestMethod]
15         [TestProperty("Data:Color", "{Red, Green, Blue}")]
16         public void SetsOfMetadataTest()
17         {
18             Log.Comment("Color is " + m_testContext.DataRow["Color"]);
19         }
20
21         public TestContext TestContext
22         {
23             get { return m_testContext; }
24             set { m_testContext = value; }
25         }
26
27         private TestContext m_testContext;
28     }
29 }

Sama seperti dalam kasus pengujian berbasis data berbasis tabel, kumpulan data yang ditentukan sebagai metadata, akan memungkinkan pengambilan melalui TestContext.DataRow.Perhatikan bahwa untuk menjaga bobot ringan pengujian berbasis data, jenis parameter akan selalu WEX::Common::String (dalam kode asli) dan String(dalam kode terkelola)

Jika beberapa nilai data ditentukan, produk kartesius dari semua nilai yang mungkin akan diperoleh dan metode pengujian akan dipanggil untuk setiap kombinasi.

Dimungkinkan lebih lanjut untuk memiliki beberapa set metadata (seperti kumpulan metadata ThreadingModel) serta himpunan data yang ditentukan untuk metode pengujian yang sama. Dalam kasus seperti itu, perluasan gabungan dari semua set metadata dan himpunan data akan diproduksi oleh TAEF dan metode pengujian yang bersangkutan akan dipanggil dengan setiap kombinasi.

Kasus khusus - pengujian berbasis data dengan sekumpulan metadata atau data

Anda dapat memiliki metode pengujian yang bergantung pada pengujian berbasis tabel berbasis data serta menentukan sekumpulan data atau metadata untuknya. Misalnya, metode pengujian dapat memiliki parameter "ukuran" dan "warna" yang ditentukan dalam pengujian berbasis data berbasis tabel dan ingin semua baris dijalankan sekali dengan parameter "transparansi" diatur ke true lalu diatur ke false. Dalam kasus seperti itu, "transparansi" dapat ditentukan sebagai set "{true, false}" untuk pengujian berbasis data. Penting untuk dicatat bahwa dalam kasus konflik parameter dalam kumpulan metadata tabel ayat berbasis Baris berbasis data, jenis dan nilai parameter tingkat baris akan mengambil alih nilai kumpulan metadata.

Menjalankan pengujian dengan Sekumpulan data/metadata

Eksekusi pengujian yang berisi sekumpulan data cukup intuitif. Mari kita lihat output /listproperties untuk tes contoh kami:

1   te Examples\CPP.DataDriven.Example.dll /name:*SetsOfDataTest* /listproperties
2
3   Test Authoring and Execution Framework v2.9.3k for x64
4
5           f:\ Examples\CPP.SimpleDataDriven.Example.dll
6               WEX::TestExecution::Examples::SimpleDataDrivenExample<
7                   WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet0
8                           Property[Data:Color] = {Purple, Maroon, Brown}
9
10                          Data[Color] = Purple
11
12                  WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet1
13                          Property[Data:Color] = {Purple, Maroon, Brown}
14
15                          Data[Color] = Maroon
16
17                  WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet2
18                          Property[Data:Color] = {Purple, Maroon, Brown}
19
20                          Data[Color] = Brown

Perhatikan baris 7, 12, dan 17 dalam contoh di atas. Indeks set metadata ditambahkan ke setiap pemanggilan metode pengujian dengan nilai dalam himpunan data. Indeks ini adalah formulir:

<namespace qualified test method name>#metadataSet<metadataIndex>

Baris 8, 13, dan 18 menunjukkan kumpulan metadata yang telah ditentukan untuk dukungan pengujian berbasis data ringan ini. Dalam hal ini set terdiri dari warna-warna ungu, merah marun dan coklat. Baris 10, 15, dan 20 menunjukkan nilai aktual dari set ini yang aktif untuk pemanggilan pengujian saat ini. Dalam kasus SetsOfMetadataTest#metadataSet1, pemanggilan kedua metode ini, nilai parameter aktif dari set adalah "Maroon"

Anda dapat memilih nilai Data atau nama seperti yang Anda bisa dalam pengujian berbasis data berbasis Tabel. Misalnya Anda dapat memilih SetsOfDataTest#metadataSet1 dengan kueri pilihan seperti /select:@Data:Color='Maroon' or /name:*#metadataSet1

Untuk referensi cepat, output /listproperties dari contoh pengujian manged ditunjukkan di bawah ini:

te Examples\CSharp.DataDriven.Example.dll /name:*SetsOfMetadataTest* /listproperties

Test Authoring and Execution Framework v2.9.3k for x64

        f:\ Examples\CSharp.DataDrivenSimple.Example.dll
            WEX.Examples.CSharpDataDrivenSimpleExample
                WEX.Examples.CSharpDataDrivenSimpleExample.NonDataDrivenTest
                WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet0
                        Property[Data:Color] = {Red, Green, Blue}

                        Data[Color] = Red

                WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet1
                        Property[Data:Color] = {Red, Green, Blue}

                        Data[Color] = Green

                WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet2
                        Property[Data:Color] = {Red, Green, Blue}

                        Data[Color] = Blue