- משאב: שלב
- TestExecutionStep
- ToolExecution
- ToolExitCode
- בעיית מבחן
- כל
- חוּמרָה
- סוּג
- קטגוריה
- טסט טיימינג
- ToolExecutionStep
- MultiStep
- שלב ראשי
- תוצאה אישית
- שיטות
משאב: שלב
שלב מייצג פעולה בודדת המבוצעת כחלק מביצוע. ניתן להשתמש בשלב כדי לייצג ביצוע של כלי (לדוגמה ביצוע רץ מבחן או ביצוע של מהדר).
שלבים יכולים לחפוף (לדוגמה, לשני שלבים עשויה להיות אותה שעת התחלה אם חלק מהפעולות נעשות במקביל).
הנה דוגמה, בואו ניקח בחשבון שיש לנו בנייה מתמשכת היא ביצוע רץ מבחן עבור כל איטרציה. זרימת העבודה תיראה כך: - משתמש יוצר ביצוע עם id 1 - משתמש יוצר TestExecutionStep עם id 100 עבור ביצוע 1 - עדכון משתמש TestExecutionStep עם id 100 כדי להוסיף יומן xml גולמי + השירות מנתח את יומני ה-xml ומחזיר TestExecutionStep עם תוצאות בדיקה מעודכנות. - משתמש עדכן את הסטטוס של TestExecutionStep עם מזהה 100 ל-COMLETE
ניתן לעדכן שלב עד שהמצב שלו מוגדר ל-COMLETE ובנקודות בהן הוא הופך לבלתי ניתן לשינוי.
ייצוג JSON |
---|
{ "stepId": string, "creationTime": { object ( |
שדות | |
---|---|
stepId | מזהה ייחודי בתוך ביצוע עבור שלב זה. מחזירה INVALID_ARGUMENT אם שדה זה מוגדר או מוחלף על ידי המתקשר.
|
creationTime | הזמן שבו נוצר הצעד.
|
completionTime | הזמן שבו סטטוס הצעד הוגדר להשלמת. ערך זה יוגדר אוטומטית כאשר המצב יעבור ל-COMLETE.
|
name | שם קצר הניתן לקריאה על ידי אדם לתצוגה בממשק המשתמש. מקסימום 100 תווים. לדוגמא: מבנה נקי PRECONDITION_FAILED יוחזר עם יצירת שלב חדש אם הוא חולק את השם וה-dimensionValue שלו עם שלב קיים. אם שני שלבים מייצגים פעולה דומה, אבל יש להם ערכי ממד שונים, הם צריכים לחלוק את אותו השם. לדוגמה, אם אותה קבוצת בדיקות מופעלת בשתי פלטפורמות שונות, לשני השלבים צריך להיות אותו שם.
|
description | תיאור של כלי זה לדוגמה: mvn clean package -D skipTests=true
|
state | המצב ההתחלתי הוא IN_PROGRESS. מעברי המדינה החוקיים היחידים הם * IN_PROGRESS -> השלם PRECONDITION_FAILED יוחזר אם תתבקש מעבר לא חוקי. זה חוקי ליצור Step עם מצב מוגדר ל-COMLETE. ניתן להגדיר את המצב ל-COMLETE פעם אחת בלבד. PRECONDITION_FAILED יוחזר אם המצב מוגדר ל-COMLETE מספר פעמים.
|
outcome | סיווג התוצאה, למשל ל-SUCCESS או FAILURE
|
hasImages | האם כל אחת מהפלטים של שלב זה היא תמונות שניתן להביא את התמונות הממוזערות שלהן באמצעות thumbnails.list.
|
labels | צמדי מפתח/ערך שרירותיים שסופקו על ידי המשתמש המשויכים לשלב. המשתמשים אחראים לניהול מרחב השמות של המפתחות כך שמפתחות לא יתנגשו בטעות. INVALID_ARGUMENT יוחזר אם מספר התוויות יעלה על 100 או אם האורך של כל אחד מהמפתחות או הערכים עולה על 100 תווים.
אובייקט המכיל רשימה של |
dimensionValue | אם לביצוע המכיל את השלב הזה יש הגדרת dimension_definition כלשהי, שדה זה מאפשר לילד לציין את ערכי המידות. המפתחות חייבים להתאים בדיוק ל-dimension_definition של הביצוע. לדוגמה, אם לביצוע יש אם שלב אינו משתתף בממד אחד של המטריצה, הערך עבור ממד זה צריך להיות מחרוזת ריקה. לדוגמה, אם אחת הבדיקות מבוצעת על ידי רץ שאינו תומך בניסיונות חוזרים, לשלב יכול להיות אם השלב אינו משתתף באף מימד של המטריצה, הוא עלול להשאיר את dimensionValue לא מוגדר. PRECONDITION_FAILED יוחזר אם אחד מהמפתחות לא קיים ב-dimension_definition של הביצוע. PRECONDITION_FAILED יוחזר אם לשלב אחר בביצוע זה כבר יש את אותו שם ו-dimensionValue, אך שונה בשדות נתונים אחרים, לדוגמה, שדה הצעד שונה. PRECONDITION_FAILED יוחזר אם dimensionValue מוגדר, וקיימת dimension_definition בביצוע שלא צוין כאחד המפתחות.
אובייקט המכיל רשימה של |
runDuration | כמה זמן לקח לצעד הזה לפעול. אם לא מוגדר, זה מוגדר להפרש בין creationTime ל-comletionTime כאשר השלב מוגדר למצב COMPLETE. במקרים מסוימים, ראוי להגדיר ערך זה בנפרד: לדוגמה, אם נוצר שלב, אך הפעולה שהוא מייצג תור למספר דקות לפני ביצועה, ראוי לא לכלול את הזמן שהוקדש בתור. runDuration. PRECONDITION_FAILED יוחזר אם ינסה להגדיר runDuration בשלב שכבר הוגדר שדה זה.
|
deviceUsageDuration | כמה משאב המכשיר משמש לביצוע הבדיקה. זהו השימוש במכשיר המשמש למטרת חיוב, השונה מ-runDuration, לדוגמה, כשל בתשתית לא יחויב עבור השימוש במכשיר. PRECONDITION_FAILED יוחזר אם ינסה להגדיר device_usage בשלב שכבר הוגדר שדה זה.
|
multiStep | פרטים כאשר מספר שלבים מופעלים עם אותה תצורה כמו קבוצה. ניתן להשתמש בפרטים אלה כדי לזהות מאיזו קבוצה שלב זה הוא חלק. זה גם מזהה את 'השלב הראשוני' של הקבוצות אשר מוסיף את כל חברי הקבוצה.
|
| |
testExecutionStep | הוצאה להורג של רץ מבחן. |
toolExecutionStep | ביצוע של כלי (המשמש עבור שלבים שאינם תומכים במפורש). |
TestExecutionStep
שלב המייצג ריצת בדיקות.
הוא מקבל קבצי xml ant-junit אשר ינותחו לתוצאות בדיקה מובנות על ידי השירות. נתיבים של קבצי Xml מתעדכנים כדי להוסיף קבצים נוספים, אולם לא ניתן למחוק אותם.
משתמשים יכולים גם להוסיף תוצאות בדיקה באופן ידני באמצעות השדה test_result.
ייצוג JSON |
---|
{ "testSuiteOverviews": [ { object ( |
שדות | |
---|---|
testSuiteOverviews[] | רשימת תכני סקירה כללית של חבילת הבדיקה. זה יכול להיות מנותח מיומן xUnit XML על ידי שרת, או להעלות ישירות על ידי המשתמש. יש לקרוא להפניות אלה רק כאשר חבילות הבדיקה ממנותחות או מועלות במלואן. המספר המרבי המותר של סקירות כלליות של חבילות בדיקה בכל שלב הוא 1000.
|
toolExecution | מייצג את הביצוע של רץ המבחן. קוד היציאה של כלי זה ישמש כדי לקבוע אם המבחן עבר.
|
testIssues[] | בעיות שנצפו במהלך ביצוע הבדיקה. לדוגמה, אם האפליקציה לנייד הנבדקת קרסה במהלך הבדיקה, ניתן להקליט כאן את הודעת השגיאה ואת תוכן מעקב הערימה כדי לסייע באיתור באגים.
|
testTiming | התמוטטות התזמון של ביצוע הבדיקה.
|
ToolExecution
ביצוע של כלי שרירותי. זה יכול להיות רץ מבחן או כלי שמעתיק חפצים או פריסת קוד.
ייצוג JSON |
---|
{ "commandLineArguments": [ string ], "toolLogs": [ { object ( |
שדות | |
---|---|
commandLineArguments[] | שורת הפקודה האסימון המלאה כולל שם התוכנית (שווה ערך ל-argv בתוכנית C).
|
toolLogs[] | הפניות לכל יומני טקסט רגיל מוציאות את ביצוע הכלי. ניתן להגדיר שדה זה לפני יציאת הכלי על מנת לקבל גישה לתצוגה חיה של היומנים בזמן שהכלי פועל. המספר המרבי המותר של יומני כלים בכל שלב הוא 1000.
|
exitCode | קוד יציאה לביצוע כלי. שדה זה יוגדר לאחר יציאת הכלי.
|
toolOutputs[] | הפניות לקבצים אטומים בכל פורמט פלט על ידי ביצוע הכלי. המספר המרבי המותר של יציאות כלי בכל שלב הוא 1000.
|
ToolExitCode
צא מקוד מהפעלת כלי.
ייצוג JSON |
---|
{ "number": integer } |
שדות | |
---|---|
number | קוד יציאה לביצוע כלי. ערך 0 פירושו שהביצוע הצליח.
|
בעיית מבחן
זוהתה בעיה המתרחשת במהלך ביצוע בדיקה.
ייצוג JSON |
---|
{ "errorMessage": string, "stackTrace": { object ( |
שדות | |
---|---|
errorMessage | הודעה קצרה לקריאה אנושית המתארת את הנושא. נדרש. |
stackTrace | הוצא משימוש לטובת שדות מעקב מחסנית בתוך אזהרות ספציפיות. |
warning | הודעת אזהרה עם פרטים נוספים על הבעיה. צריכה להיות תמיד הודעה מ-com.google.devtools.toolresults.v1.warnings |
severity | חומרת הבעיה. נדרש. |
type | סוג הנושא. נדרש. |
category | קטגוריית הנושא. נדרש. |
כל
Any
מכיל הודעת חוצץ פרוטוקול מסודרת שרירותית יחד עם כתובת URL שמתארת את סוג ההודעה המסודרת.
ספריית Protobuf מספקת תמיכה לאריזה/פירוק כל ערכים בצורה של פונקציות שירות או שיטות נוספות שנוצרו מסוג Any.
דוגמה 1: ארוז ופרק הודעה ב-C++.
Foo foo = ...;
Any any;
any.PackFrom(foo);
...
if (any.UnpackTo(&foo)) {
...
}
דוגמה 2: ארוז ופרק הודעה ב-Java.
Foo foo = ...;
Any any = Any.pack(foo);
...
if (any.is(Foo.class)) {
foo = any.unpack(Foo.class);
}
דוגמה 3: ארוז ופרק הודעה ב-Python.
foo = Foo(...)
any = Any()
any.Pack(foo)
...
if any.Is(Foo.DESCRIPTOR):
any.Unpack(foo)
...
דוגמה 4: ארוז ופרק הודעה ב-Go
foo := &pb.Foo{...}
any, err := ptypes.MarshalAny(foo)
...
foo := &pb.Foo{}
if err := ptypes.UnmarshalAny(any, foo); err != nil {
...
}
שיטות החבילה המסופקות על ידי ספריית protobuf ישתמשו כברירת מחדל ב-'type.googleapis.com/full.type.name' ככתובת ה-URL של הסוג, ושיטות ה-Funpack ישתמשו רק בשם הסוג המלא לאחר ה-'/' האחרון בכתובת ה-URL של הסוג, לדוגמה "foo.bar.com/x/yz" יניב את שם הסוג "yz".
JSON
ייצוג ה-JSON של ערך Any
משתמש בייצוג הרגיל של ההודעה המוטמעת, עם שדה נוסף @type
המכיל את כתובת ה-URL של הסוג. דוגמא:
package google.profile;
message Person {
string first_name = 1;
string last_name = 2;
}
{
"@type": "type.googleapis.com/google.profile.Person",
"firstName": <string>,
"lastName": <string>
}
אם סוג ההודעה המוטבעת ידוע ויש לו ייצוג JSON מותאם אישית, ייצוג זה יוטמע תוך הוספת value
שדה המחזיק את ה-JSON המותאם אישית בנוסף לשדה @type
. דוגמה (להודעה google.protobuf.Duration
):
{
"@type": "type.googleapis.com/google.protobuf.Duration",
"value": "1.212s"
}
ייצוג JSON |
---|
{ "typeUrl": string, "value": string } |
שדות | |
---|---|
typeUrl | כתובת URL/שם משאב המזהה באופן ייחודי את סוג הודעת מאגר הפרוטוקול המסודר. מחרוזת זו חייבת להכיל לפחות תו "/" אחד. הפלח האחרון של הנתיב של כתובת האתר חייב לייצג את השם המלא של הסוג (כמו ב- בפועל, צוותים בדרך כלל מקימים מראש לבינארי את כל הסוגים שהם מצפים שהוא ישתמש בהקשר של Any. עם זאת, עבור כתובות URL המשתמשות בסכימת
הערה: פונקציונליות זו אינה זמינה כעת במהדורת ה-protobuf הרשמית, והיא אינה משמשת עבור סוג כתובות אתרים המתחילות ב-type.googleapis.com. ניתן להשתמש בסכמות שאינן |
value | חייב להיות מאגר פרוטוקול מסודר חוקי מהסוג שצוין לעיל. מחרוזת מקודדת base64. |
חוּמרָה
חומרת הבעיות.
תקצירים | |
---|---|
unspecifiedSeverity | ברירת מחדל לא מוגדרת. אל תשתמש. לניהול גרסאות בלבד. |
info | בעיה לא קריטית, מספקת למשתמשים מידע על ריצת הבדיקה. |
suggestion | בעיה לא קריטית, מספקת למשתמשים כמה רמזים לשיפור חווית הבדיקה שלהם, למשל, הצעה להשתמש ב-Game Loops. |
warning | נושא פוטנציאלי קריטי. |
severe | בעיה קריטית. |
סוּג
סוגי בעיות.
תקצירים | |
---|---|
unspecifiedType | סוג ברירת מחדל לא מוגדר. אל תשתמש. לניהול גרסאות בלבד. |
fatalException | הנושא הוא חריג קטלני. |
nativeCrash | הבעיה היא התרסקות מקומית. |
anr | הבעיה היא קריסת ANR. |
unusedRoboDirective | הבעיה היא הוראת רובו שאינה בשימוש. |
compatibleWithOrchestrator | הבעיה היא הצעה להשתמש בתזמר. |
launcherActivityNotFound | בעיה במציאת פעילות משגר |
startActivityNotFound | בעיה בפתרון כוונה שסופק על ידי המשתמש להתחיל פעילות |
incompleteRoboScriptExecution | תסריט רובו לא הוצא לפועל במלואו. |
completeRoboScriptExecution | תסריט רובו בוצע במלואו ובהצלחה. |
failedToInstall | התקנת ה-APK נכשלה. |
availableDeepLinks | לאפליקציה שבבדיקה יש קישורים עמוקים, אך אף אחד מהם לא סופק לרובו. |
nonSdkApiUsageViolation | האפליקציה ניגשה ל-API שאינו sdk. |
nonSdkApiUsageReport | האפליקציה ניגשה ל-API שאינו sdk (דוח מפורט חדש) |
encounteredNonAndroidUiWidgetScreen | סריקת רובו נתקלה במסך אחד לפחות עם אלמנטים שאינם ווידג'טים של ממשק אנדרואיד. |
encounteredLoginScreen | סריקת רובו נתקלה לפחות במסך כניסה סביר אחד. |
performedGoogleLogin | רובו נכנס עם Google. |
iosException | אפליקציית iOS קרסה עם חריג. |
iosCrash | אפליקציית iOS קרסה ללא יוצא מן הכלל (למשל נהרגה). |
performedMonkeyActions | זחילת רובו כללה ביצוע כמה פעולות קוף. |
usedRoboDirective | Robo crawl השתמש בהנחיית רובו. |
usedRoboIgnoreDirective | סריקה של Robo השתמשה בהנחיית Robo כדי להתעלם מאלמנט ממשק משתמש. |
insufficientCoverage | רובו לא סרק חלקים שעלולים להיות חשובים באפליקציה. |
inAppPurchases | סריקת רובו כללה כמה רכישות בתוך האפליקציה. |
crashDialogError | זוהתה תיבת דו-שיח קריסה במהלך ביצוע הבדיקה |
uiElementsTooDeep | עומק אלמנט ממשק המשתמש גדול מהסף |
blankScreen | מסך ריק נמצא בסריקת רובו |
overlappingUiElements | רכיבי ממשק משתמש חופפים נמצאים בסריקת Robo |
unityException | זוהתה חריגה של Unity שלא נתפסה (אפליקציות אלו אינן קורסות). |
deviceOutOfMemory | זוהה במכשיר שנגמר הזיכרון |
logcatCollectionError | זוהו בעיות במהלך איסוף logcat |
detectedAppSplashScreen | רובו זיהה מסך הפתיחה שסופק על ידי האפליקציה (לעומת מסך הפתיחה של מערכת ההפעלה אנדרואיד). |
קטגוריה
קטגוריות של בעיות.
תקצירים | |
---|---|
unspecifiedCategory | קטגוריית ברירת מחדל לא מוגדרת. אל תשתמש. לניהול גרסאות בלבד. |
common | הבעיה אינה ספציפית לסוג בדיקה מסוים (למשל, תאונה מקומית). |
robo | הבעיה היא ספציפית לריצת רובו. |
טסט טיימינג
תזמון בדיקות נשבר כדי לדעת שלבים.
ייצוג JSON |
---|
{
"testProcessDuration": {
object ( |
שדות | |
---|---|
testProcessDuration | כמה זמן לקח להפעיל את תהליך הבדיקה.
|
ToolExecutionStep
שלב כלי כללי לשימוש עבור קבצים בינאריים איננו תומכים במפורש. לדוגמה: הפעלת cp כדי להעתיק חפצים ממיקום אחד לאחר.
ייצוג JSON |
---|
{
"toolExecution": {
object ( |
שדות | |
---|---|
toolExecution | ביצוע כלי.
|
MultiStep
פרטים כאשר מספר שלבים מופעלים עם אותה תצורה כמו קבוצה.
ייצוג JSON |
---|
{
"primaryStepId": string,
"multistepNumber": integer,
"primaryStep": {
object ( |
שדות | |
---|---|
primaryStepId | מזהה שלב של השלב הראשי (המקורי), שעשוי להיות השלב הזה. |
multistepNumber | אינטנט ייחודי שניתן לכל שלב. נע בין 0 (כולל) למספר הכולל של שלבים (בלעדי). השלב העיקרי הוא 0. |
primaryStep | הצג אם זה שלב ראשוני (מקורי). |
שלב ראשי
מאחסן סטטוס בדיקת אוסף של שלבים מרובים שהופעלו כקבוצה ותוצאה של כל שלב בודד.
ייצוג JSON |
---|
{ "rollUp": enum ( |
שדות | |
---|---|
rollUp | סטטוס בדיקת אוסף של שלבים מרובים שהופעלו עם אותה תצורה כמו קבוצה. |
individualOutcome[] | זיהוי שלב ותוצאה של כל שלב בנפרד. |
תוצאה אישית
זיהוי שלב ותוצאה של כל שלב בודד שהופעל כקבוצה עם שלבים אחרים באותה תצורה.
ייצוג JSON |
---|
{ "stepId": string, "outcomeSummary": enum ( |
שדות | |
---|---|
stepId | |
outcomeSummary | |
multistepNumber | אינטנט ייחודי שניתן לכל שלב. נע בין 0 (כולל) למספר הכולל של שלבים (בלעדי). השלב העיקרי הוא 0. |
runDuration | כמה זמן לקח לצעד הזה לפעול. |
שיטות | |
---|---|
| מפרט אשכולות נגישות עבור שלב נתון עשוי להחזיר כל אחד מקודי השגיאה הקנוניים הבאים:
|
| יוצר שלב. |
| מקבל צעד. |
| מאחזר PerfMetricsSummary. |
| מפרט את השלבים עבור ביצוע נתון. |
| מעדכן שלב קיים עם הישות החלקית שסופקה. |
| פרסם קבצי xml לשלב קיים. |