Aracılığıyla paylaş


Test Etkisi Analizini (TIA) kullanarak testi hızlandırma

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Sürekli Tümleştirme (CI), sektördeki önemli bir uygulamadır. Tümleştirmeler sık sık gerçekleştirilir ve tümleştirme hatalarını en kısa sürede algılamak için regresyon testleri çalıştıran otomatik bir derlemeyle doğrulanır. Ancak, kod tabanı büyüdükçe ve büyüdükçe, regresyon test paketi de büyüme eğilimindedir. Tam regresyon testinin çalıştırılması için saatler gerekebilir. Bu, tümleştirmelerin sıklığını yavaşlatır ve sonuçta sürekli tümleştirmenin amacını yener. Hızlı bir şekilde tamamlanan bir CI işlem hattının olması için, bazı takımlar daha uzun süre çalışan testlerinin yürütülmesini işlem hattında ayrı bir aşamaya erteler. Ancak, bu yalnızca sürekli tümleştirmeyi daha fazla yenmeye hizmet eder.

Bunun yerine, derleme işlem hattında Visual Studio Test görevini kullanırken Test Etkisi Analizi'ni (TIA) etkinleştirin. TIA, otomatik test seçimiyle artımlı doğrulama gerçekleştirir. İşlenen kodu doğrulamak için gereken testlerin yalnızca alt kümesini otomatik olarak seçer. CI/CD işlem hattına giren belirli bir kod işlemesi için, TIA yalnızca bu işlemeyi doğrulamak için gereken ilgili testleri seçer ve çalıştırır. Bu nedenle, bu test çalıştırması daha hızlı tamamlanır, bir hata olursa bunu daha erken tanırsınız ve bunların kapsamı ilgi düzeyine göre ayarlandığından analiz de daha hızlı olur.

TIA kullanırken test sürelerinin karşılaştırması

Test Etkisi Analizinin sahip olduğu:

  • Güçlü bir test seçim mekanizması. Mevcut etkilenen testleri, daha önce başarısız olan testleri ve yeni eklenen testleri içerir.
  • geri dönüş Kasa. TIA'nın anlayamayacağı işlemeler ve senaryolar için tüm testleri çalıştırmaya geri döner. TIA'nın kapsamı şu anda yalnızca yönetilen kod ve tek makine topolojisi olarak belirlenmiştir. Bu nedenle, örneğin, kod işleme HTML veya CSS dosyalarında değişiklikler içeriyorsa, bunlar hakkında neden olamaz ve tüm testleri çalıştırmaya geri döner.
  • Yapılandırılabilir geçersiz kılmalar. Tüm testleri yapılandırılmış bir düzenlilik düzeyinde çalıştırabilirsiniz.

Ancak Visual Studio 2015 ile TIA kullanırken aşağıdaki uyarılara dikkat edin:

  • Testleri paralel olarak çalıştırma. Bu durumda testler seri olarak çalıştırılır.
  • Kod kapsamının etkinleştirildiği testleri çalıştırma. Bu durumda kod kapsamı verileri toplanmaz.

Test Etki Analizi tarafından desteklenen senaryolar

