VTS ড্যাশবোর্ড VTS ক্রমাগত ইন্টিগ্রেশন সিস্টেম থেকে পরীক্ষার ফলাফল দেখার জন্য একটি ব্যবহারকারী ব্যাকএন্ড এবং ব্যবহারকারী ইন্টারফেস (UI) প্রদান করে। এটা ডেভেলপারদের ডেভেলপারদের ডেভেলপমেন্ট সাইকেল চলাকালীন রিগ্রেশন ক্ষেত্রগুলি সনাক্ত করতে এবং প্রতিরোধ করতে সাহায্য করার জন্য টেস্ট স্ট্যাটাস নোটিফিকেশনের মতো টুলের সাহায্যে টেস্ট-চালিত ডেভেলপমেন্টকে সমর্থন করে (পরীক্ষা পর্যবেক্ষণ এবং ট্রাইজিং সমর্থন অন্তর্ভুক্ত)।
VTS ড্যাশবোর্ড UI VTS পরিকাঠামো দ্বারা প্রদত্ত বৈশিষ্ট্যগুলি (যেমন নেটিভ কোড কভারেজ) সমর্থন করে এবং অপ্টিমাইজড এবং ভাল-চরিত্রযুক্ত কর্মক্ষমতা সরঞ্জামগুলির বিকাশকে সক্ষম করার জন্য ক্রমাগত কর্মক্ষমতা পর্যবেক্ষণের প্রস্তাব দেয়।
প্রয়োজনীয়তা
VTS ড্যাশবোর্ড ব্যবহার করার জন্য নিম্নলিখিত পরিষেবাগুলির প্রয়োজন:
- Apache Maven , নির্মাণ এবং স্থাপনার জন্য
- Google ক্লাউড অ্যাপ ইঞ্জিন , ওয়েব-পরিষেবা হোস্টিংয়ের জন্য
- Google ক্লাউড ডেটাস্টোর , স্টোরেজের জন্য
- Google Stackdriver , পর্যবেক্ষণের জন্য
পরীক্ষার কভারেজ দেখা একটি সোর্স কোড সার্ভারে একটি REST API এর উপর নির্ভর করে (যেমন Gerrit), যা ওয়েব পরিষেবাকে বিদ্যমান অ্যাক্সেস নিয়ন্ত্রণ তালিকা অনুযায়ী আসল সোর্স কোড আনতে সক্ষম করে।
স্থাপত্য
VTS ড্যাশবোর্ড নিম্নলিখিত আর্কিটেকচার ব্যবহার করে:

