Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 썸네일 #이미지
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
- 프로세스 #CPU #시공유 #커널
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- 비트 #바이트 #이진수
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
Archives
- Today
- Total
요리사에서 IT개발자로
테스트 코드의 중요성 본문
프로젝트의 규모가 커질수록
간단한 기능 추가 또는 수정시 다른곳에 어떤 영향을 끼칠지 확신할 수 없다.
잘 동작하던 기능에도 이상이 생길 수 있다.
복잡한 기능일수록 내가 구현한 코드가 의도한대로 동작하는 지에 대한 검증이 필요하다.
테스트 코드는 모든 비즈니스로직에 대한 테스트 코드를 작성하는 것이 아니다.
단위 테스트란
작은 코드 조각(단위)를 검증
빠르게 수행되어야 하고
격리된 방식으로 처리하는 자동화 테스트이다.
비즈니스 로직을 외부 의존성으로 부터 격리하여 테스트 하는것.
좋은 테스트란
도메인 모데리 및 알고리즘(Dto, Entity, Util클래스)
노력 대비 단위 테스트의 가치가 매우 높다
해당 코드가 복잡하거나 중요한 로직을 수행해서 테스트의 회귀 방지가 향상된다
외부 의존성이 없어 테스트 유지비를 낮추기에 저렴하다.
간단한 코드는 테스트할 필요가 전혀없다.
컨트롤러는 엔드 투 엔드 테스트가 적합하고
단위테스트를 적용할 곳이 아니다.
좋은 단위 테스트의 4가지 특성
회귀 방지 : 기능오류를 방지해준다
리팩토링 내성 : 리팩토링을 해도 테스트가 깨지지않는다.
빠른 피드백 : 빠른 테스트 속도
유지 보수성 : 가독성과 재사용성이 좋고 실행되기 쉽게 작성되어야 한다.
@Test
@DisplayName("해당 게시글 존재하지 않는 테스트")
void test_NotFoundPost() {
given(postRepository.findById(anyLong())).willReturn(Optional.empty());
//Then
assertThrows(NotFoundException.class, () ->
postLikeService.addLikeToPost(1L, userDetails));
}
@Test
@DisplayName("해당 게시물에 이미 좋아요를 누른 경우 실패하는 테스트")
void test_AlreadyPostLike() {
given(postRepository.findById(1L)).willReturn(Optional.of(post));
when(postLikeRepository.existsByUserAndPost(any(), any())).thenReturn(true);
assertThrows(AlreadyException.class, () ->
postLikeService.addLikeToPost(1L, userDetails));
}
@Test
@DisplayName("본인 게시물의 좋아요를 누르면 실패하는 테스트")
void test_OwnPostsNotLiked() {
given(postRepository.findById(anyLong())).willReturn(Optional.of(post));
when(postLikeRepository.existsByUserAndPost(any(), any())).thenReturn(false);
assertThrows(IllegalArgumentException.class, () ->
postLikeService.addLikeToPost(1L, userDetails));
}
회귀 방지는 높이는 방법은
테스트가 가능한 한 많은 코드를 실행하는 것을 목표로 한다.
리팩토링 내성을 높이는 방법은
구현 세부 사항 대신에 최종 결과를 목표로 테스트를 작성하는 것이다.
테스트 코드가 모든 기능 오류를 방지해주는 것은 아니다.
반응형
'Spring' 카테고리의 다른 글
테스트 코드 작성? (단위테스트 JUnit) (0) | 2024.07.08 |
---|---|
Spring Boot @Transactional 요약 (0) | 2024.07.02 |
스파르타 코딩클럽 JPA 심화 JPARepository 기능 (0) | 2024.06.27 |
스파르타 코딩클럽 JPA 심화 트랜잭션 (0) | 2024.06.26 |
SQL 쿼리 delete메소드 작동에 대해 (0) | 2024.06.25 |