Calabash Android 테스트 도구 사용법

⚡ 스마트 요약

Calabash 이는 실제 사용자 인터페이스 동작을 구동하는 오픈 소스 인수 테스트 프레임워크입니다. Android iOS 애플리케이션과 관련하여 쉬운 영어를 사용합니다. Cucumber Ruby 스텝 정의와 디바이스 측 테스트 서버를 기반으로 하는 시나리오입니다.

  • 🔸 정의: Calabash 실제 기기와 에뮬레이터에서 네이티브 및 하이브리드 모바일 애플리케이션에 대한 탭, 텍스트 입력 및 어설션을 자동화합니다.
  • ☑️ 언어 스택: 시나리오는 Gherkin 기능 파일에 작성되고, 매칭 메서드는 step_definitions 내의 Ruby 파일에 있습니다.
  • BDD 기초: 행동 주도 개발(BDD)은 비즈니스 소유자, 개발자 및 테스터가 스크립트가 작성되기 전에 동작에 대해 합의할 수 있도록 합니다.
  • 🧪 설정 순서: Java JDK, 그다음 루비, 그다음 Android Studio그런 다음 calabash-android gem을 버전 명령으로 확인했습니다.
  • 🛠️ 실행 흐름: APK에 다시 서명하고, 테스트 서버를 빌드하고, 장치를 연결하고, 로케이터를 조회한 다음, 기능 파일을 실행합니다.
  • 📊 현재 상태: Calabash 보관되어 있고 유지 관리되지 않으므로 새로운 프로젝트는 일반적으로 다음을 선택합니다. Appium, Espresso 또는 XCUITest를 사용해 보세요.

Calabash 테스트 도구 사용법 Android 보여주는 Cucumber 모바일 애플리케이션을 구동하는 기능 파일

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 BDD 계층 구조 다이어그램은 피처 파일, 스텝 정의 및 장치 자동화 계층을 보여줍니다.

설치하는 방법 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

RubyInstaller 다운로드 페이지에는 사용 가능한 Ruby 버전 목록이 나와 있습니다. Windows

2단계) 실행 파일을 열고 화면의 지시에 따라 설치를 진행하세요. 설치가 완료되면 다음 화면이 나타납니다. [마침]을 클릭하세요.

완료 버튼이 강조 표시된 Ruby 설치 마법사 완료 화면

Ruby on으로 명령 프롬프트 시작 Windows 10 & 아래 명령을 입력하세요.

ruby -v

콘솔에는 아래와 같이 설치된 인터프리터 버전이 출력됩니다.

Ruby가 설치된 명령 프롬프트에 Ruby 버전 번호가 표시됩니다.

파트 III) 다운로드 및 설치 Android

1단계) 다운로드 Android Studio at https://developer.android.com/studio

Android Studio 설정 마법사가 실행 중입니다. Windows 설치 중

2단계) 실행 파일을 열고 화면의 지시에 따라 설치를 완료하세요. 설치가 완료되면 마침 버튼을 클릭하세요.

Android Studio 설치 완료 화면과 완료 버튼

제4부) ​​설치 Calabash Android

1단계) 콘솔에 `gem install calabash-android`를 입력하세요. 설치가 시작되며 완료하는 데 다소 시간이 걸립니다.

calabash-android gem과 해당 종속성 설치 중 콘솔 출력

2단계) 설치가 완료되면 calabash-android 버전을 입력하세요.

설치된 calabash-android gem 버전을 확인하는 콘솔 메시지

작업 Calabash

젬을 설치했으면 다음 단계는 프레임워크 폴더를 찾고 그 안에 포함된 기본 구조를 이해하는 것입니다.

“calabash-android-0.9.0” 폴더를 엽니다. 경로 C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0에 있습니다. 폴더 이름은 컴퓨터에 설치하는 ruby/calabash 버전과 동기화되어 변경됩니다.

기능 뼈대 폴더를 엽니다. 이 기본 프레임워크를 살펴보세요.

Calabash 기능 골격 폴더에는 지원 및 단계 정의 디렉터리가 포함되어 있습니다.

  • *.feature 파일에는 자동화할 시나리오가 포함되어 있습니다.
  • Feature 파일에서 사용하는 방식은 “step_definitions” 폴더 내의 *.rb 파일에 작성되어 있습니다.
  • 일반적인 방법, 환경 설정, 앱 설치 및 후크는 "support" 폴더에 있어야 합니다.

사임하고 앱 구축

  • Calabash-안드로이드 서명 *.apk
  • Calabash-안드로이드 빌드 *.apk

재서명 과정을 통해 개발자 서명이 디버그 키로 대체되어 테스트 서버에서 애플리케이션에 계측 기능을 적용할 수 있게 되며, 빌드 단계에서는 아래 콘솔 출력에서 ​​볼 수 있듯이 해당 테스트 서버가 생성됩니다.

