분류 전체보기

스마트하게 일하기/테스트 자동화 이야기

테스트 코드(Jest)를 이용한 API 리팩토링 전략

요즘 맡고있는 업무중에 기존 레거시 API 에 대한 리팩토링을 진행하거나 V1 프로젝트의 소스를 V2 로 옮기는 작업을 간간히 진행하게 되었습니다. 아무래도 해당 업무를 오래하지 않았고 오래되고 히스토리를 모르는 API 의 리팩토링을 진행하다보니 매번 Postman 을 통해서 결과값을 비교하는 것은 작업 효율이 그리 좋지는 못했습니다. 실제로 여러 파라미터들의 결과값을 테스트하고 소스코드 수정의 부담감을 줄이면서 테스트 통과라는 심리적 안정을 통해서 안정감 그리고 업무 효율성까지 끌어 올릴 수 있었던 제 방법을 소개합니다. 우선 제가 진행했던 API 리팩토링에서 가장 중요한 포인트는 기존 API 의 호환성을 유지하고 로직의 코드를 정리하거나 타입을 정의 혹은 불필요한 로직을 단순화하는 작업이었습니다. 결..

스마트하게 일하기/테스트 자동화 이야기

내가 테스트 자동화 프로젝트를 만드는 이유 #01

이직과 개인적으로 휴식이 필요해서 한동안 포스팅을 못했네요. 제가 최근에 실무에서 레거시 청산 혹은 UI 수정을 진행하면서 Postman, Katalon Studio, Selenium IDE를 거치면서 최종적으로 업무와 개인적인 일(게임 혹은 크롤링과 같은 개인적으로 관심이 가는 부분)에 사용하기 위해서 테스트 자동화와 크롤링을 조금 더 편하게 할 수 있는 프로젝트를 설계, 구축하고 있습니다. 아직 정리되지 않은 버전이지만 지금 업무를 진행하면서 많은 도움이 되었고 이정도면 블로그에 포스팅할 수 있겠다 싶어서 왜 만들게 되었는지, 그리고 어떻게 만들고 어떻게 활용할 수 있는지를 한 번 포스팅해보려고 합니다. 우선 프로젝트 설명에 앞서서 Postman(API), Katalon Studio(API + UI)..

스마트하게 일하기

코로나 시대에 우리가 일하기로 합의한 방법

21년 하반기에 약 3~4개월 동안 프로젝트를 진행하면서 더 스마트하게 일할 수 있는 방법을 논의했고 생각보다 텍스트 기반으로 업무가 잘 진행되었기에 이번 프로젝트에서 진행한 "우리가 일하기로 합의한 방법"에 대한 공유를 해보려고 합니다. 개요 이 문서는, OOO팀을 대상으로, 코로나-19 환경에서 더 성과를 잘 내기 위한 방법들을 제안하기 위해서 작성되었습니다. 일일 공유 (daily scrum metting) 일일 회의를 매 업무일 오전 10시에 최대 15분 동안 진행하며, 다음과 같은 정보를 공유합니다. 자신의 상태 점수 (최악 1점 ~ 최고 5점)과 이유 어제 한 일들 오늘 할 일들 장애물 (예: 도움이 필요하거나 고민되는 것들) 권고 동료들에게 관련 지라 이슈와 그 산출물(있다면)을 함께 보여줍..

스마트하게 일하기

스마트하게 온보딩 하기

회사에서 신규 입사자를 위해 작성한 프로젝트 온보딩을 위한 문서가 다들 하나씩은 있을 겁니다. 하지만 짧은 주기로 신규 입사자가 들어오는 환경이 아니라면 특정 툴에 대한 버전의 업데이트, OS 업데이트 등 사용하는 환경의 변화로 인해서 온보딩 문서를 통해서 세팅하다 막히는 부분이 생기고 보통 막연하게 모르는 부분은 물어보세요 라고 하지 않나요? 저희도 얼마 전까지는 온보딩의 과정을 특정 인원에게 할당하고 특정 인원이 신규 입사자들의 온보딩을 책임지고 프로젝트를 잘 이해하고 적응할 수 있도록 하나의 업무로 주어졌습니다. 문서는 항상 최신화되기 어렵고 온보딩을 담당하는 인원의 부재 혹은 업무로 인해 신경 쓸 여유가 없다면 그 시간만큼 온보딩에 딜레이가 생기고 온보딩을 담당하는 인원은 부담을, 신규 입사자는 ..

회고록

상반기 프로젝트에 대한 회고

올해 상반기는 저에게 있어 많은 경험을 하고 많은 것을 배울 수 있는 시간이었습니다. 나름 여러 프로젝트를 돌아다니면서 경험을 많이 했고 업무를 잘 정리해서 한다고 생각했던 저에게는 반성의 시간과 함께 이번 상반기에서 저에게 가장 큰 임팩트를 주었던 키워드를 정해서 까먹지 않고 하반기 프로젝트에서는 더욱더 좋은 결과를 낼 수 있도록 작성해보려고 합니다. 리팩터링 사실 리팩터링이라는 말을 들을 때 뭔가 엄청난 걸 해야 할 것 같고 소스코드를 뭔가 엄청 줄이거나 무언가 결과물을 만들어야 한다는 생각이 들다 보니 리팩터링은 '시간을 내서 해야 한다'라는 인식이 저 스스로에게도 있었습니다. 그러다 보니 프로젝트를 진행하면서 바쁘다는 핑계와 함께 나중에, 나중에 라는 말로 소스코드에 기능이 더해지지만 리팩터링에는..

