Jalankan Pengujian UI menggunakan REST API App Center
Penting
Visual Studio App Center dijadwalkan untuk dihentikan pada 31 Maret 2025. Meskipun Anda dapat terus menggunakan Visual Studio App Center hingga sepenuhnya dihentikan, ada beberapa alternatif yang direkomendasikan yang mungkin Anda pertimbangkan untuk bermigrasi.
Pelajari selengkapnya tentang garis waktu dukungan dan alternatif.
Contoh ini menunjukkan cara mengunggah paket aplikasi, biner pengujian, dan pengujian UI antrean menggunakan API kami.
- Gunakan metode BUAT POST uji coba untuk menerima ID uji coba yang akan Anda gunakan nanti untuk Header Respons.
Permintaan Sampel https://api.appcenter.ms/v0.1/apps/MSKASANI/DroidAppSampleXamarin/test_runs
- Buat hash file untuk setiap file yang ingin Anda unggah ke Pengujian App Center.
Anda bisa mendapatkan hash file dengan menjalankan perintah shasum
. Utilitas ini tersedia di komputer Mac/Linux secara default. Untuk Windows, pertimbangkan untuk menginstal Git Bash dan gunakan sebagai gantinya.
Contoh
ankasani@AK--PC MINGW64 ~/source/repos/AppXamarin/sampleapp-xamarin-master/UITest/bin/Debug/testdlls (master)
$ shasum nunit.framework.dll
a2d0dbc920fb3790d4d625e5c47be042ca32c051 *nunit.framework.dll
$ shasum Xamarin.UITest.dll
c1f7342d05a9d95580a507156207e6f9283a2c8d *Xamarin.UITest.dll
$ shasum UITest.dll
542153902bc889d0d85a83b005854b5ebd9864f1 *UITest.dll
$ shasum com.mobilecenter.sampleappxamarin.apk
3f3677f8db9ba7c07ac77d4f01f912e518a6ca16 *com.mobilecenter.sampleappxamarin.apk
- Buat penyimpanan untuk file menggunakan POST dan nilai hash yang dihitung dari langkah sebelumnya.
Permintaan Sampelhttps://api.appcenter.ms/v0.1/apps/MSKASANI/DroidAppSampleXamarin/test_runs/fb0cc373-aa4a-455f-b083-4fc1afa87f2e/hashes/batch
file_type - app-file untuk apk\ipa dan test-file untuk rakitan pengujian/file terkait pengujian.
checksum - nilai hash dari langkah 2
relative_path - Anda dapat menentukan Nama File dengan Ekstensi, tidak perlu menentukan jalur lengkap.
Badan JSON terlihat seperti:
[
{
"file_type":"app-file",
"checksum":"3f3677f8db9ba7c07ac77d4f01f912e518a6ca16",
"relative_path":"com.mobilecenter.sampleappxamarin.apk"
},
{
"file_type":"test-file",
"checksum":"a2d0dbc920fb3790d4d625e5c47be042ca32c051",
"relative_path":"nunit.framework.dll"
},
{
"file_type":"test-file",
"checksum":"c1f7342d05a9d95580a507156207e6f9283a2c8d",
"relative_path":"Xamarin.UITest.dll"
},
{
"file_type":"test-file",
"checksum":"542153902bc889d0d85a83b005854b5ebd9864f1",
"relative_path":"UITest.dll"
}
]
Responsnya seperti berikut:
[
{
"fileType": "app-file",
"checksum": "3f3677f8db9ba7c07ac77d4f01f912e518a6ca16",
"relativePath": "com.mobilecenter.sampleappxamarin.apk",
"uploadStatus":
{
"statusCode": 412,
"location": "https://testcloud.xamarin.com/v0.1/direct_uploads?token=ZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5LmV5SjBaWE4w%0AWDNKMWJsOXBaQ0k2SWpjNU5EVmpNbUZtTFRFeFpXTXROR1ptWVMwNU1XSTBM%0AVFExTUdJd09EVTNNbU5sT1NJc0ltVjRjQ0k2TVRVek16Z3dOVFEzTUgwLlJO%0AaTQ3VTNPYTB5YWswMVRVdTV6Q0dfWFhwV25QUWJDdkJaNmVCRWRmOENuQ19U%0AbmdpRGI4MU0yYk1lTlZNY1VCVmRWLXlkRjh4dElLaU1yNFdtQUFhOFdoay02%0AOVVjb29rYkNTYUU2eUlzamowZlZPZVJhR2lFdGpvLWJHTFJLcXNGY0ZTeUdR%0ARTQzQUZ1TFlyTWlCRnowMElpd3ZudjYzZk9wQnRGaXhNa2lNNjhUTWxxVnNa%0AOFl3TFlTeU5KSWFvYVJCM0ZZTUkwajNYOWdVb3VJclVjNnpqcGNkYkxCcWJ0%0AVUpyN0ZFaTdJeWY4UG9rMXZxTzRlUExiaEszTmItTmd0Q2JuckZzS2x6Z3Za%0AaktUWHZZb2oya0FGWXZHaVZ4LVhfNVhUcGdiVnE1Z2dxVEtIdjRaUGFuaGR4%0AdnFvZ2YxRVYwWUJYaG40YUJLM3BnUVBodw%3D%3D%0A"
}
},
{
"fileType": "test-file",
"checksum": "a2d0dbc920fb3790d4d625e5c47be042ca32c051",
"relativePath": "nunit.framework.dll",
"uploadStatus":
{
"statusCode": 412,
"location": "https://testcloud.xamarin.com/v0.1/direct_uploads?token=ZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5LmV5SjBaWE4w%0AWDNKMWJsOXBaQ0k2SWpjNU5EVmpNbUZtTFRFeFpXTXROR1ptWVMwNU1XSTBM%0AVFExTUdJd09EVTNNbU5sT1NJc0ltVjRjQ0k2TVRVek16Z3dOVFEzTUgwLlJO%0AaTQ3VTNPYTB5YWswMVRVdTV6Q0dfWFhwV25QUWJDdkJaNmVCRWRmOENuQ19U%0AbmdpRGI4MU0yYk1lTlZNY1VCVmRWLXlkRjh4dElLaU1yNFdtQUFhOFdoay02%0AOVVjb29rYkNTYUU2eUlzamowZlZPZVJhR2lFdGpvLWJHTFJLcXNGY0ZTeUdR%0ARTQzQUZ1TFlyTWlCRnowMElpd3ZudjYzZk9wQnRGaXhNa2lNNjhUTWxxVnNa%0AOFl3TFlTeU5KSWFvYVJCM0ZZTUkwajNYOWdVb3VJclVjNnpqcGNkYkxCcWJ0%0AVUpyN0ZFaTdJeWY4UG9rMXZxTzRlUExiaEszTmItTmd0Q2JuckZzS2x6Z3Za%0AaktUWHZZb2oya0FGWXZHaVZ4LVhfNVhUcGdiVnE1Z2dxVEtIdjRaUGFuaGR4%0AdnFvZ2YxRVYwWUJYaG40YUJLM3BnUVBodw%3D%3D%0A"
}
},
{
"fileType": "test-file",
"checksum": "c1f7342d05a9d95580a507156207e6f9283a2c8d",
"relativePath": "Xamarin.UITest.dll",
"uploadStatus":
{
"statusCode": 412,
"location": "https://testcloud.xamarin.com/v0.1/direct_uploads?token=ZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5LmV5SjBaWE4w%0AWDNKMWJsOXBaQ0k2SWpjNU5EVmpNbUZtTFRFeFpXTXROR1ptWVMwNU1XSTBM%0AVFExTUdJd09EVTNNbU5sT1NJc0ltVjRjQ0k2TVRVek16Z3dOVFEzTUgwLlJO%0AaTQ3VTNPYTB5YWswMVRVdTV6Q0dfWFhwV25QUWJDdkJaNmVCRWRmOENuQ19U%0AbmdpRGI4MU0yYk1lTlZNY1VCVmRWLXlkRjh4dElLaU1yNFdtQUFhOFdoay02%0AOVVjb29rYkNTYUU2eUlzamowZlZPZVJhR2lFdGpvLWJHTFJLcXNGY0ZTeUdR%0ARTQzQUZ1TFlyTWlCRnowMElpd3ZudjYzZk9wQnRGaXhNa2lNNjhUTWxxVnNa%0AOFl3TFlTeU5KSWFvYVJCM0ZZTUkwajNYOWdVb3VJclVjNnpqcGNkYkxCcWJ0%0AVUpyN0ZFaTdJeWY4UG9rMXZxTzRlUExiaEszTmItTmd0Q2JuckZzS2x6Z3Za%0AaktUWHZZb2oya0FGWXZHaVZ4LVhfNVhUcGdiVnE1Z2dxVEtIdjRaUGFuaGR4%0AdnFvZ2YxRVYwWUJYaG40YUJLM3BnUVBodw%3D%3D%0A"
}
},
{
"fileType": "test-file",
"checksum": "542153902bc889d0d85a83b005854b5ebd9864f1",
"relativePath": "UITest.dll",
"uploadStatus":
{
"statusCode": 412,
"location": "https://testcloud.xamarin.com/v0.1/direct_uploads?token=ZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5LmV5SjBaWE4w%0AWDNKMWJsOXBaQ0k2SWpjNU5EVmpNbUZtTFRFeFpXTXROR1ptWVMwNU1XSTBM%0AVFExTUdJd09EVTNNbU5sT1NJc0ltVjRjQ0k2TVRVek16Z3dOVFEzTUgwLlJO%0AaTQ3VTNPYTB5YWswMVRVdTV6Q0dfWFhwV25QUWJDdkJaNmVCRWRmOENuQ19U%0AbmdpRGI4MU0yYk1lTlZNY1VCVmRWLXlkRjh4dElLaU1yNFdtQUFhOFdoay02%0AOVVjb29rYkNTYUU2eUlzamowZlZPZVJhR2lFdGpvLWJHTFJLcXNGY0ZTeUdR%0ARTQzQUZ1TFlyTWlCRnowMElpd3ZudjYzZk9wQnRGaXhNa2lNNjhUTWxxVnNa%0AOFl3TFlTeU5KSWFvYVJCM0ZZTUkwajNYOWdVb3VJclVjNnpqcGNkYkxCcWJ0%0AVUpyN0ZFaTdJeWY4UG9rMXZxTzRlUExiaEszTmItTmd0Q2JuckZzS2x6Z3Za%0AaktUWHZZb2oya0FGWXZHaVZ4LVhfNVhUcGdiVnE1Z2dxVEtIdjRaUGFuaGR4%0AdnFvZ2YxRVYwWUJYaG40YUJLM3BnUVBodw%3D%3D%0A"
}
}
]
Sekarang kita perlu mengunggah file yang sebenarnya. Dari isi respons sebelumnya, identifikasi
location
yang berisi URL file yang Anda unggah.- Di Header, Anda perlu meneruskan Content-Type: multipart/form-data
- Di Isi, Anda perlu menggunakan jenis Body_Form dengan nilai:
relative_path
danfile_type
: dari Isi Respons sebelumnyafile
: Jalur ke file aktual
Anda berada di jalur yang benar jika Anda mendapatkan 201 Created
sebagai respons seperti di bawah ini.
(Kami setengah jalan di sana)
Ulangi langkah sebelumnya untuk file lainnya yang ingin Anda unggah.
Kami siap untuk Menjalankan tes sekarang. Untuk ini, kita perlu device_slug.
Catatan: Anda harus terlebih dahulu membuat "Set Perangkat" di Org Anda atau Anda dapat menggunakan REST API untuk membuat set perangkat.
Kemudian, Anda dapat menggunakan Metode GET untuk mendapatkan daftar set perangkat.
Permintaan Sampel: https://api.appcenter.ms/v0.1/apps/MSKASANI/DroidAppSampleXamarin/owner/device_sets
Isi Respons yang Sesuai:
{
"id": "00917fb6-f30f-4d36-bd53-f900a94efe9f",
"name": "UI Test",
"slug": "ui-test",
"osVersionCount": 1,
"manufacturerCount": 1,
"owner":
{
"type": "organization",
"id": "5dd75115-3832-4f10-9cfe-5ac8cc8a51a5",
"displayName": "MSKASANI",
"name": "MSKASANI"
},
"deviceConfigurations":
{
{
"id": "717cfc38-4817-41fc-8a8e-06beef4f73b2",
"image":
{
"thumb": "https://testcloud-prod-system-files.s3-eu-west-1.amazonaws.com/system_files/0dee6ee7-6839-4e4e-ad0b-333e3952f75c?response-cache-control=max-age%3D157788000&AWSAccessKeyId=AKIAI4UZT4FCOF2OTJYQ&Signature=r9EEm/x0YAA4NhRJ%2BhVSQwGtBbI%3D&Expires=1691079085"
},
"os": "8.1.0",
"osName": "Android 8.1.0",
"model":
{
"name": "Google Pixel 2 XL",
"manufacturer": "Google",
"releaseDate": "October 2017",
"formFactor": "phone"
}
}
}
}
- Kami sekarang siap untuk menggunakan API Uji mulai untuk memicu pengujian! Isi Permintaan di bawah ini dibuat untuk Xamarin.UITest Framework. Jika Anda menggunakan kerangka kerja lain, lihat akhir dokumen untuk detail selengkapnya!
Contoh Isi Permintaan JSON:
{
"test_framework":"ui_test",
"device_selection":"MSKASANI/ui-test",
"locale":"en_US",
"test_series":"apimain",
"test_parameters":
{
"tests":
{
"method":
{
"UITest.dll":
[
"UITest.Tests(Android).AppLaunches",
"UITest.Tests(iOS).AppLaunches"
]
},
"fixture":
{
"UITest.dll":
[
"UITest.Tests(Android)",
"UITest.Tests(iOS)"
]
}
}
}
}
Isi respons yang sesuai:
{
"accepted_devices":["Google Pixel 2 XL (8.1.0)"],
"rejected_devices":[]
}
Jika sekarang Anda membuka halaman Uji Aplikasi, Anda akan melihat...
Selamat! :)
PS: Untuk Kerangka Kerja Pengujian lainnya, jika Anda ingin tahu bagaimana tampilan JSON (misalnya, uji Appium)
Jalankan perintah Uji secara manual dengan --debug
sakelar.
appcenter test run appium --app "MSKASANI/Appium" --devices "MSKASANI/my" --app-path C:\VSAC\AllTest\AppCenter-Test-Samples-main\Appium\Android\swiftnote.apk --test-series "main" --locale "en_US" --build-dir C:\VSAC\AllTest\AppCenter-Test-Samples-main\Appium\Android\Mavenex\target\upload --debug
Setelah pengujian selesai, Anda dapat memeriksa output Perintah untuk melihat tampilan Isi Permintaan:
BONUS! Dengan cara ini Anda dapat menggunakan output CLI untuk melihat bagaimana perintah kami mengantre Pengujian menggunakan API kami!