테스트 서버를 생성하는 calabash-android resign 및 build 명령의 콘솔 출력입니다.

시스템에 장치 연결/에뮬레이터 열기

연결된 장치를 확인하세요. 명령을 입력하세요

adb devices

연결된 장치 목록이 표시되어야 합니다. 장치가 목록에 없으면 USB 디버깅 및 페어링 단계를 다시 수행하십시오. ADB 연결 가이드 대부분의 경우를 해결합니다.

adb devices 명령어 목록 (첨부 파일 1개) Android 일련번호로 장치 확인

요소 로케이터를 찾는 방법

  • 콘솔을 엽니다. 명령을 입력합니다.
    calabash-android console "APK Path"
    start_test_server_in_background
  • 위의 명령은 장치에서 앱을 실행합니다. 요소 로케이터를 찾으려면 다음 명령을 사용합니다.
    query "*"

이렇게 하면 현재 화면의 모든 요소 위치 표시기가 표시됩니다. 시각적 검사를 선호하는 테스터는 동일한 계층 구조를 다음 도구를 사용하여 교차 확인할 수 있습니다. uiautomator뷰어.

Calabash 콘솔에 현재 애플리케이션 화면에 대해 쿼리된 요소 트리를 출력합니다.

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) 명령으로 시작할 수 있습니다.

새 스크립트 만들기

기능 파일과 다음 줄을 엽니다.

Gherkin 시나리오 단계를 보여주는 편집기에서 로그인 기능 파일이 열립니다.

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 파일로 정의합니다.

Ruby 단계 정의 파일 맵ping 거킨 라인에서 Calabash 요소 쿼리

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 디바이스에서 실행되는 각 Gherkin 단계를 보여주는 실행 출력입니다.

Calabash 실행 후 통과된 시나리오 및 단계 수를 보고하는 콘솔 요약 정보

공통의 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그리고 같은 것을 재사용합니다. 모바일 테스트 장치 매트릭스 및 자동화 테스트 그들이 이미 운영하고 있는 파이프라인.

자주 묻는 질문

예. 별도의 calabash-ios gem이 동일한 Ruby 및 iOS 애플리케이션을 통해 실행했습니다. Cucumber 레이어입니다. 해당 레이어는 사용 중단 상태를 공유합니다. Android gem을 사용하면 현재 iOS 작업은 XCUITest를 사용하는 것이 더 좋습니다. Appium.

머신러닝 모델은 이제 손상된 로케이터를 자동으로 수정하고, 실행 기록을 비교하여 불안정한 시나리오를 표시하며, 충돌 보고서를 그룹화하여 가장 심각한 결함이 먼저 드러나도록 합니다. 하지만 어떤 부분을 검증할지에 대한 판단은 여전히 ​​테스터의 몫입니다.

Copilot은 wait_for 블록 래핑과 ​​같이 반복적인 부분을 잘 작성합니다.ping 요소 쿼리입니다. 애플리케이션의 요소 식별자를 알 수 없으므로 생성된 모든 단계를 실제 쿼리 결과와 비교하여 검증해야 합니다.

Cucumber Gherkin을 읽고 Ruby 메서드를 호출하는 범용 BDD 실행기입니다. Calabash 해당 메서드들이 호출하는 모바일 자동화 라이브러리입니다. Cucumber 어떤 프로그램이 실행될지 결정합니다. Calabash 탭, 텍스트 입력 및 어설션을 수행합니다.

스크린샷은 기본적으로 현재 작업 디렉터리에 저장되며, 실행 시마다 순차적으로 이름이 지정됩니다. 실행 전에 SCREENSHOT_PATH 환경 변수를 설정하면 선택한 폴더로 스크린샷이 이동되므로 지속적 통합 결과물을 소스 코드와 분리하여 관리할 수 있습니다.

그렇지 않습니다. Calabash 컴파일된 APK를 계측하기 때문에 재서명 단계가 존재합니다. 소스 접근 권한을 통해 안정적인 요소 식별자를 추가할 수 있지만, 프레임워크 자체는 재서명 및 계측이 허용된 빌드만 있으면 됩니다.

예. 실행이 단일 명령줄 호출로 이루어지기 때문에 APK가 생성된 후 어떤 빌드 서버든 해당 명령을 실행할 수 있습니다. Jenkins 일반적으로 해당 작업은 APK를 삭제하고, 에뮬레이터를 시작하고, 태그된 기능을 실행하고, 보고서를 저장합니다.

Gherkin 기능 파일은 변경하지 않고 스텝 정의 본문만 다시 작성합니다. Appium 클라이언트. 요소 쿼리는 로케이터 전략이 되고, 애플리케이션을 설치한 후크는 드라이버 설정에서 원하는 기능이 됩니다.

이 게시물을 요약하면 다음과 같습니다.