Ekstrak elemen malas untuk menguji UI di SwiftUI iOS | Oleh Andronicus Martushev | Juni 2022

Programming

[ad_1]
Selamat datang Teman-teman di suratpembaca.web.id. Hari ini kita akan membicarakan tentang Linux yakni Ekstrak elemen malas untuk menguji UI di SwiftUI iOS | Oleh Andronicus Martushev | Juni 2022

.

Sekiranya artikel mengenai Ekstrak elemen malas untuk menguji UI di SwiftUI iOS | Oleh Andronicus Martushev | Juni 2022

dapat memberikan manfaat untuk Sahabat semua. Mari baca postingan ini
hingga tuntas.

Bangun aplikasi SwiftUI yang kuat

Foto oleh Devon Janse van Rensburg di Unsplash

Pemuatan malas adalah teknik pengoptimalan yang kuat yang digunakan oleh aplikasi online di mana data dimuat sesuai permintaan, bukan dengan mulus. Aplikasi online terus-menerus mengirim dan menerima data, dan segala cara untuk mengurangi jumlah data transaksi yang tidak perlu berguna bagi pengguna akhir dan aplikasi itu sendiri. Server cadangan aplikasi menerima lebih sedikit tekanan dan pengguna akhir tidak perlu menunggu data dimuat. Jadi apa masalahnya?

Tip Singkat: Jika Anda ingin langsung ke fungsi dan menjalankannya, buka “Buat fungsi gesek khusus”.

Tantangan dalam Menemukan Elemen dengan Kemalasan

Saat menjalankan pengujian UI otomatis untuk iOS, penting untuk dicatat bahwa pada dasarnya kami berkomitmen pada apa yang disediakan oleh hierarki akses aplikasi. Hirarki akses, dalam hal iOS dan XCUITest, Adalah tampilan teks dari antarmuka aplikasi. Inilah yang kami uji saat menggunakan fungsi klaim untuk memeriksa elemen dalam pengujian UI otomatis kami.

Ini secara efektif adalah sumber kebenaran kami, dan elemen kode dalam aplikasi yang didorong dapat dimasukkan, dihapus, atau dihapus dari hierarki dengan mengubah statusnya sebagai objek akses. Masalah dengan tampilan dan tumpukan yang dimuat dengan malas adalah bahwa elemen yang diharapkan mungkin atau mungkin tidak dimuat. Jika belum dimuat, mungkin ada potensi, tetapi sejauh menyangkut pengujian UI Anda, ini tidak terjadi. Kita membutuhkan cara untuk menemukan apa yang kita butuhkan.

Contoh hierarki akses: LazyVStack vs. VStack

Hirarki akses untuk program yang akan kita uji ditunjukkan di atas. Hirarki ini mewakili apa yang diketahui dari tumpukan yang berisi sel-sel hijau. Saat mengambil snapshot hierarki ini, kami berada dalam status program yang sama persis untuk VStacks yang malas dan VStacks yang dimuat secara normal. Kecuali, satu memberikan lebih banyak informasi.

Contoh kami di sini berwarna abu-abu dan mencantumkan semua 99 elemen di VStack, sedangkan bagian atas hitam hanya mencantumkan item yang dimuat dalam daftar. LazyVStack. Untuk tujuan eksperimental, akan sangat mudah untuk memeriksa keberadaan sel ‘n’ di VStack normal, semuanya dimuat! Namun, sangat tidak mungkin Anda akan menghadapi situasi ujian yang begitu baik di dunia nyata.

Target

  • Bagaimana menemukan sel tanpa beban?: Kami akan menemukannya dengan menyeret jari kami ke arah elemen yang diharapkan. Melakukannya memperbarui hierarki.
  • Bagaimana menemukannya aman?: Kami membuat metode kustom, dapat disesuaikan, drag-and-drop yang mencari elemen target kami hingga ditemukan.

Alasannya adalah kami ingin membuat fungsi gesek khusus versus menggunakan yang sudah ada swipeDirection() Fungsinya adalah menggunakan default untuk memaksa kita mengkode satu set ketukan sebelum kita mencapai nilai yang diharapkan. Sebagai gantinya, kami menginginkan sesuatu yang dapat mensimulasikan perilaku pengguna dan menemukan elemen yang kami inginkan.

Kode sumber program ini untuk simulasi tersedia di sini.

Keakraban dengan aplikasi

Program ini (GIF di bawah) memiliki 4 bagian utama, yang semuanya terkait dan contoh topik yang telah kami temukan.

  1. Tajuk Teks Biasa “Tampilan Gulir Kustom Saya”
  2. MalasVStack (hijau)
  3. MalasHStack (merah)
  4. Tombol gulir otomatis masing-masing; Awal tumpukan hijau, akhir tumpukan hijau, awal tumpukan merah, akhir tumpukan merah.

