VTS Dashboard มอบแบ็กเอนด์ผู้ใช้และอินเทอร์เฟซผู้ใช้ (UI) สำหรับการดูผลการทดสอบจากระบบการรวม VTS อย่างต่อเนื่อง รองรับการพัฒนาที่ขับเคลื่อนด้วยการทดสอบด้วยเครื่องมือ เช่น การแจ้งเตือนสถานะการทดสอบ เพื่อช่วยให้นักพัฒนาสามารถค้นหาและป้องกันพื้นที่การถดถอยในระหว่างรอบการพัฒนา (รวมถึงการตรวจสอบการทดสอบและการสนับสนุนการแยกส่วน)
VTS Dashboard UI รองรับคุณสมบัติต่างๆ (เช่น การครอบคลุมโค้ดแบบเนทีฟ) ที่ได้รับจากโครงสร้างพื้นฐาน VTS และเสนอการตรวจสอบประสิทธิภาพอย่างต่อเนื่องเพื่อให้สามารถพัฒนาเครื่องมือประสิทธิภาพที่ได้รับการปรับแต่งและมีลักษณะเฉพาะได้ดี
ความต้องการ
จำเป็นต้องใช้บริการต่อไปนี้เพื่อใช้ VTS Dashboard:
- Apache Maven สำหรับการสร้างและการปรับใช้
- Google Cloud App Engine สำหรับการโฮสต์บริการเว็บ
- Google Cloud Datastore สำหรับการจัดเก็บข้อมูล
- Google Stackdriver สำหรับการตรวจสอบ
การดู ความครอบคลุมการทดสอบ อาศัย REST API ไปยังเซิร์ฟเวอร์ซอร์สโค้ด (เช่น Gerrit) ซึ่งช่วยให้บริการเว็บดึงซอร์สโค้ดต้นฉบับตามรายการควบคุมการเข้าถึงที่มีอยู่
สถาปัตยกรรม
VTS Dashboard ใช้สถาปัตยกรรมต่อไปนี้:
ผลสถานะการทดสอบจะถูกอัปโหลดไปยังฐานข้อมูล Cloud Datastore อย่างต่อเนื่องผ่านอินเทอร์เฟซ REST VTS runner ประมวลผลผลลัพธ์โดยอัตโนมัติและจัดลำดับผลลัพธ์โดยใช้รูปแบบ Protobuf
เว็บเซิร์ฟเล็ตสร้างจุดเข้าใช้งานหลักสำหรับผู้ใช้ ส่งมอบและประมวลผลข้อมูลจากฐานข้อมูล Datastore เซิร์ฟเล็ตประกอบด้วย: เซิร์ฟเล็ตหลักสำหรับการส่งมอบการทดสอบทั้งหมด เซิร์ฟเล็ตการตั้งค่าสำหรับการจัดการรายการโปรดของผู้ใช้ เซิร์ฟเล็ตผลลัพธ์สำหรับการเติมตารางทดสอบ เซิร์ฟเล็ตกราฟสำหรับการเตรียมข้อมูลโปรไฟล์ และเซิร์ฟเล็ตความครอบคลุมสำหรับการเตรียมข้อมูลความครอบคลุมสำหรับไคลเอนต์ .
โมดูลการทดสอบแต่ละโมดูลมีโครงสร้างบรรพบุรุษของ Datastore ของตัวเอง และผลการทดสอบจะได้รับการจัดทำดัชนีด้วยการประทับเวลา Unix ของเวลาเริ่มต้นการทดสอบ ข้อมูลความครอบคลุมในฐานข้อมูลจะถูกจัดเก็บไว้พร้อมกับผลการทดสอบเป็นเวกเตอร์ของการนับ (เช่น สำหรับแต่ละบรรทัดในไฟล์ต้นฉบับ) และข้อมูลการระบุเพื่อดึงซอร์สโค้ดจากเซิร์ฟเวอร์ซอร์สโค้ด
บริการแจ้งเตือนทำงานโดยใช้คิวงาน ระบุการเปลี่ยนแปลงสถานะกรณีทดสอบ และแจ้งเตือนสมาชิก ข้อมูลสถานะจะถูกจัดเก็บไว้ในตารางสถานะเพื่อติดตามความใหม่ของข้อมูลและความล้มเหลวที่มีอยู่ ซึ่งช่วยให้บริการแจ้งเตือนสามารถให้ข้อมูลที่หลากหลายเกี่ยวกับความล้มเหลวและการแก้ไขกรณีทดสอบแต่ละรายการ
โครงสร้างรหัส
ส่วนประกอบที่สำคัญของ VTS Dashboard ได้แก่ เซิร์ฟเล็ตที่ใช้งานใน Java, JSP ส่วนหน้า, สไตล์ชีต CSS และไฟล์การกำหนดค่า รายการต่อไปนี้แสดงรายละเอียดตำแหน่งและคำอธิบายของส่วนประกอบเหล่านี้ (เส้นทางทั้งหมดที่เกี่ยวข้องกับ test/vts/web/dashboard
):
-
pom.xml
ไฟล์การตั้งค่าที่มีการกำหนดตัวแปรสภาพแวดล้อมและการขึ้นต่อกัน -
src/main/java/com/android/vts/api/
มีจุดสิ้นสุดสำหรับการโต้ตอบกับข้อมูลผ่าน REST -
src/main/java/com/android/vts/entity/
มีโมเดล Java ของเอนทิตี Datastore -
src/main/java/com/android/vts/proto/
มีไฟล์ Java สำหรับ Protobuf รวมถึงVtsReportMessage.java
ซึ่งเป็นการใช้งาน Java ประเภท Protobuf ที่ใช้เพื่ออธิบายผลการทดสอบ VTS -
src/main/java/com/android/vts/servlet/
มีไฟล์ Java สำหรับเซิร์ฟเล็ต -
src/main/java/com/android/vts/util/
มีไฟล์ Java สำหรับฟังก์ชันยูทิลิตี้และคลาสที่ใช้โดยเซิร์ฟเล็ต -
src/test/java/com/android/vts/
ประกอบด้วยการทดสอบ UI สำหรับเซิร์ฟเล็ตและยูทิลิตี้ -
src/main/webapp/
มีไฟล์ที่เกี่ยวข้องกับ UI (JSP, CSS, XML):-
js/
. มีไฟล์ Javascript ที่ใช้โดยหน้าเว็บ -
WEB-INF/
. มีไฟล์การกำหนดค่าและ UI -
jsp/
. มีไฟล์ JSP สำหรับแต่ละเว็บเพจ
-
-
appengine-web.xml
ไฟล์การตั้งค่าที่โหลดตัวแปรสภาพแวดล้อมลงในตัวแปร -
web.xml
ไฟล์การตั้งค่าที่มีการแมปเซิร์ฟเล็ตและข้อจำกัดด้านความปลอดภัย -
cron.xml
ไฟล์การตั้งค่าที่กำหนดงานที่กำหนดเวลาไว้ (เช่น บริการแจ้งเตือน)
ตั้งค่าแดชบอร์ด
วิธีตั้งค่าแดชบอร์ด VTS:
- สร้างโครงการ Google Cloud App Engine และตั้งค่าโฮสต์การปรับใช้โดยการติดตั้ง:
- จาวา 8
- Google App Engine SDK
- มาเวน
- สร้างรหัสไคลเอ็นต์ OAuth 2.0 ใน Google Cloud API Manager
- สร้างบัญชีบริการและสร้างไฟล์คีย์
- เพิ่มที่อยู่อีเมลลงในรายชื่อผู้ส่งที่ได้รับอนุญาตของ App Engine Email API
- ตั้งค่าบัญชี Google Analytics
- ระบุตัวแปรสภาพแวดล้อมในแดชบอร์ด
pom.xml
:- ตั้งค่ารหัสไคลเอ็นต์ด้วยรหัส OAuth 2.0 (จากขั้นตอนที่ 2)
- ตั้งค่ารหัสไคลเอ็นต์บริการด้วยตัวระบุที่รวมอยู่ในไฟล์คีย์ (จากขั้นตอนที่ 3)
- ระบุที่อยู่อีเมลของผู้ส่งสำหรับการแจ้งเตือน (จากขั้นตอนที่ 4)
- ระบุโดเมนอีเมลที่จะส่งอีเมลทั้งหมดไป
- ระบุที่อยู่ไปยังเซิร์ฟเวอร์ Gerrit REST
- ระบุขอบเขต OAuth 2.0 ที่จะใช้สำหรับเซิร์ฟเวอร์ Gerrit REST
- ระบุรหัส Google Analytics (จากขั้นตอนที่ 5)
- สร้างและปรับใช้โครงการ
- ในเทอร์มินัลให้รัน
mvn clean appengine:update
ข้อควรพิจารณาด้านความปลอดภัย
ข้อมูลความครอบคลุมที่เข้มงวดจำเป็นต้องเข้าถึงซอร์สโค้ดต้นฉบับ อย่างไรก็ตาม โค้ดบางตัวอาจมีความละเอียดอ่อนและเกตเวย์เพิ่มเติมอาจทำให้สามารถใช้ประโยชน์จากรายการควบคุมการเข้าถึงที่มีอยู่ได้
เพื่อหลีกเลี่ยงภัยคุกคามนี้ แทนที่จะให้บริการซอร์สโค้ดด้วยข้อมูลความครอบคลุม แดชบอร์ดจะจัดการเวกเตอร์ความครอบคลุมโดยตรง (เช่น เวกเตอร์ของการดำเนินการนับการแมปกับบรรทัดในไฟล์ต้นฉบับ) นอกจากเวกเตอร์ความครอบคลุมแล้ว แดชบอร์ดยังได้รับชื่อโปรเจ็กต์ Git และเส้นทาง เพื่อให้ไคลเอ็นต์สามารถดึงโค้ดจาก API ซอร์สโค้ดภายนอกได้ เบราว์เซอร์ไคลเอ็นต์ได้รับข้อมูลนี้และใช้การแบ่งปันทรัพยากรข้ามแหล่งกำเนิด (CORS) ใน Javascript เพื่อสอบถามเซิร์ฟเวอร์ซอร์สโค้ดสำหรับซอร์สโค้ดต้นฉบับ รหัสผลลัพธ์จะรวมกับเวกเตอร์ความครอบคลุมเพื่อสร้างจอแสดงผล
วิธีการโดยตรงนี้ไม่ได้ขยายขอบเขตการโจมตีเนื่องจากแดชบอร์ดใช้คุกกี้ของผู้ใช้เพื่อตรวจสอบสิทธิ์กับบริการภายนอก (หมายความว่าผู้ใช้ที่ไม่สามารถเข้าถึงซอร์สโค้ดได้โดยตรงจะไม่สามารถใช้ประโยชน์จากแดชบอร์ดเพื่อดูข้อมูลที่ละเอียดอ่อนได้)