অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP) আপনার ইমপ্লিমেন্টেশনের বিভিন্ন অংশ পরীক্ষা করার জন্য বেশ কিছু টুল এবং টেস্ট স্যুট প্রদান করে। এই বিভাগের পৃষ্ঠাগুলি ব্যবহার করার আগে, আপনার নিম্নলিখিত পরিভাষাগুলির সাথে পরিচিত থাকা উচিত:
- অ্যান্ড্রয়েড-সামঞ্জস্যপূর্ণ ডিভাইস
- এমন একটি ডিভাইস যা অ্যান্ড্রয়েড এসডিকে (SDK) এবং এনডিকে (NDK) ব্যবহার করে তৃতীয় পক্ষের ডেভেলপারদের দ্বারা লিখিত যেকোনো থার্ড-পার্টি অ্যাপ চালাতে পারে। অ্যান্ড্রয়েড-কম্প্যাটিবল ডিভাইসগুলোকে অবশ্যই কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্ট (CDD)- এর প্রয়োজনীয়তাগুলো মেনে চলতে হবে এবং কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS)-এ উত্তীর্ণ হতে হবে। অ্যান্ড্রয়েড-কম্প্যাটিবল ডিভাইসগুলো অ্যান্ড্রয়েড ইকোসিস্টেমে অংশগ্রহণের যোগ্য, যার মধ্যে রয়েছে গুগল প্লে-এর সম্ভাব্য লাইসেন্সিং, গুগল মোবাইল সার্ভিসেস (GMS)- এর অ্যাপ ও এপিআই স্যুটের সম্ভাব্য লাইসেন্সিং এবং অ্যান্ড্রয়েড ট্রেডমার্কের ব্যবহার। যে কেউ অ্যান্ড্রয়েড সোর্স কোড ব্যবহার করতে পারেন, কিন্তু অ্যান্ড্রয়েড ইকোসিস্টেমের অংশ হিসেবে বিবেচিত হতে হলে একটি ডিভাইসকে অবশ্যই অ্যান্ড্রয়েড কম্প্যাটিবল হতে হবে।
- নিদর্শন
- বিল্ড-সম্পর্কিত একটি লগ যা স্থানীয়ভাবে সমস্যা সমাধানে সহায়তা করে।
- সামঞ্জস্য সংজ্ঞা নথি (CDD)
- একটি নথি যা অ্যান্ড্রয়েড-সামঞ্জস্যপূর্ণ ডিভাইসের জন্য প্রয়োজনীয় সফটওয়্যার এবং হার্ডওয়্যারের বিবরণ দেয়।
- সামঞ্জস্য পরীক্ষা স্যুট (CTS)
একটি বিনামূল্যের, বাণিজ্যিক মানের টেস্ট স্যুট, যা বাইনারি অথবা AOSP-তে সোর্স হিসেবে ডাউনলোড করা যায়। CTS হলো একগুচ্ছ ইউনিট টেস্ট, যা আপনার দৈনন্দিন কর্মপ্রবাহে একীভূত করার জন্য ডিজাইন করা হয়েছে। CTS-এর উদ্দেশ্য হলো অসঙ্গতিগুলো উদ্ঘাটন করা এবং উন্নয়ন প্রক্রিয়া জুড়ে সফটওয়্যারটির সামঞ্জস্যতা নিশ্চিত করা।
CTS এবং প্ল্যাটফর্ম টেস্ট পরস্পর বিচ্ছিন্ন নয়। এখানে কিছু সাধারণ নির্দেশিকা দেওয়া হলো:
- যদি কোনো পরীক্ষা ফ্রেমওয়ার্ক API ফাংশন বা আচরণের সঠিকতা যাচাই করে, এবং সেই পরীক্ষাটি সকল OEM অংশীদারদের মধ্যে প্রয়োগ করা প্রয়োজন হয়, তবে সেটি CTS-এ থাকা উচিত।
- যদি কোনো পরীক্ষার উদ্দেশ্য প্ল্যাটফর্ম উন্নয়নের সময় রিগ্রেশন শনাক্ত করা হয়, এবং তা সম্পাদনের জন্য বিশেষ অনুমতির প্রয়োজন হতে পারে, ও তা বাস্তবায়নের বিবরণের (যেমনটি AOSP-তে প্রকাশিত হয়) উপর নির্ভরশীল হতে পারে, তবে সেটি একটি প্ল্যাটফর্ম পরীক্ষা হওয়া উচিত।
- গুগল মোবাইল পরিষেবা (জিএমএস)
গুগল অ্যাপস এবং এপিআই-এর একটি সংগ্রহ যা ডিভাইসগুলিতে আগে থেকে ইনস্টল করা যেতে পারে।
- গুগলটেস্ট (জিটেস্ট)
একটি C++ টেস্টিং এবং মকিং ফ্রেমওয়ার্ক। GTest বাইনারিগুলো সাধারণত নিম্ন-স্তরের অ্যাবস্ট্রাকশন লেয়ার অ্যাক্সেস করে অথবা বিভিন্ন সিস্টেম সার্ভিসের বিরুদ্ধে সরাসরি আইপিসি (IPC) সম্পাদন করে। GTest-এর টেস্টিং পদ্ধতিটি সাধারণত পরীক্ষাধীন সার্ভিসের সাথে নিবিড়ভাবে সংযুক্ত থাকে। CTS-এর মধ্যে GTest ফ্রেমওয়ার্কটি রয়েছে।
- যন্ত্র পরীক্ষা
am instrumentকমান্ড দ্বারা চালু করা একটি বিশেষ পরীক্ষা সম্পাদন পরিবেশ, যেখানে লক্ষ্যযুক্ত অ্যাপ প্রসেসটিকে পুনরায় চালু করে বেসিক অ্যাপ কনটেক্সট দিয়ে ইনিশিয়ালাইজ করা হয় এবং অ্যাপ প্রসেস ভার্চুয়াল মেশিনের ভিতরে একটি ইন্সট্রুমেন্টেশন থ্রেড শুরু করা হয়। CTS-এ ইন্সট্রুমেন্টেশন টেস্টগুলো থাকে।- লগক্যাট
একটি কমান্ড-লাইন টুল যা সিস্টেম মেসেজের একটি লগ তৈরি করে, যার মধ্যে ডিভাইসে কোনো ত্রুটি দেখা দিলে তার স্ট্যাক ট্রেস এবং আপনার অ্যাপ থেকে
Logক্লাস ব্যবহার করে লেখা মেসেজগুলোও অন্তর্ভুক্ত থাকে।- লগিং
কম্পিউটার সিস্টেমের বিভিন্ন ঘটনা, যেমন ত্রুটি, ট্র্যাক করার জন্য লগ ব্যবহার করা হয়। অ্যান্ড্রয়েডে লগিং বেশ জটিল, কারণ Logcat টুলে বিভিন্ন স্ট্যান্ডার্ডের মিশ্রণ ব্যবহার করা হয়।
- পোস্টসাবমিট পরীক্ষা
একটি অ্যান্ড্রয়েড পরীক্ষা যা একটি সাধারণ কার্নেল শাখায় নতুন কোনো প্যাচ কমিট করা হলে সম্পাদিত হয়। আংশিক শাখার নাম হিসেবে
aosp_kernelলিখে, আপনি ফলাফলসহ কার্নেল শাখাগুলোর একটি তালিকা দেখতে পারেন। উদাহরণস্বরূপ,android-mainlineএর ফলাফল https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid -এ পাওয়া যাবে।- প্রাক-জমা পরীক্ষা
সাধারণ কার্নেলগুলোতে ত্রুটি প্রবেশ করা প্রতিরোধ করার জন্য ব্যবহৃত একটি পরীক্ষা।
- ট্রেড ফেডারেশন
ট্রেডফেড নামেও পরিচিত, এটি অ্যান্ড্রয়েড ডিভাইসে পরীক্ষা চালানোর জন্য ডিজাইন করা একটি কন্টিনিউয়াস টেস্ট ফ্রেমওয়ার্ক। উদাহরণস্বরূপ, কম্প্যাটিবিলিটি টেস্ট স্যুট এবং ভেন্ডর টেস্ট স্যুট পরীক্ষা চালানোর জন্য ট্রেডফেড ব্যবহার করা হয়।
- ভেন্ডর টেস্ট স্যুট (VTS)
অ্যান্ড্রয়েড টেস্টিং, টেস্ট-ড্রাইভেন ডেভেলপমেন্ট প্রক্রিয়াকে উৎসাহিত করা এবং হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) ও ওএস কার্নেল টেস্টিং স্বয়ংক্রিয় করার জন্য একগুচ্ছ ব্যাপক সক্ষমতা।
প্ল্যাটফর্ম পরীক্ষার প্রকারভেদ
একটি প্ল্যাটফর্ম টেস্ট সাধারণত এক বা একাধিক অ্যান্ড্রয়েড সিস্টেম সার্ভিস বা HAL লেয়ারের সাথে ইন্টারঅ্যাক্ট করে, পরীক্ষাধীন বিষয়টির কার্যকারিতা পরীক্ষা করে এবং পরীক্ষার ফলাফলের সঠিকতা যাচাই করে। একটি প্ল্যাটফর্ম টেস্টে যা যা থাকতে পারে:
- (ধরন ১) অ্যান্ড্রয়েড ফ্রেমওয়ার্ক ব্যবহার করে ফ্রেমওয়ার্ক এপিআই অনুশীলন করুন। যে নির্দিষ্ট এপিআইগুলো অনুশীলন করা হতে পারে, সেগুলো হলো:
- তৃতীয় পক্ষের অ্যাপের জন্য উদ্দিষ্ট পাবলিক এপিআই
- বিশেষাধিকারপ্রাপ্ত অ্যাপের জন্য উদ্দিষ্ট গোপন এপিআই, যথা সিস্টেম এপিআই বা ব্যক্তিগত এপিআই (
@hide, বাprotected,package private)
- (ধরন ২) সরাসরি র বাইন্ডার বা আইপিসি প্রক্সি ব্যবহার করে অ্যান্ড্রয়েড সিস্টেম পরিষেবাগুলো চালু করুন।
- (টাইপ ৩) নিম্ন-স্তরের এপিআই বা আইপিসি ইন্টারফেস ব্যবহার করে সরাসরি এইচএএল-এর সাথে যোগাযোগ করুন।
টাইপ ১ ও ২ পরীক্ষাগুলো সাধারণত ইনস্ট্রুমেন্টেশন পরীক্ষা, আর টাইপ ৩ পরীক্ষাগুলো সাধারণত জি-টেস্ট হয়ে থাকে।
এরপর কী?
আরও বিস্তারিত তথ্যের জন্য আপনি এই নথিগুলো পড়তে পারেন, তার একটি তালিকা নিচে দেওয়া হলো:
আপনি যদি অ্যান্ড্রয়েড আর্কিটেকচার না পড়ে থাকেন, তাহলে আর্কিটেকচার ওভারভিউ দেখুন।
আপনি যদি একটি অ্যান্ড্রয়েড-সামঞ্জস্যপূর্ণ ডিভাইস তৈরি করেন, তাহলে অ্যান্ড্রয়েড সামঞ্জস্য প্রোগ্রাম ওভারভিউ দেখুন।
একটি প্ল্যাটফর্ম কন্টিনিউয়াস টেস্টিং সার্ভিসে ইন্সট্রুমেন্টেশন, ফাংশনাল, মেট্রিক এবং JAR হোস্ট টেস্টগুলিকে একীভূত করতে, টেস্ট ডেভেলপমেন্ট ওয়ার্কফ্লো দেখুন।
দুর্বলতা শনাক্ত করতে এবং সেগুলোর বিরুদ্ধে আপনার ডিভাইসগুলোকে সুরক্ষিত করতে, নিরাপত্তা পরীক্ষা দেখুন।
আপনার HAL এবং কার্নেল ইমপ্লিমেন্টেশন পরীক্ষা করার বিষয়ে জানতে, ভেন্ডর টেস্ট স্যুট (VTS) এবং ইনফ্রাস্ট্রাকচার দেখুন।
অ্যাপ টেস্টিংয়ের জন্য, “Fundamentals of testing Android apps” পড়ুন এবং প্রদত্ত স্যাম্পলগুলো ব্যবহার করে “ Advanced Android in Kotlin 05.1:Testing Basics” কোর্সটি সম্পন্ন করুন।
রিপো হুকসের মাধ্যমে আপনার জন্য উপলব্ধ বেসিক প্রিসাবমিট টেস্টিং সম্পর্কে জানুন। এই হুকগুলো লিন্টার চালানো, ফরম্যাটিং পরীক্ষা করা এবং কমিট আপলোড করার মতো পরবর্তী ধাপে যাওয়ার আগে ইউনিট টেস্ট চালু করার জন্য ব্যবহার করা যেতে পারে। এই হুকগুলো ডিফল্টরূপে নিষ্ক্রিয় থাকে। আরও তথ্যের জন্য, AOSP প্রিআপলোড হুকস দেখুন।
লগিং সম্পর্কে আরও জানতে, “লগিং বুঝুন” দেখুন।
অ্যান্ড্রয়েড কোড কীভাবে ডিবাগ করতে হয় তা বুঝতে, "নেটিভ অ্যান্ড্রয়েড প্ল্যাটফর্ম কোড ডিবাগ করুন" দেখুন।