Dan sekarang saatnya telah tiba ketika kebutuhan pengujian kami telah menjadi penuh sesak di desktop penguji. Jiwa bertanya ke awan. Tidak juga. Tidak juga.
Tujuan dan sasaran kami
(Bergegas pembaca, Anda dapat berakhir pada bagian berikutnya)
Kami sedang mengembangkan aplikasi keuangan untuk pasar luar negeri, yang tersedia dalam berbagai format: untuk browser desktop (situs web dan ekstensi untuk Google Chrome), untuk browser seluler, serta aplikasi hybrid untuk ponsel. Karena kekhasan aplikasi, kami memberikan perhatian khusus untuk menguji aplikasi pada berbagai konfigurasi dan perangkat. Bagi kami, operasi aplikasi yang stabil dan aman itu penting baik pada browser desktop klien kami maupun pada perangkat apa pun mereka.
Alasan untuk menemukan ladang perangkat berbasis cloud untuk pengujian bagi kami adalah perubahan dalam format pekerjaan dari kantor menjadi sepenuhnya jauh dan didistribusikan (antara kota dan negara). Artinya, jika sebelumnya untuk pengujian kita bisa merakit berbagai perangkat dalam banyak (secara harfiah) dan secara manual menguji perakitan berikutnya dalam satu tabel pada saat yang sama, sekarang menjadi mustahil untuk melakukan ini. Selain itu, dengan pertumbuhan fungsionalitas, untuk mengurangi pekerjaan manual, kami mengotomatiskan set regresi dari tes penting, yang berarti bahwa setelah perakitan kita harus dapat memanggil tes pada konfigurasi dan perangkat yang diinginkan, dan lebih baik untuk melakukan ini segera setelah perakitan berguling ke pementasan.
Dalam hal ini, solusi paling sederhana dan paling jelas adalah menggunakan emulator untuk Android dan simulator untuk perangkat iOS dalam pipa DevOps kami. Namun, yang relatif mudah diimplementasikan pada komputer yang berfungsi pengembang, itu menjadi tugas yang sulit dan mahal untuk digunakan di cloud. Agar emulator Android yang sama berfungsi cepat, server x86 dengan dukungan HAXVM diperlukan, dan untuk simulator iOS, hanya perangkat MacOS dengan xcode yang diperlukan. Tapi, sayangnya, bahkan setelah menyelesaikan masalah ini, pertanyaannya tetap dengan kesenjangan antara perilaku perangkat lunak pada emulator dan perangkat nyata. Sebagai contoh, setiap rilis kedua kami menangkap bug aneh pada perangkat Samsung yang tidak dapat diputar pada emulator. Yah, dan, tentu saja, "kesenangan" Cina langka yang eksotis dengan keunikan dan bug yang ingin saya tangkap pada tahap pengembangan.
Sebagai hasilnya, kami memiliki pemahaman tentang perlunya menggunakan cloud farm perangkat mobile, di mana kami dapat dengan cepat menjalankan pengujian kami dan, jika perlu, melakukan debug secara manual. Dan yang seluruh tim kami akan memiliki akses dari mana saja di dunia (kami senang bekerja bahkan ketika bepergian).
Pengujian kami ditulis dalam Python 3.7 (ini akan menjadi penting nanti), karena tumpukan kami menggunakan tox + pytest + Selenium + Appium, well, satu set kecil perpustakaan python yang berguna. Kami pasti akan menguji mesin pada Windows dan MacOS dengan Edge, Firefox, Chrome, browser Safari, serta perangkat Android dan iOS dengan browser dan aplikasi. Kami tidak memiliki banyak tes untuk setiap perangkat (kurang dari seribu), tetapi saat menguji dalam satu utas pada perangkat, set lengkap membutuhkan beberapa jam. Oleh karena itu, kriteria untuk memilih layanan bagi kami adalah:
- Pengujian API (Selenium / Appium)
- IOS, perangkat Android
- Mendukung pengujian peramban seluler
- Dukungan untuk mengunduh dan menguji aplikasi
- Perangkat referensi (GooglePixel (Android 9) dan iPhone X (iOS 12+))
- Debugging manual
- Logging (plus tangkapan layar, merekam video berjalan)
- Device Park dan Ketersediaan
- Waktu tunggu pengujian rata-rata
- Harga
Diinginkan, tetapi tidak perlu:
- Dukungan python tingkat layanan (apa pun artinya)
- Dukungan untuk perangkat desktop \ browser
Hasil riset pasar
Selama seminggu saya menjelajahi Internet dan mencoba berbagai layanan. Sebagian besar dari mereka menyediakan waktu luang untuk menguji peluang. Hasil penelitian saya, semakin banyak kesimpulan bersifat subyektif. Pendapat dan hasil Anda mungkin berbeda dari saya.
Di Habré saya menemukan artikel untuk 2017 yang didedikasikan untuk topik yang sama, tetapi sejak itu layanan baru telah muncul, dan tugas kami sedikit lebih ketat. Jadi, misalnya, layanan "enak" seperti Samsung Remote Test Lab, Firebase Test Lab, Xamarin Test Cloud, sayangnya, tidak cocok untuk kita.
Keluar dari game
Samsung Remote Test Lab
Tautan
Layanan ini memberikan peluang gratis untuk mencoba bekerja dengan berbagai perangkat Samsung, termasuk yang terbaru, termasuk TV atau jam tangan pintar di Tizen (batasan maksimum 10 jam per hari, per hari layanan ini memberikan 10 kredit gratis, yang setara dengan 2,5 jam per hari , sesi minimum adalah setengah jam (2 sks)). Ini sangat baik untuk debugging dan menemukan akar penyebab kesalahan pada perangkat tertentu, layanan ini bahkan menyediakan akses ke debugging jarak jauh (jembatan debug jarak jauh, akses ke konsol dan log sistem), tetapi, sayangnya, layanan ini tidak menyediakan akses API ke perangkat. Satu-satunya cara untuk "mengotomatisasi" adalah merekam tindakan pengguna dan kemudian memutarnya kembali di alat otomatisasi lokal Anda.
Laboratorium uji Firebase
Tautan
Layanan dari Google memungkinkan Anda untuk menguji aplikasi Anda di perangkat yang menjalankan Android dan iOS secara gratis (tidak cukup). Tetapi ada satu peringatan - layanan ini membutuhkan penggunaan alat otomasi asli (UIAtomator2 dan Espresso untuk Android dan XCTest untuk iOS), atau menggunakan spider otomatis (perayap) untuk Android - Robo Test dan Game Loop Test. Artinya, menggunakan UIAutomator dan Selenium sayangnya, tidak akan berfungsi. Adapun gratis - paket gratis dibatasi hingga 10 tes pada emulator dan lima pada perangkat nyata per hari. Jika Anda membutuhkan lebih banyak, maka untuk setiap jam tambahan Anda harus membayar $ 1 dan $ 5 masing-masing. Secara umum, untuk tugas-tugas kami, ini akan menjadi pilihan yang baik jika kami menulis tes dari awal, tetapi saya tidak merasa ingin mengerjakan ulang beberapa ratus tes sama sekali - ini hanya mahal. Dan ternyata kami harus sangat berbeda dalam pengujian antara versi desktop dan seluler, yang akan sangat menyulitkan dukungan.
Pusat aplikasi Visual Studio
Tautan
Mantan Cloud Tes Xamarin. Layanan ini akhirnya mendukung Appium dan memungkinkan pengujian pada ribuan perangkat yang berbeda. Tetapi, seperti dalam kasus dengan produk Microsoft lainnya, itu dipaku dengan kuat ke tumpukan asli, yang berarti bahwa untuk menggunakan layanan ini Anda akan memerlukan kehadiran VisualStudio dan persyaratan untuk menulis proyek dan tes secara eksklusif di Jawa. Tetapi jika Anda tiba-tiba memiliki tumpukan Java (dengan MS VS), maka harganya adalah $ 99 per slot perangkat per bulan, yang relatif liberal.
Layanan untuk dipilih
Farm Perangkat AWS
Tautan
Mungkin peternakan paling kuat untuk pengujian pada perangkat virtual dan nyata saat ini (lebih dari 2500 perangkat). Bagi kami, ini adalah layanan prioritas, karena layanan kami hanya dikerahkan di cloud AWS, di samping itu, harga per menit perangkat mulai dari 17 sen. AWS memungkinkan Anda untuk bekerja dengan kerangka kerja asli serta dengan Appium, Calabash, dan kerangka kerja pengujian otomatis lainnya. Selain pengujian otomatis, layanan ini menyediakan kemampuan untuk debug secara manual. Ya, 1000 menit "untuk mencoba" sangat menggoda. Namun, iblis, seperti biasa, ada dalam perinciannya. Dalam hal pengujian, AWS memiliki beberapa fitur.
Kami, seperti yang telah saya sebutkan, menggunakan Python 3.7, namun AWS Device Farm masih bekerja dengan Python 2.7.6 (lihat manual di sini ). Dan di luar kotak tidak tahu apa-apa tentang racun. Bagi kami, ini berarti tidak adanya sejumlah kemampuan dan kebutuhan untuk memproses bagian dari pengujian untuk memastikan kompatibilitas ke belakang, dan menciptakan lingkungan yang memintas racun. Selain itu, mekanisme yang agak aneh untuk mengunduh paket pengujian (arsip) juga menyiratkan mengunduh aplikasi untuk pengujian. Dalam kasus kami, jika kami menguji layanan kami melalui browser seluler, maka mengunduh aplikasi adalah langkah tambahan. Namun, Anda dapat mengganti aplikasi dengan "rintisan", dan membuat venv dengan Python 3.7 di lingkungan Python 2.7, dan kemudian membuat lingkungan dengan racun di dalamnya, yang ...

