RTK와 오픈소스 소프트웨어를 활용한 스마트폰 테스트 플랫폼 구축
Jenkins, Ruby 및 RTK를 사용하여 모바일 테스트 플랫폼용 사이트 구축
Hiroki Maruchi and Shoichi Iwai, GBA Co., Ltd.
목차
1. 소개
이전 글인 "Jenkins를 처음으로 사용하기"에서는 Jenkins를 설치하고 작업을 실행했습니다.
이전 글 "Ruby에서 스마트폰 테스트 프로그래밍하기"에서는 RTK Thrift API를 사용했고, 사용자가 작성한 테스트 스크립트로 RTK에서 스마트폰을 빌려서 기기에서 앱을 실행해 보았습니다. 그런 다음 실행 결과 화면을 캡처했습니다.
이 글에는 해당 절차가 요약되어 있습니다. 아래 이미지의 노트북 PC로 구성된 시스템은 RTK에서 여러 스마트폰을 사용하여 앱 빌드 및 테스트를 실행합니다.
2. Jenkins 작업으로 RTK 대여 디바이스 테스트
"처음으로 Jenkins 사용하기"라는 이전 글의 "작업 만들기: Android Studio 프로젝트 빌드" 섹션에서 Android 프로젝트를 빌드하고 이를 에뮬레이터에 설치했습니다.
이전 "Ruby에서 스마트폰 테스트 프로그래밍"에서는 RTK Thrift API 기능을 사용하고 Ruby 테스트 스크립트를 사용하여 인터넷을 통해 RTK에 액세스했습니다. 그리고 RTK 클라우드에서 스마트폰을 대여하고 제어해서 앱설치는 물론 웹과 앱화면 캡쳐도 했습니다.
여기서는 이 두 절차를 결합하고 Jenkins 작업을 생성하여 RTK를 사용하는 스마트폰에서 테스트를 실행합니다. 다음은 작업 설정 값의 예입니다. 기본적으로는 이전 글에서 소개한 내용에 앱 빌드를 위한 테스트 스크립트의 내용만 추가하고 있습니다.
작업 생성
설정
새 작업을 만듭니다.
작업명을 입력하고 Freestyle project를 선택합니다.
프로젝트 이름
여기서는 프로젝트 이름을 "test_calculator_004"로 지정했습니다.
소스 코드 위치 지정
고급 프로젝트 옵션 (Advanced project option)
> 커스텀 작업 공간 사용 체크 (Use a custom workspace Check)
> Directory 항목: /Users/hiroki/AndroidStudioProjects/calculator_002
빌드 (Build)
> 셸 실행 (Run the shell)
> Command 항목: /gradlew build # Run the build
빌드 (Build)
> 셸 실행 (Run the shell)
> Command 항목: ruby test_004.rb # Run the RTK test
빌드 후 작업 (Post-build Actions)
> 결과 저장 (Save the result)
> 저장할 파일 항목 (Field for the file to be saved): **/*.apk
설정이 완료되면 저장(Save) 버튼을 클릭하여 작업을 저장합니다.
작업 실행
지금 빌드하기 (Build Now) 클릭. 작업이 실행됩니다.
작업이 실행되는 동안 콘솔에 콘텐츠를 표시할 수 있습니다. 그리고 Finished: SUCCESS가 표시되고 작업 실행이 성공적으로 완료됩니다.
결과 표
이전과 마찬가지로 작업이 완료된 후 작업 성공 여부에 대한 결과가 녹색 및 빨간색 신호등으로 표시됩니다.
캡처된 결과 이미지는 프로젝트 디렉터리 "app/build/reports/rtk"에 저장됩니다.
따라서 사람의 개입 없이 테스트 스마트폰에서 앱이 성공적으로 실행되었는지 확인할 수 있습니다. 그러나 결과의 화면 캡처는 개발 PC의 로컬 디렉터리에만 저장됩니다. 모든 회원이 Jenkins에서 확인할 수 있도록 몇 가지 기능을 더 추가하려고 합니다.
3. 빌드 결과 화면 확인하기
작업 수정: Jenkins 웹사이트에서 화면 확인하기
이전 섹션의 Jenkins 작업의 경우 RTK에서 대여한 스마트폰에서 앱을 실행하고 실행 결과를 화면 파일로 로컬에 다운로드했습니다. 단, 테스트 결과인 화면 파일은 로컬 PC에 저장됩니다.
이번에는 Jenkins에서 결과 화면 파일을 확인해 보겠습니다.
이를 위해 우리가 해야 할 일은 설정에 Save the result에서 이미지를 저장하는 것입니다.
설정p
빌드 후 작업 (Post-build Actions)
> 결과 저장 (Save the result)
> 저장할 파일 항목 (Field for the file to be saved): **/*.apk, **/capture_*.jpg … 이미지 저장 추가
이전과 같은 방법으로 작업을 실행해 보겠습니다.
결과 캡처는 Build Artifacts의 항목으로도 표시됩니다.
링크를 클릭하면 결과 이미지를 브라우저에 표시할 수 있습니다.
간단히 말해서 이전에는 로컬 PC에서만 결과를 볼 수 있었지만 이제는 작업이 완료되는 즉시 다른 Jenkins 구성원과 결과를 공유할 수 있습니다.
4. 추가 지원: "지속적으로" 테스트 개발 개선
위 섹션에서는 소수의 RTK Thrift API 기능만 사용하여 어떤 환경에서도 스마트폰 앱 개발을 수행할 수 있음을 보여주었습니다. 개발 유형과 팀에 따라 요구 사항은 거의 무한합니다. 여기서 모든 기능을 소개할 수는 없다는 것은 말할 필요도 없습니다. 우리는 다음과 같은 몇 가지 팁을 제공합니다.
RTK Thrift API 기능 사용하기
RTK Thrift API에서는 다음과 같은 기본 기능을 사용할 수 있습니다.:
- 기기대여/자동연장 기능
- 웹페이지 캡처
- 가상 adb, Wi-Fi, GPS 설정
- 화면 캡처, 기기 회전
- 녹화
이 예에서는 소수의 기능만 사용되었습니다. 사용자가 앱을 개발하는 목적에 맞게 전체 작업을 영상으로 녹화할 수도 있습니다. 또한 현재 RTK Thrift API가 활발히 개발되고 있습니다. 조만간 기능이 추가되고 개선될 예정입니다. 추가된 기능과 사양은 RTK 웹사이트를 확인하세요.
Jenkins의 기능 사용
빌드와 테스트는 매일 실행되며 git commit을 이벤트로 실행할 수 있습니다. 이는 Jenkins 작업 설정의 Build Triggers 및 Source Code Management에서 비교적 쉽게 설정할 수 있습니다.
이 문서에서 개발자는 버튼을 클릭하여 빌드 및 테스트를 시작합니다. 위에서 설명한 절차로 전환하면 개발자가 수동으로 개입할 필요가 없고 특화를 피할 수 있다. 또한 커밋이나 변경 시 항상 통과 여부를 확인할 수 있으며, 정기적으로 여러 테스트를 수행하고 통계를 수집하는 등 고품질 엔지니어링 방식의 방법을 도입할 수 있습니다.
사용자 테스트 스크립트 기능 사용
RTK Thrift API 또는 Jenkins에 없는 기능을 추가하려는 경우 사용자 테스트 스크립트를 사용하여 해당 기능을 추가할 수 있는 경우가 있습니다.
예를 들어 RTK에서 대여할 모델을 지정하고, 다양한 모델을 개별적으로 테스트하는 등의 작업을 수행할 수 있습니다.
본 예시에 표시된 사용자 테스트 스크립트에는 대여할 기기를 쉽게 선택할 수 있는 필터 메소드(select_device method)가 있습니다. 우리는 이것이 당신에게 도움이 될 것이라고 생각합니다. 또한 지정된 수의 장치를 테스트하기 위해 루프를 포함함으로써 후속 테스트도 비교적 쉽게 만들 수 있습니다.
어쨌든 개발팀 전체가 테스트를 개선하기 위해서는 앱 개발자, 테스터를 포함한 모든 구성원이 쉽게 읽고 유지 관리할 수 있는 사용자 테스트 스크립트용 프로그래밍 언어를 사용하는 것이 중요합니다. 이 예에서는 Ruby가 사용됩니다. Ruby는 Chef 및 ServerSpec과 같은 다른 오픈 소스 개발 지원 소프트웨어에서도 널리 사용되며 좋은 선택이라고 생각합니다.
5. 결론
이 글에서는 RTK와 오픈 소스 소프트웨어를 여러 번 사용하여 스마트폰 테스트까지 프로세스를 자동화하는 간단한 시스템을 만들었습니다.
RTK는 실제 장치와 관련된 테스트 프로세스에 수동 개입이 불필요한 개발 프로세스 시스템을 제공합니다. 이번 글에서는 Jenkins 시나리오에 테스트 스크립트를 추가하는 것만으로도 비교적 쉽게 실제 디바이스 테스트를 지원할 수 있었습니다. 이 예와 같이 과거에는 수동 작업이 필요했기 때문에 수행할 수 없었던 장치 테스트를 이제 자동화된 테스트 프로세스에 쉽게 포함시킬 수 있습니다. RTK를 사용하면 자동화된 테스트의 정밀도가 높아지고 설정 비용을 많이 들이지 않고도 출력도 늘릴 수 있습니다.
과거 스마트폰 앱 개발에서는 최종 제품을 테스트하는 단계에서 수많은 샘플이 사용됐고, 배송 전 최종 점검에는 많은 피와 땀, 눈물이 소모됐다. 그러면 그림과 같은 단순한 모양이 완성됩니다. 우리는 이것이 RTK에 의해 스마트폰 제조가 크게 바뀔 수 있음을 보여준다고 믿습니다.