-
Test Code에 관하여Code Etc/Test-Code 2022. 7. 15. 08:46반응형
Unit Test > Integration Test > E2E Test(End to End)
비용>>>
속도>>>
Unit Test : 단위 테스트이다. 독립적인 함수, 모듈, 클래스
Integration Test : 통합 테스트. 이들의 상호작용을 테스트한다.
E2E Test : UI테스트, 사용자 테스트. 사용Flow를 테스트한다.
TDD란?
Test-driven development 개발 전 테스트 코드를 먼저 작성하는 개발.
테스트 코드를 작성해서 성공하면 다음 테스트 코드를 작성해서 조금씩 나아간다.왜 TDD일까??
Test Code를 작성하려면 요구사항을 분석하고 이해할 수 있어야하며 이는 설계 질의 향상으로 이뤄진다.
인터페이스 위주 코드를 작성하게 되므로 코드의 퀄리티가 향상된다.
모든 요구 사항에 대해 점검할 수 있다.
TDD는 항상 해야하는 것은 아니지만 Git에 Merge하려면 내가 작성한 코드에 무조건 Test Code가 포함되어야한다.
Unit TestTest Runner : 테스트를 실행 후 결과 생성
Assertion : 테스트 조건, 비교를 통한 테스트 로직
좋은 테스트 원칙1. 한번 작성된 테스트 코드는 영원히 유지보수 해야 한다.
2. 사용자 입장에서 API까지만 Test한다.
3. 재사용성을 높이기
4. 배포용 코드와 철저히 분리시킨다.
5. 테스트코드를 통한 문서화에 편리하다.
Fast 느린것에 대한 의존성 낮추기(파일이나 DB Network)
Isolate 최소한의 유닛으로 검증하기
Repeatable 실행할 때마다 동일한 결과를 유지
Self-Validating 스스로 결과를 검증하기
Timely 시기적절하게 테스트 코드 작성
테스트 범위Right-BICEP
모든 요구 사항이 정상 동작 하는지 확인
Boundary conditions : 모든 코너 케이스에 대해 테스트를 하기 //잘못된 포맷, 인풋, 특수문자 등등
Inverse relationship : 역관계를 적용하여 결과값을 확인
Cross-check : 다른 수단을 이용해서 결과값이 맞는지 확인
Error conditions : 불행한 경로에 대해 우아하게 처리하는가
Performance charactoristics 성능확인은 테스트를 통해 정확한 수치로 확인CORRET
Conformance : 특정 포맷을 준수
Ordering : 순서 조건 확인하기(순서가 중요한 경우)
Range : 숫자의 범위(제한된 범위보다 작거나 큰 경우)
Reference : 외부 의존성 유무, 특정한 조건의 유무
Existence : 값이 존재하지 않을때
Cardinality : 0-1-n 범위에 따라 검증
Time : 상대, 절대, 동시의 일들(순서가 맞지 않는 경우)반응형