2024.03.06 - [iOS/SWIFT] - [Swift]Unit Test (1) 코드 테스트의 원칙
2024.03.07 - [iOS/SWIFT] - [Swift] Unit Test (2) 유닛 테스트 시작하기
테스트 코드라는 거 많이 들어보셨죠?
Integration Test, UI Test, Unit Test, End-to-End Test... 등등
그 중에 유닛 테스트, 단위 테스트란 무엇일까요?
사용하려는 개별 기능이 개발자의 의도에 맞게 동작하는지 작은 단위로 테스트 하는 것을 의미합니다!
단위 테스트는 보통 이런 과정을 거쳐 작성합니다
- 테스트 대상을 선택하기
- 테스트 케이스를 작성하기
- 테스트 실행하기
- 예상한 결과와 테스트 실행 결과가 일치하는지 확인하기
- 위의 1-4를 반복!
개발자는 이런 테스트를 활용해서 코드가 예상대로 동작하는지 확인하고
코드의 변경 사항이 예상치 못한 결과를 반환하지 않게 보장할 수 있어요
이번에는 Unit Test를 도입하기 전,
알아두면 좋을 부분을 가져왔습니다
🩵 7가지 테스트 원칙
테스팅을 하는 데도 원칙이 있다고 합니다
40년간 관찰된 내용을 기반으로 한 7가지 원칙이 있어요!
테스트는 결함의 존재를 보여준다
- 테스트 코드는 결함이 있다는 것은 알려줄 수 있습니다
- 하지만 결함이 없음을 보장하지는 않습니다
- 결함이 남아있을 확률을 줄여주는 것이죠
완벽한 테스트는 불가능
- 모든 케이스의 테스트를 진행하는 건 현실적으로 불가능합니다
- 위험도, 우선순위를 잘 정해서 중요한 것 부터 테스트 합시다
테스트 구성은 최대한 빨리!
- 결함을 조기에 발견하려면 가능한 한 빠르게 테스트 코드 작성을 시작해야 합니다
- 분석, 기획 단계부터 테스트팀과 함께하면 빠르게 결함을 발견하여 리소스를 크게 줄일 수 있습니다
결함은 밀도가 높다
- 결함의 8할은 아주 작은 코드의 오류에서 나옵니다
살충제 역설 Pesticide Paradox
- 비슷한 테스트가 반복되면 새로운 결함을 찾을 수 없습니다
- 이를 방지하려면 테스트 케이스를 주기적으로 수정하고 검토해야 합니다
- 새롭고 다양한 테스트를 만드는 것도 중요합니다
테스트는 상황에 따라 다르다
- 테스트에 대한 집중은 프로그램의 요구 사항/ 용도에 따라 달라집니다
- 은행 애플리케이션은 금융, 정보 보호가 중요하므로 보안, 안정성에 대한 테스트에 중점
- 게임 애플리케이션의 경우, UX와 게임의 재미가 중요하므로 성능, UI에 대한 테스트에 중점
오류 부재의 오류
- 사용하지 않는 시스템 / 사용자가 기대하지 않는 기능의 결함을 찾고 수정하는 것은 의미가 없습니다
🩵 FIRST 원칙
Fast
- 유닛 테스트는 빨라야 함
Isolated
- 다른 테스트와 종속 관계를 가지지 않는다
- 독립적으로 동작
Repetable
- 실행을 몇 번 하더라도 같은 결과를 반환
Self-validating
- 테스트가 스스로 결과가 올바른지 아닌지를 판단할 수 있어야 함
- 개발자는 코드를 변경할 때마다 수동으로 테스트 결과를 검토할 필요가 없음
- 현대적 소프트웨어 개발 방법론에서 강조함
- 테스트 주도 개발(TDD)
- 지속적 통합(Continuous Integration, CI)
- 지속적 배포(Continuous Deployment, CD)
Timely
- 실제 기능 구현 코드를 테스트 코드를 먼저 작성한 후에 작성해야 함
- TDD(테스트 주도 개발 / Test-driven Development)의 기본 원칙
테스트 코드를 작성할 때 기억해두고 지켜야 할 원칙을 정리해봤습니다
가장 중요한건 독립적으로 작은 단위 테스트가 가능하게 만들어야 한다는 점 같네요!
다음에는 Unit Test를 시작하는 방법에 대한 글을 작성해보겠습니다!
~ヾ(^∇^)
2024.03.06 - [iOS/SWIFT] - [Swift]Unit Test (1) 코드 테스트의 원칙
2024.03.07 - [iOS/SWIFT] - [Swift] Unit Test (2) 유닛 테스트 시작하기
https://www.utest.com/articles/seven-testing-principles
https://howtodoinjava.com/best-practices/first-principles-for-good-tests/
'iOS > Swift' 카테고리의 다른 글
[Swift] static / class 키워드 (0) | 2024.03.18 |
---|---|
[Swift] Unit Test (2) 유닛 테스트 시작하기 (0) | 2024.03.07 |
[Swift] 열거형 Enumeration / 타입 안정성 (0) | 2024.03.04 |
[Swift] iOS 알림 설정 허용받기 - User Notifications (0) | 2024.03.02 |
[Swift] CollectionView 동적으로 Cell 크기 계산하기 (2) | 2024.03.01 |