[swift] SwifterSwift를 사용하여 앱의 GUI 테스팅 자동화하기

앱 개발 과정에서 중요한 부분은 GUI (Graphical User Interface) 테스트입니다. 사용자들이 원활하게 앱을 사용할 수 있는지 확인하기 위해 GUI 테스트를 자동화하는 것은 매우 중요합니다. 이번 글에서는 SwifterSwift라는 라이브러리를 사용하여 앱의 GUI 테스팅을 자동화하는 방법을 알아보겠습니다.

SwifterSwift란?

SwifterSwift는 Swift 언어를 기반으로한 다양한 유틸리티 및 확장 기능을 제공하는 오픈소스 라이브러리입니다. Swift 언어의 기능을 보완하여 개발자들이 더 간편하고 효율적으로 코드를 작성할 수 있도록 도와줍니다.

GUI 테스트를 위한 SwifterSwift 사용하기

  1. SwifterSwift를 프로젝트에 통합합니다. SwifterSwift는 GitHub 페이지에서 소스코드와 설치 방법을 확인할 수 있습니다. Cocoapods를 사용한다면 Podfilepod 'SwifterSwift'를 추가하고 pod install 명령어를 실행하여 라이브러리를 설치하세요.

  2. 자동화하고자 하는 GUI 테스트 시나리오를 작성합니다. 예를 들어, 로그인 화면을 테스트한다고 가정해보겠습니다.

import XCTest
import SwifterSwift

class LoginUITests: XCTestCase {

    let app = XCUIApplication()

    override func setUp() {
        super.setUp()
        app.launch()
    }

    func testLoginSuccess() {
        // given
        let emailTextField = app.textFields["emailTextField"]
        let passwordTextField = app.secureTextFields["passwordTextField"]
        let loginButton = app.buttons["loginButton"]

        // when
        emailTextField.tap()
        emailTextField.typeText("test@test.com")

        passwordTextField.tap()
        passwordTextField.typeText("password123")

        loginButton.tap()

        // then
        XCTAssert(app.staticTexts["welcomeLabel"].exists)
    }
}
  1. 작성한 테스트 시나리오를 실행합니다. Xcode에서 Product -> Test를 선택하거나 Cmd + U 키를 눌러 테스트를 실행하세요.

  2. SwifterSwift에서 제공하는 다양한 유틸리티 및 확장 기능을 활용하여 테스트 코드를 더 간결하고 효율적으로 작성할 수 있습니다. 예를 들어, SwifterSwift의 textField(text: String, shouldClear: Bool) 메서드를 사용하면 텍스트 필드에 텍스트를 입력하거나 삭제하는 과정을 단순화할 수 있습니다.

emailTextField.text = "test@test.com".textField(text: "")
passwordTextField.text = "password123".textField(text: "")

결론

SwifterSwift를 사용하면 앱의 GUI 테스트를 더욱 효율적으로 자동화할 수 있습니다. SwifterSwift의 다양한 유틸리티 및 확장 기능을 활용하여 테스트 코드를 작성하고 실행함으로써 앱의 사용자 경험을 향상시킬 수 있습니다. SwifterSwift 공식 문서와 예제 코드를 참고하여 더 많은 기능을 알아보세요.