Guest Article



Guest Article


윈드리버 FAST를 이용한 안드로이드 디바이스의 빠른 개발 및 품질 관리



자료제공 : 윈드리버 모바일 리눅스 테스팅 솔루션 부문 프로덕트 매니저 이명기 이사
            윈드리버 모바일 솔루션 마케팅 부문 프로덕트 매니저 Teodor Bobirnila


치열한 비즈니스 시장에서 살아남기 위한 경쟁과 선택이 계속되고 있으며, 여기에 인텔이 최근 발표한 '최적의 선택(Port of Choice)' 전략으로 인해 시장이 새롭게 재편되고 있다. 안드로이드같은 오픈소스 운영체제는 커뮤니티를 통한 많은 사람들의 자발적인 참여를 기반으로 하고 있기 때문에 다양한 성숙도의 제품이 동시 다발적으로 등장하는 것은 물론, 이로인한 높은 복잡성을 보이고 있다.

이 같은 오픈 플랫폼이 제공하는 풍부하고 다양한 기능은 단순히 한 영역에 제한되지 않으며, 점점 다양한 영역으로 확장되고 있는 인텔 SoC(System-on-Chip)에 기반한 '최적의 선택' 전략과 결합해 시장 진입 시간 (Time to Market: 한 제품의 제품 개발 및 제품을 만들어 시장에 내놓는 데까지 걸리는 시간) 단축 이라는 시장의 요구를 충족 시켜주고 있다. 

이에 기기 제조사 들은 미디어 폰과 태블릿, IVI(In-Vehicle-Infotainment) 또는 기타 임베디드 시스템과 같은 다양한 종류의 디바이스에 자신만의 구성요소를 추가하고 UX (User eXperience)를 강화함으로써 경쟁 업체와의 차별화를 시도하고 있다.

안드로이드와 마켓 트렌드
안드로이드는 2010년 한해 동안 놀라운 성장세와 함께 스마트폰 시장에서 주도적인 위치를 차지하고 있으며 관련 시장과 새로운 형태의 디바이스에도 기회를 열어주고 있다. 안드로이드는 스마트폰을 넘어, 태블릿이나 IVI 시스템 그리고 셋톱박스등 광범위한 임베디드 디바이스 쪽으로 움직이기 시작했다.

 그렇다면 왜 안드로이드인가? 안드로이드는 전통적인 '클로즈드' 운영체제와(클로즈드 소스: closed source 는 오픈 소스의 반대말, 오픈 소스 소프트웨어의 정의에 부합하지 않는 저작권을 갖는 프로그램) 달리, 빠른 혁신과 거대한 잠재력을 갖고 있는 오픈소스 플랫폼이다. 
ABI 리서치에 따르면 안드로이드와 같은 리눅스 기반 운영체제는 2015년 이내에 모바일 시장에서 다른 운영체제를 밀어내고 독점적인 지위를 얻게 될 것이라고 말한다. (ABI리서치 발표)

오픈소스 소프트웨어 스택의 약진과 함께 하드웨어 지원 또한 듀얼코어 프로세서나 3D 디스플레이, 4G네트워크 지원과 같은 새로운 기술을 이끌어 내고 있다. 이처럼 점점 더 치열해지고 있는 시장 경쟁이 더 나은 혁신과 차별화, 그리고 품질에 대한 요구 같은 새로운 도전과제를 만들어 내고 있다.


혁신, 차별화, 그리고 품질향상 - 세마리 토끼 한꺼번에 잡기!
안드로이드는 리눅스 기반 운영체제이다. 따라서 이들간의 가장 큰 차이를 만들어 내는 것은 바로 커스터마이징된 미들웨어 스택과 함께  얼마나 사용자 경험에 초점을 잘 맞추느냐에 있을 것이다. 따라서 기기 제조사들은 디바이스 사용 목적에 따른 다양한 UX (User eXeperience)를 제공하여 경쟁사와 차별화를 시도할 것이다.

또한 이런 오픈소스 운영체제들이 에코 시스템의 적용을 보장받기 위해서는 컴플라이언스 또는 호환성을 입증하는 것이 매우 중요하며, 이를 위해 디바이스 상에서 소프트웨어 스택을 인증하기 위한 테스팅 툴의 중요성이 점점 더 커질 것이다.

