
Hadirin
QA-engineer, penguji aplikasi mobile, otomatisasi.
Masalah
Selama pengujian aplikasi untuk Android (tidak hanya, tetapi lebih lanjut kami hanya akan berbicara tentang platform ini), Anda harus menginstal banyak rakitan produk / produk yang diuji. Proses ini membutuhkan waktu dan usaha, yang lebih efisien untuk dihabiskan untuk menemukan bug.
Pada artikel ini, kita akan melihat solusi yang ada, menulis sendiri dengan Python dan membandingkannya.
Solusi turnkey
Mungkin solusi paling populer untuk masalah ini saat ini disediakan oleh layanan Crashlytics, yang mencakup penginstal Beta.
Pertimbangkan proses instalasi aplikasi biasa menggunakan Crashlytics Beta:
- Kami menemukan ikon Beta (1) β lakukan ketuk (2) = aplikasi dimulai.
- Kami menemukan proyek yang diinginkan (3) β lakukan ketuk (4) = layar dengan daftar majelis terbuka.
- Temukan unit yang diinginkan (5) β lakukan ketuk βUnduhβ (6) = file instalasi diunduh ke perangkat.
- Layar ditampilkan dengan proposal untuk menginstal aplikasi β ketuk βInstalβ (7) = layar instalasi ditampilkan.
- Temukan aplikasi yang terinstal (8) β lakukan ketuk (9) = aplikasi dimulai; siap untuk diuji.
Jadi, untuk menginstal dan menjalankan satu aplikasi build menggunakan Crashlytics Beta, Anda perlu melakukan setidaknya sembilan tindakan. Kami akan fokus pada indikator-indikator ini dan mencoba membuat pemasang yang membutuhkan tindakan lebih sedikit untuk menyelesaikan masalah serupa.
Solusi khusus
Kami memilih Python sebagai bahasa pemrograman, karena cocok untuk tugas kami dan sangat populer, termasuk di antara para insinyur QA.
Untuk berinteraksi dengan Android, kami akan menggunakan adb, yang merupakan bagian dari SDK Android standar.
Untuk mengunduh file - Wget.
Dalam kasus kami, majelis dilaksanakan di TeamCity.
Sekarang mari kita beralih ke penulisan kode.
Pertama-tama, kita mengimpor modul subproses ke proyek, perlu untuk menjalankan perintah wget dan adb .
import subprocess
Tambahkan pengaturan yang diperlukan untuk Wget.
settings = {'user': 'βuser=__teamcity', 'password': 'βpassword=__teamcity', 'way': '____'}
Kami akan menginstal aplikasi dengan nomor build, jadi kami akan mengajarkan script untuk meminta parameter ini.
number = input(' β : ')
Katakanlah kita perlu menginstal dua rakitan sekaligus: tes dan pertempuran. Kami akan mengunduhnya dari TeamCity. Untuk melakukan ini, kami menemukan path lengkap ke file dengan membuka halaman layanan dan menemukan perakitan di artefak. URL pra-perakitan akan terlihat seperti ini:
https://teamcity.mysite.com/repository/app/_/_/myapp-_-_.apk
Di alamat, alih-alih nomor perakitan, Anda dapat melihat id, misalnya, / 1234: id /. Di sini kita akan menunjukkan bukan id, tetapi nomor perakitan.
Kami akan menulis fungsi untuk mengunduh kumpulan yang diberikan.
def download(type_b): url = 'http://teamcity.mysite.com/repository/app/{0}/{1}/myapp-{0}-{1}.apk'.format(number, type_b)
Kami akan menulis fungsi untuk menginstal dan menjalankan aplikasi. Pertama, hapus rakitan yang diinstal sebelumnya. Jangan lupa bahwa jika setidaknya satu aplikasi tidak ada di perangkat, skrip akan diakhiri dengan kesalahan. Untuk menghindari ini, kami akan mengabaikan kesalahan.
Dalam contoh imajiner ini, dua paket:
- com.myapp.prod
- com.myapp.test
Mulai Kegiatan:
- com.myapp.prod/com.myapp.StartActivity
- com.myapp.test / com.myapp.StartActivity
Paket dan nama aktivitas Anda akan berbeda.
def install(type_b): try:
Semua fungsi yang diperlukan ditulis. Sekarang mereka bisa diterapkan.
Selain itu, kami menambahkan handler untuk kasing ketika rakitan yang ditentukan tidak ada di TeamCity.
while True: try:
Skrip sudah siap. Kami menyimpannya, misalnya, dengan nama installer.py
Tambahkan alias, mis. Alias ββinst = 'python ~ / scripts / installer.py'
Periksa
Jadi, untuk menginstal satu unit menggunakan Crashlytics Beta, Anda perlu melakukan 9 tindakan. Sebagai perbandingan, kami mengukur indikator ini dalam skrip.
- Kami memulai skrip dengan perintah inst (1) = saran ditampilkan untuk mengatur nomor build.
- Setel nomor rakitan (2) = rakitan lama dihapus; Unduh, pasang dan luncurkan yang baru. Aplikasi siap untuk diuji.
Hasil
Beta (1 build) - 9 tindakan (tidak termasuk menghapus build lama).
Script Anda sendiri (sebanyak majelis yang Anda inginkan) - 2 tindakan.
Bonus tambahan dari solusi kustom adalah skala (menambah pemasangan beberapa produk ke sejumlah perangkat, dll.), Dan juga mudah beradaptasi dengan tugas pengujian otomatis.
Sumber