ACTS 테스트 구성

이 페이지에서는 ACTS 테스트를 구성하는 방법을 설명합니다.

구성 소스

Android Comms Test Suite(ACTS) 에는 세 가지 주요 구성 소스가 있습니다.

  • 명령줄 인터페이스(CLI)
  • ACTS 구성 파일
  • 환경 변수

이러한 소스의 값은 ACTS 테스트를 실행하는 데 사용되는 단일 구성으로 결합됩니다. 값이 여러 위치에 지정된 경우 위의 순서에 따라 값을 덮어씁니다(여기서 CLI가 우선함).

환경 변수에 대한 참고 사항

ACTS 테스트에 환경 변수를 사용할 때 주의하십시오. 이러한 값은 사용자에게 가장 적게 표시되며 개발자의 워크스테이션 외부에서 사용하지 않는 것이 좋습니다. ACTS 자동화 테스트 중에는 환경 중독을 방지하기 위해 환경 변수가 비활성화됩니다.

필수 구성 변수

모든 ACTS 테스트에는 다음 변수를 설정해야 합니다.

ACTS 테스트 경로

ACTS는 단일 기본 진입 위치에서 실행됩니다. 결과적으로 러너는 테스트 경로 위치를 알 수 없습니다.

ACTS_TESTPATH ​​환경 변수를 사용하거나 명령줄에서 -tp / --testpaths 플래그를 사용하여 테스트 경로 위치를 설정합니다. 값은 디렉토리 목록일 수 있습니다.

ACTS 시험 수업

ACTS는 실행할 테스트 클래스를 알아야 합니다. 이것은 정규식 또는 테스트 클래스 이름 목록일 수 있습니다.

이 값을 설정하려면 명령줄에서 -tc / --test_class 플래그를 사용하십시오. 이 플래그는 클래스 이름 목록도 허용합니다. 클래스 이름은 해당 파일 이름과 일치해야 합니다. 예를 들어 SampleTestSampleTest.py 에 있어야 합니다.

ACTS 로그 경로

ACTS에는 STDOUT 이외의 로그를 쓸 위치가 있어야 합니다. ACTS는 일부 테스트가 실패하는 이유를 판별하는 데 도움이 될 수 있는 데이터가 포함된 전체 디버그 로그를 작성합니다. 혼란을 방지하기 위해 ACTS는 이러한 로그를 STDOUT에 쓰지 않습니다.

로그 경로를 설정하려면 명령줄에서 ACTS_LOGPATH 환경 변수 또는 -lp / --logpath 플래그를 사용하십시오.

ACTS 구성 경로

테스트를 실행하려면 ACTS가 어떤 테스트베드가 존재하는지 알아야 합니다. ACTS 구성에는 테스트베드의 모든 장치와 필요할 수 있는 모든 특수 테스트 또는 환경 매개변수가 포함됩니다. -c / --config 를 사용하여 명령줄에서 이 값을 설정합니다.

구성 내에 여러 테스트베드가 있는 경우 ACTS는 각 테스트베드에 대해 테스트를 실행합니다. 목록에 있는 단일 테스트베드에 대해서만 테스트를 실행하려면 -tb/--testbed <NAME> 명령줄 인수를 사용하십시오.

로컬 워크스테이션의 예

대부분의 ACTS 사용자는 단일 Android repo 분기에서 개발하고 다음과 유사한 설정을 갖습니다.

# 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 사용자가 여러 분기에서 실행하는 경우 종종 act acts/framework 디렉토리에서 ACTS를 실행하고 ACTS_TESTPATH ​​에 대한 상대 경로를 사용합니다.

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'

# On cmdline
$ cd ~/android/master/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 는 단일 테스트베드 값으로 생성됩니다. 두 번째 테스트베드인 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 로그 수집을 위해 adb logcat 명령에 추가되는 문자열입니다. 기본적으로 adb logcat -v threadtime -b all 이 사용됩니다. adb_logcat_param 이 설정되면 -b all 섹션을 덮어씁니다. 예를 들어, adb_logcat_param-b radio 로 설정하면 명령이 adb logcat -v threadtime -b radio 로 변경됩니다.