পরীক্ষা চালান (অ্যাটেস্ট)

Atest হলো একটি কমান্ড লাইন টুল যা ব্যবহারকারীদের স্থানীয়ভাবে অ্যান্ড্রয়েড টেস্ট বিল্ড, ইনস্টল এবং রান করতে দেয় । এটি ট্রেড ফেডারেশন টেস্ট হারনেস কমান্ড লাইন অপশন সম্পর্কে জ্ঞান ছাড়াই টেস্ট পুনরায় চালানোর গতি ব্যাপকভাবে বাড়িয়ে তোলে। এই পৃষ্ঠায় Atest ব্যবহার করে কীভাবে অ্যান্ড্রয়েড টেস্ট রান করতে হয় তা ব্যাখ্যা করা হয়েছে।

অ্যান্ড্রয়েডের জন্য টেস্ট লেখার সাধারণ তথ্যের জন্য, অ্যান্ড্রয়েড প্ল্যাটফর্ম টেস্টিং দেখুন।

Atest-এর সামগ্রিক কাঠামো সম্পর্কে জানতে Atest ডেভেলপার গাইড দেখুন।

Atest-এর মাধ্যমে TEST_MAPPING ফাইলগুলিতে টেস্ট চালানোর তথ্যের জন্য, Running tests in TEST_MAPPING files দেখুন।

Atest-এ কোনো ফিচার যোগ করতে, Atest ডেভেলপার ওয়ার্কফ্লো অনুসরণ করুন।

আপনার পরিবেশ তৈরি করুন

আপনার Atest এনভায়রনমেন্ট সেট আপ করতে, ' এনভায়রনমেন্ট সেট আপ করা' , 'টার্গেট নির্বাচন করা' , এবং 'কোড বিল্ড করা' অংশগুলোর নির্দেশাবলী অনুসরণ করুন।

মৌলিক ব্যবহার

অ্যাটেস্ট কমান্ডগুলো নিম্নলিখিত রূপ ধারণ করে:

atest test-to-run [optional-arguments]

ঐচ্ছিক যুক্তি

নিম্নলিখিত সারণিতে সর্বাধিক ব্যবহৃত আর্গুমেন্টগুলো তালিকাভুক্ত করা হয়েছে। atest --help এর মাধ্যমে একটি সম্পূর্ণ তালিকা পাওয়া যাবে।

বিকল্প দীর্ঘ বিকল্প বর্ণনা
-b --build টেস্ট টার্গেট তৈরি করে। (ডিফল্ট)
-i --install ডিভাইসে টেস্ট আর্টিফ্যাক্ট (এপিকে) ইনস্টল করে। (ডিফল্ট)
-t --test পরীক্ষাগুলো চালায়। (ডিফল্ট)
-s --serial নির্দিষ্ট ডিভাইসে পরীক্ষাগুলো চালানো হয়। একবারে একটি ডিভাইস পরীক্ষা করা যায়।
-d --disable-teardown টেস্ট টিয়ারডাউন এবং ক্লিনআপ নিষ্ক্রিয় করে।
--dry-run প্রকৃতপক্ষে তৈরি, ইনস্টল বা পরীক্ষা না চালিয়েই Atest-এর ড্রাই-রান করে।
-m --rebuild-module-info module-info.json ফাইলটি পুনর্নির্মাণ করতে বাধ্য করে।
-w --wait-for-debugger কার্যকর করার আগে ডিবাগারের কাজ শেষ হওয়ার জন্য অপেক্ষা করে।
-v --verbose ডিবাগ স্তরের লগিং প্রদর্শন করে।
--iterations সর্বোচ্চ পুনরাবৃত্তি সংখ্যা না পৌঁছানো পর্যন্ত পরীক্ষাগুলো চলতে থাকে। (ডিফল্টরূপে ১০)
--rerun-until-failure [COUNT=10] ব্যর্থতা না ঘটা পর্যন্ত অথবা সর্বোচ্চ পুনরাবৃত্তি সংখ্যায় না পৌঁছানো পর্যন্ত সমস্ত পরীক্ষা পুনরায় চালানো হয়। (ডিফল্টরূপে ১০)
--retry-any-failure [COUNT=10] ব্যর্থ হওয়া টেস্টগুলো পাস না হওয়া পর্যন্ত অথবা সর্বোচ্চ পুনরাবৃত্তি সংখ্যা না পৌঁছানো পর্যন্ত পুনরায় চালানো হয়। (ডিফল্টরূপে ১০)
--start-avd স্বয়ংক্রিয়ভাবে একটি AVD তৈরি করে এবং ভার্চুয়াল ডিভাইসটিতে পরীক্ষা চালায়।
--acloud-create acloud কমান্ড ব্যবহার করে একটি AVD তৈরি করে।
--[CUSTOM_ARGS] টেস্ট রানারদের জন্য কাস্টম আর্গুমেন্ট নির্দিষ্ট করে।
-a --all-abi উপলব্ধ সকল ডিভাইস আর্কিটেকচারের জন্য পরীক্ষাগুলো চালায়।
--host কোনো ডিভাইস ছাড়াই হোস্টে পরীক্ষাটি সম্পূর্ণভাবে চালানো হয়।
দ্রষ্টব্য: --host সহ ডিভাইস প্রয়োজন এমন কোনো হোস্ট টেস্ট চালালে তা ব্যর্থ হবে।
--history পরীক্ষার ফলাফল কালানুক্রমিকভাবে দেখায়।
--latest-result সর্বশেষ পরীক্ষার ফলাফল প্রদর্শন করে।