스마트하게 일하기

Jenkins를 이용한 배포 자동화

Jenkins는 무엇인가? 젠킨스(Jenkins)는 소프트웨어 개발 시 지속적 통합(continuous integration) 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git 등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다. MIT 라이선스를 따른다. 왜 Jenkins를 사용하는가? 저는 개인적으로 CI/CD툴 중에서는 젠킨스를 가장 선호합니다. 주로 젠킨스를 사용하였기에 익숙하고 편한 것도 이유가 될 수 있지만 플러그인을 통해서 확장이 가능하고 스케줄러 등 시스템적으로 필요한 기능들 역시 젠킨스에서 기본 제공을 해주는 덕분에 서버 상태 체크나 혹은 자동 배포 등 여러 방면에서 활용할 수..

Web/Frontend

프론트엔드 테스트코드 적용기

J서비스 프론트엔드 테스트코드 적용기 제가 현재 진행하고있는 프로젝트는 Angular 기반의 웹과 앱을 서비스하고 있는 프로젝트입니다. 최초 설계 당시 Angular 스타일이 아니라 급하게 작업 된 프로젝트기에 Angular의 기본 개념의 적용이 힘들었고 그로 인해서 테스트코드 실행 시 에러 발생으로 테스트코드 적용은 다음 프로젝트를 기약했습니다. 이번에 진행한 feature 단위에 프로젝트에서 프로젝트 목표 중 하나를 테스트코드 적용으로 잡았고 간단하게나마 해당 프로젝트에 대해서는 테스트코드를 적용했고 현재 테스트코드를 통해서 테스트와 병행하면서 같이 개발을 진행하고 있습니다. 내부 개발자들에게 공유한 내용인데 실제로 테스트코드를 적용하면서 겪었던 내용을 공유하기 위해 포스팅해 봅니다. 도대체 어떤 내..

카테고리 없음

Lombok 으로 소스코드 줄여보기

Project Lombok Project Lombok은 getter, setter, tostring, Constructor 등 자바를 통해 개발을 진행함에 있어서 반복되는 소스코드를 어노테이션 형태로 제공하여 반복적인 소스코드 없이 해당 기능등을 사용할 수 있는 라이브러리 입니다. 대표적인 지원기능으로는 Getter, Setter, toString, Constructor의 자동 생성, NonNull을 통한 Null check 로직 추가, Builder 생성 등의 반복적인 소스코드를 어노테이션 형태로 제공합니다. 설정하기 Proejct Lombok은 다른 라이브러리와는 다르게 디펜던시 추가 외에도 IDE에 설치작업을 진행해야 합니다. Gradle repositories { mavenCentral() } d..

Web/Spring

SpringBoot Logback

Logback 자바 로거 프로젝트 중 하나이며 종료된 log4j를 대체하기 위해 개발된 로그 프레임워크 입니다. SpringBoot에서는 기본 logging system으로 채택되어 사용중입니다. log4j를 대체하기 위해 개발된 프로젝트인 만큼 기능, 설정방법또한 log4j와 많이 유사합니다. 로그 시스템을 이용하는 주된 이유는 정형화된 로그를 통해서 로그추적의 용이함입니다. 그에 걸맞게 패턴지정, 파일출력, 콘솔출력, SSL, Socket, DB등 다양한 로그 출력 방법들이 존재합니다. 기본개념 로그란 에러로그 일수도있고 디버깅상 필요한 로그, 혹은 개발 중 추적을 위한 로그가 될수도있다. 로그의 성격에 따라 logback의 경우 로그레벨을 5단계로 나누었고 설정을 통해서 특정 레벨 이상의 로그만 노..

Web/Spring

SLF4J로 보는 Facade pattern

최근들어 스프링으로 포지션을 고정하고자 기초부터 공부를 하고있습니다. Spring Boot의 공통 로그 모듈인 SLF4J와 실제 구현부가 궁금해 분석해본 내용과 해당 내용을 통해서 이론으로만 접했던 Facade 패턴이 SLF4J에서는 어떻게 적용되어있는지를 포스팅 해보려고 합니다. SLF4J 다음은 위키백과에서 소개하는 SLF4J 입니다. SLF4J ( Simple Logging Facade for Java )는 간단한 파사드 패턴을 통해 Java 로깅 API 를 제공합니다 . 기본 로깅 백엔드는 런타임 에 원하는 바인딩을 클래스 경로 에 추가하여 결정되며 표준 Sun Java 로깅 패키지 java.util.logging, [2] log4j , logback [3] 또는 tinylog 일 수 있습니다. ..

heeman
'분류 전체보기' 카테고리의 글 목록