Şu anda TIA aşağıdakiler için desteklenmektedir:

  • TFS 2017 Güncelleştirme 1 ve Azure Pipelines
  • Derleme işlem hattındaki Visual Studio Test görevinin sürüm 2.*
  • Birden çok VSTest Görevi ile vNext oluşturma
  • Derleme aracısının VS2015 Güncelleştirme 3'leri
  • Yerel ve barındırılan derleme aracıları
  • ÇEKME isteği iş akışlarında CI ve
  • Git, GitHub, Diğer Git, TFVC depoları (geçici bir çözümle kısmen eşlenmiş TFVC depoları dahil)
  • HTTP/HTTPS protokollerini kullanarak IIS etkileşimleri (REST, SOAP API'leri üzerinden)
  • OtomatikLeştirilmiş Testler
  • Tek makine topolojisi. Testler ve uygulama (SUT) aynı makinede çalışıyor olmalıdır.
  • Yönetilen kod (herhangi bir .NET Framework uygulaması, herhangi bir .NET hizmeti)

Şu anda TIA aşağıdakiler için desteklenmiyor:

  • Çok makineli topoloji (testin farklı bir makineye dağıtılan bir uygulamayı uyguladığı yer)
  • Veri temelli testler
  • Test Bağdaştırıcısına özgü paralel test yürütme
  • .NET Core
  • UWP

TIA kapsamı ve uygulamaları hakkında daha fazla bilgi

Test Etkisi Analizini Etkinleştirme

TIA, Visual Studio Test görevinin Sürüm 2.* aracılığıyla desteklenir. Uygulamanız tek katmanlı bir uygulamaysa tek yapmanız gereken görev kullanıcı arabiriminde Yalnızca etkilenen testleri çalıştır seçeneğini işaretlemektir. Test Etkisi veri toplayıcısı otomatik olarak yapılandırılır. Ek adım gerekmez.

VS Test görevi kullanıcı arabiriminde TIA'yı etkinleştirme

Uygulamanız IIS bağlamında bir hizmetle etkileşimde bulunursa, .runsettings dosyası kullanarak Test Etkisi veri toplayıcısını IIS bağlamında çalışacak şekilde de yapılandırmanız gerekir. Bu yapılandırmayı oluşturan bir örnek aşağıda verilmiştir:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <!-- This is the TestImpact data collector.-->
      <DataCollector uri="datacollector://microsoft/TestImpact/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TraceCollector.TestImpactDataCollector, Microsoft.VisualStudio.TraceCollector, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Test Impact">
        <Configuration>
          <!-- enable IIS data collection-->
          <InstrumentIIS>True</InstrumentIIS>
          <!-- file level data collection -->
          <ImpactLevel>file</ImpactLevel>
          <!-- any job agent related executable or any other service that the test is using needs to be profiled. -->
          <ServicesToInstrument>
            <Name>TeamFoundationSshService</Name>
          </ServicesToInstrument>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

Test Etkisi Analizi sonucunu görüntüleme

TIA, bildirim e-postaları dahil olmak üzere hem özet hem de ayrıntı düzeylerinde mevcut test raporlaması ile tümleşiktir.

Raporlama Özeti TIA tümleştirmesi içerir

Raporlama Testleri sayfası TIA tümleştirmesi içerir

TIA ve Azure Pipelines tümleştirmesi hakkında daha fazla bilgi

Test Etkisi Analizi davranışını yönetme

Test çalıştırması sırasında testleri dahil etme veya yoksayma şeklini etkileyebilirsiniz:

  • VSTest görev kullanıcı arabirimi aracılığıyla. TIA, tüm testleri yapılandırılmış bir düzenlilik düzeyinde çalıştıracak şekilde koşullandırılabilir. Bu seçeneğin ayarlanması önerilir ve test seçimini düzenlemenin araçlarıdır.
  • Derleme değişkeni ayarlayarak. VSTest görevinde TIA etkinleştirildikten sonra bile DisableTestImpactAnalysisdeğişkeni true olarak ayarlanarak belirli bir derleme için devre dışı bırakılabilir. Bu geçersiz kılma, TIA'nın bu derleme için tüm testleri çalıştırmasını zorlar. Sonraki derlemelerde TIA, iyileştirilmiş test seçimine geri dönecektir.

TIA bir işlemeyi açtığında ve bilinmeyen bir dosya türü gördüğünde, tüm testleri çalıştırmaya geri döner. Bu, güvenlik açısından iyi olsa da, bazı durumlarda bu davranışı ayarlamak yararlı olabilir. Örneğin:

  • TI_IncludePathFilters değişkenini, TIA'nın uygulanmasını istediğiniz bir depoda yalnızca bu yolları içerecek şekilde belirli yollar olarak ayarlayın. Bu, ekipler paylaşılan bir depo kullandığında kullanışlıdır. Bu değişkenin ayarlanması, ayara dahil olmayan diğer tüm yollar için TIA'yi devre dışı bırakır.
  • Testlerin sonucunu etkilemeyen ve değişikliklerin yoksayılması gereken dosya türlerini belirtmek için TIA_IncludePathFilters değişkenini ayarlayın. Örneğin, .csproj dosyalarındaki değişiklikleri yoksaymak için değişkeni !**\*.csproj değerine ayarlayın.

Değişkenleri ayarlarken minimatch desenini kullanın ve birden çok öğeyi noktalı virgülle ayırın.

TIA'nın uygun testleri seçip seçmediğini değerlendirmek için:

  • Seçimi el ile doğrulayın. SUT ve testlerin nasıl tasarlanabileceğini bilen bir geliştirici, TIA raporlama özelliklerini kullanarak test seçimini el ile doğrulayabilir.
  • Seçilen TIA testlerini ve ardından tüm testleri sırayla çalıştırın. Derleme işlem hattında, yalnızca etkilenen Testleri (T1) çalıştıran ve tüm testleri (T2) çalıştıran iki test görevi kullanın. T1 geçerse, T2'nin de geçip geçmediğini denetleyin. T1'de başarısız olan bir test varsa, T2'nin aynı hata kümesini bildirip raporlamadığını denetleyin.

TIA gelişmiş yapılandırması hakkında daha fazla bilgi

Özel bağımlılık eşlemeleri sağlama

TIA aşağıdaki formun bağımlılık haritalarını kullanır.

TestMethod1
  dependency1
  dependency2
TestMethod2
  dependency1
  dependency3

TIA, yönetilen kod yürütme için böyle bir bağımlılık haritası oluşturabilir. Bu tür bağımlılıklar .cs ve .vb dosyalarında bulunduğunda, TIA bu tür dosyalardaki işlemeleri otomatik olarak izleyebilir ve ardından bağımlılık listesinde bu kaynak dosyaları olan testleri çalıştırabilir.

Bağımlılıklar eşlemesini bir XML dosyası olarak açıkça sağlayarak TIA kapsamını genişletebilirsiniz. Örneğin, JavaScript veya C++ gibi diğer dillerde kodu desteklemek veya testlerin ve ürün kodunun farklı makinelerde çalıştığı senaryoyu desteklemek isteyebilirsiniz. Eşleme yaklaşık da olabilir ve çalıştırmak istediğiniz test kümesi, genellikle VSTest görev parametrelerinde sağladığınız gibi bir test çalışması filtresi açısından belirtilebilir.

XML dosyasının deponuzda, genellikle kök düzeyinde denetlenmesi gerekir. Ardından TIA derleme değişkenini ayarlayın. Üzerine gelinecek UserMapFile . Örneğin, dosya TIAmap.xml olarak adlandırılmışsa değişkeni $(System.DefaultWorkingDirectory)/TIAmap.xml olarak ayarlayın.

XML dosya biçimi örneği için bkz . TIA özel bağımlılık eşlemesi.

Ayrıca bkz:

Yardım ve destek