পরীক্ষার স্থিতির ফলাফলগুলি একটি REST ইন্টারফেসের মাধ্যমে ক্রমাগত ক্লাউড ডেটাস্টোর ডাটাবেসে আপলোড করা হয়। VTS রানার স্বয়ংক্রিয়ভাবে ফলাফল প্রক্রিয়া করে এবং Protobuf ফরম্যাট ব্যবহার করে সিরিয়ালাইজ করে।
ওয়েব সার্লেটগুলি ব্যবহারকারীদের জন্য প্রাথমিক অ্যাক্সেস পয়েন্ট তৈরি করে, ডেটাস্টোর ডাটাবেস থেকে ডেটা সরবরাহ এবং প্রক্রিয়াকরণ করে। সার্লেটগুলির মধ্যে রয়েছে: সমস্ত পরীক্ষা প্রদানের জন্য একটি প্রধান সার্লেট, ব্যবহারকারীর পছন্দগুলি পরিচালনা করার জন্য একটি পছন্দের সার্লেট, একটি পরীক্ষার টেবিল তৈরি করার জন্য একটি ফলাফল সার্লেট, প্রোফাইলিং ডেটা প্রস্তুত করার জন্য একটি গ্রাফ সার্লেট এবং ক্লায়েন্টের জন্য কভারেজ ডেটা প্রস্তুত করার জন্য একটি কভারেজ সার্লেট৷
প্রতিটি পরীক্ষার মডিউলের নিজস্ব ডেটাস্টোর বংশবৃদ্ধি গাছ রয়েছে এবং পরীক্ষার ফলাফলগুলি পরীক্ষা শুরুর সময় ইউনিক্স টাইমস্ট্যাম্পের সাথে সূচীবদ্ধ হয়। ডাটাবেসের কভারেজ ডেটা পরীক্ষার ফলাফলের সাথে গণনার ভেক্টর হিসাবে সংরক্ষণ করা হয় (যেমন মূল উত্স ফাইলের প্রতিটি লাইনের জন্য) এবং সোর্স কোড সার্ভার থেকে সোর্স কোড আনার জন্য তথ্য সনাক্তকরণ।
বিজ্ঞপ্তি পরিষেবাটি টাস্ক সারি ব্যবহার করে, পরীক্ষার ক্ষেত্রে অবস্থার পরিবর্তনগুলি সনাক্ত করে এবং গ্রাহকদেরকে অবহিত করে। রাষ্ট্রীয় তথ্য ডেটা সতেজতা এবং বিদ্যমান ব্যর্থতার উপর নজর রাখতে একটি স্থিতি টেবিলে সংরক্ষণ করা হয়। এটি বিজ্ঞপ্তি পরিষেবাটি পৃথক পরীক্ষার ক্ষেত্রে ব্যর্থতা এবং সংশোধন সম্পর্কে সমৃদ্ধ তথ্য সরবরাহ করার অনুমতি দেয়।
কোড গঠন
ভিটিএস ড্যাশবোর্ড প্রয়োজনীয় উপাদানগুলির মধ্যে জাভাতে প্রয়োগ করা সার্লেটগুলি, ফ্রন্ট-এন্ড জেএসপি, সিএসএস স্টাইলশিট এবং কনফিগারেশন ফাইল অন্তর্ভুক্ত রয়েছে। নিম্নলিখিত তালিকায় এই উপাদানগুলির অবস্থান এবং বিবরণ বিশদ বিবরণ ( test/vts/web/dashboard
সাথে সম্পর্কিত সমস্ত পাথ):
-
pom.xml
সেটিংস ফাইল যেখানে পরিবেশের পরিবর্তনশীল এবং নির্ভরতা সংজ্ঞায়িত করা হয়। -
src/main/java/com/android/vts/api/
বিশ্রামের মাধ্যমে ডেটার সাথে কথোপকথনের জন্য শেষ পয়েন্টগুলি রয়েছে। -
src/main/java/com/android/vts/entity/
ডেটাস্টোর সত্তার জাভা মডেল রয়েছে। -
src/main/java/com/android/vts/proto/
VtsReportMessage.java
সহ Protobuf এর জন্য Java ফাইল রয়েছে, যা VTS পরীক্ষার ফলাফল বর্ণনা করতে ব্যবহৃত Protobuf প্রকারের একটি জাভা বাস্তবায়ন। -
src/main/java/com/android/vts/servlet/
সার্লেটের জন্য জাভা ফাইল রয়েছে। -
src/main/java/com/android/vts/util/
সার্লেটগুলি দ্বারা ব্যবহৃত ইউটিলিটি ফাংশন এবং ক্লাসগুলির জন্য জাভা ফাইল রয়েছে। -
src/test/java/com/android/vts/
সার্লেট এবং ইউটিলসের জন্য UI পরীক্ষা রয়েছে। -
src/main/webapp/
ইউআই (জেএসপি, সিএসএস, এক্সএমএল) সম্পর্কিত ফাইল রয়েছে:-
js/
ওয়েব পৃষ্ঠাগুলির দ্বারা ব্যবহৃত জাভাস্ক্রিপ্ট ফাইলগুলি রয়েছে৷ -
WEB-INF/
। কনফিগারেশন এবং UI ফাইল রয়েছে। -
jsp/
। প্রতিটি ওয়েব পৃষ্ঠার জন্য JSP ফাইল রয়েছে।
-
-
appengine-web.xml
সেটিংস ফাইল যেখানে এনভায়রনমেন্ট ভেরিয়েবল ভেরিয়েবলে লোড করা হয়। -
web.xml
সেটিংস ফাইল যেখানে সার্লেট ম্যাপিং এবং নিরাপত্তা সীমাবদ্ধতা সংজ্ঞায়িত করা হয়। -
cron.xml
সেটিং ফাইল নির্ধারিত কাজ সংজ্ঞায়িত করে (যেমন বিজ্ঞপ্তি পরিষেবা)।
ড্যাশবোর্ড সেট আপ করুন
VTS ড্যাশবোর্ড সেট আপ করতে:
- একটি Google ক্লাউড অ্যাপ ইঞ্জিন প্রকল্প তৈরি করুন এবং ইনস্টল করার মাধ্যমে স্থাপনার হোস্ট সেট আপ করুন:
- জাভা 8
- গুগল অ্যাপ ইঞ্জিন SDK
- মাভেন
- Google ক্লাউড API ম্যানেজারে একটি OAuth 2.0 ক্লায়েন্ট আইডি তৈরি করুন।
- একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন এবং একটি কীফাইল তৈরি করুন।
- অ্যাপ ইঞ্জিন ইমেল API অনুমোদিত প্রেরক তালিকায় একটি ইমেল ঠিকানা যোগ করুন।
- একটি Google Analytics অ্যাকাউন্ট সেট আপ করুন।
- ড্যাশবোর্ড
pom.xml
এ পরিবেশের ভেরিয়েবল নির্দিষ্ট করুন:- OAuth 2.0 ID সহ ক্লায়েন্ট আইডি সেট করুন (ধাপ 2 থেকে)।
- কীফাইলে অন্তর্ভুক্ত শনাক্তকারীর সাথে পরিষেবা ক্লায়েন্ট আইডি সেট করুন (ধাপ 3 থেকে)।
- সতর্কতার জন্য প্রেরকের ইমেল ঠিকানা নির্দিষ্ট করুন (ধাপ 4 থেকে)।
- একটি ইমেল ডোমেন নির্দিষ্ট করুন যেখানে সমস্ত ইমেল পাঠানো হবে।
- Gerrit REST সার্ভারে ঠিকানা উল্লেখ করুন।
- Gerrit REST সার্ভারের জন্য ব্যবহার করার জন্য OAuth 2.0 সুযোগ নির্দিষ্ট করুন।
- Google Analytics আইডি নির্দিষ্ট করুন (ধাপ 5 থেকে)।
- প্রকল্প নির্মাণ এবং স্থাপন.
- একটি টার্মিনালে,
mvn clean appengine:update
চালান।
নিরাপত্তা বিবেচনা
মজবুত কভারেজ তথ্যের জন্য মূল সোর্স কোডে অ্যাক্সেস প্রয়োজন। যাইহোক, কিছু কোড সংবেদনশীল হতে পারে এবং এটির একটি অতিরিক্ত গেটওয়ে বিদ্যমান অ্যাক্সেস নিয়ন্ত্রণ তালিকার শোষণের অনুমতি দিতে পারে।
এই হুমকি এড়াতে, কভারেজ তথ্যের সাথে সোর্স কোড পরিবেশন করার পরিবর্তে, ড্যাশবোর্ড সরাসরি একটি কভারেজ ভেক্টর পরিচালনা করে (অর্থাৎ, সঞ্চালনের একটি ভেক্টর একটি উৎস ফাইলের লাইনে ম্যাপিং গণনা করে)। কভারেজ ভেক্টরের সাথে, ড্যাশবোর্ড একটি গিট প্রকল্পের নাম এবং পথ পায় যাতে ক্লায়েন্ট একটি বহিরাগত উত্স কোড API থেকে কোডটি আনতে পারে। ক্লায়েন্ট ব্রাউজার এই তথ্য গ্রহণ করে এবং আসল সোর্স কোডের জন্য সোর্স কোড সার্ভারকে জিজ্ঞাসা করতে জাভাস্ক্রিপ্টে ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) ব্যবহার করে; ফলস্বরূপ কোডটি কভারেজ ভেক্টরের সাথে একটি ডিসপ্লে তৈরি করতে একত্রিত হয়।
এই সরাসরি পদ্ধতি আক্রমণের পৃষ্ঠকে প্রশস্ত করে না কারণ ড্যাশবোর্ড ব্যবহারকারীর কুকি ব্যবহার করে বাইরের পরিষেবার সাথে প্রমাণীকরণ করে (অর্থাৎ যে ব্যবহারকারী সরাসরি সোর্স কোড অ্যাক্সেস করতে পারে না সে সংবেদনশীল তথ্য দেখার জন্য ড্যাশবোর্ড ব্যবহার করতে পারে না)।
,VTS ড্যাশবোর্ড VTS ক্রমাগত ইন্টিগ্রেশন সিস্টেম থেকে পরীক্ষার ফলাফল দেখার জন্য একটি ব্যবহারকারী ব্যাকএন্ড এবং ব্যবহারকারী ইন্টারফেস (UI) প্রদান করে। এটা ডেভেলপারদের ডেভেলপারদের ডেভেলপমেন্ট সাইকেল চলাকালীন রিগ্রেশন ক্ষেত্রগুলি সনাক্ত করতে এবং প্রতিরোধ করতে সাহায্য করার জন্য টেস্ট স্ট্যাটাস নোটিফিকেশনের মতো টুলের সাহায্যে টেস্ট-চালিত ডেভেলপমেন্টকে সমর্থন করে (পরীক্ষা পর্যবেক্ষণ এবং ট্রাইজিং সমর্থন অন্তর্ভুক্ত)।
VTS ড্যাশবোর্ড UI VTS পরিকাঠামো দ্বারা প্রদত্ত বৈশিষ্ট্যগুলি (যেমন নেটিভ কোড কভারেজ) সমর্থন করে এবং অপ্টিমাইজড এবং ভাল-চরিত্রযুক্ত কর্মক্ষমতা সরঞ্জামগুলির বিকাশকে সক্ষম করার জন্য ক্রমাগত কর্মক্ষমতা পর্যবেক্ষণের প্রস্তাব দেয়।
প্রয়োজনীয়তা
VTS ড্যাশবোর্ড ব্যবহার করার জন্য নিম্নলিখিত পরিষেবাগুলির প্রয়োজন:
- Apache Maven , নির্মাণ এবং স্থাপনার জন্য
- গুগল ক্লাউড অ্যাপ ইঞ্জিন , ওয়েব-পরিষেবা হোস্টিংয়ের জন্য
- Google ক্লাউড ডেটাস্টোর , স্টোরেজের জন্য
- Google Stackdriver , পর্যবেক্ষণের জন্য
পরীক্ষার কভারেজ দেখা একটি সোর্স কোড সার্ভারে একটি REST API এর উপর নির্ভর করে (যেমন Gerrit), যা ওয়েব পরিষেবাকে বিদ্যমান অ্যাক্সেস নিয়ন্ত্রণ তালিকা অনুযায়ী আসল সোর্স কোড আনতে সক্ষম করে।
স্থাপত্য
VTS ড্যাশবোর্ড নিম্নলিখিত আর্কিটেকচার ব্যবহার করে:

