Calabash Android 테스트 도구 사용법
⚡ 스마트 요약
Calabash 이는 실제 사용자 인터페이스 동작을 구동하는 오픈 소스 인수 테스트 프레임워크입니다. Android iOS 애플리케이션과 관련하여 쉬운 영어를 사용합니다. Cucumber Ruby 스텝 정의와 디바이스 측 테스트 서버를 기반으로 하는 시나리오입니다.
Calabash?
Calabash 오픈소스 승인입니다 지원 iOS 및 iOS용 테스트를 작성하고 실행할 수 있는 프레임워크 Android Apps.
이는 Ruby를 사용하여 테스트를 작성할 수 있도록 하는 자동화된 사용자 인터페이스 프레임워크입니다. Cucumber.
Calabash 이 프로그램은 버튼 누르기, 텍스트 입력, 응답 유효성 검사 등과 같은 모바일 애플리케이션 내 UI 상호 작용을 자동화하는 방식으로 작동합니다. 다양한 플랫폼에서 실행되도록 구성할 수 있습니다. Android 실시간 피드백과 검증을 제공하는 iOS 장치.
⚠️ 버전 참고: Microsoft 기부금을 종료했습니다. Calabash iOS 11 최종 버전 이후 Android 8개의 릴리스와 칼라바쉬 안드로이드 저장소 현재 이 프로젝트는 유지 관리자를 찾고 있다고 설명합니다. 아래의 단계별 안내는 원문 그대로 유지되며, 최신 버전으로의 대체는 마지막 섹션에서 다룹니다.
Calabash 오토메이션?
무엇을 설치하기 전에 프레임워크가 제공하는 이점과 유지 관리 비용을 비교해 보는 것이 좋습니다.
| 장점 | 단점 |
| 처리량/생산성을 높이는 데 도움이 됩니다. | 자동화 테스트 스크립트를 작성하려면 숙련도가 필요합니다. |
| 품질 개선 또는 품질 예측 가능성 향상 | 테스트 스크립트를 디버깅하는 것은 중요한 문제입니다. |
| 프로세스 또는 제품의 견고성(일관성)이 향상됩니다. | 재생 방식의 경우 테스트 유지 비용이 많이 듭니다. |
| 출력의 일관성 향상 및 인건비 및 비용 절감 | 테스트 스크립트가 더 많은 화면을 테스트하면 테스트 데이터 파일의 유지 관리가 어렵습니다. |
Calabash 그리고 BDD
- Calabash is 행동 중심 개발(BDD)그것은 와 같습니다. 테스트 주도 개발(TDD)하지만 API의 형태를 설명하는 테스트를 만드는 대신 애플리케이션의 동작을 명시합니다.
- BDD는 구축해야 할 사항에 대한 공통된 이해를 얻기 위해 여러 이해관계자가 참여하는 프로세스입니다.
- BDD는 사업주 입장에서 올바른 소프트웨어를 구축하고 설계하는 데 도움이 됩니다.
아래 그림은 a가 어떻게 작동하는지 보여줍니다. Calabash 이 제품군은 최상위의 비즈니스 담당자가 읽을 수 있는 기능 파일부터 최하위의 장치 상호 작용에 이르기까지 계층 구조로 되어 있습니다.
설치하는 방법 Calabash
Calabash on Windows calabash-android gem은 Ruby와 다음 네 가지 필수 구성 요소를 순서대로 설치해야 합니다. 각 단계를 완전히 완료한 후에 다음 단계로 넘어가십시오. calabash-android gem은 Ruby와 다음 구성 요소의 설치를 확인합니다. Android 설치 중 SDK.
파트 I) 설치 Java JDK – 이 가이드를 참조하세요 – /install-java.html
파트 II) Ruby를 다운로드하고 설치합니다.
1단계) Ruby를 다음에서 다운로드하세요. URL https://rubyinstaller.org/downloads
2단계) 실행 파일을 열고 화면의 지시에 따라 설치를 진행하세요. 설치가 완료되면 다음 화면이 나타납니다. [마침]을 클릭하세요.
Ruby on으로 명령 프롬프트 시작 Windows 10 & 아래 명령을 입력하세요.
ruby -v
콘솔에는 아래와 같이 설치된 인터프리터 버전이 출력됩니다.
파트 III) 다운로드 및 설치 Android
1단계) 다운로드 Android Studio at https://developer.android.com/studio
2단계) 실행 파일을 열고 화면의 지시에 따라 설치를 완료하세요. 설치가 완료되면 마침 버튼을 클릭하세요.
제4부) 설치 Calabash Android
1단계) 콘솔에 `gem install calabash-android`를 입력하세요. 설치가 시작되며 완료하는 데 다소 시간이 걸립니다.
2단계) 설치가 완료되면 calabash-android 버전을 입력하세요.
작업 Calabash
젬을 설치했으면 다음 단계는 프레임워크 폴더를 찾고 그 안에 포함된 기본 구조를 이해하는 것입니다.
“calabash-android-0.9.0” 폴더를 엽니다. 경로 C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0에 있습니다. 폴더 이름은 컴퓨터에 설치하는 ruby/calabash 버전과 동기화되어 변경됩니다.
기능 뼈대 폴더를 엽니다. 이 기본 프레임워크를 살펴보세요.
- *.feature 파일에는 자동화할 시나리오가 포함되어 있습니다.
- Feature 파일에서 사용하는 방식은 “step_definitions” 폴더 내의 *.rb 파일에 작성되어 있습니다.
- 일반적인 방법, 환경 설정, 앱 설치 및 후크는 "support" 폴더에 있어야 합니다.
사임하고 앱 구축
- Calabash-안드로이드 서명 *.apk
- Calabash-안드로이드 빌드 *.apk
재서명 과정을 통해 개발자 서명이 디버그 키로 대체되어 테스트 서버에서 애플리케이션에 계측 기능을 적용할 수 있게 되며, 빌드 단계에서는 아래 콘솔 출력에서 볼 수 있듯이 해당 테스트 서버가 생성됩니다.
시스템에 장치 연결/에뮬레이터 열기
연결된 장치를 확인하세요. 명령을 입력하세요
adb devices
연결된 장치 목록이 표시되어야 합니다. 장치가 목록에 없으면 USB 디버깅 및 페어링 단계를 다시 수행하십시오. ADB 연결 가이드 대부분의 경우를 해결합니다.
요소 로케이터를 찾는 방법
- 콘솔을 엽니다. 명령을 입력합니다.
calabash-android console "APK Path" start_test_server_in_background
- 위의 명령은 장치에서 앱을 실행합니다. 요소 로케이터를 찾으려면 다음 명령을 사용합니다.
query "*"
이렇게 하면 현재 화면의 모든 요소 위치 표시기가 표시됩니다. 시각적 검사를 선호하는 테스터는 동일한 계층 구조를 다음 도구를 사용하여 교차 확인할 수 있습니다. uiautomator뷰어.
Calabash 프로젝트 구조 및 사전 정의된 단계
gem 폴더를 수동으로 복사하는 대신, 프레임워크가 작동하는 프로젝트를 생성해 줄 수 있습니다. 프로젝트 디렉토리 내에서 제너레이터를 실행하면 표준 프로젝트가 생성됩니다. Cucumber 모든 레이아웃 Calabash 스위트가 기대하는 것.
calabash-android gen
생성된 트리는 BDD 스위트의 세 가지 주요 관심사를 구분합니다.
- 특징/ — 거킨 시나리오 중 하나 .특징 사용자 여정별 파일.
- 특징/단계 정의/ — 번들로 제공되는 calabash_steps.rb를 포함하여 각 Gherkin 라인에 해당하는 Ruby 메서드입니다.
- 기능/지원/ — 환경 구성 및 모든 시나리오에 맞춰 애플리케이션을 설치, 실행 및 종료하는 후크입니다.
번들로 제공되는 calabash_steps.rb 파일은 처음 보이는 것보다 훨씬 중요합니다. 이 파일에는 미리 작성된 영어 단계들이 많이 포함되어 있어, 첫 번째 시나리오에서는 사용자 정의 메서드를 작성하기 전에 버튼을 누르고, 텍스트를 입력하고, 보이는 문자열에 대해 검증하는 등의 작업을 수행할 수 있습니다. 사용자 정의 단계는 이러한 미리 작성된 단계들을 넘어서는 여정이 필요할 때만 작성하면 됩니다.
프로젝트 수준에서 알아두면 유용한 설정 두 가지가 있습니다. 스크린샷은 기본적으로 현재 작업 디렉터리에 저장되지만, SCREENSHOT_PATH 환경 변수를 사용하면 다른 위치로 리디렉션되어 공유 컴퓨터에서 빌드 아티팩트가 깔끔하게 유지됩니다. 시스템 대화 상자나 다른 애플리케이션과 상호 작용하려면 UIAutomator2 백엔드가 필요하며, 이는 start_test_server_in_background(with_uiautomator: true) 명령으로 시작할 수 있습니다.
새 스크립트 만들기
기능 파일과 다음 줄을 엽니다.
Feature: Login feature Scenario: As a valid user I can log into my app When I press "Login" And I enter my username And I enter my password Then I see "Welcome to coolest app ever"
단계 정의 파일을 열고 방법을 *.rb 파일로 정의합니다.
Given /^I am on the login windows$/ do wait_for(:timeout =>100) { element_exists("* id:'loginInput;")} check_element_exists("* id:'loginInput;") end
테스트 프로젝트 실행
테스트 프로젝트를 실행하려면 아래 명령을 사용하십시오.
calabash-android run "APK Path" "feature file Path" --tags "tag name"
Cucumber 각 단계가 실행될 때마다 출력되며, 실행이 성공적으로 완료되면 여기에 표시된 시나리오 및 단계 합계가 나타납니다.
공통의 Calabash 오류 및 해결 방법
대부분의 첫 실행 실패는 시나리오 자체의 문제가 아니라 테스트 서버가 의존하는 패키징 및 권한 규칙에서 비롯됩니다. 아래 표는 가장 자주 보고되는 증상과 해당 원인에 대한 설명입니다.
| 징후 | 원인 및 해결 방법 |
| 테스트가 시작되는 순간 애플리케이션이 충돌합니다. | APK 파일에 테스트 서버가 명령을 수락하는 데 필요한 `android.permission.INTERNET` 권한이 누락되었습니다. 해당 권한을 추가해 주세요. AndroidManifest.xml 파일을 생성하고 다시 빌드하세요. |
| 버튼과 텍스트가 터치에 반응하지 않습니다. | targetSdkVersion이 선언되지 않았습니다. 애플리케이션이 빌드된 SDK 레벨을 지정하는 uses-sdk 항목을 추가하세요. |
| 테스트 서버가 애플리케이션에 연결할 수 없습니다. | APK 파일이 디버그 키로 다시 서명되지 않았습니다. 다시 서명 명령을 실행한 다음 다시 빌드하고 실행하십시오. |
| 실행 중에 장치가 목록에 표시되지 않습니다. | USB 디버깅이 꺼져 있거나 드라이버가 설치되어 있지 않습니다. 먼저 adb devices 명령의 출력에서 시리얼 번호가 나타나는지 확인하십시오. |
| 단계가 정의되지 않은 단계 오류로 인해 실패합니다. | Gherkin 구문은 step_definitions의 어떤 정규 표현식과도 일치하지 않습니다. 제안된 코드 조각을 복사하세요. Cucumber 출력하고 구현하세요. |
두 개의 매니페스트 항목이 첫 두 행을 수정합니다. APK에 다시 서명하기 전에 이 항목들을 추가하세요.
<uses-permission android:name="android.permission.INTERNET" /> <uses-sdk android:targetSdkVersion="SDK_VERSION" />
타임아웃 오류는 대개 기능적인 문제보다는 환경적인 원인으로 발생합니다. 느린 에뮬레이터, 콜드 애플리케이션 시작 또는 백그라운드 동기화 등으로 인해 화면이 wait_for 시간을 초과할 수 있으므로, 실제로 올바르게 실행된 단계를 다시 작성하기 전에 타임아웃을 발생시켜야 합니다.
Is Calabash 아직도 유지 관리되고 있나요? 최신 모바일 테스트를 위한 대안
Calabash 더 이상 활발하게 개발되지 않습니다. Microsoft iOS 11 최종 버전을 지원한 후 더 이상 기여하지 않았습니다. Android 8번의 릴리스를 거친 후, 이 프로젝트는 현재 유지 관리자가 없는 아카이브된 오픈 소스 코드베이스가 되었습니다. 기존 제품군은 구형 기기에서 계속 실행되지만, 새로운 작업은 지원되는 프레임워크에서 시작해야 합니다.
| 뼈대 | 플랫폼 | 가장 적합 |
| Appium | Android 및 iOS | 크로스 플랫폼 제품군 Java, Python루비 또는 Java스크립트, 그리고 가장 가까운 대체품 Calabash 팀. |
| Espresso | Android 만 | Kotlin으로 작성된 빠른 프로세스 내 테스트 또는 Java 애플리케이션 개발자들이 직접 만든 것입니다. |
| XCUITest | iOS 만 | 출신 Xcode 스위트룸, 은퇴한 후계자를 지원하는 UIAutomation 프레임워크. |
| 마에스트로와 디톡스 | Android 및 iOS | 최근 출시된 오픈소스 프로젝트들은 성능 저하 방지 및 React Native 애플리케이션 개발을 목표로 합니다. |
BDD 습관 자체는 깔끔하게 이전됩니다. Gherkin 기능 파일은 그대로 유지되고, 스텝 정의 본문만 변경됩니다. Cucumber 드라이버 내부에 있는 것이 아니라 드라이버 위에 위치합니다. 마이그레이션을 진행하는 팀은 일반적으로 기능 파일을 유지하고 Ruby 단계를 다시 작성합니다. Appium그리고 같은 것을 재사용합니다. 모바일 테스트 장치 매트릭스 및 자동화 테스트 그들이 이미 운영하고 있는 파이프라인.
















