![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZWMPl%2FbtrPoSdXLEz%2FoA1sSeAEOzdg74MC3LKnj0%2Fimg.jpg)
[원본 문서] https://semaphoreci.com/blog/economics-of-tdd The Economics of TDD - Semaphore TDD can help you accelerate development and reduce costs over a project’s lifecycle. semaphoreci.com [번역] 관리 관점에서 테스트 주도 개발(TDD) 도입을 설득하기 어려울 수 있습니다. 이는 상대적으로 큰 초기 투자를 수반하고, 명백한(정량적, 사업적으로 보여줄 수 있는) 비즈니스 이점이 없으며, (가장 중요한) 고객(회사)은 테스트가 아닌 기능에 대해 개발 비용에만 주로 관심이 있습니다. 그렇지만, 프로젝트의 다음 이정표에 도달하기 위해 테스팅(TDD)을 줄이려는 유혹..
원점회귀(Shift Left Zero) 현재의 DevOps 철학은 가능한 일찍 피드백하고, 가능한 일찍 테스트하고, 보안과 프로덕션 환경을 가능한 초기부터 고려한다. 소프트웨어가 조금씩 조금씩 올바른 방향으로 나아가게 한다. == TDD 가장 간단한 테스트 케이스부터 작성한다. 가장 간단한 개발을 한다. 테스트 한다. 리펙토링을 한다. x 반복 --> 조금씩 조금씩 올바른 방향으로 소프트웨어가 완성되어 간다. 눈이 많아야 버그가 줄어든다. 눈이 많아야 옳은 방향으로 나아간다. 숨기지 말자 코드를 숨기지 말자 내가 할 수 없는 일을 숨기지 말자 실수나 실패를 숨기지 말자 상호작용의 세 기둥 겸손 - 존중 - 신뢰 겸손 : 당신의 코드는 우주의 중심이 아니며, 완벽하지도 않다. 겸손한 사람은 배움에 열려 있..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXHhog%2FbtrMNhOTV6e%2FyjGjr3KCDkzbHjKDzXmdC1%2Fimg.jpg)
소프트웨어 엔지니어링이란? 한 조직이 소프트웨어를 구축하고 유지보수하는 데 이용하는 모든 도구와 프로세스 시간의 흐름 위에 순간순간의 프로그래밍을 모두 합산한 것 코드의 가치를 오래도록 잘 지켜내는 것 코드베이스의 지속 가능성을 높이기 위해 엔지니어링 규율 자체를 엄격하게 만드는 것 S/W의 지속 가능성이란? 기존 기능을 운영할 수 있으며, 변경 요청에 대응할 수 있도록 소프트웨어를 관리하는 것 기반 기술이나 제품이 지향하는 길로 나아가는 데 필요한 잠재적인 변경에 대응할 역량 자체가 없다면 어떻게 될까? 소프트웨어 프로젝트의 기대 수명(expected life span)과 업그레이드의 관계 대부분 S/W 프로젝트는 5년 이내에 업그레이드를 했으며, 전환 시점은 대체로 5~10년 사이임 확장 가능성 수명..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpi9FY%2FbtrMt3DbKfw%2FON9XReDpTDLPK8hAyvoIR1%2Fimg.png)
마지막 라인 아래에 아래와 같이 인코딩 설정 -Dfile.encoding=UTF-8
Gradle.build 설정 dependencies { testCompile('org.junit.jupiter:junit-jupiter-api') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine') testImplementation ('org.mockito:mockito-core:2.26.0') } [테스트 코드] package mock; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock..
-- Junit5 예외 테스트 샘플 //빌링 금액 단위가 맞지 않으면 에러 처리 if(amount % AMOUNT_OF_MONTH != 0) { throw new InvalidParameterException("금액이 잘 못 되었습니다."); } -- Junit5 예외 발생 + 세부항목 검증 @Test void 빌링_금액예외테스트() { Billing bill; InvalidParameterException exception = assertThrows(InvalidParameterException.class, () -> new Billing(1, LocalDate.now(), 11000) ); assertEquals("금액이 잘 못 되었습니다.", exception.getMessage()); } -- J..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGIwXx%2FbtrJLSE4K4x%2FMUGzBKuJokjzonQkznUttK%2Fimg.jpg)
듀얼 모니터 사용 하는 경우 [데스크탑 및 화면 보호기] 데스크탑 사진으로 설정해 두면 자주 보기 편함
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMTGaG%2FbtrJj692BGa%2FElnCLkGvdbjnWefZlTxzLK%2Fimg.png)
새 프로젝트 설정 IntelliJ -> File -> New Project Gradle, Java, Web 체크 후 [Next] Name 설정 -> [Finish] brew install gradle build.gradle 수정 //[AS-IS] plugins { id 'java' id 'war' } group 'org.example' version '1.0-SNAPSHOT' repositories { mavenCentral() } ... 생략 //[TO-BE] plugins { id 'org.springframework.boot' version '2.2.2.RELEASE' id 'io.spring.dependency-management' version '1.0.8.RELEASE' id 'java' id..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvsNIE%2FbtrI2Ysyle3%2FUrEhXkCJs541R6Ms9qzGmk%2Fimg.png)
구글, 네이버 로그인 구현을 완료했고 기존 테스트에 시큐리티 적용으로 문제가 되는 것을 해결한다. 기존 테스트 코드에서는 API를 바로 호출하도록 구성되어 있었다. 그러나 시큐리티 옵션이 활성화되면 인증된 사용자만이 API를 호출할 수 있다. 기존 API 테스트 코드들은 인증에 대한 권한을 받지 못해 테스트 코드마다 인증한 사용자가 호출한 것처럼 작동할 수 있도록 수정해야 한다. 우선 전체 테스트를 수행해본다. 전체 테스트 수행하기 인텔리제이 화면 우측의 Gradle 탭을 누른 뒤 Tasks - verification - test를 차례로 선택한 뒤 전체 테스트를 수행한다. 전체 테스트를 수행하면 위와 같은 결과가 나온다. 문제 1. Test 환경 구성 src/main과 src/test의 환경은 독자적인..