분류 전체보기 123

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - BDD와 테스트 피라미드 전략

BDD 살펴보기행위 주도 개발의 개념은 댄 노스가 2000년대 중반에 창안했다. BDD란 비즈니스 요구 사항과 목표를 소프트웨어의 동작과 기능으로 변환하는 개발 방법론을 말한다. BDD를 실천한다면 애플리케이션이 어떻게 동작하는지 구체적인 사례를 가지고 여러 팀간에 원활하게 소통할 수 있으며, 이해관계자 간의 협력을 장려함으로써 의미 있는 소프트웨어를 만들 수 있게 된다.  BDD의 이점과 과제 ✔️ 사용자 요구 충족 : 사용자는 구현에 신경을 덜 쓰고 애플리케이션의 기능에 더 집중할 수 있다.✔️ 명확성 제공 : 시나리오는 소프트웨어가 수행해야 하는 작업을 명확히 한다. 시나리오는 기술에 친숙한 사람과 기술에 친숙하지 못한 사람 모두 이해할 수 있는 간단한 언어로 기술한다. 시나리오는 분할하거나 다른 ..

Dev/TDD 2025.02.25

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - Junit5을 통한 TDD

TDD의 핵심 개념TDD란 요구 사항을 테스트로 뽑아 낸 다음, 테스트를 통과하는 프로그램을 개발하는 과정을 되도록 짧게 반복하는 프로그래밍 기법이다.TDD는 작동하는 클린 코드를 추구함으로써 단순한 설계를 유도하고 소프트웨어의 안정성을 제고한다. 따라서 TDD는 다음과 같은 개발 주기를 가진다. ✏️  테스트한다, 코드를 작성한다, 리팩터링한다, (반복한다) ... 리팩터링은 소스 코드의 외부 동작에는 영향을 주지 않고 내부 구조만을 개선하는 방식으로 소프트웨어를 수정하는 작업이다. 이때 외부 동작에 영향을 주지 않는다는 것을 증명하기 위해서 테스트를 사용할 수 있다. 장점분명한 목표를 가지고 코드를 짤 수 있을뿐더러, 애플리케이션이 해야 하는 일만 정확하게 개발할 수 있다.기존의 소스 코드에 버그가 ..

Dev/TDD 2025.02.23

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - 데이터베이스 애플리케이션 테스트

개발환경IDE :  intelliJ FrameWork : springboot 3.4Launguage : java 17BuildTool : gradle TestTool : Junit5  데이터베이스 단위 테스트시 발생하는 임피던스 불일치 (Impedance Mismatch) 단위 테스트는 코드를 격리시켜 실행해야하고, 작성과 구동이 쉬워야하며, 실행속도가 빨라야한다.  그렇기 때문에 관계형 모델을 기반으로 작성된 데이터베이스와 애플리케이션을 연결할 때 차이가 발생하는데, 이를 임피던스 불일치라고 표현한다. 이러한 임피던스 불일치를 해소하기 위해 ORM, IBATIS를 사용한다. 이번 글에서는 ORM 을 사용할 것이다. 더보기더보기📝  ORM 관계형 데이터베이스의 데이터를 객체 지향 프로그래밍의 객체로 ..

Dev/TDD 2025.02.04

Cherry-pick과 Rebase, Fast-forward - 병합커밋 없이 git history 깔끔하게 하는 방법

Cherry-pick과 Rebase의 공통점 cherry-pick과 rebase는 목적은 다르지만 동작하는 방법이 거의 비슷하다.  두 작업 모두 병렬적으로 작업된 목록을 하나로 합친다는 공통점이 있다. cherr-pick, rebase를 이해하기 위해서는 우선 git이 소스를 합치는 방식인 3 way merge에 대한 이해가 필요하다.  Cherry Pick 이란?cherry-pick은, 병렬적으로 작업된 내용에서 특정 commit을 선택하여 새로운 버전을 만들어 내는 방법이다.  이때 새로운 버전을 만들기 위해 3 way merge를 수행한다. Rebase 란?rebase라는 단어 뜻 그대로, base(각 브랜치들의 공통 조상 commit)를 옮긴다는 뜻이다.  다음 예제를 보자.git checkou..

Dev/Git 2024.11.24

3 way merge 란?

3 Way Merge 의 동작 방식  프로젝트를 진행하는 과정에서 git을 사용하여 버전 관리를 할 때, 일반적으로 기능별로 feature branch를 나누고 작업을 하게 된다.  기능구현의 리뷰가 완료 되면  feature branch를 main branch (혹은 develop)에 merge하게 될 것이다. 이 때 git이 제공하는 병합 방법중에 3 way merge가 있다. 3 way merge는 다음과 같은 세가지 요소를 가진다. 병합대상 브랜치  (A)Base (A,B 브랜치가 공통으로 가지고 있는 마지막 commit)병합 브랜치 (B)만약 내가  어떠한 base 브랜치로 부터 feature/A-branch와 feature/B-branch 생성했고,   A-branch를  B-branch에 m..

Dev/Git 2024.11.24

[일본여행] 4박5일 오사카교토 여행 - 오사카성 벚꽃/교토 모츠나베 맛집/아라시야마 대나무 숲(치쿠린)/도게츠교/토롯코열차/텐류지

