TEST

2020-02-25
스프링 프로젝트에서는 외부 API 모듈을 RestTemplate를 이용해서 호출하는 경우가 많습니다, 이런 경우 RestTemplate을 기반으로 Mock 테스트를 보다 쉽게 진행할 수 있습니다. 왜 Mock 기반 테스트를 진행 해야하나 ? 외부 인프라스트럭처를 테스트 코드를 작성할 때는 mock 기반으로 테스트를 진행해야 합니다. 외부 인프라스트럭처에는 대표적으로 외부 API가 있습니다. 그런데 왜 Mock 기반으로 테스트해야 할까요? 외부 환경이기 때문에 제어권이 우리 밖에 있습니다. 그래서 우리 코드의 테스트를 위해서 Request, Response가 우리가 주어진 값인 경우 정상 동작하는지 테스트하기 위함입니다....
2019-09-17
Spring WebFlux와 Kotlin으로 만드는 Todo 서비스 – 1편 Spring WebFlux와 Kotlin으로 만드는 Todo 서비스 – 2편 Spring WebFlux와 Kotlin으로 만드는 Todo 서비스 – 테스트 슬라이스 적용하기 개요 지난 예제들에선 간단한 Todo 예제를 만들고 개선해봤습니다.  또한 그렇게 만들어진 예제의 CRUD를 curl을 이용해 동작을 검증하였습니다.  하지만 변경 사항이 발생하였을 경우 매번 애플리케이션을 재기동 하여 잘 동작하는지 확인해야 했고 각각의 모듈이 어떤 기능을 하는지 알기 어려웠으며, 정상 수행에 대한 피드백을 빠르게 얻기 힘들었습니다. 물론 현재는 작은 규모의 프로젝트이지만 나중엔 기능을 추가하고 안정성을 강화해 프로덕션 규모의 큰 애플리케이션으로 바뀔 수도 있습니다. 이런 경우엔 테스트를 효율적으로 작성하는 전략이 중요해집니다. 이번 편에선 지난 예제를 기반으로  테스트를 작성해보면서 Spring Boot에서 지원하는...
2019-08-29
해당 코드는 Github 에 공개되어 있습니다. 스프링 기반으로 많은 테스트 코드를 작성하면서 느꼈던 나름의 고찰과 어려움을 정리하는 포스팅입니다. 사실은 테스트 코드 작성 시 효율적인 방법을 소개하는 포스팅을 진행하려 했으나 이런저런 고민들 때문에 명확한 결론이 나지 않아서 이런 고민들을 정리한 포스팅입니다. POJO 테스트는 언제나 옳다 이전에 포스팅한 Test 전략 가이드 , Spring Boot 테스트 종류 등 스프링에서는 매우 다양한 테스트 방법을 제공해주고 있습니다. 이런 Slice 테스트 지원으로 테스트 하고자 하는 레이어를 부분적으로 빠르게 테스트할 수 있습니다....
2019-05-20
데이터베이스 테이블에 CRUD CreateReadUpdateDelete 를 제공하는 간단한 REST API를 구현한다고 생각해 보자. 테스트 코드는 어떻게 작성할 수 있을까? 먼저 목 객체 MockObject 이나 스텁 Stub 같은 테스트 대역 Test Double 을 사용하여 단위 테스트를 작성할 수 있을 것이다. 그리고  더 많은 동작에 대한 확신을 얻기 위해서 테스트 대역을 사용하지 않고 테스트하기를 원할 수 있다. 흔히 통합 테스트라고 말하는데 이런 테스트를 작성하다 보면 테스트 데이터베이스와 테스트 데이터가 필요하다. 이 글은 테스트 픽스처...
2019-02-19
해당 코드는 Github 에 공개되어있습니다. Spring Guide Test 전략 가이드 Exception 전략 가이드 Domain 객체 가이드 외부 API 가이드 Service 적절한 크기 가이드 스프링은 다양한 테스트 전략을 제공하고 있습니다. 대표적으로 Slice Test 라는 것으로 특정 레이어에 대해서 Bean을 최소한으로 등록시켜 테스트 하고자 하는 부분에 최대한 단위 테스트를 지원합니다. 다양하게 지원해주는 만큼 테스트 코드를 통일성 있게 관리하는 것이 중요합니다. 더 안전하고 통일성 있게 테스트를 진행하는 방법에 대해서 제 나름의 노하우를 정리해보았습니다....
2018-03-08
QA에 대한 오해의 시선에 대한 경험과 이 이면을 살펴보는 글입니다....
2018-01-24
요즘은 굳이 MSA Microservices Architecture 가 아니더라도 프론트엔드 Front-end 와 백엔드 Back-end 를  구분하여 프론트 엔드는 Anguler나 React로 개발하고 백엔드는 프론트엔드에서 사용할 API를 제공하는 것을 흔히 찾아 볼 수 있다. 이때 부딪치게 되는 문제가 CORS Cross Origin Resource Sharing 이다. CORS 개념에 대한 자세한 설명은 김형준 님의 글(CORS, Preflight, 인증 처리 관련 삽질) 에 잘 나와 있다. 프론트엔드에서 API 호출 시 CORS 문제가 생기지 않도록 API 서버 개발자는 CORS 관련 설정을 해주어야 한다. API 서버 개발자는 CORS 설정이 제대로 되었는지 어떻게 확인할 수 있을까? 가능하면 실제 운영하는 서버에 코드를 배포하기 전에 개발자 자신의 로컬 환경에서.....
2017-12-22
요즘은 AWS ( Amazon Web Service ), GCP ( Google Cloud Platform ), Azure 를 이용하면 쉽고 저렴하게 테스트 환경 구축할 수 있습니다. 그러나, 개인적으로 틈틈히 테스트 환경을 구축하는 경우에, 장시간 인스턴스를 죽이지 않아서 생각지도 않은 과금눈탱이을!? 맞아 본 분들이 많을 겁니다.  저같이 매달 카드명세서를 꼼꼼이 보지 않거나, Invoice 메일을 무시하다 보면 거지꼴을 못면합니다. ㅠㅠ 그렇기에 가난한 개발자, 엔지니어에게 있는 것운 노트북뿐!! Oracle VirtualBox 를 활용해보겠습니다....
2016-10-12
Software 개발에 있어 QA 역할에 대한 정의 및 어떤 일을 하는지 소개하는 글입니다....
2016-08-09
기본적으로 Rails project를 개발하게 되면 ActiveRecord 모델, Migration을 통한 DB 테이블 생성등을 떠올리게 되는데요, 조금 복잡하고 큰 프로젝트를 경험하다 보니 하나의 Master DB를 여러 프로젝트에서 공유하는 것을 종종 볼 수가 있습니다. 서로 다른 project에서 각자 필요한 table들을 하나의 Master DB에 생성하게 되는데요, 이런 경우에 migration을 통한 DB관리가 힘들어 지게 되어 이번 글을 통해 migration이 없는 프로젝트의 test 환경 구축에 대해 설명을 드리도록 하겠습니다....
더보기