Halo, Habr! Saya mempersembahkan untuk Anda terjemahan artikel
“WWDC19: Memulai dengan Rencana Tes untuk XCTest” oleh Shashikant Jagtap.

Pada konferensi
WWDC terakhir, Apple memamerkan fitur-fitur baru yang keren untuk pengembang. Xcode 11 juga menambahkan beberapa fitur luar biasa. Anda dapat membacanya di
catatan rilis . Salah satu alat paling signifikan yang diumumkan tahun ini adalah Rencana Tes untuk tes XCTest dan Xcode UI. Pada artikel ini, kami akan memeriksa secara rinci bagaimana fungsionalitas Rencana Tes akan bekerja dengan XCTest. Jika Anda ingin mengetahui lebih detail, tonton video sesi
"Testing on Xcode".Paket Tes Xcode
Sebelum Xcode 11, konfigurasi tes adalah bagian dari skema Xcode. Jika pengembang ingin mengonfigurasi suite pengujian yang berbeda untuk kondisi yang berbeda, mereka juga membuat sirkuit baru atau mengedit yang sudah ada untuk kebutuhan pengujian khusus. Konfigurasi pengujian terkait erat dengan skema Xcode, jadi saya harus membuat banyak skema untuk tugas yang berbeda selama pengujian.
Fungsionalitas baru di Xcode 11 memungkinkan pengembang dan insinyur QA untuk menyesuaikan tes yang sesuai dengan kebutuhan mereka. Rencana Tes memungkinkan Anda untuk menentukan:
- tes apa yang harus dijalankan dalam perakitan;
- cara menjalankan tes ini (misalnya, dalam urutan acak atau alfabet);
- Cara mengelola artefak uji (misalnya, lampiran dan tangkapan layar);
- cara menggunakan alat runtime sebagai bagian dari pengujian.
Dengan Paket Tes Xcode, Anda dapat mengonfigurasi suite tes secara independen dari skema Xcode. Ini adalah peningkatan signifikan dalam teknologi pengujian yang dapat membawa pengujian Anda ke tingkat selanjutnya. Sekarang mari kita lihat rencana Tes Xcode dalam aksi.
Skrip
Misalkan kita membuat rencana uji untuk tes fungsional dengan persyaratan berikut:
- Tes fungsional harus mencakup kit untuk tes asap dan regresi;
- Tes asap harus dijalankan di London (Inggris) dan tes regresi di San Francisco (AS);
- Tes asap harus dijalankan dalam urutan abjad, dan tes regresi harus dijalankan secara acak untuk menangkap masalah di antara tes.
Kami akan membuat rencana uji untuk Xcode untuk berbagai platform Apple.
Membuat Rencana Tes dalam Xcode
Xcode 11 memungkinkan kita untuk mendefinisikan persyaratan ini dalam Rencana Tes. Xcode memungkinkan Anda untuk membuat Rencana Tes dari konfigurasi skema saat ini. Ketika Anda mengedit sirkuit dan melanjutkan ke langkah-langkah tes saat ini, Xcode menampilkan opsi untuk membuat Rencana Tes. Anda dapat membuat Rencana Tes dengan pengaturan berikut:
- Paket Tes Kosong : Membuat templat kosong dan memungkinkan Anda membuat rencana sendiri;
- Rencana Tes dari Skema : Mengambil konfigurasi sirkuit dan membuat Rencana Tes;
- Pilih Paket Tes : Jika Anda sudah memiliki Paket Tes yang dibuat, Anda dapat memilih dan menambahkannya ke grafik.
Untuk membiasakan diri Anda, buat Rencana Tes dari konfigurasi sirkuit.

Anda perlu menyebutkan Rencana Tes dan menentukan target tes yang benar. Ketika Rencana Tes dibuat, itu melekat pada sirkuit. Namun, skema dapat menimpa Rencana Tes yang dibuat setelah menggunakan flag ketika menjalankan perintah Xcodebuild. Setelah membuat Rencana Tes, Anda dapat melampirkannya ke target tertentu. Mari tambahkan rencana saat ini ke target dengan tes UI dan beri nama.

