티스토리 뷰

공부

UITest (2) - Recording UI Test

Zedd0202 2020. 7. 8. 13:53
반응형

 

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

zeddios.tistory.com/1061

 

UITest (1) - UITest란?

안녕하세요 :) Zedd입니다. 저희 파트의 안드로이드 개발자 분이 UITest에 대해서 라이트닝 토크를 해주셨어요!! 뭔가 보고 인상이 깊어서...저도 UITest를 공부해보게 되었습니다. 완전 진짜 1도 모르

zeddios.tistory.com

UITest가 어떤건지...맛만 봤는데. 본격적으로 해봅시다. 

일단 제가 테스트 할 앱은

 

 

이거에요!

자 이제 UITest짜기만 하면 돼요.

근데 현재 내 지식상태 : 

 


어 그래 UITest 그래 야 그래 알겠어 그래

그래 이제 해볼려는데 메소드...메소드 뭐가있지

그래 앱 실행했어 그래 

이제 어떻게 해야해


ㅋ....

UITest를 정말정말 간단하게 시작할 수 있는 방법이 있습니다.

바로 UI Recording을 통해서요.

시작해봅시다.

제 환경은 Xcode 12 Beta 1입니다.

1. setUpWithError

 

UITest는 일단 앱이 실행되어야 하잖아요!? setUpWithError에 앱을 실행하는 코드를 넣어주겠습니다.

 

2. 테스트 메소드 정의

그리고 오른쪽 그림처럼 테스트 메소드 안쪽에 커서를 위치시켜줍니다.

그리고 왼쪽 하단에 보시면

이런 녹화 버튼 같이 생긴것을 볼 수 있습니다.

 이 버튼은 테스트 메소드 안에서만 활성화 되며, 테스트 메소드 바깥에서는 비활성화 됩니다.

 

3. Recording

자, 그럼 눌러줍시다.

그럼 갑자기 흠..저거를 뭐라해야하는지 모르겠네....암튼 왼쪽에 저런게 생기면서

앱이 실행됩니다.

 

이제부터가 하이라이트 인데요.

녹화중인 상태에서 제가 앱에서 어떤 행동을 하면 그게 다 코드화(?) 됩니다!!!!!

정말 신기....하죠!?!?!? 저는 너무 신기했는데..!!!!!!!!!!!!

Unit Test는 제가 처음부터 끝까지 직접 짜야하잖아요!

근데 UITest는 이 UI Recording기능을 이용하면 편하게 시작할 수 있어요. 

 

자 

이제 중지를 눌러주고, Xcode가 짜준 UITest를 실행해보겠습니다. 

화질구지라 잘 안보이실 수도 있는데 제가 키보드를 치는게 아니에요!!!!!!

저 코드가 그냥 실행되면서 쳐지는 겁니다.

자..이렇게 간단하게 UITest하나를 만들 수 있죠. 

 


참고로 제가 setUpWithError에서

해당 코드를 넣어준 이유는 UI Recording이 따로 launch()메소드는 자동으로 써주지 않더라구요!?

그러니까 Xcode가 만들어준 테스트를 실행하기 전에,

테스트 메소드 안이나 setUpWithError에 launch를 꼭 호출해주세요.


 

오늘은 그냥 이런 기능이 있다고만 아시면 됩니다..

 

그럼 이제부터 ^^;;;;;;;

UI Recording의 문제점에 대해 이야기해보겠습니다. 

 

1. 사실 Xcode가 자동으로 만들어주는 코드를 보면...뭔가 아름답지 않습니다. 

** 

근데  WWDC2015의 UITesting in Xcode 보면 안이렇거든요?

제가 뭘 잘못하는건지..Xcode가 2015년에 비해 퇴화한건지;;;;;;

그래서 굳이 손봐준다면...

- 리팩토링

typeText를 이용하면 됩니다.

WWDC2015의 UITesting in Xcode 에서는 처음부터 typeText로 나오던데 ㅠㅠㅠ 제가 뭘 잘못하는건지..

 

- 이전 코드

이전 코드와 비교하면 훨씬 읽기 쉽죠..!?

그리고 각자 실행해보면 아시겠지만, 아래 코드같은경우에는 key를 하나하나 입력하다보니 굉장히 느립니다. 

첫번째꺼는 파바바박 이런느낌이라면 두번째는 텁, 텁, 텁 이런느낌...;;;;

실행해보시면 압니다. 

(프로젝트는 github에 올려놨습니다. )

 

2. 에러;

방금 저희가 한것처럼 이렇게 XCUIApplication을 예쁘게 초기화 할 때도 있고

도대체 제가 뭐를 잘못하는건지 몰라도 XCUIApplication()이 초기화됐다가도 갑자기

지혼자 app2를 만들더니..app2는 초기화도 안함

혹시 이거 원인 아시는 분 있나요 쿠ㅜㅜㅜ

 

 

암튼 UI Recording이라는 기능이 있고, 이걸로 UITest를 쉽게 시작할 수 있습니다.

또한 기존 테스트를 확장할 수 있게됩니다.

 

 

하지만 뭔가 빠진것 같죠...🤔

 

네 맞습니다..

Assertion부분이 없습니다!!!!!!!!!!!!

걍 실행하고 끝임.. 

 

참고로 UITest에서는 Assertion이 없어도 실패할 수 있습니다.

 

 

이렇게 화면에서 요소를 못찾으면 실패하게 됩니다.

만약 요소를 다 정상적으로 찾을 수 있으면 테스트는 무조건 성공하겠죠?!

 

하지만 Assertion은 있어야겠죠..!?!

다음 글에서는 Assertion도 추가하는 걸 해볼게요. 

 

프로젝트는 github에 올려놨습니다. 

저는 Xcode 12 Beta 에서 해서..Xcode 12가 아니시라면

 testLaunchPerformance메소드가 에러가 날거에요!

지우고 해주세요~

 

글에 틀린 부분이 있다면 꼭!! 댓글 달아주세요!!!!!

반응형

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

Clean Architecture  (5) 2020.07.17
UITest (3) - XCUIApplication / XCUIElement / XCUIElementQuery  (3) 2020.07.09
UITest (1) - UITest란?  (0) 2020.07.06
Xcode Source Control  (3) 2020.07.03
Feedback Assistant  (0) 2020.07.02