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