Pengujian Otomatisasi iOS dengan Xcode Kerangka UI

โšก Ringkasan Cerdas

Pengujian otomatisasi iOS dengan Xcode Merekam dan memutar ulang tindakan antarmuka pengguna terhadap aplikasi yang sedang diuji, mengikuti siklus berbasis pengujian yang meliputi desain, pengujian, implementasi, dan pengujian lagi hingga setiap kasus berhasil.

  • ๐Ÿ”˜ Siklus TDD: Desain, pengujian, implementasi, dan pengujian ulang merupakan empat fase yang diterapkan dalam pengujian aplikasi iOS.
  • โ˜‘๏ธ Prasyarat: Sebuah Mac yang menjalankan OS X dengan Xcode IDE, kerangka kerja otomatisasi, dan iOS SDK telah terpasang.
  • โœ… Rute instrumen: Instrumen Otomasi merekam skrip, menampilkannya di log skrip, dan memutarnya kembali sesuai permintaan.
  • ๐Ÿงช Rute OCUnit: Target Unit Test Bundle, skema aktif, grup pengujian, dan kelas pengujian yang ditulis dalam Objective-C.
  • โš ๏ธ Bantahan: Instrumen UIAutomation telah dihentikan penggunaannya pada Xcode 8 dan dihapus; XCUITest adalah penerus yang didukung.
  • ๏ธ Padanan modernnya: Target UI Testing Bundle ditambah kueri XCUIApplication menggantikan skrip Instruments yang direkam.

Pengujian otomatisasi iOS dengan Xcode Kerangka kerja Otomasi UI menjalankan skrip yang direkam terhadap sebuah aplikasi.

Pengujian Otomatisasi iOS menggunakan Xcode

Untuk menjamin kualitas aplikasi iOS Anda, Anda harus mengikuti proses pengembangan berbasis pengujian (test-driven development) seperti yang ditunjukkan pada gambar di bawah ini.

Siklus pengembangan berbasis pengujian (Test-driven development) untuk pengujian otomatis iOS yang menunjukkan fase desain, pengujian, implementasi, dan pengujian ulang.

Pengembangan Berbasis Tes (TDD) adalah a pengujian Model yang diterapkan pada pengujian aplikasi iOS, dan berada di dalam praktik yang lebih luas dari pengujian selulerDalam model ini, seorang penguji harus mengikuti 4 fase berikut:

  • desain: Tentukan apa yang ingin Anda uji dan rancang kasus uji Anda.
  • Uji: Jalankan semua pengujian dan lihat apakah ada kasus uji yang gagal.
  • Melaksanakan: RevGunakan kode Anda dan perbaiki bug yang menyebabkan pengujian gagal.
  • Coba lagi: Jika sebuah pengujian gagal, kembalikan ke desain awal. Jika semua kasus uji berhasil, kode tersebut memenuhi seluruh persyaratan yang diuji.

Menyiapkan Xcode Proyek untuk Pengujian UI

Untuk membuat program uji iOS, Anda memerlukan Mac. Mac Anda harus sudah memiliki perangkat lunak berikut yang terpasang:

  • OS X โ€” sistem operasi untuk Mac.
  • Xcode IDE โ€” alat pengembangan untuk iOS.
  • Kerangka kerja pengujian otomatis โ€” Otomatisasi UI, OCUnit, dan sebagainya.
  • SDK iOS 4 atau lebih tinggi.

โš ๏ธ Catatan versi: Persyaratan di atas menjelaskan rangkaian perangkat lunak (toolchain) pada era di mana kedua panduan berikut ditulis. Pada Mac saat ini, Xcode Paket ini menyertakan framework XCTest dan XCUITest, dan instrumen UI Automation yang terpisah tidak lagi menjadi bagian dari instalasi. Langkah-langkah asli tetap dipertahankan di bawah ini karena mendokumentasikan cara kerja framework tersebut, dan padanan modernnya dijelaskan lebih lanjut di bawah.