그러나 이같은 추세는 반대로 디바이스 제조사에게 시장 진입 시간 (Time to market) 이라는 어려운 과제를 요구한다. 다시 말해 안드로이드 디바이스를 개발하는데 있어 혁신, 차별화, 품질향상이라는 목적을 달성하려면 충분한 시간을 두고 품질 검증 및 테스트에 투자해야 하는데 과연 이렇게 치열한 시장경쟁 환경에서 그럴만한 시간이 주어지는가? 라는 질문을 생각해볼 필요가 있다.

수 천 개의 패키지를 담고 있는 거대한 오픈소스 배포판를 테스트하는 것은 품질관리와 Time to market을 생각할때 달성하기 매우 힘든 도전이며 이를 성공적으로 달성하기 위해 테스트 단계에서 아래와 같은 사항을 고려해야 한다.

low-level 테스팅 : 새로운ODM(Original Device Manufacturer) 업체들이 하드웨어를 개발하고 이 제품을 특정 소프트웨어 배포판으로 테스트하려 할 때, 개발자들 혹은 QA(Quality Assurance) 엔지니어들은 테스트가 각각의 디바이스 상에서 가동될 수 있도록 테스트를 수정해야만 한다. 각각의 타깃이 하나의 독자적 하드웨어 구성과 주변디바이스, 파일 저장 시스템 등으로 구성될 수도 있다. 하나의 디바이스를 위해서 개발된 테스트가 다른 디바이스에서 동작하도록 하기 위해서는 종종 수정 과정이 필요하다.

미들웨어 테스팅 : 일반적으로 하나의 배포판에는 수 십 개의 서브시스템과 이 패키지를 이용해 구축된 수 많은 애플리케이션들이 포함된다. 디바이스의 종류와 사용된 주변 디바이스의 차이, 그리고 다양한 사용자 인터페이스의 종류는 테스트와 인증 프로세스를 복잡하게 만든다.

사용자 인터페이스와 애플리케이션 테스팅 : 서로 다른 디바이스의 UI(사용자 인터페이스)는 때때로  엄청난 차이가 있다. 비록 동일한 기능성을 제공하는 UI라고 하더라고 개발자나 QA 엔지니어는 테스트를 서로 다른 레이아웃과 위젯 스타일에 맞게 재구성해야 한다. 

테스트는 여러 가지 테스팅 툴과 프레임워크를 통해 수행될 수 있다. 이러한 테스팅 툴들은 수많은 다른 소스로부터 온 것이고 수많은 실행 방식과 결과의 생성, 리포팅 방식을 갖고 있기 때문에 이런 테스트를 실행하고 추적한 테스트 결과를 평가하는 것은 매우 복잡한 작업이되어 전체 테스팅 과정을 지연시킬 수 있다. 특히 테스트 항목이 서로 다른 리포팅 포맷을 갖고 있을 경우에는 산출되는 정보의 양이 엄청난 수준으로 증가할 수 있다. 

이런 관점에서 보면 테스팅은 제품의 라이프사이클에 상당한 부분을 차지하는 커다란 문제가 될 수 있다. 따라서 테스팅에 대한 부담을 줄이기 위한 핵심은 테스팅과 관련된 모든 과정을 하나의 포괄적인 자동화 솔루션으로 통합하는 것이다.

실질적인 품질 향상을 위한 노력
안드로이드와 같은 새로운 기술이 급격한 성장세를 보임에 따라, 새로운 업체들이 시장에 뛰어들고 있다. 물론 이렇게 뛰어드는 업체들이 소규모, 신생 기업만 있는 것은 아니다. 기업의 규모에 관계없이 경쟁에 뛰어들기로 결정한 이상 시장 출시일에 맞춰 빠르게 높은 품질의 디바이스를 만들어내기 위해서는 모든 제조업체가 거의 동일하게 '소프트웨어 테스팅' 이라는 현실적인 문제에 직면하게 될 것이다.



    그림1. 윈드리버 FAST 유저 인터페이스

윈드리버 FAST를 이용한 소프트웨어 테스팅
안드로이드의 성능과 안정성, 호환성을 보장할 수 있도록 설계된 윈드리버의 FAST(Framework for Automated Software Testing)는 자동화된 소프트웨어 테스팅 솔루션으로 소프트웨어 테스팅 과정을 간소화하고 자동화 해, 장비의 개발을 위한 시간과 비용을 절감할 수 있게 해준다
.
이 테스트 프레임워크는 윈드리버가 만든 수 천 개의 선정된 테스트와 수 만 개에 달하는 기존 오픈소스 스크립트를 실행하고 수행한 결과를 수용하고 산출물을 기록해, 이 결과를 단일 리포트 형태로 제공하는 것까지 완전하게 자동화된 방법으로 되도록 설계됐다. 윈드리버 FAST는 개발자 및 QA엔지니어 모두에게 다음과 같은 중요한 이점을 제공한다.

