Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Birden çok DataSource, bir veya daha fazla DataSource'un (Tablo tabanlı DataSource, PICT tabanlı DataSource veya WMI tabanlı DataSource) birleştirici genişlemesini aradığınızda kullanışlıdır.
Bu özelliği verimli bir şekilde kullanmak için test tasarımınızı oluşturmak çok önemlidir. Bunun neden böyle olduğunu bir örnekle görelim. Birden çok DataSource'un parçası olarak, biri WMI tabanlı DataSource ve biri PICT Tabanlı Veri Kaynağı olmak üzere iki Tablo tabanlı DataSource belirtmek istediğinizi varsayalım. Bağımsız değişken açısından, ilk tablonun 4 satırı, ikincisinde 5 satırı olduğunu, WMI sorgusunun 2 sonuç döndürdüğünü ve PICT DataSource'un 6 çift tabanlı birleşim oluşturduğunu varsayalım. TAEF, bu parametre kümelerinin birleştirici bir genişlemesini ortaya çıkaracaktır. Bu, söz konusu test yönteminin (4 X 5 X 2 X 6 =) 240 kez çağrılacağı anlamına gelir! Test yönteminin çağrı sayısının değişken parametre bileşimleriyle artırılması, test kapsamına göre daha az sonuç verebilir. Bu durum, testin dikkatli bir şekilde ve diğer alternatifleri değerlendirerek birden fazla veri kaynağı kullanılarak tasarlanmasının önemli hale gelmesini sağlar. Dikkate almak isteyebileceğiniz bazı noktalar şunlardır:
- Birden fazla tabloyu kullanmanın değer kattığından emin olun. Ayrı olması gerekmiyorsa, parametrelerin verimli bir bileşimini kendiniz ortaya çıkarabilirsiniz.
- Birden çok tablo yerine kısıtlamaları olan bir PICT model dosyası kullanıp kullanamadığını denetleyin.
- Test örneğinizi birden çok teste yeniden düzenlemenin ve yeni oluşturulan her alt testle birden çok DataSource'taki alt kümeleri ilişkilendirmenin bir değeri olup olmadığını denetleyin.
Birden çok DataSource belirtme
Burada önemli olan, DataSource'un nasıl belirtilmesidir. Şimdi yerel ve yönetilen örneklerimizden kod parçacığına göz atalım.
Yerli
1 namespace WEX { namespace TestExecution { namespace Examples
2 {
3 class AdvancedDataDrivenTests
4 {
5 TEST_METHOD_SETUP(DataDrivenSetup);
6 TEST_METHOD_CLEANUP(DataDrivenCleanup);
7
8 TEST_CLASS(AdvancedDataDrivenTests)
9
10 BEGIN_TEST_METHOD(SecondTable)
11 TEST_METHOD_PROPERTY(L"DataSource", L"Table:AdvancedDataDrivenTests.xml#Table2;Table:CppTestLevelDataSource.xml#NestedTable")
12 END_TEST_METHOD()
13
14 BEGIN_TEST_METHOD(FirstTable)
15 TEST_METHOD_PROPERTY(L"DataSource", L"Table:AdvancedDataDrivenTests.xml#Table1;"
16 L"PICT:PictDataSource.txt;" L"WMI:SELECT Location FROM Win32_StartupCommand")
17 END_TEST_METHOD()
18 };
19 } /* namespace Examples */ } /* namespace TestExecution */ } /* namespace WEX */
Yukarıdaki örnekte 11, 15 ve 16. satırlara bakın. Genel olarak, DataSource'u belirtmek için izleyebileceğiniz desen, her DataSource belirtiminin noktalı virgülle ayrılmış listesidir. Belirtim, yönetilen kodda da çok benzer görünür.
Yönetilen
[TestMethod]
[DataSource(@"Table:CSharpAdvancedDataDrivenTests.xml#FirstTable;
WMI:SELECT ProcessId FROM Win32_Service WHERE Name='Themes'")]
public void First()
{
Log.Comment("In CSharpAdvancedDataDrivenTests.First");
String[] shapes = m_testContext.DataRow["Shape"] as String[];
foreach (String shape in shapes)
{
Console.WriteLine("The shape is " + shape);
}
Int32[] lengths = m_testContext.DataRow["Length"] as Int32[];
foreach (int length in lengths)
{
Console.WriteLine("The length is " + length.ToString());
}
String description = (String)m_testContext.DataRow["Description"];
Boolean desktopInteract = (Boolean)m_testContext.DataRow["DesktopInteract"];
UInt32 processId = (UInt32)m_testContext.DataRow["ProcessId"];
Log.Comment("Themes service is running on process " + processId.ToString());
Log.Comment("Themes service description: " + description);
}
Örneklerde, birden çok satırda birden çok DataSource belirtme yolları da gösterilmektedir. Tabii ki, DataSource'ı tek bir satırda (aşağıda gösterildiği gibi) belirtebilirdiniz, ancak yukarıdaki yapıları kullanarak okunabilirliği önemli ölçüde geliştirebilirsiniz.
Tek bir satırda DataSource belirtme
[DataSource("Table:CSharpAdvancedDataDrivenTests.xml#FirstTable;WMI:SELECT ProcessId FROM Win32_Service WHERE Name='Themes'")]
Tekrar belirtmek gerekirse, test yöntemi, her bir DataSource tarafından oluşturulan her n-yönlü kombinatoryal veri kümesi genişlemesi için tek sefer çalıştırılacaktır. Örneğin, yukarıdaki yönetilen örnekte, yalnızca bir Temalar hizmetinin çalıştığını ve tablo veri kaynağında sağlanan 3 Satır olduğunu bilerek güvenli bir şekilde test yöntemi 3 kez (1 X 3) çağrılır. Yerel örnekte, SecondTable test yönteminde iki tablo Veri Kaynağı belirtilmiştir. İlk tablo 3 Satır, ikinci tablo ise 4 satır içerir. Bu nedenle test yöntemi 12 kez (3 X 4) çağrılır.
Birden Çok Veri Kaynağı belirtilirken uygulanan kısıtlamalar
Kısıtlamalar yalnızca birden çok DataSource belirtiminde Tablo tabanlı DataSource belirtmek istediğinizde geçerlidir. Table DataSource , TABLE:<relative path to XML file>#<TableId> olarak belirtilmelidir. TAEF "TableId" öğesinin ayrı bir meta veri olarak sağlandığını bulursa, DataSource'un tek bir Tablo tabanlı DataSource olduğunu varsayar ve devam eder.