หน้านี้อธิบายวิธีกำหนดค่าการทดสอบ ACTS
แหล่งที่มาของการกำหนดค่า
Android Comms Test Suite (ACTS) เป็นแหล่งที่มาหลักของการกำหนดค่า 3 แหล่ง ได้แก่
- อินเทอร์เฟซบรรทัดคำสั่ง (CLI)
- ไฟล์การกําหนดค่า ACTS
- ตัวแปรของสภาพแวดล้อม
ระบบจะรวมค่าจากแหล่งที่มาเหล่านี้ไว้ในการกำหนดค่าเดียวที่ใช้เพื่อเรียกใช้การทดสอบ ACTS หากระบุค่าในหลายตำแหน่ง ระบบจะเขียนทับค่าตามลําดับข้างต้น (โดย CLI จะมีความสำคัญเหนือกว่า)
หมายเหตุเกี่ยวกับตัวแปรสภาพแวดล้อม
โปรดระมัดระวังเมื่อใช้ตัวแปรสภาพแวดล้อมสำหรับการทดสอบ ACTS ค่าเหล่านี้จะปรากฏต่อผู้ใช้น้อยที่สุด และเราไม่แนะนําให้ใช้นอกเวิร์กสเตชันของนักพัฒนาซอฟต์แวร์ ระบบจะปิดใช้ตัวแปรสภาพแวดล้อมระหว่างการทดสอบอัตโนมัติของ ACTS เพื่อป้องกันการเกิดข้อผิดพลาดในสภาพแวดล้อม
ตัวแปรการกําหนดค่าที่จําเป็น
การทดสอบ ACTS ทุกครั้งจะต้องมีการตั้งค่าตัวแปรต่อไปนี้
เส้นทางการทดสอบ ACTS
ACTS เริ่มจากทางเข้าหลักเพียงแห่งเดียว ด้วยเหตุนี้ ผู้รันจึงไม่ทราบตำแหน่งเส้นทางทดสอบ
ตั้งค่าตำแหน่งเส้นทางทดสอบโดยใช้ตัวแปรสภาพแวดล้อม ACTS_TESTPATH
หรือใช้แฟล็ก -tp
/--testpaths
ในบรรทัดคำสั่ง ค่าอาจเป็นรายการไดเรกทอรี
คลาสการสอบ ACTS
ACTS จะต้องทราบว่าต้องเรียกใช้คลาสทดสอบใด ซึ่งอาจเป็นนิพจน์ทั่วไปหรือรายการชื่อคลาสทดสอบก็ได้
หากต้องการตั้งค่านี้ ให้ใช้ Flag -tc
/--test_class
ในบรรทัดคำสั่ง โปรดทราบว่า Flag นี้ยอมรับรายการชื่อชั้นเรียนด้วย ชื่อคลาสต้องตรงกับชื่อไฟล์ที่เกี่ยวข้อง เช่น SampleTest
ต้องอยู่ใน SampleTest.py
เส้นทางบันทึก ACTS
ACTS ต้องมีตำแหน่งที่จะเขียนบันทึกไปยังตำแหน่งอื่นที่ไม่ใช่ STDOUT ACTS จะเขียนบันทึกการแก้ไขข้อบกพร่องแบบเต็มซึ่งมีข้อมูลที่จะช่วยระบุสาเหตุที่การทดสอบบางอย่างไม่สําเร็จ ACTS จะไม่เขียนบันทึกเหล่านี้ไปยัง STDOUT เพื่อป้องกันไม่ให้เกิดความสับสน
หากต้องการตั้งค่าเส้นทางบันทึก ให้ใช้ตัวแปรสภาพแวดล้อม ACTS_LOGPATH
หรือ Flag -lp
/--logpath
ในบรรทัดคำสั่ง
เส้นทางการกําหนดค่า ACTS
ACTS จะต้องทราบว่ามีแพลตฟอร์มทดสอบใดบ้างจึงจะทำการทดสอบได้ ACTS
config มีอุปกรณ์ทั้งหมดในแท่นทดสอบ รวมถึงการทดสอบหรือพารามิเตอร์สภาพแวดล้อมพิเศษที่อาจจําเป็น ตั้งค่านี้บนบรรทัดคำสั่งโดยใช้ -c
/--config
หากมีแท่นทดสอบหลายแท่นในการกําหนดค่า ACTS จะทําการทดสอบสําหรับแท่นทดสอบแต่ละแท่น หากต้องการเรียกใช้การทดสอบกับแท่นทดสอบรายการเดียวในรายการ ให้ใช้ -tb/--testbed <NAME>
อาร์กิวเมนต์บรรทัดคำสั่ง
ตัวอย่างเวิร์กสเตชันในเครื่อง
ผู้ใช้ ACTS ส่วนใหญ่พัฒนาในที่เก็บ Android Branch เดียว และมีการตั้งค่าที่คล้ายกับการตั้งค่านี้
# 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 ด้วยค่าทดสอบเดียว แพลตฟอร์มทดสอบที่ 2 ซึ่งก็คือ another_testbed
มีการกําหนดค่าคอนโทรลเลอร์พิเศษที่จัดเก็บข้อมูลสำหรับรายการอุปกรณ์ Android อุปกรณ์เหล่านี้จะจัดเก็บไว้ในรายการอุปกรณ์ในส่วน self.android_devices
โปรดทราบว่าหากแพลตฟอร์มทดสอบไม่ได้ระบุออบเจ็กต์ AndroidDevice
คลาสทดสอบที่คาดหวังออบเจ็กต์ AndroidDevice
จะแสดงข้อยกเว้น ดูรายการการกำหนดค่าคอนโทรลเลอร์ทั้งหมดที่รองรับซึ่งมาพร้อมกับ ACTS ได้ที่ /acts/framework/acts/controllers/
ค่าอื่นๆ ทั้งหมด (ที่ไม่ใช่ค่าพิเศษที่กล่าวถึงในส่วนด้านบน) จะจัดเก็บไว้ใน self.user_params
เป็นพจนานุกรม นี่เป็นตําแหน่งที่ดีในการเก็บข้อมูลสภาพแวดล้อมหรือการทดสอบ เช่น โทรศัพท์อยู่ในสภาพแวดล้อมที่มีปริมาณข้อมูลอินเทอร์เน็ตที่จำกัดหรือไม่ หรือระยะเวลาในการเก็บรวบรวมข้อมูลสําหรับการทดสอบ
กรณีพิเศษสำหรับ AndroidDevice
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