VTS Kontrol Paneli, VTS sürekli entegrasyon sisteminden gelen test sonuçlarını görüntülemek için bir kullanıcı arka ucu ve kullanıcı arayüzü (UI) sağlar. Geliştiricilerin geliştirme döngüsü sırasında gerileme alanlarını bulmasına ve önlemesine yardımcı olmak için test durumu bildirimleri gibi araçlarla test odaklı geliştirmeyi destekler (test izleme ve önceliklendirme desteği dahil).
VTS Kontrol Paneli Kullanıcı Arayüzü, VTS altyapısı tarafından sağlanan özellikleri (yerel kod kapsamı gibi) destekler ve optimize edilmiş ve iyi tanımlanmış performans araçlarının geliştirilmesine olanak sağlamak için sürekli performans izleme olanağı sunar.
Gereksinimler
VTS Kontrol Panelini kullanmak için aşağıdaki hizmetler gereklidir:
- Apache Maven , oluşturma ve dağıtım için
- Web hizmeti barındırma için Google Cloud App Engine
- Depolama için Google Cloud Datastore
- İzleme için Google Stackdriver
Test kapsamının görüntülenmesi, web hizmetinin orijinal kaynak kodunu mevcut erişim kontrol listelerine göre getirmesini sağlayan bir kaynak kod sunucusuna (örn. Gerrit) yönelik bir REST API'sine dayanır.
Mimari
VTS Kontrol Paneli aşağıdaki mimariyi kullanır:
Test durumu sonuçları, bir REST arayüzü aracılığıyla sürekli olarak Cloud Datastore veritabanına yüklenir. VTS çalıştırıcısı sonuçları otomatik olarak işler ve Protobuf formatını kullanarak bunları serileştirir.
Web sunucu uygulamaları kullanıcılar için birincil erişim noktasını oluşturur ve Datastore veritabanındaki verileri iletir ve işler. Sunucu uygulamaları şunları içerir: tüm testleri iletmek için bir ana sunucu uygulaması, kullanıcıların favorilerini yönetmek için bir tercihler sunucu uygulaması, bir test tablosunu doldurmak için bir sonuç sunucu uygulaması, profil oluşturma verilerini hazırlamak için bir grafik servlet'i ve istemci için kapsam verilerini hazırlamak için bir kapsama servlet'i .
Her test modülünün kendi Datastore soy ağacı vardır ve test sonuçları, test başlangıç zamanının Unix zaman damgasıyla indekslenir. Veritabanındaki kapsam verileri, test sonuçlarıyla birlikte bir sayım vektörü (yani orijinal kaynak dosyasındaki her satır için) ve kaynak kodunu bir kaynak kod sunucusundan almak için tanımlayıcı bilgiler olarak saklanır.
Bildirim hizmeti, görev kuyruklarını kullanarak, test durumu durum değişikliklerini tanımlayarak ve abonelere bildirimde bulunarak çalışır. Veri güncelliğini ve mevcut arızaları takip etmek için durum bilgisi olan bilgiler bir durum tablosunda saklanır. Bu, bildirim hizmetinin bireysel test senaryosu hataları ve düzeltmeleri hakkında zengin bilgiler sağlamasına olanak tanır.
Kod yapısı
VTS Dashboard'un temel bileşenleri arasında Java'da uygulanan sunucu uygulamaları, ön uç JSP'ler, CSS stil sayfaları ve yapılandırma dosyaları bulunur. Aşağıdaki listede bu bileşenlerin konumları ve açıklamaları ayrıntılı olarak verilmektedir ( test/vts/web/dashboard
ile ilgili tüm yollar):
-
pom.xml
Ortam değişkenlerinin ve bağımlılıkların tanımlandığı ayarlar dosyası. -
src/main/java/com/android/vts/api/
REST aracılığıyla verilerle etkileşim kurmak için uç noktalar içerir. -
src/main/java/com/android/vts/entity/
Datastore varlıklarının Java modellerini içerir. -
src/main/java/com/android/vts/proto/
VTS test sonuçlarını tanımlamak için kullanılan Protobuf türünün bir Java uygulaması olanVtsReportMessage.java
da dahil olmak üzere Protobuf için Java dosyalarını içerir. -
src/main/java/com/android/vts/servlet/
Servlet'ler için Java dosyalarını içerir. -
src/main/java/com/android/vts/util/
Yardımcı program işlevleri ve sunucu uygulamaları tarafından kullanılan sınıflar için Java dosyalarını içerir. -
src/test/java/com/android/vts/
Sunucu uygulamaları ve yardımcı programlar için kullanıcı arayüzü testleri içerir. -
src/main/webapp/
Kullanıcı arayüzüyle ilgili dosyaları içerir (JSP, CSS, XML):-
js/
. Web sayfaları tarafından kullanılan Javascript dosyalarını içerir. -
WEB-INF/
. Yapılandırma ve kullanıcı arayüzü dosyalarını içerir. -
jsp/
. Her web sayfası için JSP dosyalarını içerir.
-
-
appengine-web.xml
Ortam değişkenlerinin değişkenlere yüklendiği ayarlar dosyası. -
web.xml
Sunucu uygulaması eşlemelerinin ve güvenlik kısıtlamalarının tanımlandığı ayarlar dosyası. -
cron.xml
Zamanlanmış görevleri tanımlayan ayarlar dosyası (yani bildirim hizmeti).
Kontrol Panelini Ayarla
VTS Kontrol Panelini ayarlamak için:
- Bir Google Cloud App Engine Projesi oluşturun ve aşağıdakileri yükleyerek dağıtım ana bilgisayarını kurun:
- Java 8
- Google App Engine SDK'sı
- Uzman
- Google Cloud API Yöneticisi'nde bir OAuth 2.0 İstemci Kimliği oluşturun.
- Bir Hizmet Hesabı oluşturun ve bir anahtar dosya oluşturun.
- App Engine E-posta API'si Yetkili Gönderenler Listesine bir e-posta adresi ekleyin.
- Bir Google Analytics Hesabı oluşturun.
- Ortam değişkenlerini Kontrol Paneli
pom.xml
belirtin:- İstemci kimliğini OAuth 2.0 kimliğiyle ayarlayın (2. adımdan itibaren).
- Hizmet istemcisi kimliğini anahtar dosyaya dahil edilen tanımlayıcıyla ayarlayın (3. adımdan itibaren).
- Uyarılar için gönderenin e-posta adresini belirtin (4. adımdan itibaren).
- Tüm e-postaların gönderileceği bir e-posta etki alanı belirtin.
- Gerrit REST sunucusunun adresini belirtin.
- Gerrit REST sunucusu için kullanılacak OAuth 2.0 kapsamını belirtin.
- Google Analytics Kimliğini belirtin (5. adımdan itibaren).
- Projeyi oluşturun ve dağıtın.
- Bir terminalde
mvn clean appengine:update
çalıştırın.
Güvenlik Hususları
Sağlam kapsam bilgileri orijinal kaynak koduna erişim gerektirir. Ancak bazı kodlar hassas olabilir ve bunlara ek bir ağ geçidi mevcut erişim kontrol listelerinin kullanılmasına izin verebilir.
Bu tehdidi önlemek için, kaynak koduna kapsam bilgileriyle birlikte hizmet vermek yerine Kontrol Paneli doğrudan bir kapsam vektörünü (yani, bir kaynak dosyadaki satırlara eşleme yürütme sayımları vektörü) yönetir. Kapsam vektörünün yanı sıra Kontrol Paneli bir Git proje adı ve yolu alır, böylece istemci kodu harici bir kaynak kodu API'sinden alabilir. İstemci tarayıcısı bu bilgiyi alır ve orijinal kaynak kodu için kaynak kodu sunucusunu sorgulamak üzere Javascript'teki çapraz kaynak paylaşımını (CORS) kullanır; ortaya çıkan kod, bir görüntü oluşturmak için kapsama vektörüyle birleştirilir.
Bu doğrudan yaklaşım, saldırı yüzeyini genişletmez çünkü Kontrol Paneli, harici bir hizmetle kimlik doğrulaması yapmak için kullanıcının çerezlerini kullanır (yani kaynak koduna doğrudan erişemeyen bir kullanıcı, hassas bilgileri görüntülemek için Kontrol Panelini kullanamaz).