การตั้งค่าแดชบอร์ด VTS

VTS Dashboard มอบแบ็กเอนด์ผู้ใช้และอินเทอร์เฟซผู้ใช้ (UI) สำหรับการดูผลการทดสอบจากระบบการรวม VTS อย่างต่อเนื่อง รองรับการพัฒนาที่ขับเคลื่อนด้วยการทดสอบด้วยเครื่องมือ เช่น การแจ้งเตือนสถานะการทดสอบ เพื่อช่วยให้นักพัฒนาสามารถค้นหาและป้องกันพื้นที่การถดถอยในระหว่างรอบการพัฒนา (รวมถึงการตรวจสอบการทดสอบและการสนับสนุนการแยกส่วน)

VTS Dashboard UI รองรับคุณสมบัติต่างๆ (เช่น การครอบคลุมโค้ดแบบเนทีฟ) ที่ได้รับจากโครงสร้างพื้นฐาน VTS และเสนอการตรวจสอบประสิทธิภาพอย่างต่อเนื่องเพื่อให้สามารถพัฒนาเครื่องมือประสิทธิภาพที่ได้รับการปรับแต่งและมีลักษณะเฉพาะได้ดี

ความต้องการ

จำเป็นต้องใช้บริการต่อไปนี้เพื่อใช้ VTS Dashboard:

การดู ความครอบคลุมการทดสอบ อาศัย REST API ไปยังเซิร์ฟเวอร์ซอร์สโค้ด (เช่น Gerrit) ซึ่งช่วยให้บริการเว็บดึงซอร์สโค้ดต้นฉบับตามรายการควบคุมการเข้าถึงที่มีอยู่

สถาปัตยกรรม

VTS Dashboard ใช้สถาปัตยกรรมต่อไปนี้:

รูปที่ 1 . สถาปัตยกรรมแดชบอร์ด VTS

ผลสถานะการทดสอบจะถูกอัปโหลดไปยังฐานข้อมูล 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:

  1. สร้างโครงการ Google Cloud App Engine และตั้งค่าโฮสต์การปรับใช้โดยการติดตั้ง:
    • จาวา 8
    • Google App Engine SDK
    • มาเวน
  2. สร้างรหัสไคลเอ็นต์ OAuth 2.0 ใน Google Cloud API Manager
  3. สร้างบัญชีบริการและสร้างไฟล์คีย์
  4. เพิ่มที่อยู่อีเมลลงในรายชื่อผู้ส่งที่ได้รับอนุญาตของ App Engine Email API
  5. ตั้งค่าบัญชี Google Analytics
  6. ระบุตัวแปรสภาพแวดล้อมในแดชบอร์ด pom.xml :
    • ตั้งค่ารหัสไคลเอ็นต์ด้วยรหัส OAuth 2.0 (จากขั้นตอนที่ 2)
    • ตั้งค่ารหัสไคลเอ็นต์บริการด้วยตัวระบุที่รวมอยู่ในไฟล์คีย์ (จากขั้นตอนที่ 3)
    • ระบุที่อยู่อีเมลของผู้ส่งสำหรับการแจ้งเตือน (จากขั้นตอนที่ 4)
    • ระบุโดเมนอีเมลที่จะส่งอีเมลทั้งหมดไป
    • ระบุที่อยู่ไปยังเซิร์ฟเวอร์ Gerrit REST
    • ระบุขอบเขต OAuth 2.0 ที่จะใช้สำหรับเซิร์ฟเวอร์ Gerrit REST
    • ระบุรหัส Google Analytics (จากขั้นตอนที่ 5)
    • สร้างและปรับใช้โครงการ
  7. ในเทอร์มินัลให้รัน mvn clean appengine:update

ข้อควรพิจารณาด้านความปลอดภัย

ข้อมูลความครอบคลุมที่เข้มงวดจำเป็นต้องเข้าถึงซอร์สโค้ดต้นฉบับ อย่างไรก็ตาม โค้ดบางตัวอาจมีความละเอียดอ่อนและเกตเวย์เพิ่มเติมอาจทำให้สามารถใช้ประโยชน์จากรายการควบคุมการเข้าถึงที่มีอยู่ได้

เพื่อหลีกเลี่ยงภัยคุกคามนี้ แทนที่จะให้บริการซอร์สโค้ดด้วยข้อมูลความครอบคลุม แดชบอร์ดจะจัดการเวกเตอร์ความครอบคลุมโดยตรง (เช่น เวกเตอร์ของการดำเนินการนับการแมปกับบรรทัดในไฟล์ต้นฉบับ) นอกจากเวกเตอร์ความครอบคลุมแล้ว แดชบอร์ดยังได้รับชื่อโปรเจ็กต์ Git และเส้นทาง เพื่อให้ไคลเอ็นต์สามารถดึงโค้ดจาก API ซอร์สโค้ดภายนอกได้ เบราว์เซอร์ไคลเอ็นต์ได้รับข้อมูลนี้และใช้การแบ่งปันทรัพยากรข้ามแหล่งกำเนิด (CORS) ใน Javascript เพื่อสอบถามเซิร์ฟเวอร์ซอร์สโค้ดสำหรับซอร์สโค้ดต้นฉบับ รหัสผลลัพธ์จะรวมกับเวกเตอร์ความครอบคลุมเพื่อสร้างจอแสดงผล

วิธีการโดยตรงนี้ไม่ได้ขยายขอบเขตการโจมตีเนื่องจากแดชบอร์ดใช้คุกกี้ของผู้ใช้เพื่อตรวจสอบสิทธิ์กับบริการภายนอก (หมายความว่าผู้ใช้ที่ไม่สามารถเข้าถึงซอร์สโค้ดได้โดยตรงจะไม่สามารถใช้ประโยชน์จากแดชบอร์ดเพื่อดูข้อมูลที่ละเอียดอ่อนได้)