-b , -i এবং -t সম্পর্কে আরও তথ্যের জন্য, "নির্দিষ্ট করার ধাপসমূহ: বিল্ড, ইনস্টল বা রান" বিভাগটি দেখুন।

পরীক্ষাগুলি নির্দিষ্ট করুন

টেস্ট চালানোর জন্য, নিম্নলিখিত শনাক্তকারীগুলির মধ্যে যেকোনো একটি ব্যবহার করে এক বা একাধিক টেস্ট নির্দিষ্ট করুন:

  • মডিউলের নাম
  • মডিউল:শ্রেণী
  • ক্লাসের নাম
  • ট্রেডফেড ইন্টিগ্রেশন টেস্ট
  • ফাইলের পথ
  • প্যাকেজের নাম

একাধিক পরীক্ষার উল্লেখ স্পেস দিয়ে আলাদা করুন, যেমন:

atest test-identifier-1 test-identifier-2

মডিউলের নাম

সম্পূর্ণ একটি টেস্ট মডিউল চালানোর জন্য, এর মডিউল নামটি ব্যবহার করুন। সেই টেস্টের Android.mk বা Android.bp ফাইলে থাকা LOCAL_MODULE বা LOCAL_PACKAGE_NAME ভেরিয়েবলে নামটি যেভাবে আছে, ঠিক সেভাবেই ইনপুট করুন।

উদাহরণ:

atest FrameworksServicesTests
atest CtsVideoTestCases

মডিউল:শ্রেণী

একটি মডিউলের মধ্যে কোনো একটি ক্লাস রান করতে, Module:Class ব্যবহার করুন। Module-এর সংজ্ঞাটি Module name অংশে বর্ণিত সংজ্ঞার অনুরূপ। Class হলো .java ফাইলের টেস্ট ক্লাসের নাম, এবং এটি ক্লাসের পূর্ণাঙ্গ নাম বা সাধারণ নাম হতে পারে।

উদাহরণ:

atest CtsVideoTestCases:VideoEncoderDecoderTest
atest FrameworksServicesTests:ScreenDecorWindowTests
atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests

ক্লাসের নাম

মডিউলের নাম স্পষ্টভাবে উল্লেখ না করে কোনো একটি ক্লাস চালানোর জন্য ক্লাসের নামটি ব্যবহার করুন।

উদাহরণ:

atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest

ট্রেডফেড ইন্টিগ্রেশন টেস্ট

TradeFed-এর সাথে সরাসরি সমন্বিত (নন-মডিউল) টেস্টগুলো চালানোর জন্য, tradefed.sh list configs কমান্ডের আউটপুটে নামটি যেভাবে দেখা যায়, ঠিক সেভাবেই ইনপুট করুন। উদাহরণস্বরূপ:

reboot.xml পরীক্ষাটি চালানোর জন্য:

atest example/reboot

native-benchmark.xml পরীক্ষাটি চালানোর জন্য:

atest native-benchmark

ফাইলের পথ

প্রয়োজন অনুযায়ী টেস্ট ফাইল বা ডিরেক্টরির পাথ ইনপুট করে Atest মডিউল-ভিত্তিক এবং ইন্টিগ্রেশন-ভিত্তিক উভয় প্রকার টেস্টই চালাতে পারে। এটি কোনো ক্লাসের জাভা ফাইলের পাথ উল্লেখ করে একটি একক ক্লাস চালানোর সুবিধাও দেয়। রিলেটিভ এবং অ্যাবসোলিউট উভয় প্রকার পাথই সমর্থিত।

একটি মডিউল চালান

