Thiết lập quy trình Tự động hoá chứng chỉ

Để tự động hoá quy trình kiểm thử giấy chứng nhận, bạn phải thiết lập thêm.

Tất cả các bước cài đặt và định cấu hình dưới đây đều diễn ra trên máy chạy Windows chạy phần mềm Khai thác kiểm tra Grl. Tải xuống và cài đặt phiên bản mới nhất Khai thác kiểm tra luồng GRL trước đây đang tiếp tục.

Sau khi cài đặt, có 2 phương thức tự động hoá cho thiết bị đang được kiểm thử (DUT):

  1. Công cụ tự động hoá khai thác OpenThread
  2. Chế độ DUT tự động cho việc khai thác

Công cụ tự động hoá khai thác OpenThread

Cài đặt

  1. Cài đặt phần mềm sau:
    • Python
    • Git cho Windows (rất nên hỗ trợ Bash)
  2. Sao chép kho lưu trữ OpenThread để lấy các tập lệnh tự động hoá:
    git clone https://github.com/openthread/openthread
    
  3. Các yêu cầu về cài đặt Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Cài đặt cả Google ChromeChromeDriver.

Định cấu hình

  1. Tạo tệp cấu hình cho công cụ tự động hoá:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Cập nhật tệp cấu hình mới đó theo các hướng dẫn trong .
  3. Thêm tham số sau vào tệp cấu hình Khai thác kiểm thử, có tại C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

Giá đỡ thử nghiệm kết hợp

Công cụ tự động hoá khai thác cũng hỗ trợ các thử nghiệm hỗn hợp, trong đó tham chiếu thiết bị được sử dụng trong mỗi trường hợp kiểm thử là một tập hợp thiết bị kết hợp thay vì tất cả cùng một thiết bị. Ví dụ: thay vì sử dụng bo mạch 32 TI CC2538 đang chạy OpenThread cho tất cả các trường hợp kiểm thử, bạn có thể kết hợp và so khớp giữa cả 4 luồng thiết bị tham chiếu cho từng trường hợp kiểm thử mong muốn.

Để sử dụng thử nghiệm hỗn hợp, cần có cấu hình bổ sung:

  1. Thêm tham số bổ sung sau đây vào cấu hình Khai thác kiểm thử tệp, được tìm thấy tại C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. Tải tệp cấu hình cấu trúc liên kết xuống từ Thread Nhóm. Thêm tệp này dưới dạng TopologyConfig.txt vào C:\GRL\Thread1.1\Thread_Harness\TestScripts Tệp này nêu chi tiết thiết bị tham chiếu để sử dụng cho từng vai trò trong mỗi trường hợp kiểm thử.

Bạn có thể sửa đổi tệp cấu hình cấu trúc liên kết do Nhóm Thread cung cấp cho các cấu hình giường hỗn hợp khác, nhưng để chứng nhận chính thức thì bản gốc .

Các giá trị hợp lệ để sử dụng cho các thiết bị tham chiếu trong tệp cấu hình cấu trúc liên kết là:

Giá trị trong tệp cấu hình cấu trúc liên kết Thiết bị tham chiếu khai thác kiểm thử
ARM ARM: NXP FRDM-K64F với Firefly 6LoWPAN Shield
NXP NXP(Freescale): USB-KW24D512 Đôngles
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB Stick

Mỗi mục nhập trường hợp kiểm thử trong tệp cấu hình cấu trúc liên kết phải nằm trên một dòng và được định dạng thành các cặp role:device như sau:

5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM

Chế độ DUT tự động khai thác khai thác

Phần mềm Khai thác kiểm tra Grl cung cấp tính năng tự động khám phá nâng cao (Auto DUT) giúp tăng tốc quá trình xác thực ngăn xếp tham chiếu Thread các nhà cung cấp khác.

OpenThread cung cấp một ví dụ Giao diện đơn vị kiểm soát của máy chủ lưu trữ luồng (THCI) cho phép Khai thác thử nghiệm kiểm soát thành phần hoặc sản phẩm của bạn như thể một trong những nền tảng tham chiếu. Theo đặc điểm cổng nối tiếp của nền tảng cụ thể của bạn, DUT của bạn có thể:

