Thiết lập Trang tổng quan VTS

Trang tổng quan VTS cung cấp phần phụ trợ người dùng và giao diện người dùng (UI) để xem kết quả kiểm thử từ hệ thống tích hợp liên tục VTS. Công cụ này hỗ trợ phát triển dựa trên kiểm thử bằng các công cụ như thông báo trạng thái kiểm thử để giúp nhà phát triển xác định và ngăn chặn các khu vực hồi quy trong chu kỳ phát triển (bao gồm cả việc giám sát kiểm thử và hỗ trợ phân loại).

Giao diện người dùng của Trang tổng quan VTS hỗ trợ các tính năng (chẳng hạn như mức độ sử dụng mã gốc) do cơ sở hạ tầng VTS cung cấp và cung cấp tính năng giám sát hiệu suất liên tục để cho phép phát triển các công cụ hiệu suất được tối ưu hoá và mô tả rõ ràng.

Yêu cầu

Bạn cần có các dịch vụ sau để sử dụng Trang tổng quan về VTS:

Việc xem mức độ sử dụng mã kiểm thử dựa vào API REST đến máy chủ mã nguồn (ví dụ: Gerrit). API này cho phép dịch vụ web tìm nạp mã nguồn gốc theo danh sách kiểm soát quyền truy cập hiện có.

Kiến trúc

Trang tổng quan VTS sử dụng cấu trúc sau:

Hình 1. Cấu trúc của Trang tổng quan VTS.

Kết quả trạng thái kiểm thử liên tục được tải lên cơ sở dữ liệu Cloud Datastore thông qua giao diện REST. Trình chạy VTS tự động xử lý kết quả và chuyển đổi tuần tự các kết quả đó bằng định dạng Protobuf.

Servlet web tạo thành điểm truy cập chính cho người dùng, phân phối và xử lý dữ liệu từ cơ sở dữ liệu Datastore. Các servlet bao gồm: một servlet chính để phân phối tất cả các chương trình kiểm thử, một servlet lựa chọn ưu tiên để quản lý các mục yêu thích của người dùng, một servlet kết quả để điền vào bảng kiểm thử, một servlet biểu đồ để chuẩn bị dữ liệu phân tích tài nguyên và một servlet mức độ sử dụng để chuẩn bị dữ liệu mức độ sử dụng cho ứng dụng.

Mỗi mô-đun kiểm thử có một cây phả hệ Datastore riêng và kết quả kiểm thử được lập chỉ mục bằng dấu thời gian Unix của thời gian bắt đầu kiểm thử. Dữ liệu về mức độ sử dụng trong cơ sở dữ liệu được lưu trữ cùng với kết quả kiểm thử dưới dạng một vectơ số lượng (tức là cho mỗi dòng trong tệp nguồn gốc) và thông tin nhận dạng để tìm nạp mã nguồn từ máy chủ mã nguồn.

Dịch vụ thông báo chạy bằng cách sử dụng hàng đợi tác vụ, xác định các thay đổi về trạng thái trường hợp kiểm thử và thông báo cho người đăng ký. Thông tin trạng thái được lưu trữ trong bảng trạng thái để theo dõi độ mới của dữ liệu và các lỗi hiện có. Điều này cho phép dịch vụ thông báo cung cấp thông tin phong phú về các lỗi và cách khắc phục từng trường hợp kiểm thử.

Cấu trúc mã