নিম্নলিখিত উদাহরণগুলিতে ফাইল পাথ ব্যবহার করে CtsVideoTestCases মডিউলটি চালানোর দুটি উপায় দেখানো হয়েছে।

অ্যান্ড্রয়েড repo-root থেকে চালান:

atest cts/tests/video

Android repo-root/cts/tests/video থেকে চালান :

    atest .

একটি পরীক্ষামূলক ক্লাস চালান

নিম্নলিখিত উদাহরণে দেখানো হয়েছে কিভাবে একটি ফাইল পাথ ব্যবহার করে CtsVideoTestCases মডিউলের অন্তর্গত একটি নির্দিষ্ট ক্লাস চালানো যায়।

অ্যান্ড্রয়েড repo-root থেকে:

    atest cts/tests/video/src/android/video/cts/VideoEncoderDecoderTest.java

একটি ইন্টিগ্রেশন টেস্ট চালান

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে অ্যান্ড্রয়েড repo-root থেকে একটি ফাইল পাথ ব্যবহার করে ইন্টিগ্রেশন টেস্ট চালানো যায়:

    atest tools/tradefederation/contrib/res/config/example/reboot.xml

প্যাকেজের নাম

Atest প্যাকেজের নাম দিয়ে টেস্ট খোঁজার সুবিধা প্রদান করে।

উদাহরণ:

    atest com.android.server.wm
    atest com.android.uibench.janktests

ধাপগুলি নির্দিষ্ট করুন: বিল্ড, ইনস্টল বা রান করুন

কোন ধাপগুলো চালানো হবে তা নির্দিষ্ট করতে -b , -i , এবং -t অপশনগুলো ব্যবহার করুন। যদি আপনি কোনো অপশন নির্দিষ্ট না করেন, তাহলে সব ধাপই চলবে।

  • শুধুমাত্র বিল্ড টার্গেট: atest -b test-to-run
  • শুধুমাত্র পরীক্ষা চালান: atest -t test-to-run
  • এপিকে ইনস্টল করুন এবং টেস্টগুলো চালান: atest -it test-to-run
  • বিল্ড ও রান করুন, কিন্তু ইনস্টল করবেন না: atest -bt test-to-run

Atest কোনো টেস্টকে ক্লিনআপ বা টিয়ারডাউন ধাপটি এড়িয়ে যেতে বাধ্য করতে পারে। CTS-এর মতো অনেক টেস্ট, টেস্টটি চালানোর পর ডিভাইসটি ক্লিনআপ করে, তাই --disable-teardown প্যারামিটারটি ছাড়া -t দিয়ে আপনার টেস্টটি পুনরায় চালানোর চেষ্টা করলে তা ব্যর্থ হবে। টেস্ট ক্লিনআপ ধাপটি এড়িয়ে যেতে এবং পুনরাবৃত্তিমূলকভাবে টেস্ট করতে -t এর আগে -d ব্যবহার করুন।

atest -d test-to-run
atest -t test-to-run

নির্দিষ্ট পদ্ধতি চালান

Atest একটি টেস্ট ক্লাসের মধ্যে নির্দিষ্ট মেথড চালানোর সুবিধা দেয়। যদিও পুরো মডিউলটি বিল্ড করার প্রয়োজন হয়, এটি টেস্টগুলো চালানোর জন্য প্রয়োজনীয় সময় কমিয়ে দেয়। নির্দিষ্ট মেথড চালানোর জন্য, ক্লাস শনাক্ত করার জন্য সমর্থিত যেকোনো উপায় (মডিউল:ক্লাস, ফাইল পাথ, ইত্যাদি) ব্যবহার করে ক্লাসটি শনাক্ত করুন এবং এর শেষে মেথডটির নাম যুক্ত করুন:

atest reference-to-class#method1

একাধিক মেথড উল্লেখ করার সময়, সেগুলোকে কমা দিয়ে আলাদা করুন:

atest reference-to-class#method1,method2,method3

উদাহরণ:

atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval

নিম্নলিখিত দুটি উদাহরণ testFlagChange নামক একটি একক মেথড চালানোর পছন্দসই উপায় দেখায়। শুধুমাত্র ক্লাসের নাম ব্যবহার করার চেয়ে এই উদাহরণগুলো বেশি পছন্দনীয়, কারণ মডিউল বা জাভা ফাইলের অবস্থান উল্লেখ করলে Atest টেস্টটিকে আরও দ্রুত খুঁজে পেতে পারে।

মডিউল:ক্লাস ব্যবহার করে

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange

অ্যান্ড্রয়েড repo-root থেকে:

atest frameworks/base/services/tests/wmtests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange

বিভিন্ন ক্লাস এবং মডিউল থেকে একাধিক মেথড চালানো যেতে পারে:

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors

একাধিক ক্লাস চালান

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

একই মডিউলে দুটি ক্লাস চালাতে:

atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests

দুটি ক্লাস ভিন্ন মডিউলে চালানোর জন্য:

atest FrameworksServicesTests:ScreenDecorWindowTests CtsVideoTestCases:VideoEncoderDecoderTest

GTest বাইনারিগুলি চালান

Atest, GTest বাইনারিগুলো চালাতে পারে। উপলব্ধ সমস্ত ডিভাইস আর্কিটেকচারের জন্য এই টেস্টগুলো চালাতে -a ব্যবহার করুন, যা এই উদাহরণে হলো armeabi-v7a (ARM 32-বিট) এবং arm64-v8a (ARM 64-বিট)।

ইনপুট পরীক্ষার উদাহরণ:

atest -a libinput_tests inputflinger_tests

চালানোর জন্য একটি নির্দিষ্ট GTest বাইনারি নির্বাচন করতে, পরীক্ষার নাম উল্লেখ করার জন্য কোলন (:) এবং কোনো স্বতন্ত্র মেথডকে আরও নির্দিষ্ট করার জন্য হ্যাশট্যাগ (#) ব্যবহার করুন।

উদাহরণস্বরূপ, নিম্নলিখিত পরীক্ষার সংজ্ঞার জন্য:

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

সম্পূর্ণ পরীক্ষাটি নির্দিষ্ট করতে নিম্নলিখিতটি চালান:

atest inputflinger_tests:InputDispatcherTest

অথবা নিম্নলিখিতগুলি ব্যবহার করে একটি স্বতন্ত্র পরীক্ষা চালান:

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents

টেস্ট_ম্যাপিং-এ পরীক্ষা চালান

Atest, TEST_MAPPING ফাইলগুলোতে টেস্ট চালাতে পারে।

প্রিসাবমিট টেস্টগুলি পরোক্ষভাবে চালান

বর্তমান এবং প্যারেন্ট ডিরেক্টরিতে থাকা TEST_MAPPING ফাইলগুলিতে প্রিসাবমিট টেস্টগুলি চালান:

atest

/path/to/project এবং এর প্যারেন্ট ডিরেক্টরিগুলোতে থাকা TEST_MAPPING ফাইলগুলোতে প্রিসাবমিট টেস্টগুলো চালান:

atest --test-mapping /path/to/project

একটি নির্দিষ্ট পরীক্ষা গ্রুপ চালান

উপলব্ধ টেস্ট গ্রুপগুলো হলো: presubmit (ডিফল্ট), postsubmit , mainline-presubmit , এবং all

বর্তমান এবং প্যারেন্ট ডিরেক্টরিতে থাকা TEST_MAPPING ফাইলগুলিতে পোস্টসাবমিট টেস্টগুলি চালান:

atest :postsubmit

TEST_MAPPING ফাইলগুলিতে থাকা সমস্ত গ্রুপ থেকে টেস্ট চালান:

atest :all

/path/to/project এবং এর প্যারেন্ট ডিরেক্টরিগুলোতে থাকা TEST_MAPPING ফাইলগুলোতে পোস্টসাবমিট টেস্টগুলো চালান:

atest --test-mapping /path/to/project:postsubmit

/path/to/project এবং এর প্যারেন্ট ডিরেক্টরিগুলোতে থাকা TEST_MAPPING ফাইলগুলিতে মেইনলাইন টেস্টগুলো চালান:

atest --test-mapping /path/to/project:mainline-presubmit

সাবডিরেক্টরিতে পরীক্ষা চালান

ডিফল্টরূপে, Atest শুধুমাত্র TEST_MAPPING ফাইলগুলিতে উপরের দিকে (বর্তমান বা প্রদত্ত ডিরেক্টরি থেকে এর প্যারেন্ট ডিরেক্টরি পর্যন্ত) টেস্ট খোঁজে। আপনি যদি সাবডিরেক্টরিতে থাকা TEST_MAPPING ফাইলগুলির টেস্টও চালাতে চান, তাহলে Atest-কে সেই টেস্টগুলিও অন্তর্ভুক্ত করতে বাধ্য করার জন্য --include-subdirs ব্যবহার করুন:

atest --include-subdirs /path/to/project

পুনরাবৃত্তিমূলকভাবে পরীক্ষা চালান

--iterations আর্গুমেন্টটি পাস করে টেস্টগুলো পুনরাবৃত্তিমূলকভাবে চালান। টেস্টটি পাস করুক বা ফেল করুক, সর্বোচ্চ পুনরাবৃত্তির সংখ্যায় না পৌঁছানো পর্যন্ত Atest এটি পুনরাবৃত্তি করতে থাকবে।

উদাহরণ:

ডিফল্টরূপে, Atest ১০ বার পুনরাবৃত্তি করে। পুনরাবৃত্তির সংখ্যা অবশ্যই একটি ধনাত্মক পূর্ণসংখ্যা হতে হবে।

atest test-to-run --iterations
atest test-to-run --iterations 5

নিম্নলিখিত পদ্ধতিগুলো ত্রুটিপূর্ণ টেস্ট শনাক্ত করা সহজ করে তোলে:

পদ্ধতি ১: কোনো ব্যর্থতা না ঘটা পর্যন্ত অথবা সর্বোচ্চ পুনরাবৃত্তি সংখ্যা না পৌঁছানো পর্যন্ত সমস্ত পরীক্ষা চালান।

  • ব্যর্থতা ঘটলে অথবা পুনরাবৃত্তিটি ১০ম (ডিফল্টরূপে) রাউন্ডে পৌঁছালে থেমে যান।
    atest test-to-run --rerun-until-failure
    
  • ব্যর্থতা ঘটলে অথবা পুনরাবৃত্তিটি ১০০তম রাউন্ডে পৌঁছালে থেমে যান।
    atest test-to-run --rerun-until-failure 100
    

পদ্ধতি ২: শুধুমাত্র ব্যর্থ পরীক্ষাগুলো পাস না হওয়া পর্যন্ত অথবা সর্বোচ্চ পুনরাবৃত্তি সংখ্যা না পৌঁছানো পর্যন্ত চালান।

  • ধরে নিন, test-to-run একাধিক টেস্ট কেস আছে এবং সেগুলোর মধ্যে একটি টেস্ট ব্যর্থ হয়েছে। শুধু ব্যর্থ হওয়া টেস্টটি ১০ বার (ডিফল্টরূপে) অথবা টেস্টটি পাস না হওয়া পর্যন্ত চালান।
    atest test-to-run --retry-any-failure
    
  • ব্যর্থ পরীক্ষাটি পাস করলে বা ১০০তম রাউন্ডে পৌঁছালে তা চালানো বন্ধ করুন।
    atest test-to-run --retry-any-failure 100
    

AVD-গুলিতে পরীক্ষা চালান

Atest একটি নতুন তৈরি করা AVD-তে টেস্ট চালাতে সক্ষম। একটি AVD তৈরি করতে এবং আর্টিফ্যাক্ট বিল্ড করতে acloud create চালান, তারপর আপনার টেস্টগুলো চালানোর জন্য নিম্নলিখিত উদাহরণগুলো ব্যবহার করুন।

একটি AVD চালু করুন এবং এতে পরীক্ষা চালান:

acloud create --local-instance --local-image && atest test-to-run

পরীক্ষামূলক চালনার অংশ হিসেবে একটি AVD চালু করুন:

atest test-to-run --acloud-create "--local-instance --local-image"

আরও তথ্যের জন্য, acloud create --help চালান।

মডিউলে বিকল্পগুলি পাস করুন

Atest টেস্ট মডিউলগুলিতে অপশন পাস করতে সক্ষম। আপনার টেস্ট রানে TradeFed কমান্ড লাইন অপশন যোগ করতে, নিম্নলিখিত কাঠামোটি ব্যবহার করুন এবং নিশ্চিত করুন যে আপনার কাস্টম আর্গুমেন্টগুলি Tradefed কমান্ড লাইন অপশন ফরম্যাট অনুসরণ করে।

atest test-to-run -- [CUSTOM_ARGS]

টেস্ট কনফিগ ফাইলে সংজ্ঞায়িত টার্গেট প্রিপেয়ারার বা টেস্ট রানারদের কাছে টেস্ট মডিউল অপশনগুলো পাঠান:

atest test-to-run -- --module-arg module-name:option-name:option-value
atest GtsPermissionTestCases -- --module-arg GtsPermissionTestCases:ignore-business-logic-failure:true

রানার টাইপ বা ক্লাসে বিকল্পসমূহ প্রেরণ করুন:

atest test-to-run -- --test-arg test-class:option-name:option-value
atest CtsVideoTestCases -- --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true

শুধুমাত্র পরীক্ষার বিকল্পগুলো সম্পর্কে আরও তথ্যের জন্য, মডিউলগুলোতে বিকল্প পাস করুন দেখুন।