Anda akan menemukan file baru dengan ekstensi functional.xctestplan. Ini adalah Paket Tes Anda. Ini dapat diedit jika perlu. Anda dapat membuat Rencana Tes komposit dalam target yang sama, tergantung pada kebutuhan tes. Pada titik ini, kami memiliki Rencana Tes yang tersedia untuk target kami dengan tes UI.
File rencana pengujian
File Rencana Tes adalah file konfigurasi seperti json sederhana yang berisi informasi tentang cara mengkonfigurasi tes Anda untuk berjalan secara independen dari sirkuit apa pun. Berikut adalah berbagai pengaturan konfigurasi tes yang tersedia di Rencana Tes. Rencana Uji dasar berisi tiga elemen kunci:
- Konfigurasi
- Target Tes
- Pengaturan
Setiap konfigurasi dalam Rencana Tes berisi serangkaian tes yang dikaitkan dengan pengaturan yang berbeda. Sesuai dengan persyaratan rencana pengujian kami, kami akan membutuhkan dua konfigurasi: satu untuk tes asap, yang lain untuk tes regresi.
Sekarang mari kita buka file functional.xctestplan di Xcode dan ganti nama configuration1 menjadi smoke-uk, lalu klik tombol “+” di bagian atas paket dan tambahkan konfigurasi regresi-usa lainnya.
Sekarang kami memiliki dua konfigurasi dalam Rencana Tes dan Rencana Tes sudah terikat dengan target dengan tes UI. Tambahkan beberapa pengaturan ke setiap konfigurasi. Ketika konfigurasi smoke-uk dipilih, kita dapat mengubah lokasi ke London dan membuat perubahan lain pada pengaturan. Demikian pula, ubah konfigurasi regresi-usa. Inilah yang akan terlihat seperti Rencana Tes untuk memicu regresi:

Pengaturan yang tersedia di Rencana Tes:
- Argumen - memungkinkan Anda untuk mengganti argumen peluncuran dan meluncurkan lingkungan untuk pengujian;
- Lokalisasi - memungkinkan Anda untuk mengonfigurasi tes untuk berbagai geolokasi, lokal, dan bahasa. Ini adalah pengaturan yang sangat keren untuk menguji internasionalisasi dan lokalisasi;
- Pengujian UI / Lampiran / Eksekusi Tes / Cakupan Kode - opsi spesifik untuk pengujian UI dan artefak uji. Anda dapat memutuskan apakah akan meninggalkan artefak atau menghapusnya sesegera mungkin. Anda juga dapat memilih urutan pelaksanaan tes dan perhitungan cakupan kode;
- Alat Diagnostik Kode Xcode - Beberapa alat Xcode untuk mendiagnosis kode, seperti Address Sanitizer atau Thread Sanitizer, tersedia untuk mencari kesalahan runtime. Anda juga dapat menggunakan opsi lain yang membantu Anda mencari kebocoran memori, dll.
Membuat Rencana Tes dari awal
Jika Anda tidak ingin membuat Rencana Tes menggunakan skema Xcode, maka Anda selalu dapat membuat Rencana Tes baru melalui Xcode → Produk → Rencana Tes.

Setelah membuat Rencana Tes dengan cara ini, kami akan melampirkannya ke beberapa target pengujian dengan menambahkan tes ke dalamnya. Dalam contoh di bawah ini, kami membuat Rencana Tes baru dan menambahkan tes ke dalamnya.

