वीटीएस डैशबोर्ड सेटअप

वीटीएस डैशबोर्ड, वीटीएस निरंतर एकीकरण प्रणाली से परीक्षण परिणाम देखने के लिए एक उपयोगकर्ता बैकएंड और उपयोगकर्ता इंटरफ़ेस (यूआई) प्रदान करता है। यह विकास चक्र के दौरान प्रतिगमन क्षेत्रों का पता लगाने और रोकने में डेवलपर्स की मदद करने के लिए परीक्षण स्थिति सूचनाओं जैसे उपकरणों के साथ परीक्षण-संचालित विकास का समर्थन करता है (परीक्षण निगरानी और ट्राइएजिंग समर्थन शामिल है)।

वीटीएस डैशबोर्ड यूआई वीटीएस बुनियादी ढांचे द्वारा प्रदान की गई सुविधाओं (जैसे मूल कोड कवरेज) का समर्थन करता है और अनुकूलित और अच्छी तरह से विशेषता वाले प्रदर्शन टूल के विकास को सक्षम करने के लिए निरंतर प्रदर्शन निगरानी प्रदान करता है।

आवश्यकताएं

वीटीएस डैशबोर्ड का उपयोग करने के लिए निम्नलिखित सेवाओं की आवश्यकता है:

परीक्षण कवरेज देखना एक स्रोत कोड सर्वर (जैसे गेरिट) के लिए REST API पर निर्भर करता है, जो वेब सेवा को मौजूदा एक्सेस नियंत्रण सूचियों के अनुसार मूल स्रोत कोड लाने में सक्षम बनाता है।

वास्तुकला

वीटीएस डैशबोर्ड निम्नलिखित आर्किटेक्चर का उपयोग करता है:

आकृति 1 । वीटीएस डैशबोर्ड आर्किटेक्चर।

परीक्षण स्थिति परिणाम REST इंटरफ़ेस के माध्यम से क्लाउड डेटास्टोर डेटाबेस पर लगातार अपलोड किए जाते हैं। वीटीएस रनर स्वचालित रूप से परिणामों को संसाधित करता है और प्रोटोबफ़ प्रारूप का उपयोग करके उन्हें क्रमबद्ध करता है।

वेब सर्वलेट उपयोगकर्ताओं के लिए प्राथमिक पहुंच बिंदु बनाते हैं, डेटास्टोर डेटाबेस से डेटा वितरित और संसाधित करते हैं। सर्वलेट में शामिल हैं: सभी परीक्षणों को वितरित करने के लिए एक मुख्य सर्वलेट, उपयोगकर्ता पसंदीदा को प्रबंधित करने के लिए एक प्राथमिकता सर्वलेट, एक परीक्षण तालिका को पॉप्युलेट करने के लिए एक परिणाम सर्वलेट, प्रोफाइलिंग डेटा तैयार करने के लिए एक ग्राफ सर्वलेट, और क्लाइंट के लिए कवरेज डेटा तैयार करने के लिए एक कवरेज सर्वलेट। .

प्रत्येक परीक्षण मॉड्यूल का अपना डेटास्टोर वंश वृक्ष होता है और परीक्षण के परिणाम परीक्षण प्रारंभ समय के यूनिक्स टाइमस्टैम्प के साथ अनुक्रमित होते हैं। डेटाबेस में कवरेज डेटा को परीक्षण परिणामों के साथ गिनती के वेक्टर के रूप में संग्रहीत किया जाता है (यानी मूल स्रोत फ़ाइल में प्रत्येक पंक्ति के लिए) और स्रोत कोड सर्वर से स्रोत कोड लाने के लिए जानकारी की पहचान की जाती है।

अधिसूचना सेवा कार्य कतारों का उपयोग करके चलती है, परीक्षण मामले की स्थिति में बदलाव की पहचान करती है और ग्राहकों को सूचित करती है। डेटा की ताजगी और मौजूदा विफलताओं पर नज़र रखने के लिए स्टेटफुल जानकारी को एक स्थिति तालिका में संग्रहीत किया जाता है। यह अधिसूचना सेवा को व्यक्तिगत परीक्षण मामले की विफलताओं और सुधारों के बारे में समृद्ध जानकारी प्रदान करने की अनुमति देता है।

कोड संरचना