Cara Membuat Otomatisasi iOS menggunakan Kerangka Otomatisasi UI

Delapan langkah di bawah ini merekam skrip dengan instrumen Otomasi dan memutarnya kembali pada aplikasi yang sedang diuji.

Langkah 1) Luncurkan Instrumen

Buka XCode -> Buka Alat Pengembang -> Instrumen

Membuka Instrumen dari Xcode Buka menu Alat Pengembang

Langkah 2) Tambahkan Instrumen Otomasi

Di jendela Instrumen, pilih instrumen Otomasi.

Memilih instrumen Otomasi di pemilih templat Instrumen

Untuk membuat skrip pengujian, Anda dapat merekam... skenario pengujian atau Anda memprogramnya secara manual.

Langkah 3) Tekan tombol Merah

Instrumen sedang diaktifkan โ€” hentikan perekaman segera. Jika Anda ingin memulai perekaman, tekan tombol merah.

Tombol rekam berwarna merah di bilah alat Instrumen digunakan untuk memulai dan menghentikan perekaman. trace

Langkah 4) Buat skrip baru

Di jendela Skrip, klik Tambah > Buat untuk membuat skrip baru.

Menu Tambah dan Buat di jendela Skrip Instrumen untuk skrip otomatisasi baru.

Langkah 5) Pilih target

Anda sekarang berada di Tracjendela e. Gunakan Pilih Target Tarik ke bawah untuk beralih ke versi debugging aplikasi Anda.

Pilih Target menu tarik-turun di Instrumen Tracjendela e yang mengarah ke build debug

Dalam hal ini, sampel Apple Pengeboran Sederhana Aplikasi ini digunakan sebagai aplikasi yang sedang diuji. Aplikasi ini memiliki GUI seperti yang ditunjukkan di bawah ini.

Antarmuka aplikasi sampel SimpleDrillDown digunakan sebagai aplikasi yang sedang diuji.

Langkah 6) Mulai rekam skrip Anda

Rekam skrip Anda dengan menekan tombol rekam di bagian atas atau bawah alat.

Tombol rekam di tepi jendela Instrumen yang memulai perekaman skrip.

Sekarang Anda dapat melakukan beberapa tindakan UI pada aplikasi yang sedang diuji, dan skrip Anda telah direkam.

Langkah 7) Lihat skrip Anda

Untuk melihat skrip Anda, tekan TracPilih menu tarik-turun e Log / Editor Log dan beralih ke tampilan log skrip.

TracMenu tarik-turun e Log dan Editor Log digunakan untuk beralih ke tampilan log skrip.

Anda akan melihat skrip rekaman Anda.

Skrip Otomatisasi UI yang direkam ditampilkan di tampilan log skrip Instrumen.

Langkah 8) Mainkan skrip Anda

Tekan tombol putar. Skrip akan berjalan, dan Anda dapat menghentikannya setelah log muncul.

Pemutaran skrip otomatisasi yang direkam beserta output log di jendela Instrumen.

โš ๏ธ Catatan sejarah: Instrumen otomatisasi yang digunakan dalam delapan langkah ini sudah tidak digunakan lagi. Xcode 8 dan kemudian dihapus, sehingga tidak lagi ada di versi saat ini. Xcode instalasi. Langkah-langkahnya disimpan di sini sebagai catatan tentang cara kerja kerangka kerja; untuk pekerjaan baru, gunakan panduan XCUITest di bagian bawah halaman ini.

Cara Membuat Otomatisasi iOS menggunakan kerangka OCUnit

Rute kedua menempatkan tes di dalam Xcode memproyeksikan dirinya sendiri alih-alih berada di dalam Instruments.

Langkah 1) Mulai Xcode IDE, Tambahkan target Bundel Uji Unit

Menambahkan target Unit Test Bundle ke yang sudah ada Xcode proyek