Các thành phần thiết yếu của Trang tổng quan VTS bao gồm các servlet được triển khai trong Java, JSP giao diện người dùng, các tệp định kiểu CSS và tệp cấu hình. Danh sách sau đây nêu chi tiết vị trí và nội dung mô tả của các thành phần này (tất cả đường dẫn đều tương ứng với test/vts/web/dashboard):

  • pom.xml
    Tệp cài đặt nơi xác định các biến môi trường và phần phụ thuộc.
  • src/main/java/com/android/vts/api/
    Chứa các điểm cuối để tương tác với dữ liệu thông qua REST.
  • src/main/java/com/android/vts/entity/
    Chứa các mô hình Java của các thực thể Datastore.
  • src/main/java/com/android/vts/proto/
    Chứa các tệp Java cho Protobuf, bao gồm cả VtsReportMessage.java, là một cách triển khai Java của loại Protobuf dùng để mô tả kết quả kiểm thử VTS.
  • src/main/java/com/android/vts/servlet/
    Chứa các tệp Java cho servlet.
  • src/main/java/com/android/vts/util/
    Chứa các tệp Java cho các hàm và lớp tiện ích mà servlet sử dụng.
  • src/test/java/com/android/vts/
    Chứa các kiểm thử giao diện người dùng cho servlet và utils.
  • src/main/webapp/
    Chứa các tệp liên quan đến giao diện người dùng (JSP, CSS, XML):
    • js/. Chứa các tệp JavaScript mà các trang web sử dụng.
    • WEB-INF/. Chứa các tệp cấu hình và giao diện người dùng.
    • jsp/. Chứa các tệp JSP cho mỗi trang web.
  • appengine-web.xml
    Tệp cài đặt nơi các biến môi trường được tải vào biến.
  • web.xml
    Tệp cài đặt nơi xác định các mối liên kết servlet và các quy tắc ràng buộc bảo mật.
  • cron.xml
    Tệp cài đặt xác định các tác vụ được lên lịch (tức là dịch vụ thông báo).

Thiết lập Trang tổng quan

Cách thiết lập Trang tổng quan về VTS:

  1. Tạo một Dự án Google Cloud App Engine và thiết lập máy chủ triển khai bằng cách cài đặt:
    • Java 8
    • SDK Google App Engine
    • Maven
  2. Tạo mã ứng dụng khách OAuth 2.0 trong Trình quản lý API của Google Cloud.
  3. Tạo Tài khoản dịch vụ và tạo tệp khoá.
  4. Thêm địa chỉ email vào Danh sách người gửi được uỷ quyền của API Email App Engine.
  5. Thiết lập Tài khoản Google Analytics.
  6. Chỉ định biến môi trường trong pom.xml của Trang tổng quan:
    • Đặt mã ứng dụng bằng mã OAuth 2.0 (từ bước 2).
    • Đặt mã ứng dụng khách dịch vụ bằng giá trị nhận dạng có trong tệp khoá (từ bước 3).
    • Chỉ định địa chỉ email của người gửi cảnh báo (từ bước 4).
    • Chỉ định một miền email sẽ nhận tất cả email.
    • Chỉ định địa chỉ đến máy chủ Gerrit REST.
    • Chỉ định phạm vi OAuth 2.0 để sử dụng cho máy chủ Gerrit REST.
    • Chỉ định mã nhận dạng Google Analytics (từ bước 5).
    • Tạo bản dựng và triển khai dự án.
  7. Trong một thiết bị đầu cuối, hãy chạy mvn clean appengine:update.

Lưu ý về bảo mật

Để có thông tin đầy đủ về mức độ bao phủ, bạn cần có quyền truy cập vào mã nguồn gốc. Tuy nhiên, một số mã có thể nhạy cảm và một cổng bổ sung cho mã đó có thể cho phép khai thác các danh sách kiểm soát quyền truy cập hiện có.

Để tránh mối đe doạ này, thay vì phân phát mã nguồn bằng thông tin về mức độ sử dụng, Trang tổng quan sẽ trực tiếp xử lý vectơ mức độ sử dụng (tức là vectơ số lần thực thi ánh xạ đến các dòng trong tệp nguồn). Cùng với vectơ mức độ sử dụng, Trang tổng quan sẽ nhận được tên và đường dẫn dự án Git để ứng dụng có thể tìm nạp mã từ API mã nguồn bên ngoài. Trình duyệt ứng dụng nhận được thông tin này và sử dụng tính năng chia sẻ tài nguyên trên nhiều nguồn gốc (CORS) trong JavaScript để truy vấn máy chủ mã nguồn cho mã nguồn ban đầu; mã kết quả được kết hợp với vectơ mức độ sử dụng để tạo ra màn hình hiển thị.

Phương pháp trực tiếp này không mở rộng bề mặt tấn công vì Trang tổng quan sử dụng cookie của người dùng để xác thực bằng một dịch vụ bên ngoài (nghĩa là người dùng không thể truy cập trực tiếp vào mã nguồn sẽ không thể khai thác Trang tổng quan để xem thông tin nhạy cảm).