Bagikan melalui


Menjalankan pengujian secara paralel menggunakan tugas Uji Visual Studio

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

Menjalankan pengujian untuk memvalidasi perubahan pada kode adalah kunci untuk mempertahankan kualitas. Agar praktik integrasi berkelanjutan berhasil, penting bagi Anda untuk memiliki rangkaian pengujian yang baik yang dijalankan dengan setiap build. Namun, ketika basis kode tumbuh, rangkaian pengujian regresi cenderung tumbuh juga dan menjalankan tes regresi penuh dapat memakan waktu lama. Terkadang, pengujian itu sendiri mungkin berjalan lama - ini biasanya terjadi jika Anda menulis tes end-to-end. Ini mengurangi kecepatan penyampaian nilai kepada pelanggan karena alur kerja tidak dapat memproses build dengan cukup cepat.

Menjalankan pengujian secara paralel adalah cara yang bagus untuk meningkatkan efisiensi alur CI/CD. Ini dapat dilakukan dengan mudah dengan menggunakan kapasitas tambahan yang ditawarkan oleh cloud. Artikel ini membahas cara mengonfigurasi tugas Visual Studio Test untuk menjalankan pengujian secara paralel dengan menggunakan beberapa agen.

Prasyarat

Biasakan diri Anda dengan konsep agen dan pekerjaan . Untuk menjalankan beberapa pekerjaan secara paralel, Anda harus mengonfigurasi beberapa agen. Anda juga memerlukan pekerjaan paralel yang memadai.

Menguji pemotongan

Tugas Uji Visual Studio (versi 2) dirancang untuk bekerja dengan mulus dengan pengaturan pekerjaan paralel. Ketika pekerjaan alur yang berisi tugas Visual Studio Test (disebut sebagai "tugas VSTest" untuk kesederhanaan) dikonfigurasi untuk berjalan pada beberapa agen secara paralel, ia secara otomatis mendeteksi bahwa beberapa agen terlibat dan membuat irisan pengujian yang dapat dijalankan secara paralel di seluruh agen ini.

Tugas dapat dikonfigurasi untuk membuat irisan pengujian agar sesuai dengan persyaratan yang berbeda seperti pengelompokan berdasarkan jumlah pengujian dan agen, waktu pengujian sebelumnya berlangsung, atau lokasi pengujian dalam kumpulan.

Opsi Pengelompokan

Opsi ini dijelaskan di bagian berikut.

Pengirisan sederhana berdasarkan jumlah tes dan agen

Pengaturan ini menggunakan algoritma pemotongan sederhana untuk membagi jumlah pengujian 'T' di seluruh agen 'N' sehingga setiap agen menjalankan pengujian T/N. Misalnya, jika rangkaian pengujian Anda berisi 1000 pengujian, dan Anda menggunakan dua agen untuk pekerjaan paralel, setiap agen akan menjalankan 500 pengujian. Atau Anda dapat mengurangi jumlah waktu yang diperlukan untuk menjalankan pengujian lebih lanjut dengan menggunakan delapan agen, dalam hal ini setiap agen menjalankan 125 pengujian secara paralel.

Opsi ini biasanya digunakan ketika semua pengujian memiliki waktu berjalan yang sama. Jika durasi pengujian tidak serupa, agen mungkin tidak digunakan secara efektif karena beberapa agen mungkin menerima irisan dengan pengujian berdurasi panjang, sementara agen lain mungkin menerima irisan dengan pengujian berdurasi pendek dan menyelesaikannya jauh lebih cepat dari agen lainnya.

Pembagian berdasarkan waktu pengujian yang telah dilakukan sebelumnya

Pengaturan ini mempertimbangkan waktu berjalan sebelumnya untuk membuat irisan pengujian sehingga setiap irisan memiliki waktu berjalan yang kira-kira sama. Tes jangka pendek akan dikelompokkan bersama, sementara tes jangka panjang akan dialokasikan ke bagian terpisah.

Opsi ini harus digunakan ketika pengujian dalam rakitan tidak memiliki dependensi, dan tidak perlu dijalankan pada agen yang sama. Opsi ini menghasilkan pemanfaatan agen yang paling efisien karena setiap agen mendapatkan jumlah 'pekerjaan' yang sama dan semuanya selesai pada waktu yang hampir bersamaan.

Pengirisan berdasarkan rakitan pengujian

Pengaturan ini menggunakan algoritma pemotongan sederhana yang membagi jumlah rakitan pengujian (atau file) 'A' di seluruh agen 'N', sehingga setiap agen menjalankan pengujian dari rakitan A/N. Jumlah pengujian dalam rakitan tidak diperhitungkan saat menggunakan opsi ini. Misalnya, jika rangkaian pengujian Anda berisi sepuluh rakitan pengujian dan Anda menggunakan dua agen untuk pekerjaan paralel, setiap agen akan menerima lima rakitan pengujian untuk dijalankan. Anda dapat mengurangi jumlah waktu yang diperlukan untuk menjalankan pengujian lebih lanjut dengan menggunakan lima agen, dalam hal ini setiap agen mendapatkan dua rakitan pengujian untuk dijalankan.

