Bekerja dengan Appium dan AWS Device Farm - Device Farm AWS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan Appium dan AWS Device Farm

Bagian ini menjelaskan cara mengonfigurasi, mengemas, dan mengunggah pengujian Appium Anda ke Device Farm. Appium adalah alat open source untuk mengotomatiskan aplikasi web asli dan seluler. Untuk informasi lebih lanjut, lihatPengantar Appiumdi situs web Appium.

Untuk contoh aplikasi dan tautan ke pengujian yang berfungsi, lihatAplikasi Sampel Perkebunan Perangkat untuk AndroiddanAplikasi Sampel Perangkat Pertanian untuk iOSdi atasGitHub.

Dukungan versi

Dukungan untuk berbagai kerangka kerja dan bahasa pemrograman tergantung pada bahasa yang digunakan.

Device Farmmendukung semua versi server Appium 1.x. Anda dapat memilih versi Appium dengan menggunakanavmperintah. Misalnya, untuk menggunakan server Appium versi 1.9.1, tambahkan perintah ini ke file YAMM spesifikasi pengujian Anda:

phases: install: commands: # To install a newer version of Appium such as version 1.9.1: - export APPIUM_VERSION=1.9.1 - avm $APPIUM_VERSION - ln -s /usr/local/avm/versions/$APPIUM_VERSION/node_modules/.bin/appium /usr/local/avm/versions/$APPIUM_VERSION/node_modules/appium/bin/appium.js

Untuk menggunakan semua fitur kerangka kerja, seperti anotasi, pilih lingkungan pengujian khusus, dan gunakan AWS CLI atauDevice Farmkonsol untuk mengunggah spesifikasi pengujian khusus.

Java (TestNG)

Saat ini, Device Farm mendukung Java 8 untuk menjalankan pengujian Appium Java.

Java (JUnit)

Saat ini, Device Farm mendukung Java 8 untuk menjalankan pengujian Appium Java.

Node.JS

Anda dapat menggunakan versi Node.js apa pun saat menjalankan pengujian Appium Node.js di Device Farm. Tentukan versi Node.js dalam file YAMM spesifikasi pengujian.

Python

Dalam mode standar, Device Farm mendukung Python versi 2.7 untuk menjalankan pengujian. Dalam mode kustom, Python 2.7 dan Python 3 (3.7) tersedia.

Ruby

Anda dapat menggunakan versi Ruby apa pun saat menjalankan pengujian Appium Ruby di Device Farm. Tentukan versi Ruby (misalnya, 2.5.1) dalam file YAMM spesifikasi pengujian.

Konfigurasikan paket pengujian Appium Anda

Gunakan petunjuk berikut untuk mengonfigurasi paket pengujian Anda.

Java (JUnit)
  1. Memodifikasipom.xmluntuk mengatur kemasan ke file JAR:

    <groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
  2. Memodifikasipom.xmluntuk menggunakanmaven-jar-pluginuntuk membangun tes Anda ke dalam file JAR.

    Plugin berikut membangun kode sumber pengujian Anda (apa pun disrc/testdirektori) ke dalam file JAR:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
  3. Memodifikasipom.xmluntuk menggunakanmaven-dependency-pluginuntuk membangun dependensi sebagai file JAR.

    Plugin berikut menyalin dependensi Anda kedependency-jarsdirektori:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
  4. Simpan perakitan XHTML berikut kesrc/main/assembly/zip.xml.

    XHTML berikut adalah definisi perakitan yang, ketika dikonfigurasi, menginstruksikan Maven untuk membuat file.zip yang berisi segala sesuatu di root direktori keluaran build Anda dandependency-jarsdirektori:

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
  5. Memodifikasipom.xmluntuk menggunakanmaven-assembly-pluginuntuk mengemas tes dan semua dependensi ke dalam satu file.zip.

    Plugin berikut menggunakan perakitan sebelumnya untuk membuat file.zip bernamazip-with-dependenciesdi direktori keluaran build setiap saatmvn packagedijalankan:

    <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
