ACTS 테스트 구성

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

구성 소스

Android 커뮤니케이션 테스트 도구 모음(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 저장소 분기에서 개발하며 다음과 유사한 설정을 보유합니다.

# 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/framework 디렉터리에서 ACTS를 실행하고 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는 단일 테스트베드 값으로 만들어집니다. 두 번째 테스트베드 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로 변경됩니다.