หน้านี้อธิบายวิธีกำหนดค่าการทดสอบ ACTS
แหล่งที่มาของการกำหนดค่า
ชุดทดสอบ Android Comms Test Suite (ACTS) มีแหล่งที่มาของการกำหนดค่าหลักสามแหล่ง:
- อินเทอร์เฟซบรรทัดคำสั่ง (CLI)
- ไฟล์กำหนดค่า ACTS
- ตัวแปรสภาพแวดล้อม
ค่าจากแหล่งที่มาเหล่านี้จะรวมกันเป็นการกำหนดค่าเดียวที่ใช้ในการรันการทดสอบ ACTS หากมีการระบุค่าในหลายตำแหน่ง ค่าจะถูกเขียนทับตามลำดับด้านบน (โดยที่ CLI มีความสำคัญกว่า)
หมายเหตุเกี่ยวกับตัวแปรสภาพแวดล้อม
โปรดใช้ความระมัดระวังเมื่อใช้ตัวแปรสภาพแวดล้อมสำหรับการทดสอบ ACTS ค่าเหล่านี้จะแสดงให้ผู้ใช้มองเห็นได้น้อยที่สุด และไม่แนะนำให้ใช้นอกเวิร์กสเตชันของนักพัฒนา ตัวแปรสภาพแวดล้อมถูกปิดใช้งานระหว่างการทดสอบอัตโนมัติของ ACTS เพื่อป้องกันพิษต่อสิ่งแวดล้อม
ตัวแปรการกำหนดค่าที่จำเป็น
การทดสอบ ACTS ทุกครั้งต้องมีการตั้งค่าตัวแปรต่อไปนี้
เส้นทางทดสอบ ACTS
ACTS ทำงานจากตำแหน่งรายการหลักแห่งเดียว เป็นผลให้นักวิ่งไม่ทราบตำแหน่งเส้นทางทดสอบ
ตั้งค่าตำแหน่งเส้นทางทดสอบโดยใช้ตัวแปรสภาพแวดล้อม ACTS_TESTPATH
หรือด้วยแฟล็ก -tp
/ --testpaths
ในบรรทัดคำสั่ง ค่าสามารถเป็นรายการไดเร็กทอรี
ชั้นเรียนทดสอบ ACTS
ACTS ต้องรู้ว่าคลาสทดสอบใดที่จะรัน ซึ่งอาจเป็น regex หรือรายการชื่อคลาสทดสอบ
หากต้องการตั้งค่านี้ ให้ใช้แฟล็ก -tc
/ --test_class
ในบรรทัดคำสั่ง โปรดทราบว่าแฟล็กนี้ยังยอมรับรายชื่อคลาสด้วย ชื่อคลาสจะต้องตรงกับชื่อไฟล์ที่เกี่ยวข้อง ตัวอย่างเช่น จะต้องพบ SampleTest
ใน SampleTest.py
เส้นทางบันทึก ACTS
ACTS ต้องมีตำแหน่งในการเขียนบันทึกไปยังอื่นที่ไม่ใช่ STDOUT ACTS เขียนบันทึกการแก้ไขข้อบกพร่องแบบเต็มซึ่งมีข้อมูลที่สามารถช่วยระบุสาเหตุที่การทดสอบบางอย่างล้มเหลว เพื่อป้องกันความยุ่งเหยิง ACTS จะไม่เขียนบันทึกเหล่านี้ไปที่ STDOUT
หากต้องการตั้งค่าเส้นทางบันทึก ให้ใช้ตัวแปรสภาพแวดล้อม ACTS_LOGPATH
หรือแฟล็ก -lp
/ --logpath
ในบรรทัดคำสั่ง
เส้นทางการกำหนดค่า ACTS
หากต้องการดำเนินการทดสอบ ACTS ต้องทราบว่ามีเตียงทดสอบใดบ้าง การกำหนดค่า ACTS ประกอบด้วยอุปกรณ์ทั้งหมดในตัวทดสอบ และการทดสอบพิเศษหรือพารามิเตอร์สภาพแวดล้อมที่อาจจำเป็น ตั้งค่านี้บนบรรทัดคำสั่งโดยใช้ -c
/ --config
หากมีเตียงทดสอบหลายรายการภายในการกำหนดค่า ACTS จะทำการทดสอบสำหรับแต่ละเตียงทดสอบ หากต้องการรันการทดสอบสำหรับ testbed เดียวในรายการ ให้ใช้อาร์กิวเมนต์บรรทัดคำสั่ง -tb/--testbed <NAME>
ตัวอย่างเวิร์กสเตชันท้องถิ่น
ผู้ใช้ ACTS ส่วนใหญ่พัฒนาบน repo ของ Android สาขาเดียว และมีการตั้งค่าที่คล้ายกับอันนี้:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'
# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
หากผู้ใช้ ACTS ทำงานบนหลายสาขา พวกเขามักจะเรียกใช้ ACTS จากไดเรกทอรี acts/framework
และใช้เส้นทางสัมพัทธ์สำหรับ ACTS_TESTPATH
:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'
# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
การกำหนดค่าเตียงทดสอบของคุณ
ไฟล์กำหนดค่า ACTS ให้ข้อมูลที่จำเป็นทั้งหมดสำหรับการทดสอบบนอุปกรณ์ฮาร์ดแวร์:
{
"testbed": {
"my_testbed": {
"my_testbed_value": "value"
},
"another_testbed": {
"AndroidDevice": [
"53R147"
]
}
},
"user_parameter_1": "special environment value",
"user_parameter_2": "other special value"
}
หน่วยพื้นฐานของการกำหนดค่านี้คือเตียงทดสอบ ในการกำหนดค่าตัวอย่างด้านบน testbed my_testbed
ถูกสร้างขึ้นด้วยค่า testbed เดียว testbed อันที่สอง another_testbed
มีการกำหนดค่าคอนโทรลเลอร์พิเศษที่เก็บข้อมูลสำหรับรายการอุปกรณ์ Android อุปกรณ์เหล่านี้ถูกจัดเก็บไว้ในรายการอุปกรณ์ภายใต้ self.android_devices
โปรดทราบว่าหาก testbed ไม่ได้ระบุวัตถุ AndroidDevice
คลาสทดสอบที่คาดว่าวัตถุ AndroidDevice
จะทำให้เกิดข้อยกเว้น สำหรับรายการการกำหนดค่าคอนโทรลเลอร์ที่รองรับทั้งหมดที่มาพร้อมกับ ACTS โปรดดูรายการที่ /acts/framework/acts/controllers/
ค่าอื่นๆ ทั้งหมด (ที่ไม่ใช่ค่าพิเศษที่กล่าวถึงในส่วนด้านบน) จะถูกจัดเก็บไว้ใน self.user_params
เป็นพจนานุกรม นี่เป็นสถานที่ที่ดีในการเก็บข้อมูลสภาพแวดล้อมหรือการทดสอบ เช่น โทรศัพท์อยู่ในสภาพแวดล้อมที่มีข้อมูลแบบมิเตอร์หรือไม่ หรือจะรวบรวมข้อมูลสำหรับการทดสอบนานเท่าใด
กรณีพิเศษสำหรับอุปกรณ์ Android
เพื่อความสะดวกในการพัฒนาเมื่อคุณต้องการมีอุปกรณ์หลายเครื่องที่มีคุณสมบัติต่างกัน AndroidDevice
มีกรณีพิเศษบางประการ
รูปแบบการกำหนดค่า JSON
คู่คีย์/ค่าทั้งหมดใน JSON ด้านล่างได้รับการตั้งค่าเป็นออบเจ็กต์ AndroidDevice
ที่เกี่ยวข้อง หากการกำหนดค่าพยายามเขียนทับพารามิเตอร์ที่กำหนดไว้ในแอตทริบิวต์ AndroidDevice
ControllerError
จะถูกส่งออกไป
"AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
{"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]
จากนั้นในสคริปต์ทดสอบ คุณสามารถใช้ฟังก์ชันตัวกรองเพื่อดึงข้อมูลอุปกรณ์ที่ถูกต้องและเข้าถึงพารามิเตอร์เพิ่มเติมจากออบเจ็กต์อุปกรณ์:
def setup_class(self):
self.pub = next(filter(lambda ad: ad.label == 'publisher',
self.android_devices))
self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
self.android_devices))
พารามิเตอร์ทางเลือก
ต่อไปนี้เป็นพารามิเตอร์ทางเลือก:
-
adb_logcat_param
: สตริงต่อท้ายคำสั่งadb logcat
สำหรับการรวบรวมบันทึก adb ตามค่าเริ่มต้นadb logcat -v threadtime -b all
จะถูกใช้ หากตั้งค่าadb_logcat_param
ส่วน-b all
จะถูกเขียนทับ ตัวอย่างเช่น การตั้งค่าadb_logcat_param
เป็น-b radio
จะเปลี่ยนคำสั่งเป็นadb logcat -v threadtime -b radio