catatan

Jika Anda menerima kesalahan yang mengatakan anotasi tidak didukung di 1.3, tambahkan berikut ini kepom.xml:

<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
Java (TestNG)
  1. Memodifikasipom.xmluntuk mengatur kemasan ke file JAR:

    <groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
  2. Memodifikasipom.xmluntuk menggunakanmaven-jar-pluginuntuk membangun tes Anda ke dalam file JAR.

    Plugin berikut membangun kode sumber pengujian Anda (apa pun disrc/testdirektori) ke dalam file JAR:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
  3. Memodifikasipom.xmluntuk menggunakanmaven-dependency-pluginuntuk membangun dependensi sebagai file JAR.

    Plugin berikut menyalin dependensi Anda kedependency-jarsdirektori:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
  4. Simpan perakitan XHTML berikut kesrc/main/assembly/zip.xml.

    XHTML berikut adalah definisi perakitan yang, ketika dikonfigurasi, menginstruksikan Maven untuk membuat file.zip yang berisi segala sesuatu di root direktori keluaran build Anda dandependency-jarsdirektori:

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
  5. Memodifikasipom.xmluntuk menggunakanmaven-assembly-pluginuntuk mengemas tes dan semua dependensi ke dalam satu file.zip.

    Plugin berikut menggunakan perakitan sebelumnya untuk membuat file.zip bernamazip-with-dependenciesdi direktori keluaran build setiap saatmvn packagedijalankan:

    <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
catatan

Jika Anda menerima kesalahan yang mengatakan anotasi tidak didukung di 1.3, tambahkan berikut ini kepom.xml:

<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
Node.JS

Untuk mengemas pengujian Appium Node.js Anda dan mengunggahnya ke Device Farm, Anda harus menginstal yang berikut ini di mesin lokal Anda:

  • Manajer Versi Node (nvm)

    Gunakan alat ini saat Anda mengembangkan dan mengemas pengujian Anda sehingga dependensi yang tidak perlu tidak disertakan dalam paket pengujian Anda.

  • Node.js

  • npm-bundle (diinstal secara global)

  1. Verifikasi bahwa nvm ada

    command -v nvm

    Anda harus melihatnvmsebagai output.

    Untuk informasi lebih lanjut, lihatnvmdi atasGitHub.

  2. Jalankan perintah ini untuk menginstal Node.js:

    nvm install node

    Anda dapat menentukan versi tertentu dari Node.js:

    nvm install 11.4.0
  3. Verifikasi bahwa versi Node yang benar sedang digunakan:

    node -v
  4. Instalnpm-bundlesecara global:

    npm install -g npm-bundle
Python
  1. Kami sangat menyarankan agar Anda mengaturVirtualenv Pythonuntuk mengembangkan dan mengemas pengujian sehingga dependensi yang tidak perlu tidak disertakan dalam paket aplikasi Anda.

    $ virtualenv workspace $ cd workspace $ source bin/activate
    Tip
    • Jangan membuat virtualenv Python dengan--system-site-packagesopsi, karena mewarisi paket dari direktori paket situs global Anda. Ini dapat mengakibatkan termasuk dependensi di lingkungan virtual Anda yang tidak diperlukan oleh pengujian Anda.

    • Anda juga harus memverifikasi bahwa pengujian Anda tidak menggunakan dependensi yang bergantung pada pustaka asli, karena pustaka asli ini mungkin tidak ada pada instance tempat pengujian ini dijalankan.

  2. Instalpy.testdi lingkungan virtual Anda.

    $ pip install pytest
  3. Instal klien Appium Python di lingkungan virtual Anda.

    $ pip install Appium-Python-Client
  4. Kecuali Anda menentukan jalur yang berbeda dalam mode kustom, Device Farm mengharapkan pengujian Anda disimpan ditests/. Anda dapat menggunakanfinduntuk menampilkan semua file di dalam folder:

    $ find tests/

    Konfirmasikan bahwa file-file ini berisi rangkaian pengujian yang ingin Anda jalankan di Device Farm

    tests/ tests/my-first-tests.py tests/my-second-tests/py
  5. Jalankan perintah ini dari folder ruang kerja lingkungan virtual Anda untuk menampilkan daftar pengujian Anda tanpa menjalankannya.

    $ py.test --collect-only tests/

    Konfirmasikan bahwa output menunjukkan pengujian yang ingin Anda jalankan di Device Farm.

  6. Bersihkan semua file yang di-cache di bawah folder tests/Anda:

    $ find . -name '__pycache__' -type d -exec rm -r {} + $ find . -name '*.pyc' -exec rm -f {} + $ find . -name '*.pyo' -exec rm -f {} + $ find . -name '*~' -exec rm -f {} +
  7. Jalankan perintah berikut di ruang kerja Anda untuk menghasilkan file requirements.txt:

    $ pip freeze > requirements.txt
