Bagikan melalui


Mempercepat pengujian dengan menggunakan Analisis Dampak Pengujian (TIA)

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Integrasi Berkelanjutan (CI) adalah praktik utama dalam industri. Integrasi sering terjadi, dan diverifikasi dengan build otomatis yang menjalankan pengujian regresi untuk mendeteksi kesalahan integrasi sesegera mungkin. Tetapi, ketika basis kode tumbuh dan matang, rangkaian pengujian regresinya cenderung tumbuh juga - sejauh menjalankan tes regresi penuh mungkin memerlukan berjam-jam. Pengujian ini memperlambat frekuensi integrasi, dan pada akhirnya mengalahkan tujuan integrasi berkelanjutan.

Agar alur CI selesai dengan cepat, beberapa tim menunda eksekusi pengujian yang berjalan lebih lama ke tahap terpisah dalam alur. Tapi, tindakan ini hanya berfungsi untuk mengalahkan integrasi berkelanjutan lebih lanjut.

Sebagai gantinya, aktifkan Test Impact Analysis (TIA) saat menggunakan tugas Visual Studio Test dalam alur build. TIA melakukan validasi inkremental dengan pemilihan pengujian otomatis. Ini secara otomatis hanya memilih subset pengujian yang diperlukan untuk memvalidasi kode yang dilakukan. Untuk penerapan kode tertentu yang memasukkan alur CI/CD, TIA memilih dan hanya menjalankan pengujian relevan yang diperlukan untuk memvalidasi penerapan tersebut. Oleh karena itu, eksekusi pengujian selesai lebih cepat, jika ada kegagalan Anda mendapatkan pemberitahuan lebih cepat, dan karena semuanya terlingkup oleh relevansi, analisis juga lebih cepat.

Perbandingan waktu pengujian saat menggunakan TIA

Analisis Dampak Pengujian memiliki:

  • Mekanisme pemilihan pengujian yang kuat. Ini termasuk pengujian yang terkena dampak yang ada, pengujian yang sebelumnya gagal, dan pengujian yang baru ditambahkan.
  • Mundur dengan aman. Untuk penerapan dan skenario yang tidak dapat dipahami TIA, ia kembali menjalankan semua pengujian. TIA saat ini hanya tercakup dalam kode terkelola, dan topologi komputer tunggal. Jadi, misalnya, jika penerapan kode berisi perubahan pada file HTML atau CSS, itu tidak dapat menyebabkannya dan kembali menjalankan semua pengujian.
  • Penimpaan yang dapat dikonfigurasi. Anda dapat menjalankan semua pengujian pada periodisitas yang dikonfigurasi.

Namun, waspadai peringatan berikut saat menggunakan TIA dengan Visual Studio 2015:

  • Menjalankan pengujian secara paralel. Dalam hal ini, pengujian berjalan secara serial.
  • Menjalankan pengujian dengan cakupan kode diaktifkan. Dalam hal ini, data cakupan kode tidak dikumpulkan.

Skenario yang didukung Analisis Dampak Pengujian

Analisis Dampak Pengujian (TIA) didukung untuk skenario berikut:

  • TFS 2017 Update 1 dan Azure Pipelines
  • Versi 2.* dari tugas Uji Visual Studio di alur build
  • Bangun vNext, dengan beberapa Tugas VSTest
  • VS2015 Update 3 dan seterusnya pada agen build
  • Agen build lokal dan yang dihosting
  • CI dan dalam alur kerja PR
  • Git, GitHub, Git Lain, repositori TFVC (termasuk repositori TFVC yang dipetakan sebagian dengan solusi sementara)
  • Interaksi IIS (melalui REST, SOAP API), menggunakan protokol HTTP/HTTPS
  • Pengujian Otomatis
  • Topologi mesin tunggal. Pengujian dan aplikasi (SUT) harus berjalan pada komputer yang sama.
  • Kode terkelola (aplikasi .NET Framework apa pun, layanan .NET apa pun)

TIA tidak didukung untuk skenario berikut:

  • Topologi multi-mesin (tempat pengujian menjalankan aplikasi yang disebarkan ke komputer yang berbeda)
  • Pengujian berbasis data
  • Uji eksekusi pengujian paralel khusus Adapter
  • .NET Core
  • UWP

Informasi selengkapnya tentang cakupan dan aplikasi TIA

Aktifkan Analisis Dampak Pengujian

TIA didukung melalui Versi 2.* dari tugas Visual Studio Test . Jika aplikasi Anda adalah aplikasi tingkat tunggal, yang perlu Anda lakukan adalah memeriksa Jalankan hanya pengujian yang terpengaruh di UI tugas. Pengumpul data Test Impact dikonfigurasi secara otomatis. Tidak diperlukan langkah-langkah lebih lanjut.

Mengaktifkan TIA di UI tugas Uji VS

