Cơ sở hạ tầng kiểm thử tự động

Android 9 bao gồm một cơ sở hạ tầng Bộ kiểm thử của nhà cung cấp (VTS) để kiểm thử tự động VTS, CTS hoặc các kiểm thử khác trên thiết bị của đối tác chạy hình ảnh hệ thống chung (GSI) AOSP. Trước đây, việc chạy các quy trình kiểm thử này là một thao tác thủ công; cơ sở hạ tầng kiểm thử VTS mới được thiết kế để hỗ trợ kiểm thử tự động nhiều lần trong ngày trên nhiều thiết bị.

Kiến trúc

Cơ sở hạ tầng kiểm thử tự động VTS sử dụng cấu trúc sau:

Cấu trúc kiểm thử tự động

Hình 1. Cấu trúc cơ sở hạ tầng kiểm thử tự động của VTS

Khi một kiểm thử được kích hoạt, cơ sở hạ tầng kiểm thử tự động của VTS sẽ thực hiện các nhiệm vụ sau:

  1. Tìm nạp cấu phần phần mềm bản dựng và tài nguyên kiểm thử từ nhiều vị trí:
    • Bản dựng Android của đối tác (PAB). Đối với GSI, khung VTS và một số bản dựng khác.
    • Hệ thống tệp cục bộ, Google Cloud Storage hoặc hệ thống xây dựng khác dành riêng cho nhà cung cấp. Đối với những đối tác không lưu trữ bản dựng trong đám mây của Google.
  2. Truyền nhanh các cấu phần phần mềm bản dựng (từ thiết bị) và GSI (từ AOSP) sang(các) thiết bị đã kết nối.
  3. Chạy các kiểm thử VTS bằng TradeFed cục bộ hoặc TradeFed trên đám mây.
  4. Báo cáo kết quả thử nghiệm cho trang tổng quan VTS

Quá trình này do bộ điều khiển máy chủ VTS (HC) điều phối. Đây là một máy trong phòng thí nghiệm giúp chỉ đạo hành vi của tất cả thiết bị đã kết nối đang trong quá trình kiểm thử. HC chịu trách nhiệm tìm nạp các bản dựng mới nhất, cài đặt ROM lên thiết bị và gọi các chương trình kiểm thử (tại cục bộ hoặc thông qua trình điều khiển). Trình điều phối này cũng giao tiếp với trình lập lịch biểu trên đám mây và định hướng lưu lượng truy cập giữa trình lập lịch biểu và thực thể TradeFed (hoặc một số bộ điều hợp khác) chạy trên HC. Để biết thông tin chi tiết về bộ điều khiển máy chủ, hãy xem phần Cấu trúc bộ điều khiển máy chủ.

Nhà cung cấp tài nguyên

Quy trình kiểm thử tự động yêu cầu các tài nguyên như bản dựng hệ thống, tệp kiểm thử và cấu phần phần mềm VTS. Mặc dù bạn có thể tạo các cấu phần phần mềm này từ nguồn, nhưng việc tạo các cấu phần phần mềm này từ đầu cây thường xuyên sẽ dễ dàng hơn, sau đó đăng các cấu phần phần mềm để tải xuống.

Đối tác có thể truy cập vào các tài nguyên tự động hoá tại các vị trí sau:

  • Bản dựng Android của đối tác. Quyền truy cập có lập trình được cấp cho từng tài khoản.
  • Hệ thống tệp cục bộ (hoặc tương tự). Dành cho những đối tác không sử dụng Bản dựng Android dành cho đối tác.

Để sử dụng trong quá trình cài đặt ROM cho thiết bị sau này, tài nguyên bao gồm các trình cung cấp bản dựng cho cả hai tuỳ chọn, mở rộng từ một build_provider.py duy nhất lưu trữ các bản dựng trong thư mục tạm thời cục bộ.

Bản dựng Android dành cho đối tác

