본문 바로가기
프로그래밍/안드로이드

Appium과 CI/CD 파이프라인 통합: Jenkins와 AWS Device Farm을 활용한 테스트 자동화

by 완소루피 2024. 11. 12.
728x90
반응형

오늘날 앱 개발은 빠른 배포 주기와 지속적인 품질 보장을 요구합니다. 특히 모바일 앱 테스트 자동화는 모든 배포에서 기능을 검증하는 중요한 역할을 합니다. 이를 위해 Appium과 Jenkins, 그리고 AWS Device Farm을 연동하여 앱 테스트를 자동화하는 방법을 다루겠습니다. 이 글에서는 실무에서 자주 사용하는 설정과 샘플 코드도 함께 제공하여 쉽게 따라 할 수 있도록 설명합니다.

 

1. 환경 설정 및 필요 사항

테스트 자동화를 구현하기 위해 Jenkins와 Appium 환경을 설정하고 AWS Device Farm과 통합해야 합니다. 주요 단계는 다음과 같습니다:

  1. Jenkins 설치 및 플러그인 구성
    Jenkins 설치 후, Appium과 AWS Device Farm 연동을 위해 필요한 플러그인 설치.
  2. Appium 설정
    Appium 서버를 로컬 또는 원격 서버에서 실행하고, 대상 기기에 접근할 수 있도록 구성.
  3. AWS Device Farm 설정
    테스트에 사용할 실제 기기 또는 가상 기기를 AWS Device Farm에서 선택하고, 프로젝트와 기기 풀을 생성.

2. Jenkins와 Appium 연동하기

Jenkins에서 Appium을 연동하려면 Appium 서버를 시작하고, 이를 Jenkins 빌드 파이프라인에서 사용할 수 있도록 설정합니다.

 

Appium 서버 시작 스크립트
Jenkins 빌드 시작 전에 Appium 서버를 실행하는 스크립트를 작성합니다.

# Start Appium server
appium --port 4723 &

 

Jenkins에서 Appium 테스트 실행
Jenkins의 Execute Shell 섹션에서 Appium 테스트를 실행할 수 있는 명령어를 추가합니다.

# Run Appium tests with Maven
mvn clean test -Dtest=AppiumTest

 

테스트 완료 후 Appium 서버 종료
빌드가 완료된 후에는 Appium 서버를 종료하여 리소스를 관리합니다.

# Run Appium tests with Maven
mvn clean test -Dtest=AppiumTest

 

3. Jenkins와 AWS Device Farm 통합

AWS Device Farm을 사용하여 다양한 기기에서 테스트할 수 있습니다. 이를 위해 AWS CLI 또는 Jenkins 플러그인을 사용하여 Jenkins 빌드와 Device Farm을 연결할 수 있습니다.

 

AWS CLI 설치 및 구성
Jenkins 환경에 AWS CLI를 설치하고, AWS 자격 증명을 구성합니다.

# Install AWS CLI
sudo apt-get install awscli

# Configure AWS credentials
aws configure

 

 

Device Farm 프로젝트 및 기기 풀 설정
AWS 콘솔에서 Device Farm 프로젝트와 기기 풀을 생성하고, 이를 통해 원하는 기기에서 테스트를 실행할 수 있습니다.

 

Jenkins 스크립트에서 AWS Device Farm 테스트 실행
AWS Device Farm에 테스트를 업로드하고 실행하도록 Jenkins 스크립트에 명령을 추가합니다.

# Run Appium test on AWS Device Farm
aws devicefarm schedule-run \
  --project-arn arn:aws:devicefarm:EXAMPLE_PROJECT_ARN \
  --device-pool-arn arn:aws:devicefarm:EXAMPLE_DEVICE_POOL_ARN \
  --app-arn arn:aws:devicefarm:EXAMPLE_APP_ARN \
  --test type=APPIUM_WEB,arn=arn:aws:devicefarm:EXAMPLE_TEST_PACKAGE_ARN

 

4. 예제 코드: Appium 테스트 자동화

아래는 기본적인 Appium 테스트 케이스 예제입니다. 이 테스트 케이스는 AWS Device Farm에 업로드하여 실제 기기에서 테스트할 수 있습니다.

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.MalformedURLException;
import java.net.URL;

public class AppiumTest {
    public static void main(String[] args) throws MalformedURLException {
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("deviceName", "Android Emulator");
        caps.setCapability("platformName", "Android");
        caps.setCapability("app", "/path/to/your/app.apk");

        AppiumDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), caps);

        // Sample test: login test
        MobileElement usernameField = driver.findElementById("com.example:id/username");
        usernameField.sendKeys("test_user");

        MobileElement passwordField = driver.findElementById("com.example:id/password");
        passwordField.sendKeys("test_password");

        MobileElement loginButton = driver.findElementById("com.example:id/login_button");
        loginButton.click();

        // Assert login success
        MobileElement successMessage = driver.findElementById("com.example:id/success_message");
        assert successMessage.getText().equals("Login Successful");

        driver.quit();
    }
}

 

위 코드에서는 기본적인 로그인 기능을 테스트합니다. 이 코드가 정상 작동하면 Jenkins 파이프라인에서 실행할 수 있습니다.

요약 및 다음 단계

Appium과 CI/CD 파이프라인을 연동하면 코드 변경 시마다 자동으로 테스트를 수행하여 품질을 보장할 수 있습니다. 이 글에서는 Jenkins, Appium, AWS Device Farm을 활용해 환경을 구성하고, 실무에서 자주 사용하는 샘플 스크립트와 코드 예제를 통해 구현 방법을 설명했습니다.

다음 단계로는 CI/CD 도구와의 통합을 더욱 세분화하고, 다양한 기기와 OS 버전에서의 테스트를 수행하여 커버리지를 확장하는 것이 좋습니다.

 

 

728x90
반응형