- Sumber: Langkah
- Langkah Eksekusi Uji
- Eksekusi Alat
- Kode Keluar Alat
- Masalah Tes
- Setiap
- Kerasnya
- Jenis
- Kategori
- Waktu Tes
- Langkah Eksekusi Alat
- MultiLangkah
- Langkah Utama
- Hasil Individu
- Metode
Sumber: Langkah
Langkah mewakili satu operasi yang dilakukan sebagai bagian dari Eksekusi. Sebuah langkah dapat digunakan untuk mewakili eksekusi suatu alat (misalnya eksekusi test runner atau eksekusi compiler).
Langkah-langkahnya bisa tumpang tindih (misalnya dua langkah mungkin memiliki waktu mulai yang sama jika beberapa operasi dilakukan secara paralel).
Berikut ini contohnya, anggaplah kita memiliki build berkelanjutan yang mengeksekusi test runner untuk setiap iterasi. Alur kerjanya akan terlihat seperti: - pengguna membuat Eksekusi dengan id 1 - pengguna membuat TestExecutionStep dengan id 100 untuk Eksekusi 1 - pengguna memperbarui TestExecutionStep dengan id 100 untuk menambahkan log xml mentah + layanan mem-parsing log xml dan mengembalikan TestExecutionStep dengan TestResult yang diperbarui. - pengguna memperbarui status TestExecutionStep dengan id 100 menjadi SELESAI
Sebuah Langkah dapat diperbarui hingga statusnya disetel ke COMPLETE dan pada titik tersebut statusnya menjadi tidak dapat diubah.
Representasi JSON |
---|
{ "stepId": string, "creationTime": { object ( |
bidang | |
---|---|
stepId | Pengidentifikasi unik dalam Eksekusi untuk Langkah ini. Mengembalikan INVALID_ARGUMENT jika bidang ini disetel atau ditimpa oleh pemanggil.
|
creationTime | Waktu ketika langkah itu dibuat.
|
completionTime | Waktu ketika status langkah ditetapkan untuk selesai. Nilai ini akan ditetapkan secara otomatis ketika status bertransisi ke COMPLETE.
|
name | Nama pendek yang dapat dibaca manusia untuk ditampilkan di UI. Maksimal 100 karakter. Misalnya: Bangunan bersih PRECONDITION_FAILED akan dikembalikan saat membuat langkah baru jika nama dan DimensionValue-nya sama dengan langkah yang sudah ada. Jika dua langkah mewakili tindakan serupa, namun memiliki nilai dimensi berbeda, keduanya harus memiliki nama yang sama. Misalnya, jika rangkaian pengujian yang sama dijalankan pada dua platform berbeda, kedua langkah tersebut harus memiliki nama yang sama.
|
description | Deskripsi alat ini Misalnya: paket mvn clean -D skipTests=true
|
state | Keadaan awal adalah IN_PROGRESS. Satu-satunya transisi status yang sah adalah * IN_PROGRESS -> COMPLETE PRECONDITION_FAILED akan dikembalikan jika diminta transisi yang tidak valid. Adalah valid untuk membuat Langkah dengan status disetel ke SELESAI. Status hanya dapat disetel ke COMPLETE satu kali. PRECONDITION_FAILED akan dikembalikan jika status disetel ke COMPLETE beberapa kali.
|
outcome | Klasifikasi hasil, misalnya SUKSES atau KEGAGALAN
|
hasImages | Apakah output dari langkah ini berupa gambar yang thumbnail-nya dapat diambil dengan thumbnails.list.
|
labels | Pasangan kunci/nilai yang disediakan pengguna secara sewenang-wenang dan terkait dengan langkah tersebut. Pengguna bertanggung jawab untuk mengelola namespace kunci sedemikian rupa sehingga kunci tidak bertabrakan secara tidak sengaja. INVALID_ARGUMENT akan dikembalikan jika jumlah label melebihi 100 atau jika panjang salah satu kunci atau nilai melebihi 100 karakter.
Sebuah objek yang berisi daftar |
dimensionValue | Jika eksekusi yang berisi langkah ini memiliki kumpulan definisi_dimensi, maka bidang ini memungkinkan anak untuk menentukan nilai dimensi. Kuncinya harus sama persis dengan dimensi_definisi eksekusi. Misalnya, jika eksekusi memiliki Jika suatu langkah tidak berpartisipasi dalam satu dimensi matriks, nilai untuk dimensi tersebut harus berupa string kosong. Misalnya, jika salah satu pengujian dijalankan oleh pelari yang tidak mendukung percobaan ulang, langkah tersebut dapat memiliki Jika langkah tersebut tidak berpartisipasi dalam dimensi matriks apa pun, maka DimensionValue mungkin tidak disetel. PRECONDITION_FAILED akan dikembalikan jika salah satu kunci tidak ada dalam dimensi_definisi eksekusi. PRECONDITION_FAILED akan dikembalikan jika langkah lain dalam eksekusi ini sudah memiliki nama dan DimensionValue yang sama, namun berbeda pada bidang data lainnya, misalnya bidang langkah berbeda. PRECONDITION_FAILED akan dikembalikan jika DimensionValue disetel, dan ada Dimension_definition dalam eksekusi yang tidak ditentukan sebagai salah satu kunci.
Sebuah objek yang berisi daftar |
runDuration | Berapa lama waktu yang dibutuhkan untuk menjalankan langkah ini. Jika tidak disetel, ini disetel ke selisih antara waktu pembuatan dan waktu penyelesaian saat langkah disetel ke status SELESAI. Dalam beberapa kasus, adalah tepat untuk menetapkan nilai ini secara terpisah: Misalnya, jika sebuah langkah dibuat, namun operasi yang diwakilinya diantrekan selama beberapa menit sebelum dieksekusi, akan lebih tepat untuk tidak menyertakan waktu yang dihabiskan dalam antrian dalam langkah tersebut. runDuration. PRECONDITION_FAILED akan dikembalikan jika seseorang mencoba menyetel runDuration pada langkah yang bidang ini sudah disetel.
|
deviceUsageDuration | Berapa banyak sumber daya perangkat yang digunakan untuk melakukan pengujian. Ini adalah penggunaan perangkat yang digunakan untuk tujuan penagihan, yang berbeda dengan runDuration, misalnya, kegagalan infrastruktur tidak akan dikenakan biaya untuk penggunaan perangkat. PRECONDITION_FAILED akan dikembalikan jika seseorang mencoba menyetel penggunaan_perangkat pada langkah yang bidang ini sudah disetel.
|
multiStep | Detail saat beberapa langkah dijalankan dengan konfigurasi yang sama sebagai grup. Detail ini dapat digunakan untuk mengidentifikasi kelompok mana yang termasuk dalam langkah ini. Hal ini juga mengidentifikasi 'langkah utama' kelompok yang mengindeks semua anggota kelompok.
|
| |
testExecutionStep | Eksekusi pelari uji. |
toolExecutionStep | Eksekusi suatu alat (digunakan untuk langkah-langkah yang tidak kami dukung secara eksplisit). |
Langkah Eksekusi Uji
Sebuah langkah yang mewakili pengujian yang sedang berjalan.
Ia menerima file xml ant-junit yang akan diuraikan menjadi hasil pengujian terstruktur oleh layanan. Jalur file Xml diperbarui untuk menambahkan lebih banyak file, namun file tersebut tidak dapat dihapus.
Pengguna juga dapat menambahkan hasil tes secara manual dengan menggunakan kolom test_result.
Representasi JSON |
---|
{ "testSuiteOverviews": [ { object ( |
bidang | |
---|---|
testSuiteOverviews[] | Daftar isi ikhtisar rangkaian pengujian. Ini dapat diuraikan dari log xUnit XML oleh server, atau diunggah langsung oleh pengguna. Referensi ini hanya boleh dipanggil ketika rangkaian pengujian telah diuraikan atau diunggah sepenuhnya. Jumlah ikhtisar rangkaian pengujian maksimum yang diperbolehkan per langkah adalah 1000.
|
toolExecution | Mewakili eksekusi test runner. Kode keluar dari alat ini akan digunakan untuk menentukan apakah tes tersebut lulus.
|
testIssues[] | Masalah yang diamati selama pelaksanaan tes. Misalnya, jika aplikasi seluler yang sedang diuji mengalami error selama pengujian, pesan kesalahan dan konten pelacakan tumpukan dapat dicatat di sini untuk membantu proses debug.
|
testTiming | Rincian waktu pelaksanaan tes.
|
Eksekusi Alat
Eksekusi alat yang sewenang-wenang. Ini bisa berupa test runner atau alat yang menyalin artefak atau menerapkan kode.
Representasi JSON |
---|
{ "commandLineArguments": [ string ], "toolLogs": [ { object ( |
bidang | |
---|---|
commandLineArguments[] | Baris perintah tokenisasi lengkap termasuk nama program (setara dengan argv dalam program C).
|
toolLogs[] | Referensi ke log teks biasa menampilkan eksekusi alat. Bidang ini dapat disetel sebelum alat keluar agar dapat mengakses tampilan langsung log saat alat sedang berjalan. Jumlah maksimum log alat yang diperbolehkan per langkah adalah 1000.
|
exitCode | Kode keluar eksekusi alat. Bidang ini akan disetel setelah alat keluar.
|
toolOutputs[] | Referensi ke file buram dalam format apa pun yang dihasilkan oleh eksekusi alat. Jumlah maksimum keluaran alat per langkah yang diperbolehkan adalah 1000.
|
Kode Keluar Alat
Kode keluar dari eksekusi alat.
Representasi JSON |
---|
{ "number": integer } |
bidang | |
---|---|
number | Kode keluar eksekusi alat. Nilai 0 berarti eksekusi berhasil.
|
Masalah Tes
Masalah terdeteksi terjadi selama pelaksanaan pengujian.
Representasi JSON |
---|
{ "errorMessage": string, "stackTrace": { object ( |
bidang | |
---|---|
errorMessage | Pesan singkat yang dapat dibaca manusia yang menjelaskan masalah ini. Diperlukan. |
stackTrace | Tidak digunakan lagi karena mendukung bidang pelacakan tumpukan di dalam peringatan tertentu. |
warning | Pesan peringatan dengan rincian tambahan mengenai masalah ini. Harus selalu berupa pesan dari com.google.devtools.toolresults.v1.warnings |
severity | Tingkat keparahan masalah. Diperlukan. |
type | Jenis masalah. Diperlukan. |
category | Kategori masalah. Diperlukan. |
Setiap
Any
berisi pesan buffer protokol berseri sewenang-wenang bersama dengan URL yang menjelaskan jenis pesan berseri.
Pustaka Protobuf menyediakan dukungan untuk mengemas/membongkar nilai apa pun dalam bentuk fungsi utilitas atau metode tambahan yang dihasilkan dari jenis Apa Pun.
Contoh 1: Kemas dan buka paket pesan dalam C++.
Foo foo = ...;
Any any;
any.PackFrom(foo);
...
if (any.UnpackTo(&foo)) {
...
}
Contoh 2: Kemas dan buka paket pesan di Java.
Foo foo = ...;
Any any = Any.pack(foo);
...
if (any.is(Foo.class)) {
foo = any.unpack(Foo.class);
}
Contoh 3: Kemas dan buka paket pesan dengan Python.
foo = Foo(...)
any = Any()
any.Pack(foo)
...
if any.Is(Foo.DESCRIPTOR):
any.Unpack(foo)
...
Contoh 4: Kemas dan buka paket pesan di Go
foo := &pb.Foo{...}
any, err := ptypes.MarshalAny(foo)
...
foo := &pb.Foo{}
if err := ptypes.UnmarshalAny(any, foo); err != nil {
...
}
Metode paket yang disediakan oleh perpustakaan protobuf secara default akan menggunakan 'type.googleapis.com/full.type.name' sebagai URL tipe dan metode unpack hanya menggunakan nama tipe yang sepenuhnya memenuhi syarat setelah '/' terakhir di URL tipe, misalnya "foo.bar.com/x/yz" akan menghasilkan nama tipe "yz".
JSON
Representasi JSON dari nilai Any
menggunakan representasi reguler dari pesan tersemat yang dideserialisasi, dengan bidang tambahan @type
yang berisi URL tipe. Contoh:
package google.profile;
message Person {
string first_name = 1;
string last_name = 2;
}
{
"@type": "type.googleapis.com/google.profile.Person",
"firstName": <string>,
"lastName": <string>
}
Jika jenis pesan yang disematkan sudah dikenal dan memiliki representasi JSON khusus, representasi tersebut akan disematkan dengan menambahkan value
bidang yang menampung JSON khusus selain bidang @type
. Contoh (untuk pesan google.protobuf.Duration
):
{
"@type": "type.googleapis.com/google.protobuf.Duration",
"value": "1.212s"
}
Representasi JSON |
---|
{ "typeUrl": string, "value": string } |
bidang | |
---|---|
typeUrl | Nama URL/sumber daya yang secara unik mengidentifikasi jenis pesan buffer protokol berseri. String ini harus berisi setidaknya satu karakter "/". Segmen terakhir jalur URL harus mewakili nama jenis yang sepenuhnya memenuhi syarat (seperti pada Dalam praktiknya, tim biasanya melakukan prakompilasi ke dalam biner semua jenis yang mereka harapkan akan digunakan dalam konteks Any. Namun, untuk URL yang menggunakan skema
Catatan: fungsi ini saat ini tidak tersedia dalam rilis protobuf resmi, dan tidak digunakan untuk tipe URL yang dimulai dengan type.googleapis.com. Skema selain |
value | Harus berupa buffering protokol serial yang valid dari jenis yang ditentukan di atas. String yang dikodekan base64. |
Kerasnya
Tingkat keparahan masalah.
Enum | |
---|---|
unspecifiedSeverity | Tingkat keparahan default tidak ditentukan. Jangan gunakan. Hanya untuk pembuatan versi. |
info | Masalah non-kritis, memberikan beberapa informasi kepada pengguna tentang uji coba. |
suggestion | Masalah bukan kritis, memberikan beberapa petunjuk kepada pengguna untuk meningkatkan pengalaman pengujian mereka, misalnya, menyarankan untuk menggunakan Game Loops. |
warning | Masalah yang berpotensi kritis. |
severe | Masalah kritis. |
Jenis
Jenis masalah.
Enum | |
---|---|
unspecifiedType | Tipe default tidak ditentukan. Jangan gunakan. Hanya untuk pembuatan versi. |
fatalException | Masalah adalah pengecualian yang fatal. |
nativeCrash | Masalahnya adalah kerusakan asli. |
anr | Masalahnya adalah ANR mogok. |
unusedRoboDirective | Masalahnya adalah arahan robo yang tidak digunakan. |
compatibleWithOrchestrator | Masalahnya adalah saran untuk menggunakan orkestrator. |
launcherActivityNotFound | Masalah saat menemukan aktivitas peluncur |
startActivityNotFound | Masalah dalam menyelesaikan niat yang diberikan pengguna untuk memulai aktivitas |
incompleteRoboScriptExecution | Skrip Robo tidak sepenuhnya dijalankan. |
completeRoboScriptExecution | Skrip Robo telah sepenuhnya dan berhasil dijalankan. |
failedToInstall | APK gagal dipasang. |
availableDeepLinks | Aplikasi yang sedang diuji memiliki tautan dalam, namun tidak ada yang diberikan ke Robo. |
nonSdkApiUsageViolation | Aplikasi mengakses Api non-sdk. |
nonSdkApiUsageReport | Aplikasi mengakses Api non-sdk (laporan mendetail baru) |
encounteredNonAndroidUiWidgetScreen | Perayapan Robo menemukan setidaknya satu layar dengan elemen yang bukan widget UI Android. |
encounteredLoginScreen | Perayapan Robo menemukan setidaknya satu kemungkinan layar masuk. |
performedGoogleLogin | Robo masuk dengan Google. |
iosException | Aplikasi iOS mogok dengan pengecualian. |
iosCrash | Aplikasi iOS mogok tanpa kecuali (misal terbunuh). |
performedMonkeyActions | Perayapan Robo melibatkan melakukan beberapa tindakan monyet. |
usedRoboDirective | Perayapan Robo menggunakan arahan Robo. |
usedRoboIgnoreDirective | Perayapan Robo menggunakan arahan Robo untuk mengabaikan elemen UI. |
insufficientCoverage | Robo tidak meng-crawl beberapa bagian aplikasi yang berpotensi penting. |
inAppPurchases | Perayapan Robo melibatkan beberapa pembelian dalam aplikasi. |
crashDialogError | Dialog kerusakan terdeteksi selama pelaksanaan pengujian |
uiElementsTooDeep | Kedalaman elemen UI lebih besar dari ambang batas |
blankScreen | Layar kosong ditemukan di perayapan Robo |
overlappingUiElements | Elemen UI yang tumpang tindih ditemukan di perayapan Robo |
unityException | Pengecualian Unity yang tidak tertangkap terdeteksi (ini tidak membuat aplikasi mogok). |
deviceOutOfMemory | Perangkat kehabisan memori terdeteksi |
logcatCollectionError | Masalah terdeteksi saat mengumpulkan logcat |
detectedAppSplashScreen | Robo mendeteksi layar pembuka yang disediakan oleh aplikasi (vs. layar pembuka OS Android). |
Kategori
Kategori masalah.
Enum | |
---|---|
unspecifiedCategory | Kategori default tidak ditentukan. Jangan gunakan. Hanya untuk pembuatan versi. |
common | Masalah tidak spesifik untuk jenis pengujian tertentu (misalnya, kerusakan asli). |
robo | Masalah khusus untuk menjalankan Robo. |
Waktu Tes
Waktu pengujian dipecah untuk mengetahui fase-fasenya.
Representasi JSON |
---|
{
"testProcessDuration": {
object ( |
bidang | |
---|---|
testProcessDuration | Berapa lama waktu yang dibutuhkan untuk menjalankan proses pengujian.
|
Langkah Eksekusi Alat
Langkah alat umum yang akan digunakan untuk binari tidak kami dukung secara eksplisit. Misalnya: menjalankan cp untuk menyalin artefak dari satu lokasi ke lokasi lain.
Representasi JSON |
---|
{
"toolExecution": {
object ( |
bidang | |
---|---|
toolExecution | Eksekusi Alat.
|
MultiLangkah
Detail saat beberapa langkah dijalankan dengan konfigurasi yang sama sebagai grup.
Representasi JSON |
---|
{
"primaryStepId": string,
"multistepNumber": integer,
"primaryStep": {
object ( |
bidang | |
---|---|
primaryStepId | Id Langkah dari langkah utama (asli), yang mungkin merupakan langkah ini. |
multistepNumber | Int unik diberikan pada setiap langkah. Berkisar dari 0 (inklusif) hingga jumlah langkah (eksklusif). Langkah utama adalah 0. |
primaryStep | Hadir jika ini merupakan langkah utama (asli). |
Langkah Utama
Menyimpan status pengujian rollup dari beberapa langkah yang dijalankan sebagai grup dan hasil dari setiap langkah individual.
Representasi JSON |
---|
{ "rollUp": enum ( |
bidang | |
---|---|
rollUp | Status pengujian rollup beberapa langkah yang dijalankan dengan konfigurasi yang sama sebagai grup. |
individualOutcome[] | Id Langkah dan hasil dari setiap langkah individual. |
Hasil Individu
Id langkah dan hasil setiap langkah individu yang dijalankan secara berkelompok dengan langkah lain dengan konfigurasi yang sama.
Representasi JSON |
---|
{ "stepId": string, "outcomeSummary": enum ( |
bidang | |
---|---|
stepId | |
outcomeSummary | |
multistepNumber | Int unik diberikan pada setiap langkah. Berkisar dari 0 (inklusif) hingga jumlah langkah (eksklusif). Langkah utama adalah 0. |
runDuration | Berapa lama waktu yang dibutuhkan untuk menjalankan langkah ini. |
Metode | |
---|---|
| Mencantumkan klaster aksesibilitas untuk Langkah tertentu Dapat mengembalikan salah satu kode kesalahan kanonik berikut:
|
| Membuat Langkah. |
| Mendapat Langkah. |
| Mengambil PerfMetricsSummary. |
| Mencantumkan Langkah-langkah untuk Eksekusi tertentu. |
| Memperbarui Langkah yang ada dengan entitas parsial yang disediakan. |
| Publikasikan file xml ke Langkah yang ada. |