Membuat Rencana Tes dari sumbernya
Seperti yang disebutkan sebelumnya, Paket Tes Xcode hanyalah file konfigurasi, tempat kami memasang semua konfigurasi yang kami tentukan. Dalam skenario kami, kami membuat fungsional.xctestplan, dan kode sumber untuk itu terlihat seperti ini:
{ "configurations" : [ { "name" : "smoke-uk", "options" : { "language" : "en-GB", "locationScenario" : { "identifier" : "London, England", "referenceType" : "built-in" }, "region" : "GB", "testExecutionOrdering" : "lexical" } }, { "name" : "Regression-usa", "options" : { "addressSanitizer" : { "enabled" : true }, "language" : "en", "locationScenario" : { "identifier" : "San Francisco, CA, USA", "referenceType" : "built-in" }, "region" : "US", "testExecutionOrdering" : "random" } } ], "defaultOptions" : { "codeCoverage" : false }, "testTargets" : [ { "target" : { "containerPath" : "container:XCTestPlan.xcodeproj", "identifier" : "9B0E393A22A6EB5400F666A1", "name" : "XCTestPlanUITests" } } ], "version" : 1 }
Anda dapat membuat konfigurasi dengan cara ini dan menyimpannya ke file dengan ekstensi .xctestplan di Xcode 11.
Luncurkan Paket Tes
Sekarang kami memahami proses membuat file Rencana Tes dalam Xcode. Mari kita lihat bagaimana menjalankan Rencana Tes dan mendapatkan laporan dalam Xcode. Anda dapat menjalankan tes melalui Xcode -> Produk -> Tes seperti biasa, dengan menjalankan Rencana Tes terlampir pada skema. Dalam kasus kami, ini akan meluncurkan konfigurasi pengujian - asap dan regresi.
Ada beberapa opsi baris perintah di Xcodebuild untuk melihat dan menjalankan Paket Tes. Anda dapat menjalankan perintah berikut:
$ Xcodebuild -showTestPlans -scheme YOUR_SCEME
Ini akan menampilkan semua Paket Tes untuk sirkuit saat ini. Anda juga dapat menjalankan tes terpisah:
$ Xcodebuild -project XCTestPlan.Xcodeproj/ -scheme XCTestPlan -destination 'platform=iOS Simulator,OS=13.0,name=iPhone XR' test -testPlan functional
Script ini akan menjalankan tes menggunakan konfigurasi Rencana Tes.
Laporan Rencana Uji
Setelah menjalankan tes untuk Rencana Tes tertentu, Anda dapat melihat laporan bagus yang dihasilkan dalam Xcode. Laporan dihasilkan secara terpisah untuk setiap konfigurasi.

Di Xcode, di bagian navigator tes, Anda dapat memfilter laporan berdasarkan Paket Tes. Laporan Rencana Tes Xcode dapat dikonfigurasi di server Xcode.
Kode sumber demo tersedia di Github: XCTestPlanPaket Tes Xcode: Aplikasi
Secara singkat tentang di mana Rencana Tes Xcode dapat digunakan dan bagaimana perubahannya tergantung pada konfigurasi sirkuit. Berikut adalah beberapa contoh penggunaan Rencana Tes Xcode:
- Berbagai jenis pengujian, seperti yang ditunjukkan dalam demo: merokok, regresi, dll.
- Menguji internasionalisasi dan lokalisasi aplikasi, misalnya, jika Anda ingin menguji aplikasi Anda untuk beberapa bahasa, Anda dapat membuat berbagai konfigurasi;
- Menjalankan tes berat, seperti tes kinerja dan stres, dan memisahkannya dari tes fungsional. Anda dapat mengkonfigurasi tes untuk bekerja bersama dengan alat diagnostik kode atau tes non-fungsional lainnya.
Banyak skenario lain juga dimungkinkan di mana Rencana Tes Xcode dapat membantu memperluas proses pengujian.
Kesimpulan
Dengan Paket Tes Xcode, XCTest dapat dibawa ke tingkat selanjutnya dengan kemampuan untuk mengelola konfigurasi Anda dan menjalankan tes Anda. Paket Tes Xcode memberi Anda kontrol yang lebih baik atas platform pengujian berbasis Apple.