Ruby

Untuk mengemas tes Appium Ruby Anda dan mengunggahnya ke Device Farm, Anda harus menginstal yang berikut ini di mesin lokal Anda:

  • Manajer Versi Ruby (RVM)

    Gunakan alat baris perintah ini saat Anda mengembangkan dan mengemas pengujian Anda sehingga dependensi yang tidak perlu tidak disertakan dalam paket pengujian Anda.

  • Ruby

  • Bundler (Permata ini biasanya dipasang dengan Ruby.)

  1. Instal kunci yang diperlukan, RVM, dan Ruby. Untuk instruksi, lihatInstalasi RVMdi situs web RVM.

    Setelah instalasi selesai, muat ulang terminal Anda dengan keluar dan kemudian masuk lagi.

    catatan

    RVM dimuat sebagai fungsi untuk shell bash saja.

  2. Verifikasi bahwarvmdiinstal dengan benar

    command -v rvm

    Anda harus melihatrvmsebagai output.

  3. Jika Anda ingin menginstal versi Ruby tertentu, seperti2.5.3, jalankan perintah berikut:

    rvm install ruby 2.5.3 --autolibs=0

    Verifikasi bahwa Anda menggunakan versi Ruby yang diminta:

    ruby -v
  4. Konfigurasikan bundler untuk mengkompilasi paket untuk platform pengujian yang Anda inginkan:

    bundle config specific_platform true
  5. Perbarui file.lock Anda untuk menambahkan platform yang diperlukan untuk menjalankan pengujian.

    • Jika Anda mengompilasi pengujian untuk dijalankan di perangkat Android, jalankan perintah ini untuk mengonfigurasi Gemfile agar menggunakan dependensi untuk host pengujian Android:

      bundle lock --add-platform x86_64-linux
    • Jika Anda mengompilasi pengujian untuk dijalankan di perangkat iOS, jalankan perintah ini untuk mengonfigurasi Gemfile agar menggunakan dependensi untuk host uji iOS:

      bundle lock --add-platform x86_64-darwin
  6. Thebundlerpermata biasanya diinstal secara default. Jika tidak, instal:

    gem install bundler -v 2.3.26

Buat file paket uji zip

Awas

Di Device Farm, struktur folder file dalam paket pengujian zip Anda penting, dan beberapa alat arsip akan mengubah struktur file ZIP Anda secara implisit. Kami menyarankan Anda mengikuti utilitas baris perintah yang ditentukan di bawah ini daripada menggunakan utilitas arsip yang dibangun ke dalam pengelola file desktop lokal Anda (seperti Finder atau Windows Explorer).

Sekarang, bundel pengujian Anda untuk Device Farm.

Java (JUnit)

Bangun dan kemas pengujian Anda:

$ mvn clean package -DskipTests=true

Berkaszip-with-dependencies.zipakan dibuat sebagai hasilnya. Ini adalah paket tes Anda.

Java (TestNG)

