티스토리 뷰

공부

UITest (1) - UITest란?

Zedd0202 2020. 7. 6. 15:56
반응형

 

안녕하세요 :) Zedd입니다.

저희 파트의 안드로이드 개발자 분이 UITest에 대해서 라이트닝 토크를 해주셨어요!!

뭔가 보고 인상이 깊어서...저도 UITest를 공부해보게 되었습니다.

완전 진짜 1도 모르는 상태임ㅋ

그럼 시작하겠습니다!

 

UITest


 

먼저 UITest가 뭔지 공부하면 좋을 것 같아요.

UITest는 User Interface Testing이에요.

구구절절 정의를 말하기 보다는 영상으로 봅시다.

 WWDC2015의 UITesting in Xcode중 시연 부분이에요.

화질구지.....이지만...오른쪽 시뮬레이터 부분만 봐주세요.

 

UITest는 말 그대로 User Interface Test입니다!

Unit Test처럼 특정 코드에 대한 내부 지식이 없어도 되고, mock이나 stub같은것도 필요없죠.

실제로 앱이랑 상호작용하는 테스트입니다.

"사용자가 어떤어떤 workflow로 앱을 사용할 것 같은데.."

라고 생각했다고 칩시다.

제가 직접 workflow를 해볼수도 있겠죠!!!! 하지만 그걸 UITest로 자동화 할 수 있습니다.

UITest는 공부하시면 아시겠지만,

작은 변경으로 인해 테스트가 실패할 수 있기 떄문에 Unit Test보다 훨씬 취약해요.

하지만 그만큼 앱의 workflow가 의도한대로 작동한다는 훌륭한 증거가 되기도 합니다.

 

일단 해봅시다!@!!!!!

UI Testing Bundle을 추가해서 넣어주세요.

그럼 처음에 보면 이렇게 코드가 들어있을거에요

Unit test와 똑같이 setUpWithErrortearDownWithError가 있는 것을 볼 수 있습니다.

하는 일은 똑같습니다!

각 테스트가 실행되기 전에 setUpWithError가 호출되고

각 테스트가 실행되서 나서 tearDownWithError가 호출됩니다.

 

continueAfterFailure


 

 

이미 코드에 들어있는 continueAfterFailure가 궁금하실텐데요,

 

continue / After / Failure 

계속하렴,,,,,!!!! 실패한 후에도....!! 라는 뜻같은데요. 

맞습니다.

정확한 정의는 실패가 발생 한 후 테스트 메소드가 계속 실행되어야 하는지 여부를 나타내는 프로퍼티에요.

기본값은 true입니다. 

기본값이 true니까 실패가 발생해도 테스트 메소드가 계속 실행되겠네요.

나는 실패가 발생하면 테스트 메소드가 바로 실행을 멈췄으면 좋겠어!

그럼 false로 주면 되는겁니다.

 

애플 : "In UI tests it is usually best to stop immediately when a failure occurs."

UI 테스트에서는 일반적으로 오류가 발생하면 즉지 중지하는것이 가장 좋습니다.

 

그래서 처음부터 false로 줬나봐요.

 

App Launch


 

자..UITest를 실행하려면 일단 앱이 launch가 되어야겠죠?

그래서 각 테스트 메소드의 가장 처음에는, 테스트하는 앱을 실행해야합니다.

XCUIApplication은 앱을 실행 및 종료할 수 있는 앱의 "프록시"라고 해요.

- 앱의 시작 및 종료 lifecycle과 무관합니다. 테스트가 별도의 프로세스에서 진행중이기 때문.

즉 앱이 언제 시작되고 언제 종료할지 명시적으로 제어 할 수 있다고 합니다.

 

자 본격적인 UITest전용 메소드(?)를 공부해보기 전에, 제가 사용할 예제 앱을 같이 봅시다!

대충 이런앱 입니다. 

최상단에 TextField가 있고, TextField를 채우고 우상단 +를 클릭하면 해당 String이 TableView에 들어갑니다.

 

그럼 오늘은 간단하게만 해봅시다.

이 앱으로 UITest를 할 수 있는게 어떤것들이 있을까요!?

너무 trivial한 것들이기도 하지만 그냥 생각나는걸 다 말해봅시다.

1. 처음에 진입했을 때는 tableView에 추가된 row가 하나도 없어야합니다.

2. TextField에 내가 지정한(?) String이 잘 타이핑 되어야 합니다. 

3. 우상단 +버튼을 누를 수 있어야합니다. 

4. +버튼을 누르면 TextField의 String이 TableView에 row로 추가되어야합니다. 

 

뭐 이런것들이 있을 수 있겠네요. 본격적인 UITest는 다음글에서 해보겠습니다!

 

+ ) 수정

Alert에 TextField를 달아서 해보는 예제였는데, UITest에서 계속 에러가 나네요;;;;;

그래서 일단 예제앱을 조금 수정했습니다.

 

참고 : 

mildwhale.github.io/2019-11-30-uitest-1-beginning/

 

[iOS] Xcode를 이용한 UI 테스트 - 1

테스트 프로젝트 소개와 테스트 시나리오 작성하기

mildwhale.github.io

developer.apple.com/documentation/xctest/user_interface_tests

 

Apple Developer Documentation

 

developer.apple.com

developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html

 

User Interface Testing

User Interface Testing UI testing gives you the ability to find and interact with the UI of your app in order to validate the properties and state of the UI elements. UI testing includes UI recording, which gives you the ability to generate code that exerc

developer.apple.com

 

반응형

'공부' 카테고리의 다른 글

UITest (3) - XCUIApplication / XCUIElement / XCUIElementQuery  (3) 2020.07.09
UITest (2) - Recording UI Test  (1) 2020.07.08
Xcode Source Control  (3) 2020.07.03
Feedback Assistant  (0) 2020.07.02
SF Symbol 2를 살펴보자.  (0) 2020.06.27