| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- Integration Test
- 개발자회고
- 생성자주입
- 모듈 설계
- 성능최적화
- Transactional
- 스텁
- 모듈 분할
- 탑다운 테스트
- 단체테스트
- 일본IT
- 암합적 강도
- 블랙박스 테스트
- 필드주입
- 모듈 강도
- 프로그래머블로그
- 테스트코드
- 응용정보기술자
- java
- 성장기록
- 모듈 결합도
- 오사카프로그래머
- DBUnit
- STS분할
- 바텀업 테스트
- 데이터 결합
- 기능적 강도
- spring
- CI/CD
- 결합 테스트
- Today
- Total
목록2026/04 (6)
오사카 프로그래머의 생존기
[Spring Test / DbUnit] 로컬에선 괜찮던 통합 테스트가 CI에서 느려진 이유: 편리한 어노테이션의 숨겨진 비용1. 이 기술을 파고든 배경 (Motivation)5년 전, 한창 바쁘게 돌아가던 물류 시스템 프로젝트 현장이었다. 개발자 로컬 PC에서 쌩쌩하게 돌리던 테스트 코드들을 젠킨스(Jenkins) CI 환경에 올리면 전체적으로 수행 시간이 늘어나는 것은 어느 정도 피할 수 없는 상식으로 받아들이고 있었다. CI 서버의 자원은 한정적이고, 여러 파이프라인이 동시에 맞물려 돌아가니까 말이다.하지만 젠킨스 콘솔 로그가 흘러가는 것을 무심히 지켜보던 중, 이상한 패턴을 하나 발견했다. 모든 테스트가 균일하게 느려지는 것이 아니었다. 유독 @DatabaseSetup이나 @ExpectedData..
[소프트웨어 개발] 객체지향(OOP) 4대 원칙 핵심 개념 요약1. 시험 출제 핵심 이론 (Core)응용정보기술자(AP) 오전/오후 문제에서 자주 출제되는 객체지향(Object-Oriented Programming)의 4가지 핵심 원칙과 설계 개념을 정리합니다.1) 캡슐화 (Encapsulation)와 정보 은닉 (Information Hiding)개념: 연관된 데이터(속성)와 이를 조작하는 함수(메소드)를 하나의 객체로 묶는 기법.목적: 객체 내부의 복잡한 구현을 숨기고 외부에는 최소한의 인터페이스만 노출(정보 은닉)하여, 외부의 잘못된 접근으로부터 데이터를 보호.효과: 객체 간의 결합도(Coupling)를 낮추고 응집도(Cohesion)를 높여 시스템의 유지보수성을 크게 향상시킴. 2) 상속 (Inh..
[Spring] @Transactional 롤백 실패 원인 분석 + 예외 처리 원리 학습한 줄 요약: 스프링 @Transactional은 기본적으로 RuntimeException(언체크 예외)만 롤백하며, 체크 예외나 내부 try-catch로 예외를 삼킬 경우 프록시가 이를 인지하지 못해 커밋이 발생함을 정리한 기록.1. 학습 배경 (Motivation)실무에서 데이터베이스 상태를 변경하는 비즈니스 로직을 작성할 때, 메서드 상단에 @Transactional 어노테이션을 붙이는 것은 일종의 관행처럼 여겨졌다. 오사카에서 프로그래머로 일해온 지난 6년 동안 이 어노테이션은 복잡한 트랜잭션 경계 설정을 대신해주고, 에러가 나면 데이터를 안전하게 롤백해 주는 강력한 도구로 기능해 왔다.하지만 최근 서비스 로직..
[Spring] @Autowired 필드 주입의 배신과 생성자 주입을 써야 하는 이유한 줄 요약: 편리함 때문에 관성적으로 사용하던 @Autowired 필드 주입의 치명적인 단점(순환 참조, 테스트 어려움)을 파악하고, 불변성과 테스트 용이성을 보장하는 생성자 주입의 필요성을 정리한다.1. 학습 배경 (Motivation)과거 현장에서 다른 프로그래머들이 작성한 코드를 참고하며, 습관적으로 클래스 변수 위에 @Autowired를 붙여 객체를 주입받아 사용해왔다. 코드가 간결해지고 당장 기능이 잘 동작했기 때문에 깊은 고민 없이 이 방식(필드 주입)을 선호했다.하지만 코드를 작성할 때마다 인텔리제이(IntelliJ IDEA)는 해당 필드에 노란색 밑줄(Warning)을 띄우며 "Field injection..
[Spring] 단위 테스트(単体テスト) 핵심 개념 요약 + 공부하게 된 이유한 줄 요약: 커버리지를 채우기 위해 무지성으로 복붙하던 @Test, @Mock, MockMvc의 진짜 목적(의존성 분리 및 격리)을 파헤치고 테스트 코드의 본질을 객관적으로 정리한 기록.1. 학습 배경 (Motivation)과거 파견 현장에서 단체 테스트(단위 테스트, 単体テスト) 코드를 작성할 때의 일이다. 당시에는 일정에 쫓겨 기존 레거시 코드나 사내 위키에 있는 @Test와 @Mock 어노테이션을 그저 복붙해서 쓰기 바빴다. 테스트 코드가 왜 그렇게 구성되어 있는지 이해하기보다는, 당장 소나큐브(SonarQube)나 빌드 툴에서 요구하는 테스트 커버리지 퍼센트를 채우는 것에만 급급했기 때문이다.최근 다음 안건으로 다시 J..
2020년 4월, 오사카에 처음 발을 내디뎠을 때를 떠올려 봅니다.IT에 대한 변변한 지식도, 실무 경험도 전무했던 완전한 '미경험자' 상태였습니다.게다가 전 세계가 코로나로 혼란스럽던 시기였기에, 낯선 땅에서 어떻게든 1인분의 몫을 해내며 살아남는 것만이 유일한 목표였습니다. 그렇게 SES(시스템 엔지니어링 서비스) 형태로 여러 현장을 돌며,주어지는 과제들을 쳐내고 에러와 씨름하다 보니 어느덧 6년 차 프로그래머가 되었습니다.처음엔 낯설기만 했던 일본어 기술 문서나 코드들도 제법 눈에 익었고,오사카에서의 일상도 이제는 제법 자연스러운 제 삶의 일부가 되었습니다.하지만 연차가 쌓일수록 마음 한구석에는 채워지지 않는 갈증과 조급함이 있었습니다.'나는 연차에 걸맞은 실력을 갖추고 있는가?', '그저 현장 파..