Bangun dan kemas pengujian Anda:

$ mvn clean package -DskipTests=true

Berkaszip-with-dependencies.zipakan dibuat sebagai hasilnya. Ini adalah paket tes Anda.

Node.JS
  1. Periksa proyek Anda.

    Pastikan Anda berada di direktori root proyek Anda. Anda bisa melihatpackage.jsondi direktori root.

  2. Jalankan perintah ini untuk menginstal dependensi lokal Anda.

    npm install

    Perintah ini juga menciptakannode_modulesfolder di dalam direktori Anda saat ini.

    catatan

    Pada titik ini, Anda harus dapat menjalankan pengujian Anda secara lokal.

  3. Jalankan perintah ini untuk mengemas file di folder Anda saat ini ke dalam file*.tgz. File ini diberi nama menggunakannameproperti di Andapackage.jsonberkas.

    npm-bundle

    File tarball (.tgz) ini berisi semua kode dan dependensi Anda.

  4. Jalankan perintah ini untuk menggabungkan tarball (*.tgz file) yang dihasilkan pada langkah sebelumnya ke dalam satu arsip zip:

    zip -r MyTests.zip *.tgz

    Ini adalahMyTests.zipfile yang Anda unggah ke Device Farm dalam prosedur berikut.

Python
Python 2

Buat arsip paket Python yang diperlukan (disebut “wheelhouse”) menggunakan pip:

$ pip wheel --wheel-dir wheelhouse -r requirements.txt

Kemas ruang kemudi, pengujian, dan persyaratan pip Anda ke dalam arsip zip untuk Device Farm:

$ zip -r test_bundle.zip tests/ wheelhouse/ requirements.txt
Python 3

Kemas pengujian dan persyaratan pip Anda ke dalam file zip:

$ zip -r test_bundle.zip tests/ requirements.txt
Ruby
  1. Jalankan perintah ini untuk membuat lingkungan Ruby virtual:

    # myGemset is the name of your virtual Ruby environment rvm gemset create myGemset
  2. Jalankan perintah ini untuk menggunakan lingkungan yang baru saja Anda buat:

    rvm gemset use myGemset
  3. Periksa kode sumber Anda.

    Pastikan Anda berada di direktori root proyek Anda. Anda bisa melihatGemfiledi direktori root.

  4. Jalankan perintah ini untuk menginstal dependensi lokal Anda dan semua permata dariGemfile:

    bundle install
    catatan

    Pada titik ini, Anda harus dapat menjalankan pengujian Anda secara lokal. Gunakan perintah ini untuk menjalankan pengujian secara lokal:

    bundle exec $test_command
  5. Paket permata Anda divendor/cachefolder.

    # This will copy all the .gem files needed to run your tests into the vendor/cache directory bundle package --all-platforms
  6. Jalankan perintah berikut untuk menggabungkan kode sumber Anda, bersama dengan semua dependensi Anda, ke dalam satu arsip zip:

    zip -r MyTests.zip Gemfile vendor/ $(any other source code directory files)

    Ini adalahMyTests.zipfile yang Anda unggah ke Device Farm dalam prosedur berikut.

Unggah paket pengujian Anda ke Device Farm

