Dashboard VTS menyediakan backend pengguna dan antarmuka pengguna (UI) untuk melihat hasil pengujian dari sistem integrasi berkelanjutan VTS. Ini mendukung pengembangan berbasis pengujian dengan alat seperti pemberitahuan status pengujian untuk membantu pengembang menemukan dan mencegah area regresi selama siklus pengembangan (termasuk pemantauan pengujian dan dukungan triase).
VTS Dashboard UI mendukung fitur-fitur (seperti cakupan kode asli) yang disediakan oleh infrastruktur VTS dan menawarkan pemantauan kinerja berkelanjutan untuk memungkinkan pengembangan alat kinerja yang optimal dan berkarakteristik baik.
Persyaratan
Layanan berikut diperlukan untuk menggunakan Dashboard VTS:
- Apache Maven , untuk pembangunan dan penerapan
- Google Cloud App Engine , untuk hosting layanan web
- Google Cloud Datastore , untuk penyimpanan
- Google Stackdriver , untuk pemantauan
Melihat cakupan pengujian bergantung pada REST API ke server kode sumber (misalnya Gerrit), yang memungkinkan layanan web mengambil kode sumber asli sesuai dengan daftar kontrol akses yang ada.
Arsitektur
Dasbor VTS menggunakan arsitektur berikut:
Hasil status pengujian terus diunggah ke database Cloud Datastore melalui antarmuka REST. Pelari VTS secara otomatis memproses hasilnya dan membuat serialisasinya menggunakan format Protobuf.
Servlet web membentuk titik akses utama bagi pengguna, mengirimkan dan memproses data dari database Datastore. Servlet tersebut meliputi: servlet utama untuk menjalankan semua pengujian, servlet preferensi untuk mengelola favorit pengguna, servlet hasil untuk mengisi tabel pengujian, servlet grafik untuk menyiapkan data profil, dan servlet cakupan untuk menyiapkan data cakupan untuk klien. .
Setiap modul pengujian memiliki pohon leluhur Datastore sendiri dan hasil pengujian diindeks dengan stempel waktu Unix dari waktu mulai pengujian. Data cakupan dalam database disimpan dengan hasil pengujian sebagai vektor penghitungan (yaitu untuk setiap baris dalam file sumber asli) dan informasi pengidentifikasi untuk mengambil kode sumber dari server kode sumber.
Layanan notifikasi berjalan menggunakan antrian tugas, mengidentifikasi perubahan status kasus uji, dan memberi tahu pelanggan. Informasi stateful disimpan dalam tabel status untuk melacak kesegaran data dan kegagalan yang ada. Hal ini memungkinkan layanan notifikasi untuk memberikan informasi lengkap tentang kegagalan dan perbaikan kasus uji individual.
Struktur kode
Komponen penting Dasbor VTS mencakup servlet yang diimplementasikan di Java, JSP front-end, lembar gaya CSS, dan file konfigurasi. Daftar berikut merinci lokasi dan deskripsi komponen ini (semua jalur relatif terhadap test/vts/web/dashboard
):
-
pom.xml
File pengaturan tempat variabel lingkungan dan dependensi ditentukan. -
src/main/java/com/android/vts/api/
Berisi titik akhir untuk berinteraksi dengan data melalui REST. -
src/main/java/com/android/vts/entity/
Berisi model Java dari entitas Datastore. -
src/main/java/com/android/vts/proto/
Berisi file Java untuk Protobuf, termasukVtsReportMessage.java
, yang merupakan implementasi Java dari tipe Protobuf yang digunakan untuk menjelaskan hasil pengujian VTS. -
src/main/java/com/android/vts/servlet/
Berisi file Java untuk servlet. -
src/main/java/com/android/vts/util/
Berisi file Java untuk fungsi utilitas dan kelas yang digunakan oleh servlet. -
src/test/java/com/android/vts/
Berisi tes UI untuk servlet dan utils. -
src/main/webapp/
Berisi file yang berhubungan dengan UI (JSP, CSS, XML):-
js/
. Berisi file Javascript yang digunakan oleh halaman web. -
WEB-INF/
. Berisi file konfigurasi dan UI. -
jsp/
. Berisi file JSP untuk setiap halaman web.
-
-
appengine-web.xml
File pengaturan tempat variabel lingkungan dimuat ke dalam variabel. -
web.xml
File pengaturan tempat pemetaan servlet dan batasan keamanan ditentukan. -
cron.xml
File pengaturan yang menentukan tugas terjadwal (yaitu layanan notifikasi).
Siapkan Dasbor
Untuk mengatur Dasbor VTS:
- Buat Proyek Google Cloud App Engine dan siapkan host penerapan dengan menginstal:
- Jawa 8
- SDK Mesin Aplikasi Google
- Maven
- Hasilkan ID Klien OAuth 2.0 di Google Cloud API Manager.
- Buat Akun Layanan dan buat file kunci.
- Tambahkan alamat email ke Daftar Pengirim Resmi App Engine Email API.
- Siapkan Akun Google Analytics.
- Tentukan variabel lingkungan di Dashboard
pom.xml
:- Tetapkan ID klien dengan ID OAuth 2.0 (dari langkah 2).
- Tetapkan ID klien layanan dengan pengidentifikasi yang disertakan dalam file kunci (dari langkah 3).
- Tentukan alamat email pengirim untuk peringatan (dari langkah 4).
- Tentukan domain email ke mana semua email akan dikirim.
- Tentukan alamat ke server Gerrit REST.
- Tentukan cakupan OAuth 2.0 yang akan digunakan untuk server Gerrit REST.
- Tentukan ID Google Analytics (dari langkah 5).
- Bangun dan terapkan proyek.
- Di terminal, jalankan
mvn clean appengine:update
.
Pertimbangan keamanan
Informasi cakupan yang kuat memerlukan akses ke kode sumber asli. Namun, beberapa kode mungkin sensitif dan gateway tambahan memungkinkan eksploitasi daftar kontrol akses yang ada.
Untuk menghindari ancaman ini, alih-alih menyajikan kode sumber dengan informasi cakupan, Dasbor secara langsung menangani vektor cakupan (yaitu, vektor jumlah eksekusi yang dipetakan ke baris dalam file sumber). Seiring dengan vektor cakupan, Dasbor menerima nama dan jalur proyek Git sehingga klien dapat mengambil kode dari API kode sumber eksternal. Browser klien menerima informasi ini dan menggunakan berbagi sumber daya lintas asal (CORS) dalam Javascript untuk menanyakan server kode sumber untuk kode sumber asli; kode yang dihasilkan digabungkan dengan vektor cakupan untuk menghasilkan tampilan.
Pendekatan langsung ini tidak memperluas permukaan serangan karena Dasbor menggunakan cookie pengguna untuk mengautentikasi dengan layanan luar (artinya pengguna yang tidak dapat mengakses kode sumber secara langsung tidak dapat mengeksploitasi Dasbor untuk melihat informasi sensitif).