테스트와 관련된 모든 과정을 하나의 애플리케이션으로 통합 : 윈드리버 FAST는 써드파티 테스트와 툴을 통합하기 위한 '테스트 랩퍼 메커니즘(Test wrapper mechanism)'을 사용한다. 일단 서로 다른 테스트 프레임워크가 FAST의 스크립트에 의해서 '랩핑'되면 사용자는 어떤 테스트를 수행할 것인지를 선택한 후, 버튼 하나로 그 모든 테스트를 전부 수행할 수 있다. 사용자는 테스트 애플리케이션이 어떻게 동작하는지 혹은 어떤 리포팅 포맷을 사용하는지 알 필요가 없다. 모든 것은 미리 작성된 스크립트가 처리한다.

동일한 테스트를 최소한의 변경 혹은 전혀 변경없이 서로 다른 타깃에 적용 :  윈드리버 FAST는  테스트 스크립트가 타깃과 직접 커뮤니케이션 할 수 없는 독립적인 구조를 갖고 있다. 테스트 스크립트는 언제나 보드의 특정 요구사항을 테스트 프레임워크로 추상화한 '보드(board)' 클래스를 통해 실행된다. 보드 클래스는 타깃으로 명령을 전송하고 결과(output)을 판독하고, 페이로드를 설치하며, 타깃을 재부팅할 수 있다. 윈드리버 FAST에 새로운 타깃을 적용하기 위해서는 보드 클래스를 수정해 주기만 하면 된다. 실질적인 테스트 스크립트와 랩퍼는 변경할 필요가 전혀 없으며 이론적으로 어떤 종류의 타겟 디바이스를 테스트하는 데 제약이 없다.



    그림2. 윈드리버 FAST 테스트 리포트 예제

진보된 리포팅 기능의 활용 : 모든 테스트의 결과와 산출물은 단일 데이터베이스에 저장되기 때문에, 최종 리포트, 비교 리포트, 오류 리포트, 성능 리포트 혹은 자세한 스크립트 리포트 등 서로 다른 종류의 리포트를 간단하게 생성할 수 있다.



       그림3. 윈드리버 FAST 테스트 결과 예제

테스트의 수행과 결과의 수집 : 테스트를 위해서 타깃을 구성하는 것은 간단하고 직접적이이다. 윈드리버 FAST는 타깃과의 커뮤니케이션과 제어를 지정하는 데 보드 클래스를 사용한다. 윈드리버 FAST 사용자 인터페이스는 테스트 프로세스를 자동화함에 있어서 상당한 유연성을 제공한다. 윈드리버 FAST는 또한 동시에 서버에 연결되어 서로 다른 테스트를 서로 다른 타깃에 대해 수행하는 다중 DUT(Device Under Test)를 지원한다.
웹 기반 GUI(Graphical User Interface)는 테스트의 선택과 수행을 보다 빠르게 진행할 수 있도록 해준다. 사용자는 화면 왼쪽에 보이는 테스트 트리를 보면서 수행할 개별적인 테스트를 드래그 앤 드롭 방식으로 선택한다. 이후 디폴트 타임 아웃, 카운트, 변수 그리고 리부트 옵션(reboot before, after, or after the test does not pass)을 포함한 각각의 테스트를 설정한다.

일단 테스트의 동작을 설정하고 나면 시작과 종료 일자, 수행된 테스트 항목, 테스트의 결과 상태(통과/실패), 그리고 로그 파일과 같은 각종 산출물, 혹은 테스트 항목와 관련된 주요 값(성능 메트릭스 등)을 포함한 각각의 테스트에 대한 진행과정이 표시된다. 
  
 커스텀 테스트 스크립트의 작성 : 사용할 수 있는 오픈소스나 기존 테스트가 없는 경우도 종종 발생한다. 윈드리버나 고객은 윈드리버 FAST 내에서 테스트 서버와 타깃 양쪽 모두에서 명령을 수행할 수 있고 테스트 결과를 분석할 수 있는 커스텀 스크립트를 작성할 수 있다. 이런 기능을 통해, 이전에는 존재하지 않았던 자신만의 전체 테스트 목록을 만들 수 있다.



   그림4. 윈드리버 FAST 테스트 상세 로그 예제