वीटीएस डैशबोर्ड के आवश्यक घटकों में जावा में लागू सर्वलेट, फ्रंट-एंड जेएसपी, सीएसएस स्टाइलशीट और कॉन्फ़िगरेशन फ़ाइलें शामिल हैं। निम्नलिखित सूची में इन घटकों के स्थान और विवरण का विवरण दिया गया है ( test/vts/web/dashboard से संबंधित सभी पथ):

  • pom.xml
    सेटिंग्स फ़ाइल जहां पर्यावरण चर और निर्भरताएं परिभाषित हैं।
  • src/main/java/com/android/vts/api/
    REST के माध्यम से डेटा के साथ इंटरैक्ट करने के लिए समापन बिंदु शामिल हैं।
  • src/main/java/com/android/vts/entity/
    डेटास्टोर इकाइयों के जावा मॉडल शामिल हैं।
  • src/main/java/com/android/vts/proto/
    इसमें VtsReportMessage.java सहित प्रोटोबफ के लिए जावा फ़ाइलें शामिल हैं, जो वीटीएस परीक्षण परिणामों का वर्णन करने के लिए उपयोग किए जाने वाले प्रोटोबफ प्रकार का जावा कार्यान्वयन है।
  • src/main/java/com/android/vts/servlet/
    सर्वलेट्स के लिए जावा फ़ाइलें शामिल हैं।
  • src/main/java/com/android/vts/util/
    सर्वलेट्स द्वारा उपयोग किए जाने वाले उपयोगिता कार्यों और कक्षाओं के लिए जावा फ़ाइलें शामिल हैं।
  • src/test/java/com/android/vts/
    सर्वलेट्स और यूटिल्स के लिए यूआई परीक्षण शामिल हैं।
  • src/main/webapp/
    यूआई (जेएसपी, सीएसएस, एक्सएमएल) से संबंधित फाइलें शामिल हैं:
    • js/ . इसमें वेब पेजों द्वारा उपयोग की जाने वाली जावास्क्रिप्ट फ़ाइलें शामिल हैं।
    • WEB-INF/ । कॉन्फ़िगरेशन और यूआई फ़ाइलें शामिल हैं।
    • jsp/ . प्रत्येक वेब पेज के लिए JSP फ़ाइलें शामिल हैं।
  • appengine-web.xml
    सेटिंग्स फ़ाइल जहां पर्यावरण चर को चर में लोड किया जाता है।
  • web.xml
    सेटिंग्स फ़ाइल जहां सर्वलेट मैपिंग और सुरक्षा बाधाओं को परिभाषित किया गया है।
  • cron.xml
    निर्धारित कार्यों को परिभाषित करने वाली सेटिंग्स फ़ाइल (यानी अधिसूचना सेवा)।

डैशबोर्ड सेट करें

वीटीएस डैशबोर्ड स्थापित करने के लिए:

  1. एक Google क्लाउड ऐप इंजन प्रोजेक्ट बनाएं और इंस्टॉल करके परिनियोजन होस्ट सेट करें:
    • जावा 8
    • Google ऐप इंजन SDK
    • मावेन
  2. Google क्लाउड एपीआई मैनेजर में एक OAuth 2.0 क्लाइंट आईडी जेनरेट करें।
  3. एक सेवा खाता बनाएं और एक कीफ़ाइल बनाएं।
  4. ऐप इंजन ईमेल एपीआई अधिकृत प्रेषक सूची में एक ईमेल पता जोड़ें।
  5. एक Google Analytics खाता सेट करें.
  6. डैशबोर्ड pom.xml में पर्यावरण चर निर्दिष्ट करें:
    • क्लाइंट आईडी को OAuth 2.0 आईडी (चरण 2 से) के साथ सेट करें।
    • कीफ़ाइल में शामिल पहचानकर्ता के साथ सेवा क्लाइंट आईडी सेट करें (चरण 3 से)।
    • अलर्ट के लिए प्रेषक का ईमेल पता निर्दिष्ट करें (चरण 4 से)।
    • एक ईमेल डोमेन निर्दिष्ट करें जिस पर सभी ईमेल भेजे जाएंगे।
    • Gerrit REST सर्वर का पता निर्दिष्ट करें।
    • Gerrit REST सर्वर के लिए उपयोग करने के लिए OAuth 2.0 स्कोप निर्दिष्ट करें।
    • Google Analytics आईडी निर्दिष्ट करें (चरण 5 से)।
    • प्रोजेक्ट बनाएं और तैनात करें.
  7. टर्मिनल में, mvn clean appengine:update चलाएँ।

सुरक्षा संबंधी विचार

मजबूत कवरेज जानकारी के लिए मूल स्रोत कोड तक पहुंच की आवश्यकता होती है। हालाँकि, कुछ कोड संवेदनशील हो सकते हैं और इसके लिए एक अतिरिक्त गेटवे मौजूदा एक्सेस नियंत्रण सूचियों के शोषण की अनुमति दे सकता है।

इस खतरे से बचने के लिए, कवरेज जानकारी के साथ स्रोत कोड परोसने के बजाय, डैशबोर्ड सीधे एक कवरेज वेक्टर को संभालता है (यानी, निष्पादन का एक वेक्टर स्रोत फ़ाइल में लाइनों के लिए मैपिंग की गणना करता है)। कवरेज वेक्टर के साथ, डैशबोर्ड को एक Git प्रोजेक्ट नाम और पथ प्राप्त होता है ताकि क्लाइंट बाहरी स्रोत कोड एपीआई से कोड प्राप्त कर सके। क्लाइंट ब्राउज़र यह जानकारी प्राप्त करता है और मूल स्रोत कोड के लिए स्रोत कोड सर्वर से क्वेरी करने के लिए जावास्क्रिप्ट में क्रॉस-ऑरिजिन रिसोर्स शेयरिंग (सीओआरएस) का उपयोग करता है; परिणामी कोड को एक डिस्प्ले तैयार करने के लिए कवरेज वेक्टर के साथ जोड़ा जाता है।

यह प्रत्यक्ष दृष्टिकोण हमले की सतह को चौड़ा नहीं करता है क्योंकि डैशबोर्ड किसी बाहरी सेवा के साथ प्रमाणित करने के लिए उपयोगकर्ता की कुकीज़ का उपयोग करता है (जिसका अर्थ है कि जो उपयोगकर्ता सीधे स्रोत कोड तक नहीं पहुंच सकता है वह संवेदनशील जानकारी देखने के लिए डैशबोर्ड का फायदा नहीं उठा सकता है)।