CTS FAQ

অ্যান্ড্রয়েড ইকোসিস্টেমের জন্য ইতিবাচক প্রতিক্রিয়া বজায় রাখার মূল চালিকাশক্তি হলো অ্যান্ড্রয়েড কম্প্যাটিবিলিটি প্রোগ্রাম । বৃহৎ পরিসরে সামঞ্জস্যের মান নিশ্চিত করার জন্য CTS হলো প্রধান টুল। অ্যান্ড্রয়েড টিম CTS টুল এবং টেস্ট কভারেজ উন্নত করে চলেছে। নিয়মিত টেস্ট কেস যুক্ত করার ফলে সামঞ্জস্যপূর্ণ ডিভাইসগুলোর মানের উল্লেখযোগ্য উন্নতি হয়েছে।

সাধারণ প্রশ্নাবলী

এই বিভাগে CTS সম্পর্কিত সাধারণ জিজ্ঞাস্য প্রশ্ন ও উত্তর দেওয়া হয়েছে।

CTS কী ধরনের জিনিস পরীক্ষা করে?

CTS পরীক্ষা করে দেখে যে, অ্যান্ড্রয়েডের সমস্ত সমর্থিত স্ট্রং-টাইপড এপিআই উপস্থিত আছে এবং সঠিকভাবে কাজ করছে। CTS এছাড়াও অ্যাপের জীবনচক্র এবং পারফরম্যান্সের মতো অন্যান্য নন-এপিআই সিস্টেম আচরণগুলোও পরীক্ষা করে।

CTS-কে কীভাবে লাইসেন্স দেওয়া হয়?

CTS-টি সেই একই অ্যাপাচি সফটওয়্যার লাইসেন্স ২.০-এর অধীনে লাইসেন্সপ্রাপ্ত, যা অ্যান্ড্রয়েডের বেশিরভাগ অংশ ব্যবহার করে।

কোডেকগুলো কি CTS দ্বারা যাচাইকৃত?

হ্যাঁ। সকল বাধ্যতামূলক কোডেক CTS দ্বারা যাচাই করা হয়।

পরীক্ষা-নির্দিষ্ট প্রশ্নাবলী

এই বিভাগে প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেওয়া হয়েছে, যা CTS টেস্ট আরও দক্ষতার সাথে চালাতে সাহায্য করে।

CTS শার্ডিং এবং TF শার্ডিং এর মধ্যে পার্থক্য কী?

CTS শার্ডিং এবং TF শার্ডিং হলো সম্পূর্ণ ভিন্ন দুটি টেস্ট প্ল্যান, যা ভিন্ন টেস্ট ইনফ্রাস্ট্রাকচার কোডবেস দ্বারা চালিত হয়। যদিও বিভিন্ন ভার্সনে রান কমান্ড একই থাকে, শার্ডিং-এর ফলাফল ভিন্নভাবে কাজ করে। CTS শার্ডিং নিম্নলিখিতভাবে ডিভাইস আন্ডার টেস্ট (DUTs)-এ টেস্ট কেসগুলোকে স্ট্যাটিক্যালি বরাদ্দ করে:

  • কমান্ড: রান সিটিএস
  • অ্যান্ড্রয়েড ৮.১ এবং এর নিচের সংস্করণগুলোর জন্য কনফিগারেশন: /tools/cts-tradefed/res/config/cts.xml

TF শার্ডিং নিম্নলিখিতভাবে উপলব্ধ DUT-গুলিতে টেস্ট কেসগুলিকে গতিশীলভাবে বরাদ্দ করে:

একাধিক ABI সমর্থনকারী একটি ডিভাইস থেকে কী প্রত্যাশা করা হয়?

ডিভাইসটিকে তার সমর্থিত প্রতিটি ABI মোডের জন্য সমস্ত CTS এবং CTS ভেরিফায়ার পরীক্ষায় উত্তীর্ণ হতে হবে। অতএব, নির্দিষ্ট ABI-গুলোর জন্য একটি অ্যাপ চালানো আবশ্যক। একাধিক ABI-এর জন্য নির্দেশিকাগুলো নিম্নরূপ:

  • CTS এবং CTS Verifier-এর ক্ষেত্রে, প্রতিটি আর্কিটেকচারের জন্য ARM এবং x86 সংস্করণ রয়েছে। এদের প্রতিটি ৩২-বিট অথবা ৬৪-বিট মোড সমর্থন করতে পারে।
  • CTS পরীক্ষার ক্ষেত্রে, যদি কোনো ডিভাইস ARM এবং x86 উভয়ই সমর্থন করে, তবে সেটিকে যথাক্রমে ARM এবং x86 উভয় CTS পরীক্ষাই চালাতে হবে এবং তাতে উত্তীর্ণ হতে হবে।

