목차
- 테스트 코드를 왜 해야하는지
- 테스트의 종류
- UI 테스트, 통합 테스트, 단위 테스트
1. 테스트 코드를 왜 해야하는지?
제가 테스트 코드를 작성하려고 마음 먹은 이유는 걱정이 많아서 수동으로 테스트하다가
앱이 점점 커지니까 테스트 하는 시간도 점점 커져서 테스트 시간 단축을 위해 테스트 코드 작성을 고려하게 됐습니다.
막상 도입하려고보니 테스트 코드를 추가로 작성하는 것이기 때문에 개발 시간이 증가하는 것이 아닌가 생각이 들었지만
시간이 부족하다면 굳이 모든 함수, 코드에 테스트 코드를 작성할 필요 없으니까
효율적으로 자주 하는 테스트만 테스트 코드로 작성하여 돌리는 것으로 하면 개발 비용을 줄일 수 있다는 결론에 도달했습니다. 👍
3. 테스트의 종류
Xcode 에서 XCTest로 논리 오류, UI 문제, 성능 회귀를 감지할 수 있다고 하네요.
그럼 각각을 어떻게 테스트할 수 있을까요?
4. UI 테스트, 통합 테스트, 단위 테스트
- UI 테스트: 앱의 코드를 직접 실행하는 대신 실제 사용자처럼 앱의 사용자 인터페이스 컨트롤을 사용하여 사용자가 앱을 사용하여 특정 작업을 완료할 수 있는지 확인
- 버튼을 눌러서 실제로 원하는 대로 작동하는지 확인(버튼 누르는 것도 코드로 작성 가능) - 통합 테스트: 중요한 상황에서 구성 요소가 함께 작동하여 앱 목표를 달성하는지 확인
- 컨트롤러에서 받은 값이 모델에 올바르게 저장되었는지 - 유닛 테스트: 프로젝트의 메서드가 단일 경로의 예상 동작을 하는 지 확인
- 토끼가 점프하는 메서드가 있다. 매개변수로 입력받은 수의 2배를 점프하는 시스템이라고 가정해 보자
그럼 매개변수로 2를 넣어주면 토끼는 4만큼 점프하는지 확인하면 된다. 그런데 만약 매개변수에 nil도 넣을 수 있다면?
nil을 넣는 테스트 함수를 하나 더 만들어주면 된다. 예상되는 시나리오가 만들어지는 개수대로!
그리고 위에 피라미드에
- Fidelity to User Goals: 사용자가 작업을 완료할 수 있음을 보여주는 충실도
- UI Tests: 사용자가 UI를 사용하는 것처럼 테스트하는 거니까 '원하는 대로 화면이 나오면 사용자가 작업을 완료할 수 있다.'라고 판단할 수 있는 는 비교적 신뢰도 높은 근거가 될 수 있습니다. (유닛 테스트, 통합 테스트랑 비교했을 때) - Precision of feedback: 앱 논리의 정확성 및 변경 사항의 영향에 대한 빠른 피드백의 정도
- UI Tests: 유닛 테스트처럼 특정 코드를 실행시켜 보는 게 아니라 버튼을 눌러보는 것이기 때문에 정확하게 어떤 코드가 잘못된 건지 피드백을 빠르고 정확하게 받을 수 없습니다.
아 그리고 위에 성능테스트도 할 수 있다고 했는데 이 피라미드엔 없어요. 아래쪽에 출처 적어놨는데 애플 홈페이지 들어가 보시면 하는 방법이 나와있습니다!!
다음 글에서는 각 테스트 종류별로 좀 더 자세하게 작성해보겠습니다!
출처
https://developer.apple.com/documentation/xcode/testing-your-apps-in-xcode
반응형
'테스트코드' 카테고리의 다른 글
Snapshot Testing (feat. iOS) (0) | 2023.03.26 |
---|---|
통합 UI 테스트코드 짜는 법 (0) | 2023.02.26 |
테스트 파일에 있는 resource 접근하기 - Swift (0) | 2021.10.25 |