- Tài nguyên: Bước
- Kiểm traThực hiệnBước
- Công cụ thực thi
- Mã thoát công cụ
- Vấn đề kiểm tra
- Bất kì
- Mức độ nghiêm trọng
- Kiểu
- Loại
- Kiểm traThời gian
- Công cụThực thiBước
- Nhiều bước
- Bước chính
- Cá nhânKết quả
- phương pháp
Tài nguyên: Bước
Bước thể hiện một thao tác đơn lẻ được thực hiện như một phần của Thực thi. Một bước có thể được sử dụng để thể hiện việc thực thi một công cụ (ví dụ: thực thi trình chạy thử hoặc thực thi trình biên dịch).
Các bước có thể trùng nhau (ví dụ: hai bước có thể có cùng thời gian bắt đầu nếu một số thao tác được thực hiện song song).
Dưới đây là một ví dụ, hãy xem xét rằng chúng ta có một bản dựng liên tục đang thực thi một trình chạy thử nghiệm cho mỗi lần lặp. Quy trình công việc sẽ như sau: - người dùng tạo Thực thi với id 1 - người dùng tạo TestExecutionStep với id 100 cho Thực thi 1 - người dùng cập nhật TestExecutionStep với id 100 để thêm nhật ký xml thô + dịch vụ phân tích nhật ký xml và trả về TestExecutionStep với (các) TestResult đã cập nhật. - người dùng cập nhật trạng thái TestExecutionStep với id 100 thành HOÀN THÀNH
Một Bước có thể được cập nhật cho đến khi trạng thái của nó được đặt thành HOÀN THÀNH tại thời điểm đó nó trở thành bất biến.
Biểu diễn JSON |
---|
{ "stepId": string, "creationTime": { object ( |
Lĩnh vực | |
---|---|
stepId | Mã định danh duy nhất trong Thực thi cho Bước này. Trả về INVALID_ARGUMENT nếu trường này được người gọi đặt hoặc ghi đè.
|
creationTime | Thời điểm bước này được tạo.
|
completionTime | Thời điểm trạng thái bước được đặt thành hoàn thành. Giá trị này sẽ được đặt tự động khi trạng thái chuyển sang HOÀN THÀNH.
|
name | Một tên ngắn gọn mà con người có thể đọc được để hiển thị trong giao diện người dùng. Tối đa 100 ký tự. Ví dụ: Xây dựng sạch sẽ PRECONDITION_FAILED sẽ được trả về khi tạo một bước mới nếu nó chia sẻ tên và giá trị thứ nguyên với bước hiện có. Nếu hai bước thể hiện một hành động tương tự nhưng có các giá trị thứ nguyên khác nhau thì chúng phải có cùng tên. Ví dụ: nếu cùng một bộ thử nghiệm được chạy trên hai nền tảng khác nhau thì hai bước này phải có cùng tên.
|
description | Mô tả về công cụ này Ví dụ: mvn clean package -D SkipTests=true
|
state | Trạng thái ban đầu là IN_PROGRESS. Chuyển đổi trạng thái hợp pháp duy nhất là * IN_PROGRESS -> HOÀN THÀNH PRECONDITION_FAILED sẽ được trả về nếu yêu cầu chuyển đổi không hợp lệ. Việc tạo Bước với trạng thái được đặt thành HOÀN THÀNH là hợp lệ. Trạng thái chỉ có thể được đặt thành HOÀN THÀNH một lần. PRECONDITION_FAILED sẽ được trả về nếu trạng thái được đặt thành HOÀN THÀNH nhiều lần.
|
outcome | Phân loại kết quả, ví dụ thành THÀNH CÔNG hoặc THẤT BẠI
|
hasImages | Liệu bất kỳ kết quả đầu ra nào của bước này có phải là hình ảnh có thể được tìm nạp bằng hình thu nhỏ hay không.list.
|
labels | Các cặp khóa/giá trị tùy ý do người dùng cung cấp được liên kết với bước này. Người dùng chịu trách nhiệm quản lý không gian tên khóa sao cho các khóa không vô tình xung đột. INVALID_ARGUMENT sẽ được trả về nếu số lượng nhãn vượt quá 100 hoặc nếu độ dài của bất kỳ khóa hoặc giá trị nào vượt quá 100 ký tự.
Một đối tượng chứa danh sách các cặp |
dimensionValue | Nếu quá trình thực thi chứa bước này có bất kỳ bộ định nghĩa kích thước nào thì trường này cho phép trẻ chỉ định các giá trị của các kích thước. Các khóa phải khớp chính xác với định nghĩa thứ nguyên của quá trình thực thi. Ví dụ: nếu quá trình thực thi có Nếu một bước không tham gia vào một chiều của ma trận thì giá trị cho chiều đó phải là chuỗi trống. Ví dụ: nếu một trong các thử nghiệm được thực hiện bởi một người chạy không hỗ trợ thử lại, thì bước này có thể có Nếu bước này không tham gia vào bất kỳ thứ nguyên nào của ma trận thì nó có thể không đặt thứ nguyên. PRECONDITION_FAILED sẽ được trả về nếu bất kỳ khóa nào không tồn tại trong định nghĩa thứ nguyên của quá trình thực thi. PRECONDITION_FAILED sẽ được trả về nếu một bước khác trong quá trình thực thi này đã có cùng tên và DimensionValue nhưng khác nhau trên các trường dữ liệu khác, ví dụ: trường bước khác. PRECONDITION_FAILED sẽ được trả về nếu DimensionValue được đặt và có Dimension_def định trong quá trình thực thi không được chỉ định làm một trong các khóa.
Một đối tượng chứa danh sách các cặp |
runDuration | Phải mất bao lâu để bước này chạy. Nếu không được đặt, giá trị này sẽ được đặt thành chênh lệch giữa Thời gian sáng tạo và Thời gian hoàn thành khi bước này được đặt thành trạng thái HOÀN THÀNH. Trong một số trường hợp, việc đặt riêng giá trị này là phù hợp: Ví dụ: nếu một bước được tạo nhưng thao tác mà nó đại diện được xếp hàng đợi trong vài phút trước khi thực thi, sẽ là phù hợp nếu không bao gồm thời gian xếp hàng trong bước đó. runDuration. PRECONDITION_FAILED sẽ được trả về nếu một người cố gắng đặt runDuration trên một bước đã được đặt trường này.
|
deviceUsageDuration | Bao nhiêu tài nguyên thiết bị được sử dụng để thực hiện kiểm tra. Đây là mức sử dụng thiết bị được sử dụng cho mục đích thanh toán, khác với runDuration, ví dụ: lỗi cơ sở hạ tầng sẽ không bị tính phí cho việc sử dụng thiết bị. PRECONDITION_FAILED sẽ được trả về nếu một người cố gắng đặt device_usage trên một bước đã được đặt trường này.
|
multiStep | Thông tin chi tiết khi nhiều bước được chạy với cùng cấu hình với một nhóm. Những chi tiết này có thể được sử dụng để xác định bước này thuộc về nhóm nào. Nó cũng xác định 'bước chính' của nhóm để lập chỉ mục cho tất cả các thành viên trong nhóm.
|
Liên quân | |
testExecutionStep | Một cuộc thực hiện của một người chạy thử nghiệm. |
toolExecutionStep | Việc thực thi một công cụ (được sử dụng cho các bước mà chúng tôi không hỗ trợ rõ ràng). |
Kiểm traThực hiệnBước
Một bước đại diện cho việc chạy thử nghiệm.
Nó chấp nhận các tệp xml ant-junit sẽ được dịch vụ phân tích cú pháp thành kết quả kiểm tra có cấu trúc. Đường dẫn tệp Xml được cập nhật để nối thêm nhiều tệp hơn, tuy nhiên chúng không thể xóa được.
Người dùng cũng có thể thêm kết quả kiểm tra theo cách thủ công bằng cách sử dụng trường test_result.
Biểu diễn JSON |
---|
{ "testSuiteOverviews": [ { object ( |
Lĩnh vực | |
---|---|
testSuiteOverviews[] | Danh sách nội dung tổng quan của bộ thử nghiệm. Điều này có thể được phân tích cú pháp từ nhật ký XML xUnit của máy chủ hoặc được người dùng tải lên trực tiếp. Tài liệu tham khảo này chỉ nên được gọi khi bộ thử nghiệm được phân tích cú pháp hoặc tải lên đầy đủ. Số lượng tổng quan về bộ thử nghiệm tối đa được phép cho mỗi bước là 1000.
|
toolExecution | Thể hiện việc thực thi của người chạy thử. Mã thoát của công cụ này sẽ được sử dụng để xác định xem bài kiểm tra có vượt qua hay không.
|
testIssues[] | Các vấn đề được quan sát trong quá trình thực hiện thử nghiệm. Ví dụ: nếu ứng dụng di động đang được thử nghiệm gặp sự cố trong quá trình thử nghiệm thì thông báo lỗi và nội dung theo dõi ngăn xếp có thể được ghi lại tại đây để hỗ trợ gỡ lỗi.
|
testTiming | Phân tích thời gian thực hiện kiểm thử.
|
Công cụ thực thi
Việc thực thi một công cụ tùy ý. Nó có thể là một trình chạy thử nghiệm hoặc một công cụ sao chép các tạo phẩm hoặc mã triển khai.
Biểu diễn JSON |
---|
{ "commandLineArguments": [ string ], "toolLogs": [ { object ( |
Lĩnh vực | |
---|---|
commandLineArguments[] | Dòng lệnh được mã hóa đầy đủ bao gồm tên chương trình (tương đương với argv trong chương trình C).
|
toolLogs[] | Các tham chiếu đến bất kỳ nhật ký văn bản đơn giản nào đều xuất ra việc thực thi công cụ. Trường này có thể được đặt trước khi công cụ thoát ra để có thể truy cập vào chế độ xem trực tiếp nhật ký trong khi công cụ đang chạy. Số lượng nhật ký công cụ tối đa được phép cho mỗi bước là 1000.
|
exitCode | Mã thoát thực thi công cụ. Trường này sẽ được đặt sau khi công cụ đã thoát.
|
toolOutputs[] | Tham chiếu đến các tệp không rõ ràng ở bất kỳ định dạng nào được xuất ra bằng cách thực thi công cụ. Số lượng đầu ra dao tối đa được phép cho mỗi bước là 1000.
|
Mã thoát công cụ
Thoát mã khỏi quá trình thực thi công cụ.
Biểu diễn JSON |
---|
{ "number": integer } |
Lĩnh vực | |
---|---|
number | Mã thoát thực thi công cụ. Giá trị 0 có nghĩa là việc thực thi đã thành công.
|
Vấn đề kiểm tra
Đã phát hiện sự cố xảy ra trong quá trình thực hiện thử nghiệm.
Biểu diễn JSON |
---|
{ "errorMessage": string, "stackTrace": { object ( |
Lĩnh vực | |
---|---|
errorMessage | Một thông báo ngắn gọn mà con người có thể đọc được mô tả vấn đề. Yêu cầu. |
stackTrace | Không được dùng nữa để ủng hộ các trường theo dõi ngăn xếp bên trong các cảnh báo cụ thể. |
warning | Thông báo cảnh báo với các chi tiết bổ sung về vấn đề. Phải luôn là tin nhắn từ com.google.devtools.toolresults.v1.warnings |
severity | Mức độ nghiêm trọng của vấn đề. Yêu cầu. |
type | Loại vấn đề. Yêu cầu. |
category | Hạng mục vấn đề. Yêu cầu. |
Bất kì
Any
chứa thông báo đệm giao thức được tuần tự hóa tùy ý cùng với một URL mô tả loại thông báo được tuần tự hóa.
Thư viện Protobuf cung cấp hỗ trợ đóng gói/giải nén Bất kỳ giá trị nào dưới dạng các hàm tiện ích hoặc các phương thức được tạo bổ sung thuộc loại Bất kỳ.
Ví dụ 1: Đóng gói và giải nén một tin nhắn trong C++.
Foo foo = ...;
Any any;
any.PackFrom(foo);
...
if (any.UnpackTo(&foo)) {
...
}
Ví dụ 2: Đóng gói và giải nén một tin nhắn trong Java.
Foo foo = ...;
Any any = Any.pack(foo);
...
if (any.is(Foo.class)) {
foo = any.unpack(Foo.class);
}
Ví dụ 3: Đóng gói và giải nén tin nhắn trong Python.
foo = Foo(...)
any = Any()
any.Pack(foo)
...
if any.Is(Foo.DESCRIPTOR):
any.Unpack(foo)
...
Ví dụ 4: Đóng gói và giải nén tin nhắn trong Go
foo := &pb.Foo{...}
any, err := ptypes.MarshalAny(foo)
...
foo := &pb.Foo{}
if err := ptypes.UnmarshalAny(any, foo); err != nil {
...
}
Theo mặc định, các phương thức gói do thư viện protobuf cung cấp sẽ sử dụng 'type.googleapis.com/full.type.name' làm URL loại và các phương thức giải nén chỉ sử dụng tên loại đủ điều kiện sau '/' cuối cùng trong URL loại, ví dụ: "foo.bar.com/x/yz" sẽ mang lại tên loại "yz".
JSON
Biểu diễn JSON của một giá trị Any
sử dụng biểu diễn thông thường của thông báo được nhúng, được giải tuần tự hóa, với trường bổ sung @type
chứa URL loại. Ví dụ:
package google.profile;
message Person {
string first_name = 1;
string last_name = 2;
}
{
"@type": "type.googleapis.com/google.profile.Person",
"firstName": <string>,
"lastName": <string>
}
Nếu loại thông báo được nhúng là phổ biến và có biểu diễn JSON tùy chỉnh, thì biểu diễn đó sẽ được nhúng thêm một value
trường chứa JSON tùy chỉnh ngoài trường @type
. Ví dụ (đối với tin nhắn google.protobuf.Duration
):
{
"@type": "type.googleapis.com/google.protobuf.Duration",
"value": "1.212s"
}
Biểu diễn JSON |
---|
{ "typeUrl": string, "value": string } |
Lĩnh vực | |
---|---|
typeUrl | Tên URL/tài nguyên xác định duy nhất loại thông báo bộ đệm giao thức được tuần tự hóa. Chuỗi này phải chứa ít nhất một ký tự "/". Đoạn cuối cùng của đường dẫn URL phải thể hiện tên đủ điều kiện của loại (như trong Trong thực tế, các nhóm thường biên dịch trước thành dạng nhị phân tất cả các loại mà họ mong đợi nó sẽ sử dụng trong ngữ cảnh Bất kỳ. Tuy nhiên, đối với các URL sử dụng lược đồ
Lưu ý: chức năng này hiện không có trong bản phát hành protobuf chính thức và không được sử dụng cho các loại URL bắt đầu bằng type.googleapis.com. Các lược đồ khác ngoài |
value | Phải là bộ đệm giao thức được tuần tự hóa hợp lệ thuộc loại được chỉ định ở trên. Một chuỗi được mã hóa base64. |
Mức độ nghiêm trọng
Mức độ nghiêm trọng của vấn đề.
Enum | |
---|---|
unspecifiedSeverity | Mặc định mức độ nghiêm trọng không xác định. Không được dùng. Chỉ dành cho phiên bản. |
info | Sự cố không nghiêm trọng, cung cấp cho người dùng một số thông tin về quá trình chạy thử. |
suggestion | Sự cố không nghiêm trọng, cung cấp cho người dùng một số gợi ý về cách cải thiện trải nghiệm thử nghiệm của họ, ví dụ: đề xuất sử dụng Vòng lặp trò chơi. |
warning | Có thể có vấn đề nghiêm trọng. |
severe | Vấn đề quan trọng. |
Kiểu
Các loại vấn đề.
Enum | |
---|---|
unspecifiedType | Loại không xác định mặc định. Không được dùng. Chỉ dành cho phiên bản. |
fatalException | Vấn đề là một ngoại lệ nghiêm trọng. |
nativeCrash | Vấn đề là một sự cố bản địa. |
anr | Vấn đề là sự cố ANR. |
unusedRoboDirective | Vấn đề là một lệnh robo chưa được sử dụng. |
compatibleWithOrchestrator | Vấn đề là đề xuất sử dụng bộ điều phối. |
launcherActivityNotFound | Sự cố khi tìm hoạt động của trình khởi chạy |
startActivityNotFound | Vấn đề khi giải quyết ý định bắt đầu một hoạt động do người dùng cung cấp |
incompleteRoboScriptExecution | Tập lệnh Robo chưa được thực thi đầy đủ. |
completeRoboScriptExecution | Tập lệnh Robo đã được thực thi đầy đủ và thành công. |
failedToInstall | APK không cài đặt được. |
availableDeepLinks | Ứng dụng đang thử nghiệm có các liên kết sâu nhưng không có liên kết nào được cung cấp cho Robo. |
nonSdkApiUsageViolation | Ứng dụng đã truy cập Api không phải sdk. |
nonSdkApiUsageReport | Ứng dụng đã truy cập Api không phải sdk (báo cáo chi tiết mới) |
encounteredNonAndroidUiWidgetScreen | Thu thập dữ liệu bằng Robo đã gặp phải ít nhất một màn hình có các thành phần không phải là tiện ích giao diện người dùng Android. |
encounteredLoginScreen | Thu thập dữ liệu bằng Robo đã gặp phải ít nhất một màn hình đăng nhập có thể xảy ra. |
performedGoogleLogin | Robo đã đăng nhập bằng Google. |
iosException | Ứng dụng iOS bị lỗi do ngoại lệ. |
iosCrash | Ứng dụng iOS bị lỗi mà không có ngoại lệ (ví dụ: bị giết). |
performedMonkeyActions | Robo crawl liên quan đến việc thực hiện một số hành động của khỉ. |
usedRoboDirective | Thu thập thông tin bằng Robo đã sử dụng lệnh Robo. |
usedRoboIgnoreDirective | Thu thập thông tin bằng Robo đã sử dụng lệnh Robo để bỏ qua thành phần giao diện người dùng. |
insufficientCoverage | Robo đã không thu thập dữ liệu một số phần có thể quan trọng của ứng dụng. |
inAppPurchases | Thu thập dữ liệu bằng robot liên quan đến một số giao dịch mua trong ứng dụng. |
crashDialogError | Hộp thoại sự cố đã được phát hiện trong quá trình thực hiện thử nghiệm |
uiElementsTooDeep | Độ sâu thành phần giao diện người dùng lớn hơn ngưỡng |
blankScreen | Màn hình trống được tìm thấy trong quá trình thu thập thông tin của Robo |
overlappingUiElements | Các phần tử giao diện người dùng chồng chéo được tìm thấy trong quá trình thu thập thông tin của Robo |
unityException | Đã phát hiện một ngoại lệ Unity chưa được phát hiện (những ứng dụng này không gặp sự cố). |
deviceOutOfMemory | Đã phát hiện thiết bị hết bộ nhớ |
logcatCollectionError | Đã phát hiện sự cố khi thu thập logcat |
detectedAppSplashScreen | Robo đã phát hiện thấy màn hình chờ do ứng dụng cung cấp (so với màn hình chờ của hệ điều hành Android). |
Loại
Các loại vấn đề.
Enum | |
---|---|
unspecifiedCategory | Danh mục mặc định không xác định. Không được dùng. Chỉ dành cho phiên bản. |
common | Sự cố không dành riêng cho một loại thử nghiệm cụ thể (ví dụ: sự cố tự nhiên). |
robo | Vấn đề cụ thể đối với việc chạy Robo. |
Kiểm traThời gian
Phân tích thời gian kiểm tra để biết các giai đoạn.
Biểu diễn JSON |
---|
{
"testProcessDuration": {
object ( |
Lĩnh vực | |
---|---|
testProcessDuration | Mất bao lâu để chạy quá trình thử nghiệm.
|
Công cụThực thiBước
Bước công cụ chung sẽ được sử dụng cho các tệp nhị phân mà chúng tôi không hỗ trợ rõ ràng. Ví dụ: chạy cp để sao chép các tạo phẩm từ vị trí này sang vị trí khác.
Biểu diễn JSON |
---|
{
"toolExecution": {
object ( |
Lĩnh vực | |
---|---|
toolExecution | Thực thi công cụ.
|
Nhiều bước
Thông tin chi tiết khi nhiều bước được chạy với cùng cấu hình với một nhóm.
Biểu diễn JSON |
---|
{
"primaryStepId": string,
"multistepNumber": integer,
"primaryStep": {
object ( |
Lĩnh vực | |
---|---|
primaryStepId | Id bước của bước chính (ban đầu), có thể là bước này. |
multistepNumber | Int duy nhất được cung cấp cho mỗi bước. Phạm vi từ 0 (bao gồm) đến tổng số bước (độc quyền). Bước chính là 0. |
primaryStep | Trình bày nếu đó là bước chính (ban đầu). |
Bước chính
Lưu trữ trạng thái kiểm tra tổng hợp của nhiều bước được chạy dưới dạng nhóm và kết quả của từng bước riêng lẻ.
Biểu diễn JSON |
---|
{ "rollUp": enum ( |
Lĩnh vực | |
---|---|
rollUp | Trạng thái kiểm tra tổng hợp của nhiều bước được chạy với cùng cấu hình với một nhóm. |
individualOutcome[] | Id bước và kết quả của từng bước riêng lẻ. |
Cá nhânKết quả
Id bước và kết quả của từng bước riêng lẻ được chạy dưới dạng nhóm với các bước khác có cùng cấu hình.
Biểu diễn JSON |
---|
{ "stepId": string, "outcomeSummary": enum ( |
Lĩnh vực | |
---|---|
stepId | |
outcomeSummary | |
multistepNumber | Int duy nhất được cung cấp cho mỗi bước. Phạm vi từ 0 (bao gồm) đến tổng số bước (độc quyền). Bước chính là 0. |
runDuration | Phải mất bao lâu để bước này chạy. |
phương pháp | |
---|---|
| Liệt kê các cụm khả năng truy cập cho một Bước nhất định Có thể trả về bất kỳ mã lỗi chuẩn nào sau đây:
|
| Tạo một bước. |
| Được một bước. |
| Truy xuất PerfMetricsSummary. |
| Liệt kê các bước cho một lần thực thi nhất định. |
| Cập nhật Bước hiện có với thực thể một phần được cung cấp. |
| Xuất bản tệp xml lên Bước hiện có. |