Hoạt động như nền tảng tham chiếu OpenThread hiện có

Nếu cổng nối tiếp của DUT hoạt động theo cài đặt của 115200 8-N-1, và thiết bị sẽ phản hồi chính xác sau mỗi lần đặt lại thiết bị thực (ví dụ: để xác nhận kết nối hợp lệ của thiết bị với máy Windows), sau đó nền tảng có thể sử dụng công cụ OpenThread THCI. Công cụ này cho phép thiết bị hoạt động như Nền tảng tham chiếu OpenThread trong quá trình kiểm thử.

  1. Đóng Dây kiểm tra GRN, nếu dây đang mở.
  2. Gắn thiết bị vào máy chạy Windows.
  3. Tìm giá trị nhận dạng phần cứng cổng nối tiếp của thiết bị bằng mã pySerial Python mô-đun:
    1. Cài đặt pySerial trên máy tính chạy Windows.
    2. Sử dụng Python trên dòng lệnh của Windows để liệt kê tất cả phần cứng mã nhận dạng (VID và PID) cho các thiết bị kết nối với máy. Trong phần này một thiết bị được kết nối với mã nhận dạng là VID=1366 và PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Nếu đã biết cổng COM, bạn có thể sử dụng một lệnh khác. Cho ví dụ: nếu cổng COM là COM10:
      python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
      ['USB\VID_1366+PID_1015+MI_00']
  4. Cập nhật danh sách Thiết bị vàng:
    1. Mở C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Cập nhật nhóm OpenThread trong mảng GoldenDeviceHardwareIds bằng VID và PID của(các) thiết bị:
      GoldenDeviceHardwareIds = {
      'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
      'SiLabs': 'VID:PID=10C4:8A5E',
      'ARM': 'VID:PID=0D28:0204',
      'OpenThread':['VID:PID=10C4:EA60','VID:PID=1366:1015']}
  5. Bật chế độ DUT tự động.

Hoạt động như một nền tảng tham chiếu mới

Nếu cổng nối tiếp của DUT không hoạt động theo cổng nối tiếp thích hợp hoặc thiết bị không phản hồi chính xác sau khi thiết bị thực đặt lại (xuất ra mã không đọc được trong vòng 3-6 giây kể từ khi đặt lại), sau đó chọn OpenThread THCI có thể được tuỳ chỉnh để coi thiết bị là một nền tảng mới trong công cụ Thử nghiệm Dây đeo.