Trong các bản phát hành Android 8.1 trở xuống, các đối tác Android bắt buộc phải truy cập vào trang web Bản dựng Android dành cho đối tác (https://partner.android.com/build), chuyển đến tài khoản của họ và tìm nạp hình ảnh hệ thống mới nhất thông qua giao diện người dùng. Để giúp các đối tác tránh được quy trình chậm và tốn nhiều công sức này, Android 9 hỗ trợ tự động tải các tài nguyên này xuống từ PAB khi bạn cung cấp thông tin xác thực thích hợp.

Thiết lập quyền truy cập

Quyền truy cập có lập trình sử dụng OAuth2 trên các API của Google để truy cập vào các RPC bắt buộc. Khi sử dụng phương pháp tiêu chuẩn để tạo thông tin xác thực OAuth2, đối tác phải thiết lập một cặp mã ứng dụng khách/khoá bí mật với Google. Khi PartnerAndroidBuildClient được trỏ đến khoá bí mật đó lần đầu tiên, thao tác này sẽ mở một cửa sổ trình duyệt để người dùng đăng nhập vào tài khoản Google của họ. Thao tác này sẽ tạo thông tin xác thực OAuth2 cần thiết để tiếp tục. Thông tin xác thực (mã thông báo truy cập và mã thông báo làm mới) được lưu trữ cục bộ, nghĩa là đối tác chỉ cần đăng nhập một lần.

Yêu cầu POST cho URL

Khi nhấp vào đường liên kết tài nguyên trong PAB, hệ thống sẽ gửi một yêu cầu POST bao gồm dữ liệu cần thiết cho tài nguyên đó, bao gồm:

  • mã bản dựng, mục tiêu bản dựng
  • tên tài nguyên
  • nhánh
  • tên bản phát hành dùng thử và liệu bản phát hành dùng thử có phải là bản dựng nội bộ hay không

Yêu cầu POST được phương thức downloadBuildArtifact của RPC buildsvc nhận, phương thức này sẽ trả về một URL có thể dùng để truy cập vào tài nguyên.

  • Đối với tài nguyên APK của Clockwork Companion, URL là một URL có thể đọc được được lưu trữ trên PAB (được bảo vệ bằng thông tin xác thực và có thể truy cập bằng thông tin xác thực OAuth2 thích hợp).
  • Đối với các tài nguyên khác, URL là URL dài, không được bảo vệ từ API bản dựng Android nội bộ (hết hạn sau 5 phút).

Lấy URL

Để tránh giả mạo yêu cầu trên nhiều trang web, RPC buildsvc yêu cầu mã thông báo XSRF được POST cùng với các tham số khác. Mặc dù mã thông báo này giúp quá trình này bảo mật hơn, nhưng cũng khiến việc truy cập có lập trình trở nên khó khăn hơn nhiều vì mã thông báo (chỉ có trong JavaScript của trang PAB) hiện cũng là điều kiện bắt buộc để truy cập.

Để tránh vấn đề này, Android 9 thiết kế lại lược đồ đặt tên URL cho tất cả tệp (không chỉ APK) để sử dụng tên URL có thể dự đoán được khi truy cập vào danh sách cấu phần phần mềm và URL cấu phần phần mềm. PAB hiện sử dụng định dạng URL thuận tiện cho phép các đối tác tải tài nguyên xuống; tập lệnh HC có thể dễ dàng tải các tệp APK đó xuống vì định dạng URL đã được biết và HC có thể bỏ qua các vấn đề về XSRF/cookie vì không cần RPC buildsvc.

Hệ thống tệp cục bộ

Với một thư mục có danh sách (hoặc tệp zip) của cấu phần phần mềm, trình cung cấp bản dựng sẽ đặt hình ảnh có liên quan dựa trên nội dung trong thư mục. Bạn có thể sử dụng công cụ gsutil để sao chép tệp từ Google Cloud Storage vào một thư mục cục bộ.

Bản dựng Flash

Sau khi hình ảnh thiết bị mới nhất được tải xuống máy chủ, bạn phải cài đặt ROM hình ảnh đó vào các thiết bị. Việc này được thực hiện bằng cách sử dụng các lệnh adbfastboot tiêu chuẩn và các quy trình con Python, dựa trên đường dẫn tệp tạm thời do trình cung cấp bản dựng lưu trữ.

Thao tác được hỗ trợ:

  • Chỉ cài đặt ROM GSI
  • Cài đặt ROM từng hình ảnh riêng lẻ từ hệ thống chính (ví dụ: fastboot flash boot boot.img)
  • Truyền nhanh tất cả hình ảnh từ hệ thống chính. Ví dụ:
    • fastboot flashall (sử dụng tiện ích flashall tích hợp sẵn)
    • fastboot flash (từng đối tượng)

Chạy chương trình kiểm thử

Trên Android 9, cơ sở hạ tầng kiểm thử tự động VTS chỉ hỗ trợ hoạt động khai thác kiểm thử TradeFed, nhưng có thể được mở rộng để hỗ trợ các cơ sở khai thác khác trong tương lai.

Sau khi thiết bị được chuẩn bị, bạn có thể gọi các kiểm thử bằng một trong các tuỳ chọn sau:

  • Khi sử dụng TradeFed cục bộ, hãy sử dụng lệnh test trong trình điều khiển máy chủ lưu trữ. Lệnh này lấy tên của một kế hoạch kiểm thử VTS (ví dụ: vts-selftest) và chạy kiểm thử.
  • Khi sử dụng cụm TradeFed (có thể kết nối với MTT), hãy dùng lệnh lease trong bảng điều khiển của bộ điều khiển máy chủ để tìm các lượt chạy kiểm thử chưa được thực hiện.

Nếu sử dụng TradeFedCluster, TradeFed sẽ chạy tại cục bộ dưới dạng trình quản lý từ xa. Nếu không, các chương trình kiểm thử sẽ được gọi bằng các quy trình con Python.

Kết quả báo cáo

Kết quả kiểm thử được VtsMultiDeviceTest tự động báo cáo cho một số dự án trang tổng quan VTS.