Opsi ini harus digunakan saat pengujian dalam rakitan memiliki dependensi atau menggunakan metode AssemblyInitialize dan AssemblyCleanup, atau ClassInitialize dan ClassCleanup, untuk mengelola status dalam kode pengujian Anda.

Menjalankan pengujian secara paralel dalam alur build klasik

Jika Anda memiliki rangkaian pengujian besar atau pengujian integrasi jangka panjang untuk dijalankan di alur build klasik Anda, gunakan langkah-langkah berikut.

Nota

Untuk menggunakan kemampuan multi-agen dalam alur build dengan server TFS lokal, Anda harus menggunakan TFS 2018 Update 2 atau versi yang lebih baru.

  1. Membangun sebuah pekerjaan dengan menggunakan satu agen. Buat proyek Visual Studio dan terbitkan artefak build menggunakan tugas yang diperlihatkan dalam gambar berikut. Ini menggunakan pengaturan pekerjaan default (agen tunggal, tidak ada pekerjaan paralel).

    bangunPekerjaanAgenTunggal

  2. Jalankan pengujian secara paralel menggunakan beberapa agen:

    • Tambahkan pekerjaan agen

      AddAgentJobBuild

    • Konfigurasikan pekerjaan untuk menggunakan beberapa agen secara paralel. Contoh di sini menggunakan tiga agen.

      ParallelTestJobBuild

      Petunjuk / Saran

      Untuk pengujian paralel secara besar-besaran, Anda dapat menentukan sebanyak 99 agen.

    • Tambahkan tugas Unduh Artefak Build ke dalam pekerjaan. Langkah ini adalah tautan antara pekerjaan build dan pekerjaan pengujian, dan diperlukan untuk memastikan bahwa biner yang dihasilkan dalam pekerjaan build tersedia pada agen yang digunakan oleh pekerjaan pengujian untuk menjalankan pengujian. Pastikan bahwa tugas diatur untuk mengunduh artefak yang dihasilkan oleh 'Pembangunan saat ini' dan nama artefak sama dengan nama artefak yang digunakan dalam tugas Terbitkan Artefak Build dalam tugas pembangunan.

      DownloadBuildArtifacts

    • Tambahkan tugas Visual Studio Test dan konfigurasikan untuk menggunakan strategi pemotongan yang diperlukan .

Menyiapkan pekerjaan untuk pengujian paralel di alur YAML

Tentukan strategi parallel dalam job dan tunjukkan berapa banyak pekerjaan yang harus dikirim. Anda dapat menentukan sebanyak 99 agen untuk meningkatkan pengujian untuk suite pengujian besar.

jobs:
- job: ParallelTesting
  strategy:
    parallel: 2

Untuk informasi selengkapnya, lihat skema YAML - Pekerjaan .

Menjalankan pengujian secara paralel dalam alur rilis klasik

Gunakan langkah-langkah berikut jika Anda memiliki rangkaian pengujian besar atau pengujian fungsional yang berjalan lama untuk dijalankan setelah menyebarkan aplikasi Anda. Misalnya, Anda mungkin ingin menyebarkan aplikasi web dan menjalankan pengujian Selenium di browser untuk memvalidasi fungsionalitas aplikasi.

Nota

Untuk menggunakan kemampuan multi-agen dalam alur rilis dengan server TFS lokal, Anda harus menggunakan TFS 2017 Update 1 atau versi yang lebih baru.

  1. Menyebarkan aplikasi menggunakan agen tunggal. Gunakan Azure Deployment: Membuat atau Memperbarui Grup Sumber Daya atau tugas Azure App Service Deploy untuk menyebarkan aplikasi web ke layanan Azure App. Ini menggunakan pengaturan pekerjaan default (agen tunggal, tidak ada pekerjaan paralel).

    DeployApp1Agent

  2. Jalankan pengujian secara paralel menggunakan beberapa agen:

    • Tambahkan pekerjaan agen

      AddAgentJobRM

    • Konfigurasikan pekerjaan untuk menggunakan beberapa agen secara paralel. Contoh di sini menggunakan tiga agen.

      ParallelTestJobRMParallelTestJobRM

      Petunjuk / Saran

      Untuk pengujian paralel secara besar-besaran, Anda dapat menentukan sebanyak 99 agen.

    • Tambahkan tugas tambahan yang harus dijalankan sebelum tugas pengujian Visual Studio dijalankan. Misalnya, jalankan skrip PowerShell untuk menyiapkan data apa pun yang diperlukan oleh pengujian Anda.

      Petunjuk / Saran

      Pekerjaan dalam alur rilis secara otomatis mengunduh semua artefak yang ditautkan ke alur rilis. Untuk menghemat waktu, Anda dapat mengonfigurasi pekerjaan untuk mengunduh hanya artefak pengujian yang diperlukan oleh pekerjaan. Misalnya, berkas biner aplikasi web tidak diharuskan untuk menjalankan pengujian Selenium dan mengunduhnya dapat dilewati jika aplikasi dan artefak pengujian diterbitkan secara terpisah oleh jalur perakitan Anda.

    • Tambahkan tugas Visual Studio Test dan konfigurasikan untuk menggunakan strategi pemotongan yang diperlukan .

      Petunjuk / Saran

      Jika mesin pengujian tidak memiliki Visual Studio yang terinstal, Anda dapat menggunakan tugas Visual Studio Test Platform Installer untuk memperoleh versi platform pengujian yang diperlukan.