পরীক্ষার স্থিতির ফলাফলগুলি একটি REST ইন্টারফেসের মাধ্যমে ক্রমাগত ক্লাউড ডেটাস্টোর ডাটাবেসে আপলোড করা হয়। VTS রানার স্বয়ংক্রিয়ভাবে ফলাফল প্রক্রিয়া করে এবং Protobuf ফরম্যাট ব্যবহার করে সিরিয়ালাইজ করে।
ওয়েব সার্লেটগুলি ব্যবহারকারীদের জন্য প্রাথমিক অ্যাক্সেস পয়েন্ট তৈরি করে, ডেটাস্টোর ডাটাবেস থেকে ডেটা সরবরাহ এবং প্রক্রিয়াকরণ করে। সার্লেটগুলির মধ্যে রয়েছে: সমস্ত পরীক্ষা প্রদানের জন্য একটি প্রধান সার্লেট, ব্যবহারকারীর পছন্দগুলি পরিচালনা করার জন্য একটি পছন্দের সার্লেট, একটি পরীক্ষার টেবিল তৈরি করার জন্য একটি ফলাফল সার্লেট, প্রোফাইলিং ডেটা প্রস্তুত করার জন্য একটি গ্রাফ সার্লেট এবং ক্লায়েন্টের জন্য কভারেজ ডেটা প্রস্তুত করার জন্য একটি কভারেজ সার্লেট৷
প্রতিটি পরীক্ষার মডিউলের নিজস্ব ডেটাস্টোর বংশবৃদ্ধি গাছ রয়েছে এবং পরীক্ষার ফলাফলগুলি পরীক্ষা শুরুর সময় ইউনিক্স টাইমস্ট্যাম্পের সাথে সূচীবদ্ধ হয়। ডাটাবেসের কভারেজ ডেটা পরীক্ষার ফলাফলের সাথে গণনার ভেক্টর হিসাবে সংরক্ষণ করা হয় (যেমন মূল উত্স ফাইলের প্রতিটি লাইনের জন্য) এবং সোর্স কোড সার্ভার থেকে সোর্স কোড আনার জন্য তথ্য সনাক্তকরণ।
বিজ্ঞপ্তি পরিষেবাটি টাস্ক সারি ব্যবহার করে, পরীক্ষার ক্ষেত্রে অবস্থার পরিবর্তনগুলি সনাক্ত করে এবং গ্রাহকদেরকে অবহিত করে। ডেটা সতেজতা এবং বিদ্যমান ব্যর্থতার ট্র্যাক রাখতে স্টেটফুল তথ্য একটি স্ট্যাটাস টেবিলে সংরক্ষণ করা হয়। এটি বিজ্ঞপ্তি পরিষেবাকে পৃথক পরীক্ষার ক্ষেত্রে ব্যর্থতা এবং সংশোধন সম্পর্কে সমৃদ্ধ তথ্য প্রদানের অনুমতি দেয়।
কোড গঠন
ভিটিএস ড্যাশবোর্ডের প্রয়োজনীয় উপাদানগুলির মধ্যে রয়েছে জাভাতে বাস্তবায়িত সার্লেট, ফ্রন্ট-এন্ড জেএসপি, সিএসএস স্টাইলশীট এবং কনফিগারেশন ফাইল। নিম্নলিখিত তালিকায় এই উপাদানগুলির অবস্থান এবং বর্ণনার বিবরণ রয়েছে ( 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
সহ Protobuf এর জন্য Java ফাইল রয়েছে, যা VTS পরীক্ষার ফলাফল বর্ণনা করতে ব্যবহৃত Protobuf প্রকারের একটি জাভা বাস্তবায়ন। -
src/main/java/com/android/vts/servlet/
সার্লেটের জন্য জাভা ফাইল রয়েছে। -
src/main/java/com/android/vts/util/
ইউটিলিটি ফাংশন এবং সার্লেট দ্বারা ব্যবহৃত ক্লাসের জন্য জাভা ফাইল রয়েছে। -
src/test/java/com/android/vts/
সার্লেট এবং ইউটিলসের জন্য UI পরীক্ষা রয়েছে। -
src/main/webapp/
UI এর সাথে সম্পর্কিত ফাইল রয়েছে (JSP, CSS, XML):-
js/
ওয়েব পৃষ্ঠাগুলির দ্বারা ব্যবহৃত জাভাস্ক্রিপ্ট ফাইলগুলি রয়েছে৷ -
WEB-INF/
। কনফিগারেশন এবং UI ফাইল রয়েছে। -
jsp/
। প্রতিটি ওয়েব পৃষ্ঠার জন্য JSP ফাইল রয়েছে।
-
-
appengine-web.xml
সেটিংস ফাইল যেখানে এনভায়রনমেন্ট ভেরিয়েবল ভেরিয়েবলে লোড করা হয়। -
web.xml
সেটিংস ফাইল যেখানে সার্লেট ম্যাপিং এবং নিরাপত্তা সীমাবদ্ধতা সংজ্ঞায়িত করা হয়। -
cron.xml
সেটিং ফাইল নির্ধারিত কাজ সংজ্ঞায়িত করে (যেমন বিজ্ঞপ্তি পরিষেবা)।
ড্যাশবোর্ড সেট আপ করুন
VTS ড্যাশবোর্ড সেট আপ করতে:
- একটি Google ক্লাউড অ্যাপ ইঞ্জিন প্রকল্প তৈরি করুন এবং ইনস্টল করার মাধ্যমে স্থাপনার হোস্ট সেট আপ করুন:
- জাভা 8
- গুগল অ্যাপ ইঞ্জিন SDK
- মাভেন
- Google ক্লাউড API ম্যানেজারে একটি OAuth 2.0 ক্লায়েন্ট আইডি তৈরি করুন।
- একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন এবং একটি কীফাইল তৈরি করুন।
- অ্যাপ ইঞ্জিন ইমেল API অনুমোদিত প্রেরক তালিকায় একটি ইমেল ঠিকানা যোগ করুন।
- একটি Google Analytics অ্যাকাউন্ট সেট আপ করুন।
- ড্যাশবোর্ড
pom.xml
এ পরিবেশের ভেরিয়েবল নির্দিষ্ট করুন:- OAuth 2.0 ID সহ ক্লায়েন্ট আইডি সেট করুন (ধাপ 2 থেকে)।
- কীফাইলে অন্তর্ভুক্ত শনাক্তকারীর সাথে পরিষেবা ক্লায়েন্ট আইডি সেট করুন (ধাপ 3 থেকে)।
- সতর্কতার জন্য প্রেরকের ইমেল ঠিকানা নির্দিষ্ট করুন (ধাপ 4 থেকে)।
- একটি ইমেল ডোমেন নির্দিষ্ট করুন যেখানে সমস্ত ইমেল পাঠানো হবে।
- Gerrit REST সার্ভারে ঠিকানা উল্লেখ করুন।
- Gerrit REST সার্ভারের জন্য ব্যবহার করার জন্য OAuth 2.0 সুযোগ নির্দিষ্ট করুন।
- Google Analytics আইডি নির্দিষ্ট করুন (ধাপ 5 থেকে)।
- প্রকল্প নির্মাণ এবং স্থাপন.
- একটি টার্মিনালে,
mvn clean appengine:update
চালান।
নিরাপত্তা বিবেচনা
মজবুত কভারেজ তথ্যের জন্য মূল সোর্স কোডে অ্যাক্সেস প্রয়োজন। যাইহোক, কিছু কোড সংবেদনশীল হতে পারে এবং এটির একটি অতিরিক্ত গেটওয়ে বিদ্যমান অ্যাক্সেস নিয়ন্ত্রণ তালিকার শোষণের অনুমতি দিতে পারে।
এই হুমকি এড়াতে, কভারেজ তথ্যের সাথে সোর্স কোড পরিবেশন করার পরিবর্তে, ড্যাশবোর্ড সরাসরি একটি কভারেজ ভেক্টর পরিচালনা করে (অর্থাৎ, সঞ্চালনের একটি ভেক্টর একটি উৎস ফাইলের লাইনে ম্যাপিং গণনা করে)। কভারেজ ভেক্টরের সাথে, ড্যাশবোর্ড একটি গিট প্রকল্পের নাম এবং পথ পায় যাতে ক্লায়েন্ট একটি বহিরাগত উত্স কোড API থেকে কোডটি আনতে পারে। ক্লায়েন্ট ব্রাউজার এই তথ্য গ্রহণ করে এবং আসল সোর্স কোডের জন্য সোর্স কোড সার্ভারকে জিজ্ঞাসা করতে জাভাস্ক্রিপ্টে ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) ব্যবহার করে; ফলস্বরূপ কোডটি কভারেজ ভেক্টরের সাথে একটি ডিসপ্লে তৈরি করতে একত্রিত হয়।
এই সরাসরি পদ্ধতি আক্রমণের পৃষ্ঠকে প্রশস্ত করে না কারণ ড্যাশবোর্ড ব্যবহারকারীর কুকি ব্যবহার করে বাইরের পরিষেবার সাথে প্রমাণীকরণ করে (অর্থাৎ যে ব্যবহারকারী সরাসরি সোর্স কোড অ্যাক্সেস করতে পারে না সে সংবেদনশীল তথ্য দেখার জন্য ড্যাশবোর্ড ব্যবহার করতে পারে না)।