전체 글
-
성능 테스트. nGrinderBackEnd/Tests 2022. 2. 15. 21:46
nGrinder는 Naver에서 만든 스트레스 테스트용 플랫폼입니다. 스크립트 생성, 테스트 실행, 모니터링 및 결과 보고서 생성기를 동시에 실행할 수 있습니다. nGrinder 구성 요소 Controller: 테스터가 테스트 스크립트를 생성하고 테스트 실행을 구성할 수 있도록 하는 웹 애플리케이션 Agent: 부하를 생성하는 가상 사용자 생성기 nGrinder 특징 Jython or Groovy 스크립트를 사용하여 테스트 시나리오를 생성하고 여러 에이전트를 사용하여 JVM에서 스트레스를 생성합니다. 사용자 정의 라이브러리(jar, py, maven 종속성)로 테스트를 무제한 확장합니다. 프로젝트 관리, 모니터링, 결과 관리 및 보고서 관리를 위한 웹 기반 인터페이스를 제공합니다. 여러 테스트를 동시에 ..
-
성능 테스트. JMeterBackEnd/Tests 2022. 2. 14. 22:47
Apache JMeter는 성능 측정 및 부하 (load) 테스트 기능을 제공하는 오픈 소스 자바 애플리케이션입니다. 성능 테스트 툴로는 JMeter, Gatling, nGrinder 등이 있으며 TPS(Traffic per second)을 측정하여 처리량(Throughput)을 확인하기 위해 사용합니다. 이번 글에서는 JMeter를 다루고, 다음 글에서 nGrinder에 대해 다루겠습니다. Gatling은 링크된 레퍼런스를 참고하시면 됩니다. JMeter 특징 Web(HTTP, HTTPS), SOAP / REST WEB Service, FTP, DB, Mail 등 다양한 형태의 애플리케이션 테스트를 지원합니다. CLI를 지원하여 CI 또는 CD 툴과 연동할 때 편리하며, UI를 사용하는 것보다 메모리 ..
-
Mockito BDD 스타일 APIBackEnd/Mockito 2022. 2. 11. 11:59
BDD란 Behavior Driven Development의 약자로 애플리케이션이 어떻게 행동해야 하는지에 대한 공통적인 이해를 구성하는 방법으로 개발을 진행하는 것입니다. TDD(Test-driven development)에서 창안했습니다. Mockito는 BDDMockito라는 클래스를 통해 BDD 스타일의 API를 제공합니다. Given / When / Then 이전에 작성한 코드를 BDDMockito로 변환하면 아래와 같습니다. (when > given, verify > then) @Test void bddTest() { // Given StudyService studyService = new StudyService(memberService, studyRepository); Member membe..
-
MockitoBackEnd/Mockito 2022. 2. 11. 07:44
Mock이란 진짜 객체와 비슷하게 동작하지만 프로그래머가 직접 그 객체의 행동을 관리하는 객체입니다. 이러한 Mock 객체를 쉽게 만들고 관리하며 검증할 수 있는 방법을 제공하는 프레임워크가 Mockito입니다. 외부 API 통신이나 데이터베이스에 접근하는 Service, DAO, Repository가 구현되지 않은 상황에서 Mock 객체를 사용하여 개발을 진행할 수 있습니다(TDD, Test-driven development). Mock을 활용한 테스트 작성 시 1) Mock을 만드는 방법, 2) Mock이 어떻게 동작해야 하는지 관리하는 방법, 3) Mock의 행동을 검증하는 방법만 고려하면 됩니다. 의존성 추가 Spring boot 2.2+ 프로젝트 생성 시 spring-boot-starter-te..
-
JUnit 5. JUnit 설정 파일BackEnd/JUnit 2022. 2. 3. 18:50
JUnit 설정 파일(junit-platform.properties)을 생성 후 classpath root(src/test/resources/)에 넣어두면 설정 값이 자동 적용됩니다. 설정 가능한 값은 아래 목록을 참고하시면 됩니다. junit.jupiter.testinstance.lifecycle.default = per_class: 테스트 인스턴스 라이프사이클 설정 junit.jupiter.extensions.autodetection.enabled = true: 확장팩 자동 감지 기능 junit.jupiter.conditions.deactivate = org.junit.*DisabledCondition: @Disabled 무시하고 실행하기 junit.jupiter.displayname.generato..
-
JUnit 5. ExtensionBackEnd/JUnit 2022. 2. 3. 18:39
JUnit 4의 확장은 @RunWith(Runner), TestRule, MethodRule이 존재하지만, JUnit 5의 확장은 Extension 단 하나입니다. 등록 방법은 선언적인 등록(@ExtendWith), 프로그래밍 등록(@RegisterExtension) 및 자동 등록 (자바 ServiceLoader 이용)이 존재합니다. Extension을 사용하기 위해 수행시간이 1초 이상 걸리는 메소드를 찾는 클래스를 생성합니다(라이프사이클 콜백 구현). 1초 이상 걸리는 메소드의 경우 "Please consider refactoring 메소드명 method."가 출력됩니다. package com.java.JUnit5.extensions; import org.junit.jupiter.api.extensi..
-
JUnit 5. 테스트 순서BackEnd/JUnit 2022. 2. 3. 18:15
테스트 인스턴스를 테스트마다 새롭게 생성하기 때문에 테스트 메소드들의 실행 순서는 보장되지 않습니다. 경우에 따라 특정 순서대로 테스트를 실행하고 싶을 때가 존재합니다. 그런 경우 @TestInstance(Lifecycle.PER_CLASS)와 함께 @TestMethodOrder를 사용할 수 있습니다. OrderAnnotation은 낮은 값일수록 높은 우선순위를 갖습니다. package com.java.JUnit5; import org.junit.jupiter.api.*; @TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class OrderTests { int..
-
JUnit 5. 테스트 인스턴스BackEnd/JUnit 2022. 2. 3. 17:50
JUnit은 기본 전략으로 테스트 메소드마다 테스트 인스턴스를 새로 만듭니다. 테스트간 의존성을 없애고 독립적으로 실행하여 예상치 못한 부작용을 방지하기 위함입니다. 아래 코드에서 value 값을 증가시키기 때문에 1, 2, 3이 출력되어야 할 것 같지만 결과는 모두 1이 출력됩니다. package com.java.JUnit5; import org.junit.jupiter.api.Test; public class InstanceTests { int value = 1; @Test void printOne() { System.out.println(value++); // [결과]: 1 } @Test void printTwo() { System.out.println(value++); // [결과]: 1 } @T..