Pengujian paralel secara masif dengan menggabungkan pekerjaan alur paralel dengan eksekusi pengujian paralel

Ketika pekerjaan paralel digunakan dalam alur kerja, sistem menggunakan beberapa mesin (agen) untuk menjalankan setiap pekerjaan secara paralel. Kerangka kerja pengujian dan runner juga menyediakan kemampuan untuk menjalankan pengujian secara paralel pada satu komputer, biasanya dengan membuat beberapa proses atau utas yang dijalankan secara paralel. Fitur paralelisme dapat dikombinasikan secara berlapis untuk mencapai pengujian paralel besar-besaran. Dalam konteks tugas Visual Studio Test, paralelisme dapat dikombinasikan dengan cara berikut:

  1. Paralelisme yang ditawarkan oleh kerangka kerja pengujian. Semua kerangka kerja pengujian modern seperti MSTest v2, NUnit, xUnit, dan lainnya memberikan kemampuan untuk menjalankan pengujian secara paralel. Biasanya, pengujian dalam rakitan dijalankan secara paralel. Kerangka kerja pengujian ini berinteraksi dengan platform Visual Studio Test menggunakan adaptor pengujian dan kerangka kerja pengujian, bersama dengan adaptor yang sesuai, dan bekerja dalam proses host pengujian yang dibuat Platform Pengujian Visual Studio saat pengujian dijalankan. Oleh karena itu, paralelisasi pada lapisan ini berada dalam proses untuk semua kerangka kerja dan adaptor.

  2. Paralelisme yang disediakan oleh Visual Studio Test Platform (vstest.console.exe). Visual Studio Test Platform dapat menjalankan rakitan pengujian secara paralel. Pengguna vstest.console.exe akan mengenali ini sebagai saklar paralel . Hal ini dilakukan dengan meluncurkan proses host pengujian pada setiap core yang tersedia, dan menyerahkan pengujian dalam assembly untuk dieksekusi. Ini berfungsi untuk kerangka kerja apa pun yang memiliki adaptor pengujian untuk platform pengujian Visual Studio karena unit paralelisasi adalah rakitan pengujian atau file pengujian. Jika dikombinasikan dengan paralelisme yang ditawarkan oleh kerangka pengujian (seperti yang dijelaskan di atas), ini memberikan tingkat paralelisasi maksimum ketika pengujian dijalankan pada satu agen dalam alur.

  3. Paralelisme yang disediakan oleh tugas Visual Studio Test (VSTest). Tugas VSTest mendukung menjalankan pengujian secara paralel di beberapa agen (atau mesin). Pengujian dilakukan per irisan, dan setiap agen menjalankan satu irisan pada satu waktu. Tiga strategi pemotongan yang berbeda, jika dikombinasikan dengan paralelisme yang ditawarkan oleh platform pengujian dan kerangka kerja pengujian (seperti yang dijelaskan di atas), menghasilkan hal berikut:

    • Pengirisan berdasarkan jumlah tes dan agen. Irisan sederhana di mana tes dikelompokkan dalam irisan berukuran sama. Sebuah bagian berisi pengujian dari satu atau beberapa rakitan. Pelaksanaan pengujian pada agen lalu sesuai dengan paralelisme yang dijelaskan dalam 1 dan 2 di atas.

    • Pemotongan berdasarkan penilaian waktu berjalan sebelumnya. Berdasarkan waktu sebelumnya untuk menjalankan tes, dan jumlah agen yang tersedia, pengujian dikelompokkan ke dalam irisan sehingga setiap irisan memerlukan waktu eksekusi yang kira-kira sama. Sebuah bagian berisi pengujian dari satu atau beberapa rakitan. Eksekusi pengujian di agen kemudian sesuai dengan paralelisme yang dijelaskan dalam 1 dan 2 di atas.

    • Pengirisan berdasarkan rakitan. Potongan adalah rakitan pengujian, dan berisi pengujian yang semuanya termasuk dalam rakitan yang sama. Eksekusi pada agen kemudian sesuai dengan paralelisme yang dijelaskan dalam 1 dan 2 di atas. Namun, 2 mungkin tidak terjadi jika agen hanya menerima satu rakitan (komponen) untuk dijalankan.

Bantuan dan dukungan