이전 포스팅은 여기로2024.10.20 - [Trip/2023 일본] - [일본여행] 4박5일 오사카교토 여행 - 유니버셜스튜디오재팬(USJ) [일본여행] 4박5일 오사카교토 여행 - 유니버셜스튜디오재팬(USJ)이전 포스팅은 여기로 2024.09.15 - [Trip/2023 일본] - [일본여행] 4박5일 오사카교토 여행 - 피치항공/난카이리피트/호텔나니와/전남친돈페야키/오사카시내온천 [일본여행] 4박5일 오사카교토 여행 -zigo-autumn.tistory.com   4월 초 오사카성놀랍게도 남자친구와 나는 한 번도 제대로 벚꽃 구경을 간 적이 없었다. 꽤 오래 만났는데... 이번 여행도 어찌어찌 일정을 맞춰 꽃구경을 가긴 했지만 4월 초였기 때문에 만개보다는 약간 지는 느낌의 벚꽃이 많았다. 만개는..

Trip/2023 일본 2024.10.28

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - Junit5 확장 모델

Junit5 확장 모델 살펴보기Junit5 확장 모델은 Extension API라는 단일 개념으로 설명할 수 있다. Extension자체는 내부에 필드나 메서드가 없는 인터페이스인 마커인터페이스일 뿐으로, 해당 인터페이스를 구현하는 클래스에 특별한 의미나 기능을 부여하기 위해 사용한다. 마커 인터페이스 (태그 인터페이스, 토큰 인터페이스)마커 인터페이스는 구현 메서드가 따로 없는 인터페이스로, 해당 인터페이스를 구현하는 클래스에 특별한 의미나 기능을 부여하기 위해 사용한다. 대표적인 사례로는 Serailizable과 Cloneable인터페이스가 있다.  public interface MyMarkerInterface { // No methods }  테스트가 생애 주기를 타는 중에 사전에 정의한 확장 지점..

Dev/TDD 2024.10.20

[일본여행] 4박5일 오사카교토 여행 - 유니버셜스튜디오재팬(USJ)

이전 포스팅은 여기로 2024.09.15 - [Trip/2023 일본] - [일본여행] 4박5일 오사카교토 여행 - 피치항공/난카이리피트/호텔나니와/전남친돈페야키/오사카시내온천 [일본여행] 4박5일 오사카교토 여행 - 피치항공/난카이리피트/호텔나니와/전남친돈페야키/오사카인천공항에서 간사이공항으로  남자친구와 모처럼 휴가를 낼 수 있는 기간이 겹쳤는데,  일본을 한 번도 안 가봤다고 해서 또사카를 가게 되었다! 23년에 코로나가 본격적으로 풀리고 어디든zigo-autumn.tistory.com   USJ 익스프레스 티켓 구매 후기  둘째 날은 다른 일정 없이 USJ만 잡았다. 우리는 돈이 있고 체력이 없었기 때문에 익스프레스 티켓을 별도로 구매해 갔다. 탑승할 수 있는 놀이기구가 7개인 걸 사서 방문했는데..

Trip/2023 일본 2024.10.20

2024년 2회차 정보처리기사 실기 후기 (벼락치기 합격)

들어가기 전에이 글은 어떻게 공부하세요 ~ 하는 가이드보다는 그냥 나의 잡담에 가깝다. 전공자 입장에서 날것 그대로의 후기를 담았으니 객관적인 지표가 필요한 사람은 크게 도움 될 것 같지 않음을 알린다   💁‍♀️ 필기 후기는 여기로 2024년 1회차 정보처리기사 필기 후기 ( 합격 )2024년 02월 20일 오전 8시 40분에 치러지는 정보처리기사 필기시험 본 후기를 작성하려고 한다. 참고로 나는 컴퓨터공학과를 전공했고 실무에서 3년 11개월 정도의 경력이 있는 상태로 봤다. 그리zigo-autumn.tistory.com  시험준비 기간 및 공부 교재 필기시험 때 수제비로 공부했어서 실기도 동일하게 수제비로 구매했다. 실기 교재 추천 검색하면 꼭 구매하지 않고 구글링 해서 돌아다니는 기출문제만 풀어도..

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - Gradle, IntelliJ 와 함께하는 Junit5

들어가기전에책에는 빌드 도구로 Gradle 뿐만 아니라 Maven,  IDE는 Eclipse 및 NetBeans 등이 추가로 기술되어 있었지만 책이 집필된 시점과 현재를 비교했을 때 사용률이 월등히 다르기도하고 내가 Gradle, Intellij, Jenkins를 실무에서 쓰고 있기 때문에 나머지 내용은 스킵했다.  이번 장에선 Junit5의 사용법보다는, 각 build Tool 과 IDE를 쓰면 얻을 수 있는 장점정도를 간략하게 정리하려고 한다.  GradleGradle은 프로젝트 설정 파일을 Groovy(그루비:JVM에서 실행될 수 있고 자바 언어와 호환 가능한 객체 지향 프로그래밍 언어)를 기반으로한 DSL로 작성한다. 여기서 DSL이란 Domain Specific language의 준말이다. 번역..

Dev/TDD 2024.10.09