Amazon tidak akan menjadi Amazon jika semuanya bertumpu pada versi lama. Sebagai alternatif (dan tidak ada layanan yang memiliki kesempatan di bawah ini) AWS menyarankan menggunakan AWS Device Farm melalui AWS CLI (antarmuka baris perintah) (lihat manual di sini ). Artinya, kita dapat menghubungkan perangkat dari cloud sebagai perangkat nyata ke komputer kita dalam mode debug jarak jauh, namun, setelah sebelumnya mengganti adb dengan yang ditambal (tidak ada biner untuk linux dalam daftar binari, tapi saya yakin itu ada di alam). Yaitu, menyiapkan AWS CLI, untuk pengujian kami perlu menjalankan hanya beberapa perintah (karena kami tidak akan menggunakan GUI sebagai AWS Device Farm App).
Jika kita ingin menguji aplikasi, itu juga dapat diunduh melalui AWS SDK.
Tapi saya tidak memberi nuansa kunci di sini. Kami menemukan iblis lagi secara detail. Faktanya adalah bahwa opsi debugging jarak jauh hanya tersedia jika kita menggunakan paket Perangkat Pribadi untuk AWS. Pertama, fitur ini hanya tersedia atas permintaan (Anda perlu menulis surat ke Amazon), kedua, opsi tersedia untuk wilayah us-west-2, dan ketiga, pada kenyataannya, opsi ini mengembalikan kami ke skenario ketika kami memiliki server untuk menguji dengan satu set (atau setidaknya satu) perangkat yang terhubung dengannya. Keuntungannya jelas - kita dapat menggunakan perangkat ini secara eksklusif, yang jelas lebih aman dan lebih cepat, di sisi lain, kita kehilangan keunggulan utama - pilihan dan beragam perangkat.
Saya menyukai layanan ini secara keseluruhan, tetapi untuk tim kami, sayangnya, ada terlalu banyak "tapi" di dalamnya.
Bitbar
Tautan
Farm mobile berbasis cloud ini adalah yang pertama jatuh di mesin pencari. Dan tidak sia-sia. Ke depan, saya akan mengatakan bahwa layanan ini memiliki pilihan perangkat terbaik (hanya perangkat nyata) dan kinerja terbaik dalam satu tes dibandingkan dengan yang lain. Bitbar menawarkan layanan pengujian manual dan otomatis jarak jauh (menggunakan Appium dan kerangka kerja lainnya), dan juga, jika diinginkan, memungkinkan Anda untuk menggunakan sesuatu yang mirip dengan perayap dari Firebase Test Lab (Robot Test) - AI TestBot. Keuntungan utama BitBar adalah jumlah utas pengujian yang tidak terbatas (yaitu, Anda dapat segera menguji aplikasi Anda pada ratusan perangkat) dengan memilih kumpulan perangkat yang diperlukan terlebih dahulu. Jika perangkat sibuk, yang lain akan dipilih sama, atau sesi akan antri. Pada akhir uji coba, log dihasilkan, catatan uji, hasilnya disimpan, dan pemberitahuan dikirim ke pos. Meskipun ada peluang untuk mengkonfigurasi interaksi dengan alat CI / CD yang berbeda. Layanan ini juga menyediakan kemampuan untuk menguji browser desktop dalam resolusi yang berbeda, dan jika diinginkan, buat, seperti pada AWS, perangkat pribadi Anda. Benar, Anda perlu membayar untuk semua chip ini - setiap menit pengujian akan dikenakan biaya $ 0,29.

