전체 글(195)
-
Java Logging
1. Logging이란 Log란 시스템 동작 시 시스템 상태, 작동 정보를 시간의 경과에 따라 기록한 것을 말합니다. 그리고 Logging이란 정보를 제공하는 일련의 기록인 Log를 생성하도록 시스템을 작성하는 활동을 말합니다. 저장된 Log는 사용자의 패턴이나 시스템 동작 자체의 분석에 사용될 수 있으며 해킹이나 침입 등의 사고가 발생한 경우 비정상 동작의 기록을 통해 감사 추적을 수행할 수 있습니다. Logging의 장점 Log는 재현하기 힘든 버그에 대한 유용한 정보를 제공 Log는 성능에 관한 통계와 정보를 제공할 수 있음 설정이 가능할 때, Log는 예기치 못한 특정 문제들을 디버그하기 위해, 그 문제들을 처리하도록 코딩하지 않아도 일반적인 정보를 갈무리할 수 있음 2. Java.util.log..
2020.04.03 -
BDD
1. BDD란 BDD(Behavior Driven Development)로 TDD를 근간으로 파생된 개발 방법입니다. TDD에서 한 발 더 나아가 테스트 케이스 자체가 요구 사항이 되도록 하는 개발 방법입니다. BDD를 통해 개발을 하게 된다면 테스트 메소드의 이름을 “이 클래스가 어떤 행위를 해야한다.”라는 식의 문장으로 작성하여 행위에 대한 테스트에 집중할 수 있습니다. 2. BDD의 기본 패턴 BDD는 시나리오를 기반으로 테스트 케이스를 작성하며 함수 단위 테스트를 권장하지 않습니다. 이 시나리오는 개발자가 아닌 사람이 봐도 이해할 수 있을 정도의 레벨을 권장합니다. 하나의 시나리오는 Given, When, Then 구조를 가지는 것으로 기본 패턴을 권장합니다. Feature: 테스트에 대상의 기능..
2020.04.02 -
Given-When-Then 패턴
1. Given-When-Then 패턴이란 Given-When-Then 패턴은 Test Code 스타일을 표현하는 방식을 말합니다. Given 테스트에서 구체화하고자 하는 행동을 시작하기 전에 테스트 상태를 설명하는 부분 When 구체화하고자 하는 그 행동 Then 어떤 특정한 행동 때문에 발생할거라고 예상되는 변화에 대한 설명 예시 기능 : 사용자 주식 트레이드 시나리오 : 트레이드가 마감되기 전에 사용자가 판매를 요청 "Given" 나는 MSFT 주식을 100가지고 있다. 그리고 나는 APPL 주식을 150가지고 있다. 그리고 시간은 트레이드가 종료되기 전이다. "When" 나는 MSFT 주식 20을 팔도록 요청했다. "Then" 나는 MSFT 주식 80 가지고 있어야 한다. 그리고 나는 APPL 주..
2020.04.01 -
TDD
TDD란 TDD의 개념 TDD(Test Driven Development)란 테스트를 먼저 만들고 테스트를 통과하기 위한 코드를 만드는 방법을 의미합니다. 일반적으로는 SW개발을 할 때 코딩을 전부 끝낸 후에 테스트를 진행합니다. 이 순서를 역전시킨 것이 TDD를 적용하는 것입니다. SW를 만드는 과정에서 우선 테스트를 작성합니다. 그리고 테스트를 통과하는 코드를 만드는 것을 반복하면서 제대로 동작하는지에 대한 피드백을 적극적으로 받는 것입니다. TDD가 필요한 이유 특정 모듈의 개발 기간이 길어질수록 목표 의식이 흐려집니다. 작업 분량이 늘어날수록 확인이 어려워집니다. 논리적인 오류를 찾기 어렵습니다. 코드의 사용 방법이나 변경 이력을 개발자의 기억력에 의존하게 되는 경우가 대부분입니다. 코드 수정 시..
2020.04.01 -
Junit5
JUnit5란 Junit5는 이전의 Junit과 달리 3개의 다른 서브 프로젝트로부터 각기 다른 모듈로 이루어져 있습니다. Junit5 = Junit Platform + Junit Jupiter + Junit VintageJUnit 5의 모듈 Junit Platform JVM 환경에서 테스트 프레임워크 기동을 위한 기초입니다. 또한 테스트 프레임워크 개발을 위한 Test Engine API를 제공합니다. 다음과 같은 기능을 추가로 제공합니다. Command line으로 플랫폼을 기동할 수 있는 console launcher 빌드 플러그인(gradle, maven) Junit4를 실행할 수 있는 테스트 엔진 Junit Jupiter 새로운 개발 모델과 테스트 케이스 작성을 위한 확장 모델을 포함합니다. 테..
2020.04.01 -
Maven Scope
Maven은 dependency 엘리먼트 하위의 scope 엘리먼트를 통해 포함하려는 라이브러리의 범위를 지정할 수 있습니다. Compile 기본 영역으로 아무것도 지정되지 않은 경우 사용됩니다. Compile 의존 관계에 있는 것은 프로젝트의 모든 클래스에서 사용 가능합니다. Provided Compile과 매우 유사하지만, 실행 시에 의존 관계를 제공하는 JDK나 컨테이너에 대해서 적용됩니다. 예를 들어, JEE에 대한 웹 어플리케이션을 만드는 경우, 웹 컨테이너가 서블릿 API와 Java EE API 관련 클래스들을 제공하기 때문에 provided 영역으로 의존 관계가 세팅되어야 합니다. 이 영역은 컴파일과 테스트의 클래스 패스 용으로 사용되며, 자동 영역입니다. Runtime 의존 관계가 컴파일시..
2020.04.01