กำหนดค่าการทดสอบ ACTS

เพื่อหลีกเลี่ยงปัญหาเกี่ยวกับการบำรุงรักษาและการสนับสนุนฟีเจอร์

หน้านี้อธิบายวิธีกำหนดค่าการทดสอบ 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