Langkah 2) Tulis nama Bundel Uji Unit yang baru seperti yang ditunjukkan pada gambar di atas, lalu klik Selesai.

Langkah 3) Jadikan Unit Test sebagai target aktif.

Memilih bundel uji unit sebagai target aktif di Xcode

Langkah 4) Tambahkan grup untuk kelas uji coba

Membuat grup proyek untuk menampung kelas pengujian unit iOS.

Langkah 5) Tambahkan kelas pengujian Unit

Menambahkan berkas kelas pengujian unit baru di dalam grup pengujian di Xcode

Langkah 6) Sekarang mulailah implementasi Anda

Kelas pengujian unit kosong di dalam Xcode editor siap untuk implementasi pengujian

OCUnit menggunakan bahasa Objective-C untuk membuat program pengujian, jadi pengembang harus mengetahui bahasa tersebut. Modern Xcode versi pengiriman pengujian unit melalui XCTest sebagai gantinya, yang mendukung Objective-C dan SwiftNamun, struktur target dan kelas yang ditunjukkan dalam enam langkah ini tetap tidak berubah.

UIAutomation vs XCUITest: Apa yang Berubah?

Karena kedua kerangka kerja yang digunakan di atas termasuk dalam generasi sebelumnya dari rangkaian perangkat lunak Apple, ada baiknya untuk menjelaskan secara tepat apa yang menggantikannya dan mengapa.

Aspek Otomatisasi UI (Instrumen) Uji XCUIT
Status Tidak digunakan lagi Xcode 8 dan dihapus dari rilis selanjutnya Kerangka kerja pengujian UI yang didukung Apple
Tempat pengujian berlangsung Skrip di dalam sebuah Instrumen tracdokumen elektronik Target Bundel Pengujian UI di dalam Xcode proyek
Bahasa JavaNaskah Swift atau Tujuan-C
Pelari uji Instrumen Otomasi XCTest, runner yang sama dengan unit test.
Integrasi berkelanjutan Canggung โ€” dikendalikan melalui Instrumen Berjalan dari baris perintah bersamaan dengan pengujian unit.
Rekaman Tombol rekam di bilah alat Instrumen Tombol rekam di Xcode editor, yang memancarkan Swift

Konsekuensi praktisnya adalah bahwa rangkaian pengujian XCUITest merupakan kode sumber proyek biasa. Rangkaian tersebut ditinjau, diberi versi, dan dieksekusi seperti bagian kode lainnya, yang merupakan alasan utama mengapa rekaman tersebut...tracModel tersebut menghilang.

Cara Menulis Tes UI iOS dengan XCUITest

Versi modern dari delapan langkah Instruments relatif singkat. Struktur di bawah ini mencerminkan ide rekam-lalu-putar ulang yang sama, tetapi outputnya berupa file sumber, bukan sebuah file. trace.

  1. Tambahkan target. In Xcode pilih File > Baru > Target lalu pilih templat UI Testing Bundle, atau centang opsi untuk menyertakan pengujian saat membuat proyek baru.
  2. Buka kelas pengujian yang telah dibuat. Xcode Membuat subkelas XCTestCase dengan metode setup dan test yang kosong.
  3. Luncurkan aplikasi yang sedang diuji. Buat instance XCUIApplication dan panggil launch padanya, yang akan memulai aplikasi dalam proses terpisah.
  4. Bertanya dan bertindak. Akses elemen melalui kueri elemen โ€” tombol, tabel, teks statis โ€” dan panggil tap, typeText, atau swipe pada elemen tersebut.
  5. Menegaskan. Gunakan XCTAssert untuk memverifikasi bahwa elemen yang diharapkan ada setelah tindakan tersebut.
  6. Run. Jalankan pengujian dari Xcode test navigator, atau dari baris perintah sehingga rangkaian pengujian yang sama berjalan dalam integrasi berkelanjutan.

Tes minimal memiliki bentuk seperti ini:

import XCTest

final class AppUITests: XCTestCase {