Ví dụ: để tuỳ chỉnh THCI bằng công cụ Bắc Âu bán dẫn Nền tảng nRF52840:

  1. Đóng Dây kiểm tra GRN, nếu dây đang mở.
  2. Sửa đổi /tools/harness-thci/OpenThread.py dựa trên các đặc điểm UART của thiết bị mục tiêu. Nội dung sửa đổi có thể khác nhau giữa các thiết bị mục tiêu. Trong trường hợp nền tảng nRF52840 của Bắc Âu:

    1. Đổi tên tệp OpenThread.py thành nRF52840.py.
    2. Thay đổi 3 lần xuất hiện đầu tiên của "OpenThread" thành "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Thay đổi tham số cổng nối tiếp:

      def _connect(self):
          print 'My port is %s' % self.port
          if self.port.startswith('COM'):
              self.handle = serial.Serial(self.port, 115200, timeout=0)
              time.sleep(1)
              self.handle.write('\r\n')
              time.sleep(0.1)
              self._is_net = False
          elif ':' in self.port:
              host, port = self.port.split(':')
              self.handle = socket.create_connection((host, port))
              self.handle.setblocking(0)
              self._is_net = True
          else:
              raise Exception('Unknown port schema')
          self.UIStatusMsg = self.getVersionNumber()
      
    4. Thay đổi thời gian ngủ để loại bỏ tác động của kết quả đầu ra mã không đọc được sau khi đặt lại thiết bị:

      def powerDown(self):
          """power down the Thread device"""
          print '%s call powerDown' % self.port
          self._sendline('reset')
          self.isPowerDown = True
          time.sleep(8)  # New addition
      
      def reboot(self):
          """reset and rejoin to Thread Network without any timeout
      
          Returns:
              True: successful to reset and rejoin the Thread Network
              False: fail to reset and rejoin the Thread Network
          """
          print '%s call reboot' % self.port
          try:
              self._sendline('reset')
              self.isPowerDown = True
              time.sleep(8)  # Updated from 3 to 8
      
      def reset(self):
          """factory reset"""
          print '%s call reset' % self.port
          try:
              self._sendline('factoryreset')
              time.sleep(8)  # Updated from 3 to 8
              self._read()
      
      def resetAndRejoin(self, timeout):
          """reset and join back Thread Network with a given timeout delay
      
          Args:
              timeout: a timeout interval before rejoin Thread Network
      
          Returns:
              True: successful to reset and rejoin Thread Network
              False: fail to reset and rejoin the Thread Network
          """
          print '%s call resetAndRejoin' % self.port
          print timeout
          try:
              self._sendline('reset')
              self.isPowerDown = True
              time.sleep(timeout)
              if timeout < 8:      # Sleep a bit longer if the timeout is short
                  time.sleep(8 - timeout)
      
  3. Sao chép tệp nRF52840.py đã sửa đổi vào C:\GRL\Thread1.1\Thread_Harness\THCI

  4. Thêm thông tin mới về nền tảng vào Khai thác kiểm thử:

    1. Tạo biểu tượng (ở định dạng png hoặc jpg) để dễ phân biệt hơn nền tảng của bạn rồi sao chép vào C:\GRL\Thread1.1\Web\images.
    2. Cập nhật C:\GRL\Thread1.1\Web\data\deviceInputFields.xml bằng một Phần DEVICE, trong đó tham số thumbnail là tệp biểu tượng:

      <DEVICE name="nRF52840" thumbnail="nRF52840.jpg" description ="nRF52840: Nordic" THCI="nRF52840">
          <ITEM label="Serial Line"
                type="text"
                forParam="SerialPort"
                validation="COM"
                hint="eg: COM1">COM
          </ITEM>
          <ITEM label="Speed"
                type="text"
                forParam="SerialBaudRate"
                validation="baud-rate"
                hint="eg: 115200">115200
          </ITEM>
      </DEVICE>
      
  5. Gắn thiết bị vào máy chạy Windows.

  6. Tìm giá trị nhận dạng phần cứng cổng nối tiếp của thiết bị bằng mã pySerial Python mô-đun:

    1. Cài đặt pySerial trên máy tính chạy Windows.
    2. Sử dụng Python trên dòng lệnh của Windows để liệt kê tất cả phần cứng mã nhận dạng (VID và PID) cho các thiết bị kết nối với máy. Trong phần này một thiết bị được kết nối với mã nhận dạng VID=1366 và PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Nếu đã biết cổng COM, bạn có thể sử dụng một lệnh khác. Cho ví dụ: nếu cổng COM là COM10:
      python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
      ['USB\VID_1366+PID_1015+MI_00']
  7. Cập nhật danh sách Thiết bị vàng:

    1. Mở C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Thêm một nhóm nền tảng mới trong mảng GoldenDeviceHardwareIds bằng VID và PID của thiết bị:
      GoldenDeviceHardwareIds = {
      'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
      'SiLabs': 'VID:PID=10C4:8A5E',
      'ARM': 'VID:PID=0D28:0204',
      'OpenThread':'VID:PID=10C4:EA60',
      'nRF52840': 'VID:PID=1366:1015'}
  8. Bật chế độ DUT tự động.

Bật chế độ DUT tự động

Sau khi hoàn tất một trong hai tuỳ chọn cấu hình ở trên:

  1. Mở Khai thác kiểm tra Grl, thiết bị/cổng giờ đây xuất hiện dưới dạng tham chiếu mới thiết bị.
  2. Chọn hộp kiểm Bật lựa chọn thiết bị DUT tự động bên dưới hộp Được hỗ trợ Danh sách phần cứng.
  3. Chọn nút chọn Set as DUT (Đặt làm DUT) bên dưới thiết bị/cổng mục tiêu để đặt thiết bị là DUT.
Giấy chứng nhận OT (DUT) tự động