목표
- 테스트 시나리오 추가작성
- 시나리오간 의존성 문제
테스트 시나리오 추가 작성 고민 Point
기존에 테스트 시나리오 하나를 가지고 스크립트를 작성해서 테스트해보았다.
다음 스텝으로 시나리오를 더 추가하려고 보니, 불필요한 코드 중복이 발생했다.
따라서, 작업 효율성, 코드의 재사용성, 유지보수, 가독성을 개선시키기 위해 모듈화 작업이 필요했다.
https://github.com/shy1008/appium_project
GitHub - shy1008/appium_project: 무신사스토어 App 기능 테스트 자동화
무신사스토어 App 기능 테스트 자동화. Contribute to shy1008/appium_project development by creating an account on GitHub.
github.com
디렉토리 구조
1. base : 모든 페이지 객체와 테스트 시나리오에서 공통으로 사용되는 기본 기능을 제공한다.
- base_page: 페이지 객체들의 부모 클래스, 요소 탐색, 클릭, 텍스트 입력 등 공통적인 메서드를 제공
- base_test: 테스트 시나리오들의 부모 클래스, Appium 드라이버 설정 및 세션 관리 등 공통적인 테스트 환경 설정
2. common : 프로젝트 전반에서 공통으로 사용되는 유틸리티 함수 및 클래스를 제공한다.
- utils: 테스트 자동화에 필요한 유틸리티 함수를 정의
- locators: 모든 페이지 객체에서 사용되는 요소 locator들을 정의
3. data : 테스트 데이터를 저장한다.
- test_data: 테스트에 사용되는 데이터를 정의 (예: 유효한 로그인 정보, 잘못된 로그인 정보 등)
4. screens : 앱의 각 화면(페이지)에 해당하는 페이지 객체 클래스를 저장한다.
- login: 로그인 관련 페이지 객체 클래스 정의
- my: 마이페이지 관련 페이지 객체 클래스 정의
5. automation : 테스트 시나리오를 구현하는 테스트 스크립트를 저장한다.
- test_scenario: 자동화 테스트 시나리오를 구현하는 클래스를 정의
시나리오간 의존성 문제 고민 Point
시나리오를 연속되어 수행하게 되면 시나리오 간의 의존성 충돌 문제가 생겼다.
예시로, 테스트 시나리오 1번이 수행되어서 정상적으로 로그인에 성공했는데,
그다음 테스트 시나리오 2번이 수행되려면 로그아웃을 하고 로그인 페이지까지 와야 하는 작업이 필요했다.
‘로그아웃을 하고 로그인 페이지까지 와야하는 작업’ 이런 작업들이 각 테스트 시나리오마다 추가될 때
다르다는 것이 예상된다. 따라서 두 가지 고민을 하게 되었다.
- 테스트 시나리오마다 드라이버를 파라미터로 받아 독립적으로 처리한다
=> 기존에 여러 디바이스에서 테스트가 수행되는 것을 테스트할 때 Pytest의 fixture 기능을 알게 됨 - 각 테스트 시나리오가 전 후의 시나리오에 영향을 안 가게 하는 방법이 없을까?
=> 테스트 수행이 완료되면 앱만 종료 후 재실행할 수 있는 방법이 없을까?
각 테스트 시나리오마다 세션을 독립적으로 수행하게 되면 테스트 수행 시간이 길어질게 예상된다.
따라서, 세션은 연결된 상태 + UiAutomator2 속성인 no_reset=Ture 인 조건에서,
앱만 종료하고 재실행할 수 있는 방법을 찾아보았고, android UiAutomator2드라이버에서 제공하는
메서드를 통해 앱을 종료하고 재실행하는 방법을 찾아 적용했다.
def restart_app(driver):
"""
앱을 종료하고 다시 시작합니다.
"""
driver.terminate_app(app_package)
driver.activate_app(app_package)
Util 함수로 만들어서 각 테스트 시나리오가 수행된 후 호출하도록 적용해 보았다.
'2024 > QA' 카테고리의 다른 글
[QA] 테스트 피라미드 with The Practical Test Pyramid (0) | 2024.08.29 |
---|---|
[QA] 테스트 자동화 환경 구축하기 docker, jenkins (1) | 2024.08.16 |
[트러블슈팅] Appium 드라이버 초기화 이슈 (0) | 2024.08.03 |
[트러블슈팅] Appium 프로젝트명 변경시, 독립된 가상환경 이슈 (0) | 2024.08.03 |
[QA]ISTQB FL 자격증 후기 / Syllabus 4.0 개편버전 (0) | 2024.07.01 |
목표
- 테스트 시나리오 추가작성
- 시나리오간 의존성 문제
테스트 시나리오 추가 작성 고민 Point
기존에 테스트 시나리오 하나를 가지고 스크립트를 작성해서 테스트해보았다.
다음 스텝으로 시나리오를 더 추가하려고 보니, 불필요한 코드 중복이 발생했다.
따라서, 작업 효율성, 코드의 재사용성, 유지보수, 가독성을 개선시키기 위해 모듈화 작업이 필요했다.
https://github.com/shy1008/appium_project
GitHub - shy1008/appium_project: 무신사스토어 App 기능 테스트 자동화
무신사스토어 App 기능 테스트 자동화. Contribute to shy1008/appium_project development by creating an account on GitHub.
github.com
디렉토리 구조
1. base : 모든 페이지 객체와 테스트 시나리오에서 공통으로 사용되는 기본 기능을 제공한다.
- base_page: 페이지 객체들의 부모 클래스, 요소 탐색, 클릭, 텍스트 입력 등 공통적인 메서드를 제공
- base_test: 테스트 시나리오들의 부모 클래스, Appium 드라이버 설정 및 세션 관리 등 공통적인 테스트 환경 설정
2. common : 프로젝트 전반에서 공통으로 사용되는 유틸리티 함수 및 클래스를 제공한다.
- utils: 테스트 자동화에 필요한 유틸리티 함수를 정의
- locators: 모든 페이지 객체에서 사용되는 요소 locator들을 정의
3. data : 테스트 데이터를 저장한다.
- test_data: 테스트에 사용되는 데이터를 정의 (예: 유효한 로그인 정보, 잘못된 로그인 정보 등)
4. screens : 앱의 각 화면(페이지)에 해당하는 페이지 객체 클래스를 저장한다.
- login: 로그인 관련 페이지 객체 클래스 정의
- my: 마이페이지 관련 페이지 객체 클래스 정의
5. automation : 테스트 시나리오를 구현하는 테스트 스크립트를 저장한다.
- test_scenario: 자동화 테스트 시나리오를 구현하는 클래스를 정의
시나리오간 의존성 문제 고민 Point
시나리오를 연속되어 수행하게 되면 시나리오 간의 의존성 충돌 문제가 생겼다.
예시로, 테스트 시나리오 1번이 수행되어서 정상적으로 로그인에 성공했는데,
그다음 테스트 시나리오 2번이 수행되려면 로그아웃을 하고 로그인 페이지까지 와야 하는 작업이 필요했다.
‘로그아웃을 하고 로그인 페이지까지 와야하는 작업’ 이런 작업들이 각 테스트 시나리오마다 추가될 때
다르다는 것이 예상된다. 따라서 두 가지 고민을 하게 되었다.
- 테스트 시나리오마다 드라이버를 파라미터로 받아 독립적으로 처리한다
=> 기존에 여러 디바이스에서 테스트가 수행되는 것을 테스트할 때 Pytest의 fixture 기능을 알게 됨 - 각 테스트 시나리오가 전 후의 시나리오에 영향을 안 가게 하는 방법이 없을까?
=> 테스트 수행이 완료되면 앱만 종료 후 재실행할 수 있는 방법이 없을까?
각 테스트 시나리오마다 세션을 독립적으로 수행하게 되면 테스트 수행 시간이 길어질게 예상된다.
따라서, 세션은 연결된 상태 + UiAutomator2 속성인 no_reset=Ture 인 조건에서,
앱만 종료하고 재실행할 수 있는 방법을 찾아보았고, android UiAutomator2드라이버에서 제공하는
메서드를 통해 앱을 종료하고 재실행하는 방법을 찾아 적용했다.
def restart_app(driver):
"""
앱을 종료하고 다시 시작합니다.
"""
driver.terminate_app(app_package)
driver.activate_app(app_package)
Util 함수로 만들어서 각 테스트 시나리오가 수행된 후 호출하도록 적용해 보았다.
'2024 > QA' 카테고리의 다른 글
[QA] 테스트 피라미드 with The Practical Test Pyramid (0) | 2024.08.29 |
---|---|
[QA] 테스트 자동화 환경 구축하기 docker, jenkins (1) | 2024.08.16 |
[트러블슈팅] Appium 드라이버 초기화 이슈 (0) | 2024.08.03 |
[트러블슈팅] Appium 프로젝트명 변경시, 독립된 가상환경 이슈 (0) | 2024.08.03 |
[QA]ISTQB FL 자격증 후기 / Syllabus 4.0 개편버전 (0) | 2024.07.01 |