2019년 10월 31일 목요일

NetEase Airtest에 대해

요약

  • Appium의 영향을 받은 것으로 보임
  • 클라우드나 서버 환경은 아니고 개별 테스트 엔지니어가 사용할 수 있는 툴을 배포
  • 로컬 PC에 안드로이드폰을 ADB로 연결하여 컨트롤 하는 구조
  • 테스트 리포트는 로컬PC에 HTML파일로 Generate
  • Remote로 ADB를 연결할 수도 있기는 하나 테스트 스케줄링이나 병렬 수행 등이 간단하지는 않아 보임
  • 난이도
    • 프로그래밍이 능숙한 사람에게는 난이도가 높지 않음
    • 다만, 최초로 테스트를 한 번 돌려보기 까지 과정을 수행하려면 가이드를 세밀히 볼 필요가 있음 
    • Python 언어를 알고 있다면 더욱 좋을 듯
  • 완성도
    • IDE나 UI 적인 완성도는 높은 수준
    • 호환성이나 안정성 적인 측면에서는 마무리가 덜 된 부분이 있음
    • IDE 자체 Crash 자주 발생
    • 미러링 해상도 문제 때문에 스크립팅 불가
  • 테스팅 개념
    • 기능의 최소 단위가 액션(tap, swipe,...)과 검증(assert) 
    • 별도의 test case 라는 개념은 없음
  • 리포트는 하나의 전체 스크립트에서 발생한 모든 액션과 검증을 쭉 나열한 형태
    • 테스트 데이터 검증
  • 이미지 인식
    • SDK로 게임 오브젝트 인식 기능 제공
    • 유니티 에디터와 연동
  • Airtest에서는 자체 IDE에 Unity Editor의 Game view window를 Embedding 시킬 수가 있음
  • Unity로 게임 개발 과정 중에 개발자 테스트를 작성하기 좋음
  • SDK
    • Airtest가 Unity Object 를 탐색하는 방법에 좀 더 많은 함수를 제공

AirTest client side 강점/약점

강점
  • Windows API를 사용해 다른 툴과의 Communication이 가능함 (ex. Unity Editor등)
  • 로컬 장비 및 Remote 장비를 이용한 ADB 베이스의 명령어 수행으로 안정성이 높음
    • UiAutomator2 Process(Bootstrap)에 dependency가 없음
  • WebServer 베이스가 아니므로, 터치 조작에 대한 미려한 반영이 가능(Drag & Drop, Circular Touch Event등)
  • 참조하고 있는 library의 Android API Dependency가 없으므로, 디바이스 확장에 유리 (Android 버전)
    • 대신 상대좌표 베이스 특성상 Display WxH ratio에는 Dependency가 있음
약점
  • 아직은 Host IDE의 안정성이 낮음
    • 잦은 크래시, 불친절한 UX
  • 영상 스트림의 FPS가 낮음
    • Effect가 현란한 게임, 영상등에 약점
  • 개별 개발자 Test에서는 유용할 것으로 보이나, 팜 개념에서는 약점
    • Remote Device 대여 등
  • Display Manager등의 서비스에 Customizing이 들어간 케이스에서는 IDE에서 정상 지원하지 못함
    • 삼성 폰 해상도 조절등