Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

VTS儀表板設置

VTS儀表板提供了一個用戶後端和用戶界面(UI),用於查看來自VTS持續集成系統的測試結果。它通過諸如測試狀態通知之類的工具來支持測試驅動的開發,以幫助開發人員在開發週期內找到並防止回歸區域(包括測試監視和分類支持)。

VTS儀表板用戶界面支持VTS基礎結構提供的功能(例如本機代碼覆蓋),並提供持續的性能監視,以支持開發經過優化和特徵明確的性能工具。

要求

使用VTS儀表板需要以下服務:

查看測試覆蓋範圍依賴於源代碼服務器(例如Gerrit)的REST API,該服務器使Web服務能夠根據現有的訪問控制列表來獲取原始源代碼。

建築

VTS儀表板使用以下架構:

圖1 。 VTS儀表板體系結構。

測試狀態結果通過REST界面連續上傳到Cloud Datastore數據庫。 VTS運行程序自動處理結果,並使用Protobuf格式對其進行序列化。

Web Servlet構成了用戶的主要訪問點,從數據存儲數據庫傳遞和處理數據。這些servlet包括:用於交付所有測試的主servlet,用於管理用戶收藏夾的首選項servlet,用於填充測試表的結果servlet,用於準備配置數據的圖servlet和用於為客戶端準備覆蓋數據的coverage servlet。 。

每個測試模塊都有其自己的Datastore祖先樹,並且使用測試開始時間的Unix時間戳對測試結果進行索引。數據庫中的覆蓋率數據與測試結果一起存儲為計數向量(即原始源文件中的每一行)和標識信息,以從源代碼服務器獲取源代碼。

通知服務使用任務隊列運行,識別測試用例狀態更改並通知訂戶。狀態信息存儲在狀態表中,以跟踪數據更新和現有故障。這允許通知服務提供有關單個測試用例故障和修復的豐富信息。

代碼結構

VTS儀表板的基本組件包括用Java實現的servlet,前端JSP,CSS樣式表和配置文件。以下列表詳細說明了這些組件的位置和說明(相對於test/vts/web/dashboard所有路徑):

  • pom.xml
    定義環境變量和依賴項的設置文件。
  • src/main/java/com/android/vts/api/
    包含用於通過REST與數據進行交互的端點。
  • src/main/java/com/android/vts/entity/
    包含數據存儲區實體的Java模型。
  • src/main/java/com/android/vts/proto/
    包含Protobuf的Java文件,包括VtsReportMessage.java ,這是用於描述VTS測試結果的Protobuf類型的Java實現。
  • src/main/java/com/android/vts/servlet/
    包含servlet的Java文件。
  • src/main/java/com/android/vts/util/
    包含用於servlet使用的實用程序功能和類的Java文件。
  • src/test/java/com/android/vts/
    包含針對servlet和utils的UI測試。
  • src/main/webapp/
    包含與UI相關的文件(JSP,CSS,XML):
    • js/ 。包含網頁使用的Javascript文件。
    • WEB-INF/ 。包含配置和UI文件。
    • jsp/ 。包含每個網頁的JSP文件。
  • appengine-web.xml
    將環境變量加載到變量中的設置文件。
  • web.xml
    定義servlet映射和安全性約束的設置文件。
  • cron.xml
    定義計劃任務的設置文件(即通知服務)。

設置儀錶盤

要設置VTS信息中心,請執行以下操作:

  1. 通過安裝以下內容來創建Google Cloud App Engine項目並設置部署主機:
    • Java 8
    • Google App Engine SDK
    • 馬文
  2. 在Google Cloud API管理器中生成OAuth 2.0客戶端ID。
  3. 創建一個服務帳戶並創建一個密鑰文件。
  4. 將電子郵件地址添加到App Engine電子郵件API授權發件人列表。
  5. 設置一個Google Analytics(分析)帳戶。
  6. 在儀表板pom.xml指定環境變量:
    • 使用OAuth 2.0 ID(從第2步開始)設置客戶端ID。
    • 使用包含在密鑰文件中的標識符設置服務客戶端ID(來自步驟3)。
    • 指定警報的發件人電子郵件地址(從步驟4開始)。
    • 指定將所有電子郵件發送到的電子郵件域。
    • 指定Gerrit REST服務器的地址。
    • 指定要用於Gerrit REST服務器的OAuth 2.0範圍。
    • 指定Google Analytics(分析)ID(從第5步開始)。
    • 生成並部署項目。
  7. 在終端中,運行mvn clean appengine:update

有關儀表板設置和配置的更多信息,請參閱Android VTS代碼實驗室

安全注意事項

強大的覆蓋率信息需要訪問原始源代碼。但是,某些代碼可能很敏感,並且附加代碼的網關可能允許利用現有的訪問控制列表。

為了避免這種威脅,儀表板不直接將覆蓋信息提供給源代碼,而是直接處理覆蓋向量(即,執行計數向量映射到源文件中的行)。儀表板與覆蓋向量一起接收Git項目名稱和路徑,以便客戶端可以從外部源代碼API提取代碼。客戶端瀏覽器接收到此信息,並使用Javascript中的跨域資源共享(CORS)來向源代碼服務器查詢原始源代碼;生成的代碼與覆蓋向量相結合以產生顯示。

這種直接方法不會擴大攻擊範圍,因為儀表板使用用戶的cookie來向外部服務進行身份驗證(這意味著無法直接訪問源代碼的用戶無法利用儀表板查看敏感信息)。