Jika aplikasi Anda berinteraksi dengan layanan dalam konteks IIS, Anda juga harus mengonfigurasi pengumpul data Dampak Pengujian untuk dijalankan dalam konteks IIS dengan menggunakan file .runsettings . Contoh berikut membuat konfigurasi ini:

<?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>

Lihat hasil Analisis Dampak Pengujian

TIA diintegrasikan ke dalam pelaporan pengujian yang ada di tingkat ringkasan dan detail, termasuk email pemberitahuan.

Ringkasan Pelaporan mencakup integrasi TIA

Halaman Pengujian Pelaporan mencakup integrasi TIA

Informasi selengkapnya tentang integrasi TIA dan Azure Pipelines

Mengelola perilaku Analisis Dampak Pengujian

Anda dapat memengaruhi cara pengujian disertakan atau diabaikan selama uji coba:

  • Melalui UI tugas VSTest. TIA dapat dikondisikan untuk menjalankan semua pengujian pada periodisitas yang dikonfigurasi. Mengatur opsi ini disarankan, dan merupakan sarana untuk mengatur pemilihan pengujian.
  • Dengan mengatur variabel build. Bahkan setelah TIA diaktifkan dalam tugas VSTest, Anda dapat menonaktifkannya untuk build tertentu dengan mengatur variabel DisableTestImpactAnalysis ke true. Penimpaan ini memaksa TIA untuk menjalankan semua pengujian untuk build tersebut. Dalam build berikutnya, TIA kembali ke pemilihan pengujian yang dioptimalkan.

Ketika TIA membuka penerapan dan melihat jenis file yang tidak diketahui, TIA kembali menjalankan semua pengujian. Meskipun tindakan ini baik dari perspektif keamanan, menyetel perilaku ini mungkin berguna dalam beberapa kasus. Contohnya:

  • Atur variabel TI_IncludePathFilters ke jalur tertentu untuk hanya menyertakan jalur ini dalam repositori yang ingin Anda terapkan TIA. Tindakan ini berguna ketika tim menggunakan repositori bersama. Mengatur variabel ini menonaktifkan TIA untuk semua jalur lain yang tidak disertakan dalam pengaturan.
  • Atur variabel TIA_IncludePathFilters untuk menentukan jenis file yang tidak memengaruhi hasil pengujian dan perubahan mana yang harus diabaikan. Misalnya, untuk mengabaikan perubahan file to.csproj, atur variabel ke nilai : !\*\*\\\*.csproj.

Gunakan pola minimatch saat mengatur variabel, dan pisahkan beberapa item dengan titik koma.

Untuk mengevaluasi apakah TIA memilih pengujian yang sesuai:

  • Validasi pilihan secara manual. Pengembang yang tahu bagaimana SUT dan pengujian dirancang dapat memvalidasi pemilihan pengujian secara manual menggunakan kemampuan pelaporan TIA.
  • Jalankan tes yang dipilih TIA dan kemudian semua pengujian secara berurutan. Dalam alur build, gunakan dua tugas pengujian - satu yang hanya menjalankan Tes (T1) yang terpengaruh dan satu yang menjalankan semua pengujian (T2). Jika T1 lolos, periksa juga apakah T2 lolos. Jika ada pengujian yang gagal di T1, periksa apakah T2 melaporkan serangkaian kegagalan yang sama.

Informasi selengkapnya tentang konfigurasi lanjutan TIA

Menyediakan pemetaan dependensi kustom

TIA menggunakan peta dependensi dari formulir berikut.

TestMethod1
  dependency1
  dependency2
TestMethod2
  dependency1
  dependency3

TIA dapat menghasilkan peta dependensi untuk eksekusi kode terkelola. Di mana dependensi tersebut berada di file .cs dan .vb , TIA dapat secara otomatis mengawasi penerapan ke dalam file tersebut dan kemudian menjalankan pengujian yang memiliki file sumber ini dalam daftar dependensi mereka.

Anda dapat memperluas cakupan TIA dengan secara eksplisit menyediakan peta dependensi sebagai file XML. Misalnya, Anda mungkin ingin mendukung kode dalam bahasa lain seperti JavaScript atau C++, atau mendukung skenario di mana pengujian dan kode produk berjalan di komputer yang berbeda. Pemetaan bahkan dapat berupa perkiraan, dan serangkaian pengujian yang ingin Anda jalankan dapat ditentukan dalam hal filter kasus pengujian seperti yang biasanya Anda berikan dalam parameter tugas VSTest.

File XML harus diperiksa ke repositori Anda, biasanya di tingkat akar. Kemudian atur variabel build TIA. UserMapFile untuk mengarahkannya. Misalnya, jika file diberi nama TIAmap.xml, atur variabel ke $(System.DefaultWorkingDirectory)/TIAmap.xml.

Untuk contoh format file XML, lihat Pemetaan dependensi kustom TIA.

Lihat Juga

Bantuan dan dukungan