এই পৃষ্ঠায় SDV টেস্ট ফ্রেমওয়ার্ক লাইব্রেরির ওভারভিউ দেওয়া হয়েছে এবং টেস্ট সেট-আপ, কনফিগার ও এক্সিকিউট করার ব্যাপারে আপনাকে গাইড করা হয়েছে। এন্ড-টু-এন্ড টেস্টিংয়ের জন্য SDV টেস্ট ফ্রেমওয়ার্ক ব্যবহার করুন। টুলটি Mobly-এর উপর ভিত্তি করে তৈরি করা হয়েছে; আপনি Python-এ টেস্ট লেখেন।
একটি টেস্ট অ্যাপ্রোচ বেছে নিন
টেস্ট লেখার আগে, আপনার যাচাইকরণের স্কোপের সাথে মেলে এমন টেস্ট রানার বেছে নিন:
| টেস্টের সুযোগ | Soong মডিউলের ধরন | এক্সিকিউশন টুল | কখন ব্যবহার হবে |
|---|---|---|---|
| সার্ভিস বান্ডেল ইউনিট টেস্ট | rust_test, rust_test_host বা cc_test |
atest |
হোস্ট বা একটি Cuttlefish ভার্চুয়াল মেশিনে (VM) আইসোলেটেড Rust বা C++ বিজনেস লজিক, ডেটা ট্রান্সফর্মেশন বা হেল্পার ক্রেট যাচাই করুন। |
| এন্ড-টু-এন্ড এবং মাল্টি-VM সিস্টেম টেস্ট | python_test_host (SDV টেস্ট ফ্রেমওয়ার্ক) |
atest বা CATBox |
এক থেকে তিনটি VM জুড়ে পরিষেবা বান্ডেল লাইফসাইকেল অর্কেস্ট্রেশন, ইন্টার-VM কমিউনিকেশন, SOME/IP ব্রিজিং বা হার্ডওয়্যার টার্গেট যাচাই করুন। |
এনভায়রনমেন্ট সেট-আপ করুন
এই পৃষ্ঠা ধরে নেয় যে আপনি SDV-এর জন্য আপনার ওয়ার্কস্টেশন আগেই সেট-আপ করেছেন। ফ্রেমওয়ার্ক টেস্ট
রান করতে, virtualenv ইনস্টল করুন।
Python ডিপেন্ডেন্সি
Android-এ ডিপেন্ডেন্সি ম্যানেজ করার জন্য সাজেস্ট করা পদ্ধতি হল, বিল্ড কনফিগারেশন ব্যবহার করে টেস্ট, Python এবং তাদের ডিপেন্ডেন্সি এক্সিকিউটেবল হিসেবে প্যাকেজ করা। SDV টেস্টিং রিপোজিটরিতে আপনাকে অবশ্যই এই পদ্ধতি অনুসরণ করতে হবে।
SDV টেস্ট ফ্রেমওয়ার্ক লাইব্রেরি ডিফল্ট হিসেবে এইসব ডিপেন্ডেন্সি প্রদান করে:
moblyabsl-pyটেস্টে প্যারামিটারাইজেশন ব্যবহার করার জন্য প্রয়োজন।pexpectইন্টার্যাক্টিভ কমান্ড কার্যকারিতার জন্য প্রয়োজন।ptyprocessইন্টার্যাক্টিভ কমান্ড কার্যকারিতার জন্য প্রয়োজন।
আপনার যদি টেস্ট-নির্দিষ্ট ডিপেন্ডেন্সি প্রয়োজন হয়, তাহলে সেগুলিকে টেস্টের Android.bp
ফাইলে অন্তর্ভুক্ত করুন:
python_test_host {
…
libs: [
"<DEPENDENCY1>",
"<DEPENDENCY2>",
…
],
…
}
সিস্টেম টেস্টের ধরন
আপনি SDV টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে সিস্টেম টেস্ট তৈরি করেন। ফ্রেমওয়ার্কটি নিম্নলিখিত প্রকারগুলির মধ্যে পার্থক্য করে। টেস্ট সঠিকভাবে ক্যাটেগরাইজ করুন:
- স্যাম্পেল টেস্ট: SDV স্যাম্পেল পরিষেবা এক্সিকিউট করুন এবং ফলাফল প্রত্যাশিত আউটপুটের সাথে মিলছে কিনা তা যাচাই করুন।
- E2E টেস্ট: SDV স্যাম্পেল পরিষেবা ব্যবহার করবেন না।
- দীর্ঘ সময় ধরে চলা টেস্ট: দীর্ঘ সময় ধরে এক্সিকিউট করার জন্য ডিজাইন করা হয়েছে।
- পারফর্ম্যান্স টেস্ট:
perfettoলাইব্রেরি ব্যবহার করুন। - হার্ডওয়্যার টেস্ট: এটি শুধু ফিজিক্যাল ডিভাইসে রান করার জন্য ডিজাইন করা হয়েছে, Cuttlefish (CF)-এ নয়।
একটি পরীক্ষা তৈরি করুন
ফ্রেমওয়ার্ক ব্যবহার করে লেখা সব টেস্ট টেস্টিং রিপোজিটরিতে
অবশ্যই থাকতে হবে। পরীক্ষার সঠিক লোকেশন তার ধরনের উপর নির্ভর করে। ডিরেক্টরি পাথ, Python টেস্ট ক্লাস টেমপ্লেট, Android.bp নিয়ম ও Mobly কোডিং নির্দেশিকার জন্য SDV সিস্টেম টেস্ট তৈরি করা দেখুন।
টেস্ট কনফিগার করা
atest এবং CATBox, দুটি ব্যবহার করেই রান করার জন্য সব টেস্ট কনফিগার করুন।
atest কনফিগার করুন
ফ্রেমওয়ার্কটি এক, দুই ও তিনটি VM টেস্টের জন্য টেমপ্লেট প্রদান করে। আপনার Android.bp ফাইলে
নিম্নলিখিতগুলি যোগ করুন:
একটি VM:
python_test_host { ... test_config_template: ":sdv_one_device", }দুটি VM:
python_test_host { ... test_config_template: ":sdv_two_devices", }তিনটি VM:
python_test_host { ... test_config_template: ":sdv_three_devices", }
বেশিরভাগ পরীক্ষার জন্য ডিফল্ট টেমপ্লেটই যথেষ্ট। বাধ্যতামূলক কারণ না থাকলে কাস্টম কনফিগারেশন তৈরি করা এড়িয়ে চলুন।
ডিফল্ট টাইমআউট আপডেট করুন
ডিফল্ট টাইমআউট লোকাল টেস্ট চালানোর জন্য যথেষ্ট হওয়া উচিত।
টাইমআউটের কারণে আপনার টেস্ট লোকালি ব্যর্থ হলে, এটি বিভিন্ন টেস্টে বিভক্ত করার কথা বিবেচনা করুন। অনেকগুলি টেস্ট কেস সহ খুব দীর্ঘ টেস্টের কারণে এক্সিকিউশনে বাধা সৃষ্টি হতে পারে।
ডিফল্ট সময়ের চেয়ে বেশি টাইম-আউট সেট করতে চাইলে, পড়া চালিয়ে যান।
ডিফল্ট টাইমআউট ওভাররাইড করুন
atest এক্সিকিউশনের জন্য ফ্রেমওয়ার্ক টেমপ্লেট এক্সটেন্ড করাকে সাপোর্ট করে না।
তাই, প্রদত্ত টেমপ্লেট ব্যবহার করুন যা বর্ধিত টাইমআউট অফার করে।
একটি VM দীর্ঘ টেস্ট:
python_test_host { ... test_config_template: ":sdv_one_device_long_test", }দুটি VM-এর দীর্ঘ পরীক্ষা:
python_test_host { ... test_config_template: ":sdv_two_devices_long_test", }
এই টেমপ্লেট ব্যবহার করার উদ্দেশ্য স্পষ্টভাবে উল্লেখ করে একটি কমেন্ট যোগ করুন এবং কেন অতিরিক্ত সময় প্রয়োজন তা ব্যাখ্যা করুন (যেমন, টেস্টের জন্য যদি এমন কোনও আর্টিফ্যাক্ট ডাউনলোড করতে হয় যা ডাউনলোড করতে নির্দিষ্ট সময় লাগে)।
কোনও ডিভাইসে ফাইল পুশ করা
atest
কনফিগারেশনের জন্য ডিভাইসে কীভাবে ফাইল পুশ করতে হয় তা নিম্নলিখিত ধাপে বর্ণনা করা হয়েছে।
কোনও ডিভাইসে ফাইল পুশ করা
atest এক্সিকিউশনের জন্য ফ্রেমওয়ার্ক টেমপ্লেট এক্সটেন্ড করাকে সাপোর্ট করে না।
তাই, আপনাকে অবশ্যই একটি AndroidTest.xml ফাইল তৈরি করতে হবে যা ডিফল্ট টেমপ্লেটকে সম্পূর্ণরূপে প্রতিস্থাপন করে এবং ডিভাইসের জন্য সংশ্লিষ্ট target_preparer বিকল্পগুলি অন্তর্ভুক্ত করে।
টেমপ্লেটের কন্টেন্ট কপি করুন:
sdv-one-device.xmlsdv-two-devices.xmlsdv-three-devices.xml
আপনার টেস্টের মডিউলের নাম দিয়ে
{MODULE}আপডেট করুন।প্রতিটি ডিভাইসে
com.android.tradefed.targetprep.PushFilePreparerযোগ করুন।
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file" key="<FILE_NAME>" value="<REMOTE_FILE_PATH>" />
</target_preparer>
</device>
CATBox কনফিগার করা
স্যুট হিসেবে টেস্ট রান করতে, CATBox কনফিগারেশন প্রয়োজন।
libraries/sdv/sdv_catbox/res/config/-এ নতুন কনফিগারেশন ফাইল তৈরি করুন এবং নামকরণ সংক্রান্ত এইসব নিয়ম অনুসরণ করুন:- স্যাম্পেল টেস্ট:
sdv-sample-<NAME>-test.xml - E2E টেস্ট:
sdv-e2e-<NAME>-test.xml - দীর্ঘ সময় ধরে চলা টেস্ট:
sdv-long-running-<NAME>-test.xml - পারফর্ম্যান্স টেস্ট:
sdv-performance-<NAME>-test.xml - হার্ডওয়্যার টেস্ট:
sdv-hw-<NAME>-test.xml
- স্যাম্পেল টেস্ট:
পরীক্ষার ধরনের উপর ভিত্তি করে সংশ্লিষ্ট তথ্য যোগ করুন:
একটি VM টেস্ট কনফিগারেশন:
<configuration description="SDV <NAME> Test"> <!-- Template for Device Configuration --> <template-include name="device-config" default="sdv-device-config/one-device" /> <!-- Plan. Use the same name as the file name --> <option name="plan" value="<CONFIG_FILE_NAME>"/> <!-- Test: mobly-par-file-name should match the module name --> <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" /> </configuration>দুটি VM টেস্ট কনফিগারেশন:
<configuration description="SDV <NAME> Test"> <!-- Template for Device Configuration --> <template-include name="device-config" default="sdv-device-config/two-devices" /> <!-- Plan. Use the same name as the file name --> <option name="plan" value="<CONFIG_FILE_NAME>"/> <!-- Test: mobly-par-file-name should match the module name --> <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" /> </configuration>তিনটি VM টেস্ট কনফিগারেশন:
<configuration description="SDV <NAME> Test"> <!-- Template for Device Configuration --> <template-include name="device-config" default="sdv-device-config/three-devices" /> <!-- Plan. Use the same name as the file name --> <option name="plan" value="<CONFIG_FILE_NAME>"/> <!-- Test: mobly-par-file-name should match the module name --> <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" /> </configuration>
বেশিরভাগ পরীক্ষার জন্য ডিফল্ট টেমপ্লেটই যথেষ্ট। বাধ্যতামূলক কারণ না থাকলে কাস্টম কনফিগারেশন তৈরি করা এড়িয়ে চলুন।
ডিফল্ট টাইমআউট আপডেট করুন
ডিফল্ট টাইমআউট আপনার পরীক্ষার জন্য যথেষ্ট না হলে, আপনি এটি ওভাররাইড করতে পারেন।
ডিফল্ট টাইমআউট ওভাররাইড করুন
ডিফল্ট টাইম-আউট ওভাররাইড করতে, আপনার কনফিগারেশন ফাইলের শেষে নিম্নলিখিতগুলি যোগ করুন। দীর্ঘ টেস্টের ক্ষেত্রে সর্বাধিক টাইমআউট ১০ মিনিট হতে হবে।
<!-- Long Test - 10 minutes timeout: <REASON> -->
<option name="mobly-host:mobly-test-timeout" value="600000" />
কোনও ডিভাইসে ফাইল পুশ করা
CATBox কনফিগার করার সময় ডিভাইসে কীভাবে ফাইল পুশ করতে হয় তা নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।
কোনও ডিভাইসে ফাইল পুশ করা
সংশ্লিষ্ট ডিভাইসে ফাইল পুশ করতে, plan বিকল্পের পরে নিম্নলিখিত কনফিগারেশন যোগ করুন:
<!-- Automatically pushes config file to device-->
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file"
key="<FILE_NAME>"
value="<REMOTE_FILE_PATH>"
/>
</target_preparer>
</device>
প্রতিটি ডিভাইসে ফাইলের প্রয়োজন হলে, প্রতিটি ডিভাইসের জন্য কনফিগারেশন যোগ করুন
(যেমন, name=device1, name=device2)।
টেস্ট এক্সিকিউশন
এই নির্দেশাবলী ধরে নেয় যে আপনি একটি কার্যকরী SDV এনভায়রনমেন্ট সেট-আপ করার কাজ সম্পূর্ণ করেছেন।
এনভায়রনমেন্ট সেট-আপ করুন
ফ্রেমওয়ার্ক ক্লাউড ভার্চুয়াল ডিভাইস (CVD) ইনস্ট্যান্স শুরু করে না, তাই টেস্ট চালানোর আগে আপনাকে সেগুলি শুরু করতে হবে।
এনভায়রনমেন্ট সেট-আপ করে SDV টার্গেট লঞ্চ করুন:
. build/envsetup.sh lunch <TARGET>প্রথম CVD ইনস্ট্যান্স শুরু করুন:
cvd create --config=sdv_core_instance1দ্বিতীয় CVD ইনস্ট্যান্স শুরু করুন (মাল্টি-VM টেস্টের জন্য):
cvd create --config=sdv_core_instance2তৃতীয় CVD ইনস্ট্যান্স শুরু করুন (মাল্টি-VM টেস্টের জন্য):
cvd create --config=sdv_core_instance3
atest রান করুন
atest <TestModuleName>
CATBox রান করা
এইসব কমান্ড ধরে নেয় যে আপনি রিপোজিটরির রুট ডিরেক্টরিতে আছেন।
- CATBox তৈরি করুন:
m catbox - (ঐচ্ছিক) CATBox-এ উপলভ্য সব SDV টেস্ট প্ল্যান দেখুন:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-
পরীক্ষা চালান:
একটি VM টেস্ট রান করুন:
NOTIFY_AS_NATIVE=0.0.0.0:6520 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520দুটি VM টেস্ট রান করুন:
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521তিনটি VM টেস্ট রান করুন:
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521,0.0.0.0:6522 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521 --{device3}serial 0.0.0.0:6522