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

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