ABI সংক্রান্ত CDD-এর আবশ্যকতাগুলোর জন্য CDD 3.3.1. অ্যাপ্লিকেশন বাইনারি ইন্টারফেস দেখুন।

টেস্ট সম্পাদনের সময় কমাতে শুধুমাত্র প্রাথমিক ABI-তে (যেমন, ৬৪ বিট) টেস্ট চালানো কি যথেষ্ট?

না। একটি অ্যান্ড্রয়েড অ্যাপ তার নিজস্ব ৩২-বিট বা ৬৪-বিট রানটাইমে চলে। ৩২ এবং ৬৪-বিটের মধ্যে প্রকৃত মেশিন কোড, কোড পাথ এবং স্টেট ভিন্ন হয়। আপনি যদি একটি মোড বাদ দেন, তবে আপনি ডিভাইস ABI-এর মাত্র ৫০% ব্যবহার করবেন।

কেন এতগুলো টেস্ট কেস 'এক্সিকিউট হয়নি' হিসেবে রিপোর্ট করা হচ্ছে?

আপনার 'Not Executed' নম্বরের পরিবর্তে 'Module Done' নম্বরটি যাচাই করা উচিত।

পূর্ববর্তী সংস্করণগুলিতে, CTS মডিউলগুলি সম্পূর্ণ হওয়ার আগেই খুব দ্রুত 'মডিউল সম্পন্ন' হিসাবে রিপোর্ট করা হতো। ফলে, কিছু ডিভাইসে সমস্যা থাকা সত্ত্বেও সমস্ত টেস্ট কেস সম্পূর্ণ না হওয়া সত্ত্বেও একটি 'মডিউল সম্পন্ন' সংখ্যা রিপোর্ট করা হতো। নতুন টেস্ট হারনেসটি আরও সংযত এবং কোনো সমস্যা দেখা দিলে এটি 'সম্পাদিত হয়নি' এমন টেস্টের একটি উচ্চ সংখ্যা রিপোর্ট করে।

একটি মডিউল সম্পূর্ণভাবে রান করলে, রিপোর্টে সর্বশেষ আহ্বানে (done="false") নিম্নলিখিত সময়ে 'মডিউল সম্পন্ন হয়নি' (Module Not Done ) রিপোর্ট করা হয়:

  • ডিভাইস সংযোগ সমস্যার কারণে মডিউলটির একটি পরীক্ষামূলক চালনা বাধাগ্রস্ত হয়েছিল।
  • মডিউলটির জন্য প্রত্যাশিত সব টেস্ট রান সম্পন্ন করা হয়নি।
  • অতিরিক্ত ফিল্টারিং অপশন সহ (যেমন: -r/--retry অপশনটি ব্যবহার করে) পুনরায় চেষ্টা করা হয়েছে।

    • --include-filter
    • --বর্জন-ফিল্টার
    • -t/--test (পুনরায় চেষ্টার ক্ষেত্রে বিকল্পটি এখনও সমর্থিত নয়)
    • --পুনরায়-চেষ্টা-প্রকার ব্যর্থ হয়েছে
    • --উপ পরিকল্পনা

এই মডিউলগুলির জন্য 'মডিউল সম্পন্ন ' (done="true") স্ট্যাটাস পেতে, সর্বশেষ আহ্বানের জন্য নিম্নলিখিতটি পুনরায় চেষ্টা করুন:

run retry --retry <session_id> for Android 9 and later versions
run cts --retry <session_id> for Android 8.1 and previous versions

পূর্বে উল্লিখিত কোনো সমস্যা ছাড়াই সম্পাদিত একটি মডিউলকে (এমনকি ০টি অবশিষ্ট টেস্ট থাকা অবস্থাতেও) নতুন রিপোর্টে 'মডিউল সম্পন্ন' হিসেবে চিহ্নিত করা হয়।

ব্যতিক্রম

  • লিনাক্স/ওএস-এর আর্গুমেন্টের সীমাবদ্ধতার কারণে CtsNNAPITestCases-এ একটি পরিচিত সমস্যা রয়েছে। সরাসরি run cts -m CtsNNAPITestCases চালিয়ে মডিউলটি আলাদাভাবে পুনরায় চালানো যেতে পারে।

কর্পোরেট ফায়ারওয়ালের আড়ালে পরীক্ষার প্রস্তুতি ব্যর্থ হওয়া আমি কীভাবে এড়াতে পারি?