Proses pengaturannya sederhana, seperti interaksi dua jari dengan aspal:
Contoh kode from appium import webdriver """ ... """ com_executor = 'https://appium.bitbar.com/wd/hub' desired_capabilities = { 'deviceName': 'Motorola Google Nexus 6', 'deviceId': 'FA7AN1A00253', 'newCommandTimeout': 12000, 'browserName': 'Chrome',
Kobiton
Tautan
Layanan lain yang menyediakan layanan pengujian pada perangkat nyata. Pilihan perangkat lebih sederhana daripada Bitbar (350+), ketersediaan perangkat juga lebih sedikit. Secara umum, ini sangat mirip dalam fungsi dasarnya dengan BitBar, memungkinkan pengujian manual dan otomatis (menggunakan Appium - di sini tanpa memilih kerangka kerja). Tidak ada cara untuk menguji pada browser desktop. Layanan ini juga memungkinkan Anda untuk mengatur pengujian dengan jumlah sesi dan perangkat yang tidak terbatas, tetapi Anda tidak dapat membuat kumpulan perangkat di sini. Harga layanan ini sangat liberal - dari $ 0,10 per menit pengujian tambahan, tetapi selama masa percobaan saya perhatikan beberapa ketidakstabilan layanan - Internet sering jatuh pada perangkat, setelah perangkat digantung. Juga, jika perangkat sibuk atau dicadangkan, maka semua tes Anda yang berjalan akan gagal. Artinya, tidak seperti Bitbar, tidak ada antrian dari sesi. Benar, ini dapat diatur dengan biaya rendah. Kobiton memiliki API kecilnya sendiri.

Pengaturannya juga sangat sederhana, tidak seperti bitbar, hampir Appium asli.
Contoh kode import base64 from time import sleep from appium import webdriver import requests """ ... """
Browserstack
Tautan
BrowserStack tua yang bagus. Banyak hal yang ditulis tentang dia dan banyak yang menggunakannya. Ya, ini memungkinkan pengujian tidak hanya pada browser yang berbeda, tetapi juga pada perangkat yang berbeda. Baik dalam mode manual dan menggunakan Selenium / Appium. Bergantung pada kebutuhan Anda - pada browser seluler atau menggunakan aplikasi Anda. Dalam hal kemampuan, semuanya sama dengan dua layanan di atas, tetapi tidak seperti mereka, sudah ada batasan jumlah sesi simultan. Benar, sebaliknya, bayar $ 199 per bulan dan uji waktu tidak terbatas. Ada plugin untuk Jenkins, Travis CI, TeamCity, API yang kaya, log yang sangat baik, dan banyak pilihan perangkat dan browser desktop pada konfigurasi yang berbeda. Benar, tergantung pada apa yang Anda uji, pengaturan akan bervariasi - untuk browser pengujian (bahkan yang mobile) hub Selenium digunakan, dan untuk aplikasi - hub Appium. Selain itu, untuk menguji aplikasi Anda harus membayar secara terpisah. Untuk menguji kedua browser dan aplikasi seluler, Anda harus membayar $ 199 dan $ 159 (harga untuk satu perangkat untuk pengujian pada saat yang bersamaan).

Kode Sampel untuk Aplikasi from appium import webdriver """ ... """ com_executor = 'https://USERNAME:API_KEY@hub-cloud.browserstack.com/wd/hub' desired_capabilities = {'device': 'Google Pixel', 'deviceName': 'Google Pixel', 'app': app_name, 'realMobile': 'true', 'os_version': '8.0', 'name': 'Bstack-[Python] Sample Test' } driver = webdriver.Remote(com_executor, desired_capabilities) """ ... """
Kode sampel untuk peramban seluler from selenium import webdriver """ ... """ com_executor = 'http://USERNAME:API_KEY@hub.browserstack.com:80/wd/hub' desired_capabilities = {'device': 'Google Pixel', 'deviceName': 'Google Pixel', 'browserName': 'Chrome', 'realMobile': 'true', 'os_version': '8.0', 'name': 'Bstack-[Python] Sample Test' } driver = webdriver.Remote(com_executor, desired_capabilities) """ ... """
Eksperimental

Tautan
Layanan lain yang menyediakan kemampuan untuk menguji secara manual dan otomatis perangkat seluler dan browser desktop menggunakan Appium, Selenium dan kerangka kerja lainnya. Seperti dalam kasus BrowserStack, jumlah sesi simultan terbatas, tetapi harganya sedikit berbeda - untuk pengujian aplikasi seluler, layanan meminta $ 199 per bulan, dan untuk pengujian lintas-browser hanya $ 39 (untuk satu sesi simultan). Selain itu, seperti Bitbar dengan AWS, Anda dapat membangun laboratorium pribadi Anda sendiri dengan perangkat yang, bagaimanapun, dapat dicampur dengan cloud publik dari ribuan perangkat, emulator dan browser dari berbagai versi dan platform (MacOS, Windows), jika diinginkan. Dari fitur-fitur menarik - ketersediaan ekstensi untuk IntelliJ dan Eclipse, alat Appium Studio sendiri, yang memungkinkan Anda untuk menggunakan fungsi canggih perangkat seperti berinteraksi dengan FaceID, kontrol suara, pemindaian barcode, pengaturan kualitas komunikasi, lokasi geografis dan banyak lagi. Dari minus, saya dapat menyebutkan satu set perangkat aneh untuk masa percobaan, tarif draconian untuk periode percobaan, serta persyaratan untuk menggunakan surat perusahaan (gmail tidak akan bekerja).

Contoh kode from appium import webdriver """ ... """ com_executor = 'https://Uhttps://cloud.seetest.io/wd/hub' desired_capabilities = {"deviceName": "iPhone X", "accessKey": API_KEY, "platformName": "ios", "deviceQuery": "'@os='ios' and @version='12.1.3' and @category='PHONE'", } driver = webdriver.Remote(com_executor, desired_capabilities) """ ... """
Saucelab
Tautan
Salah satu layanan pengujian cloud tertua. Hampir 400 perangkat nyata yang berbeda, berbagai pilihan simulator dan emulator, termasuk emulator atipikal dari perangkat Samsung, ada browser desktop untuk berbagai OS, termasuk Linux. Otomasi pada Appium / Selenium dan kerangka kerja asli. Keuntungan utama dari layanan ini adalah adanya koleksi konfigurasi yang luas, termasuk OS lama, browser, perangkat. SauceLabs juga memiliki batasan jumlah sesi simultan, tetapi di sini opsi termurah termasuk bukan hanya satu, tetapi dua sesi simultan. Apa yang tidak biasa: rencana tarif pada perangkat nyata dan pada emulator berbeda. Jadi, opsi termurah, yang mencakup dua sesi dengan 2000 menit pengujian per bulan pada emulator, akan menelan biaya $ 149, dan pada perangkat nyata sudah $ 349. Ada integrasi dengan CI / CD, Slack. Sayangnya, saya tidak dapat mencoba SauceLabs langsung, karena sayangnya, pendaftaran gagal, mungkin karena wilayah, tetapi saya tidak bisa mengatakannya dengan pasti.
Perfecto
Tautan
Penyedia pengujian cloud terbaru secara visual mirip dengan Experitest, tetapi tanpa fungsionalitas tingkat lanjut. Ada bahasa scripting yang sederhana. Ini sangat aneh, tetapi dalam layanan untuk tarif non-perusahaan (Perusahaan) tidak ada proposal untuk pengujian pada browser desktop, juga tidak mungkin untuk memantau pelaksanaan tes secara real time (hanya jika ini bukan pengujian manual). Sekitar seratus perangkat berbeda tersedia untuk pengujian. Ada integrasi dengan Jenkins, dan juga, yang menarik, dengan alat manajemen pengujian seperti HP ALM, IBM Rational, TFS. Paket tarif yang sangat aneh juga tersedia, seperti pengujian 5 jam per bulan (dalam hitungan menit sebanyak $ 0,33 (ini adalah layanan yang paling mahal)), meskipun dengan kemampuan untuk membeli paket dengan jam tambahan, tetapi sekali lagi, aneh bahwa tidak ada per menit atau setidaknya penagihan per jam setelah fakta. Adapun kemudahan penggunaan, selama periode percobaan hanya pengujian manual yang tersedia, serta laboratorium umum, sehingga semua peluncuran dari pengguna yang berbeda jatuh ke dalam satu tumpukan. Jadi tidak mungkin untuk menilai dengan tepat kenyamanan dan kecepatan layanan. Dapat dilihat bahwa layanan ini terutama berfokus pada klien perusahaan besar, sementara, setidaknya menurut informasi yang tersedia, kemampuan penyedia ini adalah yang paling sederhana dari semua yang telah saya uji.

Ringkasan Hasil
Dengan semua kriteria pemilihan, layanan sangat mirip, perbedaan antara layanan dalam kinerja dan harga mereka (jika tidak ada fitur, misalnya, seperti dalam kasus AWS). Oleh karena itu, kami akan meringkas data penelitian dalam sebuah tabel, melihat kecepatan layanan (memperhitungkan koneksi melalui US VPN), serta harga, untuk kenyamanan, membandingkan waktu pengujian bulanan rata-rata pada perangkat (5 rilis per bulan, 2 jam pengujian pada perangkat Android dan iOS = 20 jam). Sebagai nilai referensi, saya menggunakan data dari komputer lokal saya dengan emulator, lagi menghubungkannya untuk kemurnian percobaan melalui VPN di AS).
Kesimpulan
Sangat menarik bagi saya untuk meneliti dan memilih layanan yang tepat untuk tim kami. Secara umum, ada solusi untuk setiap selera dan untuk setiap tugas, dan layanan ternyata sangat mirip dalam hal karakteristik dan implementasi. Akibatnya, tergantung pada tugas Anda, saya akan merekomendasikan pilihan berikut:
Opsi A : Jika kecepatan verifikasi penting bagi Anda, dan Anda perlu memeriksa lusinan perangkat yang berbeda sekaligus, pilihan Anda adalah Bitbar .
Opsi B : Jika Anda memiliki prioritas pada hasil dari perangkat referensi, dan pengujian konfigurasi adalah sekunder (tetapi perlu) - pilihan Anda adalah BrowserStack . Ini hanya kasus kami, karena secara statistik - 90% dari semua kesalahan adalah kesalahan dari platform referensi dan perangkat (paling sering bug adalah umum untuk semua platform referensi sekaligus). 8% sisanya adalah kesalahan MS IE, dengan penolakan dukungan IE - 2% kesalahan MS Edge, dan 0,5% kesalahan pada konfigurasi tertentu.
Opsi B : Jika Anda tertarik untuk memeriksa kondisi khusus, seperti komunikasi berkualitas rendah, geolokasi atau Touch / FaceID, maka pilihan Anda adalah Experitest .
Tetapi dalam jangka panjang, jika perusahaan Anda menempati kantor besar, pekerjaan Anda adalah Penuh Waktu, maka, sebagai aturan, mengatur laboratorium Anda sendiri, bahkan mini-laboratorium dengan server untuk emulator dengan perangkat 2-3 yang terhubung, akan lebih murah dan lebih nyaman daripada menggunakan spesialis layanan.