- Referensi: Langkah
- TestExecutionStep
- EksekusiToolExecution
- ToolExitCode
- Masalah Pengujian
- Apa pun
- Keparahan
- Jenis
- Kategori
- TestTiming
- ToolExecutionStep
- MultiLangkah
- PrimaryStep
- Hasil Individual
- Metode
Resource: Langkah
Langkah mewakili satu operasi yang dilakukan sebagai bagian dari Eksekusi. Sebuah langkah dapat digunakan untuk mewakili eksekusi alat ( misalnya eksekusi test runner atau eksekusi compiler).
Langkah dapat tumpang tindih (misalnya, dua langkah mungkin memiliki waktu mulai yang sama jika beberapa operasi dilakukan secara paralel).
Berikut ini contohnya, anggap saja kita memiliki build berkelanjutan yang mengeksekusi runner pengujian untuk setiap iterasi. Alur kerja akan terlihat seperti: - pengguna membuat Eksekusi dengan id 1 - pengguna membuat TestExecutionStep dengan id 100 untuk Eksekusi 1 - pembaruan pengguna TestExecutionStep dengan id 100 untuk menambahkan log xml mentah + layanan mengurai log xml dan mengembalikan TestExecutionStep dengan TestResult yang diperbarui. - pengguna memperbarui status TestExecutionStep dengan id 100 menjadi SELESAI
Langkah dapat diperbarui sampai statusnya disetel ke SELESAI pada titik-titik tersebut menjadi tidak dapat diubah.
Representasi JSON |
---|
{ "stepId": string, "creationTime": { object ( |
Kolom | |
---|---|
stepId |
ID unik dalam Eksekusi untuk Langkah ini. Menampilkan INVALID_ARGUMENT jika kolom ini ditetapkan atau ditimpa oleh pemanggil.
|
creationTime |
Waktu langkah dibuat.
|
completionTime |
Waktu ketika status langkah ditetapkan ke selesai. Nilai ini akan diatur secara otomatis ketika status beralih ke SELESAI.
|
name |
Nama pendek yang dapat dibaca manusia untuk ditampilkan di UI. Maksimum 100 karakter. Misalnya: Membersihkan build PRECONDITION_FAILED akan ditampilkan setelah membuat langkah baru jika langkah tersebut menggunakan nama dan dimensionValue yang sama dengan langkah yang sudah ada. Jika dua langkah merepresentasikan tindakan yang serupa, tetapi memiliki nilai dimensi yang berbeda, keduanya harus memiliki nama yang sama. Misalnya, jika kumpulan pengujian yang sama dijalankan pada dua platform yang berbeda, kedua langkah tersebut harus memiliki nama yang sama.
|
description |
Deskripsi tentang alat ini Misalnya: mvn clean package -D skipTests=true
|
state |
Status awalnya adalah IN_PROGRESS. Satu-satunya transisi status hukum adalah * IN_PROGRESS -> SELESAI PRECONDITION_FAILED akan ditampilkan jika transisi yang tidak valid diminta. Membuat Langkah dengan status disetel ke SELESAI adalah hal yang valid. Status hanya dapat disetel ke SELESAI sekali. PRECONDITION_FAILED akan ditampilkan jika status disetel ke SELESAI beberapa kali.
|
outcome |
Klasifikasi hasil, misalnya menjadi SUKSES atau KEGAGALAN
|
hasImages |
Apakah salah satu output dari langkah ini adalah gambar yang thumbnail-nya dapat diambil dengan thumbnail.list.
|
labels |
Key-value pair yang disediakan pengguna secara arbitrer yang dikaitkan dengan langkah tersebut. Pengguna bertanggung jawab mengelola namespace kunci sehingga kunci tidak bertabrakan secara tidak sengaja. INVALID_spek akan ditampilkan jika jumlah label melebihi 100 atau jika panjang kunci atau nilai melebihi 100 karakter.
Objek yang berisi daftar pasangan |
dimensionValue |
Jika eksekusi yang berisi langkah ini memiliki set dimension_definisi, maka kolom ini memungkinkan turunan untuk menentukan nilai dimensi. Kunci tersebut harus sama persis dengan dimension_Definition dari eksekusi. Sebagai contoh, jika eksekusi memiliki Jika sebuah langkah tidak berpartisipasi dalam satu dimensi matriks, nilai untuk dimensi tersebut harus berupa string kosong. Misalnya, jika salah satu pengujian dijalankan oleh runner yang tidak mendukung percobaan ulang, langkah tersebut dapat memiliki Jika langkah ini tidak berpartisipasi dalam dimensi matriks apa pun, dimensiValue tidak dapat disetel. PRECONDITION_FAILED akan ditampilkan jika salah satu kunci tidak ada dalam dimension_definisi eksekusi. PRECONDITION_FAILED akan ditampilkan jika langkah lain dalam eksekusi ini sudah memiliki nama dan dimensionValue yang sama, tetapi berbeda di kolom data lainnya, misalnya, kolom langkah berbeda. PRECONDITION_FAILED akan ditampilkan jika dimensionValue ditetapkan, dan ada dimension_definisi dalam eksekusi yang tidak ditetapkan sebagai salah satu kunci.
Objek yang berisi daftar pasangan |
runDuration |
Waktu yang dibutuhkan untuk menjalankan langkah ini. Jika tidak disetel, nilai ini disetel ke perbedaan antara creationTime dan completionTime saat langkah disetel ke status SELESAI. Dalam beberapa kasus, nilai ini perlu disetel secara terpisah: Misalnya, jika sebuah langkah dibuat, tetapi operasi yang diwakilinya akan diantrekan selama beberapa menit sebelum dijalankan, sebaiknya jangan sertakan waktu yang diantrekan dalam runDuration-nya. PREcondition_FAILED akan ditampilkan jika ada upaya untuk menetapkan runDuration pada langkah yang telah menetapkan kolom ini.
|
deviceUsageDuration |
Jumlah resource perangkat yang digunakan untuk melakukan pengujian. Ini adalah penggunaan perangkat yang digunakan untuk tujuan penagihan, yang berbeda dengan runDuration, misalnya, kegagalan infrastruktur tidak akan dikenai biaya untuk penggunaan perangkat. PREcondition_FAILED akan ditampilkan jika ada upaya untuk menetapkan device_usage pada langkah yang sudah menetapkan kolom ini.
|
multiStep |
Detail saat beberapa langkah dijalankan dengan konfigurasi yang sama seperti grup. Detail ini dapat digunakan untuk mengidentifikasi grup tempat langkah ini berada. Tabel pivot juga mengidentifikasi 'langkah utama' grup yang mengindeks semua anggota grup.
|
Kolom union
|
|
testExecutionStep |
Eksekusi runner pengujian. |
toolExecutionStep |
Eksekusi alat (digunakan untuk langkah-langkah yang tidak kami dukung secara eksplisit). |
LangkahTestExecution
Langkah yang mewakili menjalankan pengujian.
Fungsi ini menerima file xml ant-junit yang akan diurai menjadi hasil pengujian terstruktur oleh layanan. Jalur file XML diperbarui untuk menambahkan lebih banyak file, tetapi tidak dapat dihapus.
Pengguna juga dapat menambahkan hasil pengujian secara manual menggunakan kolom test_result.
Representasi JSON |
---|
{ "testSuiteOverviews": [ { object ( |
Kolom | |
---|---|
testSuiteOverviews[] |
Daftar konten ringkasan rangkaian pengujian. Hal ini dapat diuraikan dari log XML xUnit oleh server, atau diupload langsung oleh pengguna. Referensi ini hanya boleh dipanggil saat rangkaian pengujian telah diuraikan atau diupload sepenuhnya. Jumlah maksimum ringkasan rangkaian pengujian yang diizinkan per langkah adalah 1.000.
|
toolExecution |
Merepresentasikan eksekusi runner pengujian. Kode keluar alat ini akan digunakan untuk menentukan apakah pengujian lulus.
|
testIssues[] |
Masalah yang diamati selama pelaksanaan uji. Misalnya, jika aplikasi seluler yang sedang diuji mengalami error selama pengujian, pesan error dan konten pelacakan tumpukan dapat dicatat di sini untuk membantu proses debug.
|
testTiming |
Perincian waktu eksekusi uji.
|
Eksekusi Alat
Eksekusi alat arbitrer. Resource ini dapat berupa runner pengujian atau alat yang menyalin artefak atau men-deploy kode.
Representasi JSON |
---|
{ "commandLineArguments": [ string ], "toolLogs": [ { object ( |
Kolom | |
---|---|
commandLineArguments[] |
Command line yang ditokenkan lengkap, termasuk nama program (setara dengan argv dalam program C).
|
toolLogs[] |
Rujukan ke log teks biasa akan menghasilkan eksekusi alat. Kolom ini dapat disetel sebelum alat ditutup agar dapat mengakses tampilan live log saat alat sedang berjalan. Jumlah maksimum log alat yang diizinkan per langkah adalah 1.000.
|
exitCode |
Kode keluar eksekusi alat. Kolom ini akan ditetapkan setelah fitur ditutup.
|
toolOutputs[] |
Rujukan ke file buram dari output format apa pun oleh eksekusi alat. Jumlah maksimum output alat yang diizinkan per langkah adalah 1.000.
|
ToolExitCode
Kode keluar dari eksekusi fitur.
Representasi JSON |
---|
{ "number": integer } |
Kolom | |
---|---|
number |
Kode keluar eksekusi alat. Nilai 0 berarti eksekusi berhasil.
|
Masalah Tes
Masalah yang terdeteksi terjadi selama eksekusi uji.
Representasi JSON |
---|
{ "errorMessage": string, "stackTrace": { object ( |
Kolom | |
---|---|
errorMessage |
Pesan singkat yang dapat dibaca manusia yang menjelaskan masalah. Wajib diisi. |
stackTrace |
Tidak digunakan lagi dan digantikan oleh kolom stack trace di dalam peringatan tertentu. |
warning |
Pesan peringatan dengan detail tambahan masalah. Harus selalu berupa pesan dari com.google.devtools.toolresults.v1.warnings |
severity |
Tingkat keparahan masalah. Wajib diisi. |
type |
Jenis masalah. Wajib diisi. |
category |
Kategori masalah. Wajib diisi. |
Semua
Any
berisi pesan buffering protokol serial arbitrer beserta URL yang menjelaskan jenis pesan yang diserialisasi.
Library Protobuf memberikan dukungan untuk memaketkan/membongkar nilai apa pun dalam bentuk fungsi utilitas atau metode tambahan yang dihasilkan dari jenis Apa pun.
Contoh 1: Mengemas dan mengekstrak pesan di C++.
Foo foo = ...;
Any any;
any.PackFrom(foo);
...
if (any.UnpackTo(&foo)) {
...
}
Contoh 2: Mengemas dan mengekstrak pesan di Java.
Foo foo = ...;
Any any = Any.pack(foo);
...
if (any.is(Foo.class)) {
foo = any.unpack(Foo.class);
}
Contoh 3: Mengemas dan mengekstrak pesan dengan Python.
foo = Foo(...)
any = Any()
any.Pack(foo)
...
if any.Is(Foo.DESCRIPTOR):
any.Unpack(foo)
...
Contoh 4: Mengemas dan mengekstrak 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 library protobuf secara default akan menggunakan 'type.googleapis.com/full.type.name' karena URL jenis dan metode ekstrak hanya menggunakan nama jenis yang sepenuhnya memenuhi syarat setelah karakter '/' di URL jenis, misalnya "foo.bar.com/x/y.z" akan menghasilkan nama jenis "y.z".
JSON
Representasi JSON dari nilai Any
menggunakan representasi reguler dari pesan tersemat yang dideserialisasi, dengan kolom tambahan @type
yang berisi URL jenis. 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 kustom, representasi tersebut akan disematkan dengan menambahkan kolom value
yang menyimpan JSON kustom selain kolom @type
. Contoh (untuk pesan google.protobuf.Duration
):
{
"@type": "type.googleapis.com/google.protobuf.Duration",
"value": "1.212s"
}
Representasi JSON |
---|
{ "typeUrl": string, "value": string } |
Kolom | |
---|---|
typeUrl |
Nama URL/resource yang mengidentifikasi jenis pesan buffering protokol serial secara unik. String ini harus berisi setidaknya satu "/" karakter. Segmen terakhir jalur URL harus mewakili nama jenis yang sepenuhnya memenuhi syarat (seperti di Dalam praktiknya, tim biasanya mengompilasi semua jenis yang mereka harapkan untuk 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 URL jenis yang dimulai dengan type.googleapis.com. Skema selain |
value |
Harus berupa buffering protokol serial yang valid dari jenis yang ditentukan di atas. String berenkode base64. |
Keparahan
Tingkat keparahan masalah.
Enum | |
---|---|
unspecifiedSeverity |
Tingkat keparahan default yang tidak ditentukan. Jangan gunakan. Hanya untuk pembuatan versi. |
info |
Masalah non-kritis, yang memberikan beberapa info kepada pengguna tentang pengujian yang dijalankan. |
suggestion |
Masalah non-kritis, yang memberikan beberapa petunjuk kepada pengguna untuk meningkatkan pengalaman pengujian, misalnya, menyarankan untuk menggunakan Game Loop. |
warning |
Masalah yang berpotensi kritis. |
severe |
Masalah kritis. |
Jenis
Jenis masalah.
Enum | |
---|---|
unspecifiedType |
Jenis default tidak ditentukan. Jangan gunakan. Hanya untuk pembuatan versi. |
fatalException |
Masalah merupakan pengecualian fatal. |
nativeCrash |
Masalahnya adalah masalah pada native code. |
anr |
Masalahnya adalah error ANR. |
unusedRoboDirective |
Masalah adalah perintah robo yang tidak digunakan. |
compatibleWithOrchestrator |
Masalah adalah saran untuk menggunakan orkestrator. |
launcherActivityNotFound |
Masalah terkait menemukan aktivitas peluncur |
startActivityNotFound |
Masalah terkait menyelesaikan intent yang diberikan pengguna untuk memulai aktivitas |
incompleteRoboScriptExecution |
Skrip Robo tidak dijalankan sepenuhnya. |
completeRoboScriptExecution |
Skrip Robo sepenuhnya dan berhasil dieksekusi. |
failedToInstall |
APK gagal diinstal. |
availableDeepLinks |
Aplikasi yang sedang diuji memiliki deep link, tetapi tidak ada yang disediakan untuk Robo. |
nonSdkApiUsageViolation |
Aplikasi mengakses API non-sdk. |
nonSdkApiUsageReport |
Aplikasi mengakses API non-sdk (laporan mendetail baru) |
encounteredNonAndroidUiWidgetScreen |
Crawl Robo menemukan setidaknya satu layar dengan elemen yang bukan widget UI Android. |
encounteredLoginScreen |
Crawl Robo menemukan setidaknya satu kemungkinan layar login. |
performedGoogleLogin |
Robo login dengan Google. |
iosException |
Aplikasi iOS mengalami error dengan pengecualian. |
iosCrash |
Aplikasi iOS mengalami error tanpa pengecualian (mis. dihentikan). |
performedMonkeyActions |
Crawl Robo melibatkan melakukan beberapa tindakan monyet. |
usedRoboDirective |
Crawl Robo menggunakan perintah Robo. |
usedRoboIgnoreDirective |
Crawl Robo menggunakan perintah Robo untuk mengabaikan elemen UI. |
insufficientCoverage |
Robo tidak meng-crawl beberapa bagian aplikasi yang mungkin penting. |
inAppPurchases |
Crawl Robo mencakup beberapa pembelian dalam aplikasi. |
crashDialogError |
Dialog error terdeteksi selama eksekusi uji |
uiElementsTooDeep |
Kedalaman elemen UI lebih besar dari nilai minimum |
blankScreen |
Layar kosong ditemukan di crawl Robo |
overlappingUiElements |
Elemen UI yang tumpang-tindih ditemukan di crawl Robo |
unityException |
Pengecualian Unity yang tidak tertangkap terdeteksi (ini tidak membuat aplikasi error). |
deviceOutOfMemory |
Perangkat kehabisan memori terdeteksi |
logcatCollectionError |
Masalah terdeteksi saat mengumpulkan logcat |
detectedAppSplashScreen |
Robo mendeteksi layar pembuka yang disediakan oleh aplikasi (vs. layar pembuka Android OS). |
assetIssue |
Ada masalah dengan aset dalam pengujian ini. |
Kategori
Kategori masalah.
Enum | |
---|---|
unspecifiedCategory |
Kategori default tidak ditentukan. Jangan gunakan. Hanya untuk pembuatan versi. |
common |
Masalah tidak spesifik untuk jenis pengujian tertentu (misalnya, masalah pada native code). |
robo |
Masalah ini khusus untuk operasi Robo. |
WaktuPengujian
Waktu pengujian diuraikan untuk mengetahui beberapa fase.
Representasi JSON |
---|
{
"testProcessDuration": {
object ( |
Kolom | |
---|---|
testProcessDuration |
Waktu yang diperlukan untuk menjalankan proses pengujian.
|
Langkah Eksekusi Alat
Langkah alat umum yang akan digunakan untuk biner yang tidak kami dukung secara eksplisit. Misalnya: menjalankan cp untuk menyalin artefak dari satu lokasi ke lokasi lain.
Representasi JSON |
---|
{
"toolExecution": {
object ( |
Kolom | |
---|---|
toolExecution |
Eksekusi Alat.
|
Multi-Langkah
Detail saat beberapa langkah dijalankan dengan konfigurasi yang sama seperti grup.
Representasi JSON |
---|
{
"primaryStepId": string,
"multistepNumber": integer,
"primaryStep": {
object ( |
Kolom | |
---|---|
primaryStepId |
ID langkah dari langkah utama (asli), yang mungkin merupakan langkah ini. |
multistepNumber |
Int unik yang diberikan untuk setiap langkah. Rentang dari 0(inklusif) hingga jumlah total langkah(eksklusif). Langkah utamanya adalah 0. |
primaryStep |
Tampilkan jika ini adalah langkah utama (asli). |
Langkah Primer
Menyimpan status pengujian penggabungan dari beberapa langkah yang dijalankan sebagai grup dan hasil dari setiap langkah.
Representasi JSON |
---|
{ "rollUp": enum ( |
Kolom | |
---|---|
rollUp |
Status pengujian gabungan beberapa langkah yang dijalankan dengan konfigurasi yang sama dengan grup. |
individualOutcome[] |
ID langkah dan hasil dari setiap langkah. |
Hasil Individual
ID langkah dan hasil dari setiap langkah individual yang dijalankan sebagai grup dengan langkah lain dengan konfigurasi yang sama.
Representasi JSON |
---|
{ "stepId": string, "outcomeSummary": enum ( |
Kolom | |
---|---|
stepId |
|
outcomeSummary |
|
multistepNumber |
Int unik yang diberikan untuk setiap langkah. Rentang dari 0(inklusif) hingga jumlah total langkah(eksklusif). Langkah utamanya adalah 0. |
runDuration |
Waktu yang dibutuhkan untuk menjalankan langkah ini. |
Metode |
|
---|---|
|
Mencantumkan cluster aksesibilitas untuk Langkah tertentu Dapat menampilkan salah satu kode error kanonis berikut:
|
|
Membuat Langkah. |
|
Mendapatkan Langkah. |
|
Mengambil PerfMetricsSummary. |
|
Mencantumkan Langkah untuk Eksekusi tertentu. |
|
Memperbarui Langkah yang ada dengan entity parsial yang disediakan. |
|
Publikasikan file xml ke Langkah yang ada. |