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

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

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

Atest এর সামগ্রিক গঠন সম্পর্কে তথ্যের জন্য, Atest বিকাশকারী নির্দেশিকা পড়ুন।

Atest এর মাধ্যমে TEST_MAPPING ফাইলে পরীক্ষা চালানোর বিষয়ে তথ্যের জন্য, TEST_MAPPING ফাইলে পরীক্ষা চালানো দেখুন।

Atest-এ একটি বৈশিষ্ট্য যোগ করতে, Atest বিকাশকারী কর্মপ্রবাহ অনুসরণ করুন।

আপনার পরিবেশ সেট আপ করুন

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

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

Atest কমান্ড নিম্নলিখিত ফর্ম গ্রহণ করে:

atest test-to-run [optional-arguments]

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

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

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

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

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

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

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

স্পেস সহ একাধিক পরীক্ষার আলাদা রেফারেন্স, এইরকম:

atest test-identifier-1 test-identifier-2

মডিউল নাম

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

উদাহরণ:

atest FrameworksServicesTests
atest CtsVideoTestCases

মডিউল: ক্লাস

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

উদাহরণ:

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

ক্লাসের নাম

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

উদাহরণ:

atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest

Tradefed ইন্টিগ্রেশন পরীক্ষা

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
  • apk ইনস্টল করুন এবং পরীক্ষা চালান: atest -it test-to-run
  • তৈরি করুন এবং চালান, কিন্তু ইনস্টল করবেন না: atest -bt test-to-run

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

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-bit) এবং arm64-v8a (ARM 64-bit)।

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

atest -a libinput_tests inputflinger_tests

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

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

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

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

atest inputflinger_tests:InputDispatcherTest

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

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents

TEST_MAPPING-এ পরীক্ষা চালান

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 10 বার পুনরাবৃত্তি করে। পুনরাবৃত্তির সংখ্যা অবশ্যই একটি ধনাত্মক পূর্ণসংখ্যা হতে হবে।

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

নিম্নলিখিত পদ্ধতিগুলি ফ্লেকি পরীক্ষাগুলি সনাক্ত করা সহজ করে তোলে:

পদ্ধতি 1: একটি ব্যর্থতা না হওয়া পর্যন্ত বা সর্বাধিক পুনরাবৃত্তি না হওয়া পর্যন্ত সমস্ত পরীক্ষা চালান।

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

পদ্ধতি 2: পাস না হওয়া পর্যন্ত বা সর্বোচ্চ পুনরাবৃত্তি না হওয়া পর্যন্ত শুধুমাত্র ব্যর্থ পরীক্ষা চালান।

  • ধরে নিন test-to-run একাধিক টেস্ট কেস রয়েছে এবং একটি পরীক্ষা ব্যর্থ হয়েছে। শুধুমাত্র ব্যর্থ পরীক্ষা 10 বার চালান (ডিফল্টরূপে) বা পরীক্ষা পাস না হওয়া পর্যন্ত।
    atest test-to-run --retry-any-failure
    
  • ব্যর্থ পরীক্ষা চালানো বন্ধ করুন যখন এটি পাস করে বা 100 তম রাউন্ডে পৌঁছায়।
    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

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