Server Development/Testing (8) 썸네일형 리스트형 Integration Test 통합 테스트란? - 각 모듈들이 서로 상호작용이 잘 이루어지는지 검증하는 테스트 과정으로, 모듈을 통합하는 과정에서 발생하는 오류들을 발견할 수 있다. - 스프링 부트에서 통합테스트는 Controller -> Service -> Repositorty에 거친 하나의 API에 대해서 각 모듈들이 잘 연결되어 있는지 체크할 수 있다. - 블랙박스 테스팅(E2E(end to end), 실제 사용자의 환경과 거의 동일한 환경에서 테스팅)을 가능하게 한다. 장, 단점 장점 : UI 없이 테스팅 가능, 모든 빈을 컨트롤러에 올려 테스트하기에 실제와 유사한 환경 제공 단점 : 모든 빈을 올리기에 시간이 오래걸리며, 특정 빈이나 계층에서 발생하는 오류를 디버깅하기가 까다롭다. 설정 1. @SpringBootTest ->.. UNIT TEST - JUNIT5, Mockito Mockito - 개발자가 동작을 직접 설정하는 방식으로 가짜 객체를 만들어주는 테스트 프레임 워크 - 가짜 객체를 만들어 Spring내 객체간의 의존성 없이 테스팅이 가능하게 만들어준다. - 가짜 객체로 시뮬레이션(Stub)하여 단위 테스트를 진행하는 원리 관련 애너테이션 - @Mock : 가짜 객체를 만들어 줌. - @Spy : 시뮬레이션을 만들지 않은 메서드 사용시 해당 클래스의 실제 메서드를 그대로 사용하게 해줌 - @InjectMocks : @Mock, @Spy 둘 중 하나로 생성된 가짜 객체를 자동 주입. JUNIT5 + Mockto - 둘을 같이 쓰기 위해서는 결합이 필요하다. - 아래 내용을 클래스 상단에 작성 @ExtendWith(MockitoExtension.class) Mock객체에 .. Apache Jmeter 여러 서버 성능 테스터 중 Apache Jmeter에 대해서 정리해보고자 한다. Apache Jmeter 특징 - 서버의 성능 및 부하를 측정 가능하다. - 순수 자바 어플리케이션 오픈 소스 - 다양한 프로토콜/서버를 테스팅 가능하다. (HTTP, SOAP, FTP, DB, MAIL) - CLI를 지원 (CI, CD와 연결시 편리) 주요 기능 - Thread Group : Thread 관련 조정 - Sampler : 유저의 동작 (프로토콜 등 설정) - Listener : 서버의 응답에 대한 동작 (결과 리포트 등) - Configurtion : 서버에 요청을 보내고 응답을 받기 위해 필요한 설정 (JDBC Connection, 쿠키 등) - Assertion : 서버의 응답 결과가 특정 조건이 맞는지 .. Test Coverage with Jacoco Code Coverage - 소프트웨어의 테스트 수준이 충분한지를 측정하는 지표 - 테스트 코드 작성 후 해당 코드가 실행되었는지 테스트하는 지표를 의미한다. - 여러가지 도구 존재. ex) Jacoco Jacoco - JAVA 코드의 커버리지를 체크하는 라이브러리 - 테스트 커버리지를 측정해준다. - Runtime에서 측정 - 결과를 Html, xml, csv 형태로 저장해서 전달 테스트의 종류 - 블랙 박스 테스트 : 사용자 관점에서 입력에 대해 올바른 출력이 나오는지를 테스트 - 화이트 박스 테스트 : 개발자 관점에서 소스 내부 구조와 동작을 테스트 (Unit Test 등) Maven의 라이프 사이클은 다음과 같다. compile -> test -> package -> install -> deplo.. Unit Test with MVC 스프링에서 어떻게 단위테스트를 하는지 간략히 보려고한다. 보통 스프링은 controller - service - DAO 구조로 이루어지고 클래스들을 어떻게 단위테스트하는지 알아보려고 한다. 또한, 방식은 가정-실행-결과 순으로 이루어진다. 가정 : 어떤 조건이 주어지고 그 결과는 이렇다고 정해져있을 때, 실행 : 해당 가정을 통해 이 클래스를 실행하면, 결과 : 이런 결과를 가져온다. 아래 예시는 회원가입에 대한 간단한 단위테스트이다. 1. Controller @WebMvcTest : 해당 클래스를 테스트 한다, Controller에만 사용할 수 있으며, 실제 실행이 아닌 가짜 실행이다. @Autowired : 실제 주입을 의미하는데, 여기서 MockMvc는 HTTP 통신을 위한 클래스이다. 이는 실제를.. Swagger 일반적으로 프론트엔드 - 백엔드 개발을 할 때, 아래와 같은 과정에서 통신이 일어난다. Client - Front-End Back-End 이때, 예를 들어, RESTful API를 사용해 통신을 한다고 가정할 때, 프론트 엔드 또한 백엔드에 어떤 방식으로 요청을 해야 해당 API를 사용할 수 있는지 알아야하고 어떤 결과를 가져오는지를 알아야 서로 원활한 통신이 가능하다. 이런 경우, 사용하는 Library가 Swagger이다. Swagger - 서버로 요청되는 API 리스트를 HTML화면으로 문서화하여 테스트할 수 있는 라이브러리. - @RestController로 설정된 Class 빈을 읽어 HTML 문서를 작성함. - API 형식 변경마다 자동으로 업데이트. 사용 방법 - 사용 환경은 Spring B.. TDD 들어가기에 앞서 먼저 단위 테스트가 뭔지 알아보고 TDD에 대해 설명하고자 한다. 단위 테스트(Unit Test) 모든 함수, 메서드등에 대해 각각 잘돌아가는지 확인을 위해 테스트 케이스를 작성하는 것을 의미. TDD에서 테스트 코드를 작성할 때, 단위 테스트를 사용. 통합 테스트(Integration Test) 모든 함수, 메서드, 클래스 등이 서로 연결관계를 가질때, 모든 모듈간 통합되어 잘 동작되는 지 확인. 기능에 대한 개발 전체를 끝내고 테스트 단위테스트의 원칙(FIRST 원칙) 1. 테스트 코드의 실행은 빨라야 함. 2. 독립적인 테스트가 가능해야 한다. 3. 테스트가 매번 같은 결과를 만들어야 한다. 4. 테스트는 그 자체로 실행하여 그 결과를 확인 할 수 있어야 한다. 5. 만약 TDD 환.. Testing HTTP Request with Insomnia 이번에는 클라이언트-서버 통신 중 HTTP 통신에 대해 테스팅을 하는 방법에 대해서 알아보려고한다. Insomnia에서 어떻게 HTTP 통신을 테스트할지 포스팅할 예정이며, 리소스를 전달할 때는 Body에 담아 전달하려고 한다. Insomnia - HTTP 프로토콜을 이용해 테스팅을 위해 해당 url에 자원등을 전달하고 요청에 대한 응답을 확인하면서 서버를 테스팅 해볼 수 있는 도구, 설치와 회원가입이 요구됨, POST, GET, PUT, DELETE 등을 선택할 수 있으며 Body 또한 타입과 내용을 생성해 전달 가능하다. HTTP 프로토콜뿐만이 아닌 여러가지를 지원하므로 나중에 포스팅할 예정이다. 먼저, 요청 생성을 한다. Insomnia에서는 다음과 같이 여러가지 요청종류를 지원하고 선택하여 사용할.. 이전 1 다음