সমস্ত স্বয়ংক্রিয় টেস্ট স্যুট রানটাইমের সময় CTS মিডিয়া ফাইল অথবা বিজনেস লজিক ফাইল ডাউনলোড করার চেষ্টা করে। অনেক কর্পোরেট পরিবেশে ফায়ারওয়াল এবং প্রক্সি থাকা সাধারণ ব্যাপার, যার ফলে টেস্ট প্রস্তুতি ব্যর্থ হয়। নিম্নলিখিত লাইনটি চালান অথবা এটি .profile-এ (উবুন্টুতে) যোগ করুন।

export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'

সিকিউর এলিমেন্টের জন্য CTS ব্যবহার করতে আমার কি সিম কার্ডের প্রয়োজন আছে?

পরীক্ষার জন্য সিম কার্ডের প্রয়োজন হবে কিনা, তা পরীক্ষাধীন ডিভাইসটিতে ফিচারটি সমর্থিত কিনা, সেই উপলব্ধির উপর নির্ভর করে।

  • যদি আপনার ডিভাইসে অ্যান্ড্রয়েড অ্যাপগুলোর সিকিওর এলিমেন্ট অ্যাক্সেস করার প্রয়োজন না হয় —তা মোবাইল নেটওয়ার্ক অপারেটর (ক্যারিয়ার) দ্বারা বিতরণ করা UICC- তে (যেমন, একটি সিম কার্ড) থাকুক বা ডিভাইসে এমবেড করা থাকুক—তাহলে আপনি HIDL ম্যানিফেস্টটি android.hardware.secure_element HAL এলিমেন্টটি অন্তর্ভুক্ত না করার জন্য কনফিগার করতে পারেন। এই ক্ষেত্রে, android.se.omapi.SEService.getReaders() API একটি খালি তালিকা রিপোর্ট করে এবং CTS পরীক্ষাটি স্বয়ংক্রিয়ভাবে পাস করে ও CTS-এর জন্য একটি পাস রিপোর্ট করে।
  • যদি আপনার ডিভাইসে অ্যান্ড্রয়েড অ্যাপগুলোকে সিকিওর এলিমেন্ট অ্যাক্সেস করার সুবিধা দিতে হয় —যা মোবাইল নেটওয়ার্ক অপারেটর (ক্যারিয়ার) দ্বারা বিতরণ করা UICC- তে (যেমন, একটি সিম কার্ড) অথবা ডিভাইসের ভেতরে এমবেড করা থাকতে পারে—তবে আপনাকে সিকিওর এলিমেন্টটি সঠিকভাবে ইমপ্লিমেন্ট করতে হবে এবং ইন-হাউস টেস্ট করতে হবে। অ্যান্ড্রয়েড ৯-এ যুক্ত হওয়া android.se.omapi API প্যাকেজটি কার্যকরী কিনা তা নিশ্চিত করার জন্য CTS টেস্টগুলো চালানোর প্রস্তুতি কীভাবে নিতে হবে, তার রূপরেখা ‘সিকিওর এলিমেন্টের জন্য CTS টেস্ট’- এ দেওয়া আছে। যেহেতু CTS টেস্ট কভারেজ খুবই সীমিত, তাই আমরা আপনার নিজের উদ্যোগে অতিরিক্ত টেস্টিং করারও পরামর্শ দিই।

আমি CTS for Secure Element-এর সিম কার্ডগুলো কোথা থেকে পেতে পারি?

আপনি আপনার পছন্দের সিম বিক্রেতার সাথে যোগাযোগ করতে পারেন।

টোকেন শার্ডিং সহ CTS এক্সিকিউশনের সময় অরেঞ্জ সিম কেন লক স্ক্রিনে থাকে?

টেস্ট কেসটি শুরু হচ্ছে না কারণ পরীক্ষাধীন সিম কার্ডটি লক করা আছে। টোকেন শার্ডিং সহ CTS চালানোর আগে **সিম কার্ড লক সেটিংসে** 'লক সিম কার্ড' বিকল্পটি নিষ্ক্রিয় করুন।

ডিভাইসে ফিচার ফ্ল্যাগগুলো নিষ্ক্রিয় করা থাকলেও টেস্ট রান চলে।

রিলিজ বিল্ডের সমস্ত ফ্ল্যাগের জন্য, @RequiresFlagsEnabled বা @RequiresFlagsDisabled অ্যানোটেশনটি ডিভাইস রিলিজ কনফিগারেশন থেকে নয়, বরং CTS বাইনারি রিলিজ কনফিগারেশন থেকে ফ্ল্যাগগুলোর মান ব্যবহার করে। ডিভাইসে ফ্ল্যাগগুলো নিষ্ক্রিয় করলে টেস্টটি নিষ্ক্রিয় হয় না, কারণ একটি নির্দিষ্ট রিলিজের জন্য যে CTS টেস্টগুলো চলে, তার সেট AOSP প্ল্যাটফর্মের রিলিজড কনফিগারেশন অনুযায়ী স্থির থাকে।