본문 바로가기

TEST5

동시성 이슈 해결 방법 (synchronized , redis Lock, MySQL Lock) 보호되어 있는 글 입니다. 2024. 2. 18.
성능테스트 (with Locust) 기능의 동작이 가장 중요하지만 사용자가 많을 수록, 인기 있는 서비스일 수록 성능의 중요성은 비례해서 증가합니다. 현재 근무하고 있는 서비스기업에서는 특별하게 트래픽이 올라가는 시간대 또는 이벤트가 없고 전체적으로 24시간 평범하다고 판단할 수 있어 성능테스트에 대한 중요성은 간과하고 있었습니다. 강의를 찾아보면 항상 트래픽에 대한 중요성과 단위테스트, 성능테스트에 대한 과정은 포함되어 있었던 것 같습니다. 아직 많이 부족하고 성능을 튜닝하는 방법에 대해서도 많이 학습해야 하지만, 베이스는 현재 어느 정도의 트래픽을 수용할 수 있는지에 대해 파악하는 것이라고 생각합니다. 현업에서도 사용해서 성능향상에 도움되도록 더 자세히 공부해봐야겠습니다. -- 간단하게 Locust 를 docker 로 작동시켜 성능 테.. 2024. 2. 17.
spring boot 빌드 시, 특정 테스트 제외하기 프로젝트를 배포하는 과정에서 build 할 때 테스트코드 실패로 인해 진행이 불가능할 때가 있다. 로컬에서는 이상없이 돌아가지만, 배포 시 문제가 된다. 이에 특정 테스트를 제외할 수 있는 방법이 있다. 나는 프로젝트에서 서비스레이어 테스트는 단위테스트(mock 사용) 을 하고 , 컨트롤러 테스트는 통합테스트 (springbootTest) 를 진행했다. 단위테스트는 mock 객체를 사용하므로, DB 의 내용과 관계가 없기 때문에 빌드할 때 포함해야 한다고 판단했고, 통합테스트는 DB 안에 있는 값으로 성공여부를 판단하기 때문에, 빌드시 제외해 주기로 했다. build.grade 에 아래의 코드를 추가하면된다. 해당 코드의 뜻은 ControllerTest 가 포함되어 있는 테스트는 제외한다는 뜻이다. 정규.. 2023. 1. 19.
@RequestPart MultipartFile , Json 컨트롤러 통합 테스트 프로젝트 중 상품 등록 컨트롤러를 통합테스트 하는 과정에서 오랜시간 동안 테스트 실패로 시간을 투자했다. 아무리 구글링을 해도 지금 나와 맞는 조건에서 진행한 테스트 코드가 보이지 않아 최대한 응용을 해보고 계속해서 테스트를 돌려보는 수밖에 없었다. 먼저 상품 등록 컨트롤러는 아래와 같다. 상품 등록 시, 상품에 관련된 내용과 상품 이미지를 같이 입력받아 저장해야 한다. 상품 등록에 관한 정보는 JSON 데이터지만 상품 이미지는 이미지로 form -data 타입으로 넣어주어야 한다. @PostMapping(value = "/goods") @ResponseStatus(HttpStatus.CREATED) @PreAuthorize("hasAnyRole('SELLER')") @ApiOperation(value .. 2023. 1. 7.
Page 테스트 코드 작성하기 프로젝트 중 "상품 전체 검색" service 레이어를 단위테스트 하는 과정에서 Page 에 대한 내용을 어떻게 mock 으로 주입해야하는지에 대해 알아보았다. 테스트할 서비스는 아래와 같다. @Override @Transactional(readOnly = true) public List goodsFindAll(Pageable pageable) { Page goods = goodsRepository.findAll(pageable); List list = new ArrayList(); for (Goods good : goods) { list.add(GoodsResponse.toGoodsResponse(good)); } return list; } JUnit5 와 mock 을 이용해서 테스트코드를 작성한 내용.. 2022. 12. 26.