THIS IS ELLIE

iOS 유닛 테스트 시작하기 / 단위 테스트 본문

공부/Unit Testing

iOS 유닛 테스트 시작하기 / 단위 테스트

Ellie Kim 2023. 3. 4. 14:34

안녕하세요 :)

오늘은 유닛 테스트에 대해서 작성해 보겠습니다.
저한테 유닛 테스트는 참 숙제 같은 친구네요.

앞으로 유닛 테스트에 관련된 포스트가 종종? 올라올 것 같습니다.


유닛 테스트가 뭐야(what)?

유닛 테스트는 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차입니다.
다시 말해 애플리케이션에서 작동하는 하나의 함수 또는 메소드에 대한 테스트 케이스를 작성하는 절차를 말합니다.

 

그래서 이걸 왜(why) 하는데?

1. 프로그램의 안정성이 높아진다.
유닛 테스트의 목적은 프로그램의 각 부분을 고립시켜 각각이 정확하게 동작하는지 확인하는 것입니다.
즉, 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고
이를 통해 문제 발생 시 정확하게 어느 부분이 잘못되었는지 재빨리 확인할 수 있게 해 줍니다.

2. 테스팅에 대한 시간과 비용을 절감할 수 있다.
위랑 조금 겹치지만? 유닛 테스트를 한다는 것은 해당 부분만 독립적으로 테스트하기 때문에
테스트 코드를 수시로 빠르게 돌리면서 어떤 것이 문제 인지 빨리 파악할 수 있어
디버깅 시간을 단축시킵니다.

3. 변경이 쉽다.
리팩토링 후에도 해당 모듈이 제대로 동작하고 있음을 유닛 테스트로 확인할 수 있습니다.
어떻게 코드를 고치더라도 문제점을 금방 파악할 수 있고
수정된 코드가 정확하게 동작되는지 쉽게 알 수 있습니다.

 

좋은 테스트 코드의 특징은?
빠르게 동작하여 자주 돌릴 수 있어야 합니다.
각각의 테스트는 독립적이며 서로 의존해서는 안됩니다.
어느 환경에서도 반복 가능해야 합니다.
테스트는 성공 또는 실패로 결과를 내어 자체적으로 검증되어야 합니다.
테스트하려는 실제 코드를 구현하기 직전에 구현해야 합니다.

 

그래서 무조건 좋냐?
그건 또 아닙니다...
읽기 어렵고 불안정한 유닛 테스트는 코드 기반을 파괴할 수 있습니다.
어쨌든 유닛 테스트도 잘 짜야함...


아주 간단한 테스트를 위해 프로젝트 하나를 만들어줍니다.

프로젝트를 생성할 때 테스트 포함을 꼭 체크해 주세요!

만들면 왼쪽 Navigation Area에 테스트 파일이 추가된 것을 확인하실 수 있습니다.

들어가 보면 아래와 같이 나옵니다.

가장 간단한 계산기 테스트를 해볼게요.
Calculator 파일 생성 ㄱㄱ 

여기 계산기는 플러스랑 마이너스 밖에 없음

그리고 다시 UnitTestTests파일로 가서 테스트 케이스를 작성해 줍니다.
내가 테스트하고 싶은 건?
ㅇㅇ 플러스 잘 동작하냐?
ㅇㅇ 마이너스 잘 동작하냐?

5랑 5 더하면 10 나올 거야.
예상 결과 10이니까 XCTAssertEqual사용해서 동등 비교해 줍니다.

5랑 5 빼면 0 나올 거야.
예상 결과 0이니까 XCTAssertEqual사용해서 동등 비교해 줍니다.

그리고 RUN
(아 멀리 걍 튀고 싶다)

테스트에 성공했대여

만약 결과랑 다른 값을 넣으면?

당연히 실패

만약에? 첩자(본인일 확률 높음)가 더하기를 곱하기로
빼기를 나누기로 바꿔도? 유닛 테스트로 잡아낼 수 있음

여기까지 간단하게 유닛 테스트에 대해서 알아봤습니다.

 

여기에 XCTAssertEqual 말고 제공하는 함수 많으니 확인해 보시면 더 좋을 것 같습니다.
https://developer.apple.com/documentation/xctest

반응형