Aplikasi ini memberi kami taman bermain untuk menguji kinerja ayunan kami di semua 4 arah.

Tetapkan lingkungan pengujian kami

Di bawah ini adalah kode awal, yang juga dapat ditemukan di direktori utama dari tautan tertaut di atas. Di sini kami menyiapkan templat desain model objek halaman yang sangat sederhana sebelum melanjutkan eksperimen.

Jika Anda ingin langsung ke kode terakhir, periksa direktori “Selesai” dari repositori tertaut.

Di sini kami bekerja dengan 3 kelas utama:

  1. LazyLoadUITests: Kelas UI pengujian kami tempat fungsi pengujian kami hidup dan berjalan.
  2. BasePage: Halaman dasar dengan mengacu pada program kami.
  3. LazyLoadPage: Diperpanjang dari BasePage Di mana segala sesuatu yang berhubungan dengan halaman LazyLoad hidup.

Ini adalah contoh yang sangat cepat dari POM (model objek halaman). Uraian tingkat atas POM adalah sebagai berikut: Simpan semua yang terkait dengan deklarasi elemen dan pengambilan fitur di kelas halaman (BasePagekan LazyLoadPageDengan bantuan kelas halaman, lepaskan kelas pengujian UI untuk menangani klaim.

Buat fungsi gesek kustom kami sendiri

  1. elementParameter pertama yang dikirim adalah elemen target, atau dengan kata lain elemen yang kita coba cari. Jika ditemukan, fungsi kembali dan jari yang menarik berhenti.
  2. maxAttempts: Berapa kali kita ingin menggambar di layar. Itu dapat disesuaikan dan mencegah situasi di mana tes macet selamanya mencari sesuatu yang tidak ada.
  3. velocity: Jumlah piksel yang akan kita lewati setiap detiknya.

Fungsi gesek khusus kami rusak swipeDirection() Performa yang disediakan oleh XCTest. Kami bermaksud untuk mengulangi operasi ini sampai salah satu dari keduanya terjadi. Elemen target telah ditemukan, atau kami telah mencapai jumlah upaya maksimum kami. Ini adalah elemen yang kita geser self Karena kami berkembang dari satu XCUIElement.

Ini berarti bahwa elemen yang ingin kita panggil fungsi bantu ini adalah tampilan / elemen yang berisi tampilan target. Juga, perhatikan bahwa setelah menemukan fungsinya, itu tidak mengembalikan apa pun … ini disengaja. Sangat mirip dengan aslinya swipeDirection()Fungsi, bekerja secara mandiri. Contoh aliran pengujian lengkap, menggunakan swipeDownTo(...) Dapat dilihat di bawah ini.

Dan di sini kinerjanya sempurna dalam aksi!

  • Mulailah dengan melihat bahwa nomor 1 itu ada.
  • Gunakan fungsi yang kami buat untuk menyeret jari Anda ke # 67 untuk menemukannya, lalu periksa.
  • Ketuk tombol bawah untuk membawa kami ke ujung tumpukan.
  • Periksa apakah nomor 99 ada.
  • Gunakan fungsi serupa untuk menggesek ke bawah untuk menemukan angka 17, lalu periksa.
  • Ketuk tombol atas untuk mengembalikan kami ke tumpukan teratas.
  • Periksa apakah nomor 1 ada.

Optimalkan dengan aman dan buat sesuai kebutuhan Anda! Saya menemukan ini sangat berguna dan menghindari kebutuhan untuk memperbarui tes shell secara konstan, yang gagal karena jumlah kunjungan meningkat. Dengan meningkatkan jumlah / ukuran sel dalam tampilan ini, ini adalah default swipeUp() Simulator tidak lagi membutuhkan tempat yang diperlukan untuk menyelesaikan eksperimen. Fungsi ini menawarkan beberapa fleksibilitas.

Tantangan

Anda mungkin memperhatikan bahwa saya tidak melengkapi bagian kiri / kanan bagian ini dalam artikel. Saya meninggalkan ini sebagai tantangan, meskipun itu akan tersedia jika Anda menginginkan solusi. completed Cabang.

tautan repo:

Kiat / Kiat:

  • Tempatkan breakpoint pada garis dalam fungsi pengujian dan masukkan po print(XCUIApplication().debugDescription) Untuk mencetak hierarki akses aplikasi, dan pengidentifikasi elemen akses.
  • Jika Anda mengalami kesalahan build saat mensimulasikan repositori, perbarui ID paket dan tim Anda di bagian “Tanda tangan dan Fitur”.

Itu tadi pembahasan tentang Ekstrak elemen malas untuk menguji UI di SwiftUI iOS | Oleh Andronicus Martushev | Juni 2022

, terimakasih telah berkunjung di website ini, semoga postingannya ada manfaatnya ya.

[ad_2]

Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.