Anda dapat menggunakan konsol Device Farm untuk mengunggah pengujian Anda.

  1. Masuk ke konsol Device Farm dihttps://console.aws.amazon.com/devicefarm.

  2. Pada panel navigasi Device Farm, pilihPengujian Perangkat Seluler, lalu pilihProyek.

  3. Jika Anda adalah pengguna baru, pilihProyek baru, masukkan nama untuk proyek, lalu pilihKirim.

    Jika Anda sudah memiliki proyek, Anda dapat memilihnya untuk mengunggah tes Anda ke sana.

  4. Buka proyek Anda, lalu pilihBuat run baru.

  5. Untuk pengujian Android dan iOS asli

    PadaPilih aplikasihalaman, pilihAplikasi Seluler, lalu pilihPilih Fileuntuk mengunggah paket aplikasi yang dapat didistribusikan.

    catatan

    File harus berupa Android.apkatau iOS.ipa. Aplikasi iOS harus dibangun untuk perangkat nyata, bukan Simulator.

    Untuk pengujian aplikasi Web Seluler

    PadaPilih aplikasihalaman, pilihAplikasi Web.

  6. Berikan tes Anda nama yang sesuai. Ini mungkin berisi kombinasi spasi atau tanda baca.

  7. Pilih Selanjutnya.

  8. PadaKonfigurasikanhalaman, diSetup kerangka ujibagian, pilihAppiumbahasa, makaPilih File.

  9. Jelajahi dan pilih file.zip yang berisi pengujian Anda. File.zip harus mengikuti format yang dijelaskan dalamKonfigurasikan paket pengujian Appium Anda.

  10. Pilih salah satuJalankan pengujian Anda di lingkungan standar kamiatauJalankan pengujian Anda di lingkungan khusus. Lingkungan standar memiliki pelaporan terperinci per pengujian, sementara lingkungan khusus mampu menjalankan harness pengujian khusus yang dibangun di atas kerangka kerja apa pun.

    Menggunakan lingkungan khusus memungkinkan kontrol penuh atas penyiapan pengujian, pembongkaran, dan pemanggilan, serta memilih versi runtime dan server Appium tertentu. Beberapa fitur bahasa (seperti Python 3 atau eksekusi TestNG kustom) hanya tersedia melalui lingkungan khusus:

    Java (JUnit)

    JUnit berjalan di lingkungan standar dan kustom tanpa masalah

    Java (TestNG)

    Memanggil TestNG menggunakantestng.xmlkonfigurasi hanya tersedia dalam Mode Kustom.

    Node.JS

    Mode Kustom memungkinkan Anda menentukan parameter tambahan atau menggunakan pemanggilan yang tidak standar dari kerangka pengujian Anda.

    Python

    Python 2.7 didukung di lingkungan standar dan menggunakan Mode Kustom. Ini adalah default di keduanya saat menentukan Python.

    Python 3 hanya didukung dalam Mode Kustom. Untuk memilih Python 3 sebagai versi python Anda, ubah spesifikasi pengujian untuk mengaturPYTHON_VERSIONke 3, seperti yang ditunjukkan di sini:

    phases: install: commands: # ... - export PYTHON_VERSION=3 - export APPIUM_VERSION=1.14.2 # Activate the Virtual Environment that Device Farm sets up for Python 3, then use Pip to install required packages. - cd $DEVICEFARM_TEST_PACKAGE_PATH - . bin/activate - pip install -r requirements.txt # ...
    Ruby

    Dalam Mode Kustom, Anda dapat menentukan versi Ruby tertentu denganrvmperintah:

    phases: install: commands: - rvm install version --autolibs=0 - rvm use version
  11. PilihBerikutnya, dan kemudian ikuti instruksi untuk memilih perangkat dan mulai menjalankan. Untuk informasi selengkapnya, lihat Buat uji coba di Device Farm.

catatan

Device Farm tidak mengubah pengujian Appium.

Ambil tangkapan layar pengujian Anda (Opsional)

Anda dapat mengambil tangkapan layar sebagai bagian dari pengujian Anda.

Device Farm menetapkanDEVICEFARM_SCREENSHOT_PATHproperti ke jalur yang sepenuhnya memenuhi syarat pada sistem file lokal tempat Device Farm mengharapkan tangkapan layar Appium disimpan. Direktori khusus uji tempat tangkapan layar disimpan ditentukan saat runtime. Tangkapan layar ditarik ke laporan Device Farm Anda secara otomatis. Untuk melihat tangkapan layar, di konsol Device Farm, pilihTangkapan layarbagian.

Untuk informasi lebih lanjut tentang mengambil tangkapan layar dalam tes Appium, lihatAmbil Screenshotdalam dokumentasi Appium API.