위와 같이 윈드리버 FAST는 다양한 종류의 안드로이드 단말 개발시 품질 향상과 빠른 개발이라는 두가지 목적을 성공적으로 달성할 수 있도록 지원하는 테스트 솔루션이며 최근 릴리즈된 버전 1.5판의 주요 기능을 살펴보며 글을 맺는다.

1. 광범위한 테스트 항목 제공 : 윈드리버 FAST v1.5는 윈드리버가 자체개발한 2,863개의 테스트 항목을 포함하여 총 28,700 (Android Froyo 버전 기준) 항목의 테스트 항목을 지원한다. 위 테스트 항목는 Standard Linux Tests, Standard Android CTS, Integrated Open Source Tests를 포함한다.

2. 안드로이드 UI & 어플리케이션 테스용 STP 제공 : 안드로이드 UI와 어플리케이션 테스트 위한 STP (Sytem Test Plug-ins)가 개발 완료되어 윈드리버 FAST와 함께 번들로 제공된다.
 STP는 브라우저, 메시징, 주소록 (contact), 미디어 플레이어, 전화 기능, 카메라, 설정 (settings), 싱크 (synchronization)등 안드로이드 레퍼런스 플랫폼 (reference platform)에 일반적으로 포함되는 코어 어플리케이션 (core application)과 페이스북, 트위터와 같은 안드로이드용 써드파티 어플리케이션 테스트 기능을 모두 제공한다.

3. 다수의 단말을 동시에 테스트 가능 : USB 혹은 USB Ethernet 인터페이스등을 통해 윈드리버 FAST 서버와 연결된 안드로이드 테스트 단말을 동시에 4대까지 (4 Android DUTs, Device Under Test, 하드웨어 성능, 설정에 따라 동시 테스트 단말 대수에 제약이 있을 수 있음) 지원한다.

4. ADCS 지원 : 윈드리버 ADCS (Wind River Android Device Characterization Suite)는 안드로이드 단말 하드웨어 검증을 위해 자체 개발한 Suite이며 Android CTS 혹은 다른 테스트 툴이 지원하지 않는 GPS나 로케이션 매니저 (location manager)등의 테스트를 지원하다.

5. 향상된 스트레스 테스트 : 특정 윈드리버 FAST 테스트 트리  (test tree)에 폴더 혹은 그룹 형식으로 스트레스 테스트 기능을 추가하여 테스트된 단말의 신뢰성 향상을 한층 더 기대할 수 있다. 스트레스 테스트는 일반 테스트 실행시 CPU나 I/O에 부하를 주어 테스트 단말이 특정 스트레스 상태에서 제대로 동작하는지를 검증하는 것으로 일례로 IOZone이 백그라운드로 실행되고 있는 상태에서 카메라가 사진을 10번 촬영하도록 강요하고 테스트 단말이 그런 특정 환경에서 전체적인 성능에 이상이 없는지, 기능이 제대로 동작하는지 등의 여부를 확인한다.

6. 테스트 태그 스키마를 통한 손쉬운 필터링 : 모든 테스트 항목에 테스트 태그 스키마 (tag schema) 가 추가되어 각 테스트 항목의 종속성이나 테스트 레벨, 혹은 테스트 제공자등을 쉽게 필터링 할 수 있으며 테스트 담당자가 임의로 커스텀 태그 (custom tag)를 추가할 수도 있다.

7. 향상된 에러 리포팅 기능 : 에러 리포팅 기능이 향상되어 콘솔로깅 (console logging)이나 Crash detection 혹은 향상된 로그 필터링(log filtering) 등의 메커니즘을 통해 에러가 발생한 테스트를 쉽게 찾아내거나 관련 상세 보고서를 제공한다.

윈드리버 FAST는 매 업그레이드시마다G1, NexusOne 같이 많이 사용되는 안드로이드 단말 혹은 Texas Instruments사의 Zoom 2/3 개발보드를 대상으로 테스트된 모든 결과가 포함된 벤치마크 리포트를 함께 제공하기 때문에 사용자는 그 새로운 버전의 성능 및 기능을 한눈에 파악할 수 있다.

 
이 기사를 공유합니다
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지