    func testTappingFirstRowShowsDetail() {
        let app = XCUIApplication()
        app.launch()

        // act on the first row of the list
        app.tables.cells.element(boundBy: 0).tap()

        // verify that the next screen appeared
        XCTAssertTrue(app.staticTexts.firstMatch.waitForExistence(timeout: 5))
    }
}

Perekam masih ada: menempatkan kursor di dalam metode pengujian dan menekan tombol rekam di editor akan menghasilkan kueri ini secara otomatis, yang merupakan turunan langsung dari Langkah 6 di atas. Prinsip-prinsip yang lebih luas dari pengujian otomasi berlaku tanpa perubahan.

Contoh Otomatisasi UI Code

Artikel ini menyertakan beberapa contoh kode sumber. Contoh-contoh ini membantu Anda memahami tutorial dengan lebih jelas dan cepat.

Contoh Otomatisasi UI โ€” Skrip pengujian untuk demo Otomatisasi UI.

Pertanyaan Umum Demo Slot

Nomor Xcode dan simulator iOS hanya berjalan di macOSOleh karena itu, Mac diperlukan baik secara lokal maupun sebagai mesin build yang dihosting. Farm perangkat cloud dan penyedia CI yang dihosting ada agar tim tanpa perangkat keras Mac tetap dapat menjalankan rangkaian pengujian.

Model pembelajaran mesin menyarankan kueri elemen pengganti ketika tampilan layar berubah, mengelompokkan kegagalan yang tidak stabil berdasarkan akar penyebabnya, dan menentukan peringkat kegagalan mana yang merupakan regresi sebenarnya. Hal ini penting untuk rangkaian UI, di mana perubahan tata letak kecil dapat merusak banyak pemilih sekaligus.

Ia menangani bagian-bagian yang berulang dengan baik โ€” kerangka kelas pengujian, argumen peluncuran, pembungkus objek halaman, dan kode standar pernyataan. Pengidentifikasi elemen tetap harus sesuai dengan aplikasi sebenarnya, jadi setiap kueri yang dihasilkan perlu diverifikasi terhadap build yang sedang berjalan sebelum dipercaya.

Appium iOS dikendalikan melalui driver XCUITest-nya, yang menggantikan driver UIAutomation yang lebih lama. Keuntungannya adalah satu bahasa pengujian lintas platform untuk iOS dan Android; konsekuensinya adalah adanya lapisan tambahan antara pengujian dan aplikasi pelari milik Apple sendiri.

Unit test berjalan di dalam proses aplikasi dan memanggil kode Anda secara langsung. UI test meluncurkan aplikasi sebagai proses terpisah dan hanya berinteraksi melalui antarmuka, sehingga lebih lambat tetapi memvalidasi apa yang sebenarnya dialami pengguna.

Simulator lebih cepat dan cocok untuk sebagian besar alur fungsional dalam sebuah pipeline. Perangkat nyata diperlukan untuk kamera, biometrik, notifikasi push, kinerja, dan segala sesuatu yang berhubungan dengan sensor perangkat keras, sehingga sebagian besar tim menjalankan keduanya pada titik yang berbeda dalam siklus tersebut.

Setiap pengujian meluncurkan ulang aplikasi dan menunggu animasi. Stabilitas meningkat ketika Anda mengatur pengidentifikasi aksesibilitas alih-alih mencocokkan label, menunggu keberadaan elemen daripada menunda eksekusi.ping, mengatur ulang status di antara pengujian, dan menjaga agar setiap kasus tetap fokus pada satu alur.

Tidak secara langsung, karena bahasa dan model elemennya berbeda. Jalur yang biasa ditempuh adalah menyimpan skrip lama sebagai dokumentasi cakupan yang diinginkan, kemudian menulis ulang setiap skenario sebagai kasus XCUITest, dimulai dengan alur yang paling sering gagal di lingkungan produksi.

Ringkaslah postingan ini dengan: