DEV/ETC
-
컨테이너를 활용한 통합 테스트DEV/ETC 2024. 9. 24. 20:45
일반적으로 모의객체를 활용한 단위 테스트는 컨테이너에서 제공하는 객체는 모의하기 어렵고, 테스트를 작성하기 복잡하다는 한계가 있다.ex) HttpConnection, HttpServletRequest, HttpSession 등 컴포넌트와 컨테이너컴포넌트는 애플리케이션 또는 애플리케이션의 일부를 말한다. 컨테이너는 컴포넌트가 실행되고 있는 격리된 공간을 말한다. 컨테이너는 생애주기, 보안, 트랜잭션 등 컴포넌트를 위한 서비스를 제공한다.ex) JSP의 컨테이너 Tomcat, Jetty 모의객체를 사용하지 않고 실제 컨테이너에서 필요한 객체와 메서드에 직접 접근하여 테스트를 배포하고 실행하는 방식을 컨테이너를 활용한 테스트라고한다. 컨테이너를 활요한 테스트 구현 전략서버측과 클라이언트측 두가지 접근 방식으로..
-
소프트웨어 테스트 품질DEV/ETC 2024. 7. 8. 18:36
테스트 품질을 검증하기 위해 테스트 커버리지 도구를 이용하여 테스트가 커버한 코드와 커버하지 못한 코드가 얼마나 되는지 확인하고, 해당 테스트가 얼마나 유용한지 계산해보자.그리고 품질에 초점을 둔 소프트웨어 개발 프로세스인 TDD와 BDD에 대해 알아보자. 1. 테스트 커버리지 측정하기테스트 커버리지는 그 자체로 코드의 품질을 어느정도 보장한다. 하지만 높은 테스트 커버리지가 테스트의 질을 보장하지는 않는다. 훌륭한 개발자는 테스트를 실행하여 얻어 낸 기계적인 백분율 수치 이상을 볼 수 있어야 한다. 1-1. 테스트 커버리지란 ?테스트 커버리지를 계산하는 데 다양한 지표를 사용할 수 있다. 가장 기본적인 지표는 테스트 묶음을 실행하는 동안 호출되는 애플리케이션의 메서드나 코드 줄의 수를 가지고 나타낸 백..
-
소프트웨어 테스트 원칙과 유형DEV/ETC 2024. 7. 4. 02:57
단위 테스트를 하는 이유단위 테스트의 핵심 목표는 애플리케이션이 예상대로 작동하는지 확인하고 사전에 버그를 찾아내는 것.기능 테스트로도 작동을 확인하고 버그를 찾을 수 있지만, 단위 테스트를 수행했을 때 다음과 같은 장점이 있다. - 기능 테스트만 수행했을 때보다 테스트 커버리지를 높일 수 있다.: 단위 테스트는 기능 테스트로는 수행하기 어렵거나 불가능한 오류 조건에 대해서도 쉽게 테스트 할 수 있다. - 팀 생산성이 향상된다.: 단위 테스트를 활용하면 다른 컴포넌트가 준비될 때까지 기다리지 않고 질적으로 우수한 코드를 전달 할 수 있다.반면 기능 테스트는 테스트를 실행 하기 전에 전체 애플리케이션 혹은 상당 부분이 준비되어 있어야한다. - 회귀를 사전에 발견하여 디버깅 작업을 줄일 수 있다.: 단위 테..
-
[Git] git 커밋 메시지 규칙DEV/ETC 2024. 6. 12. 00:26
Git 커밋 메시지를 작성할 때는 일관된 규칙을 따르는 것이 중요하다.이는 프로젝트의 유지보수성과 협업의 효율성을 높이는 데 도움이 되며, 나 또한 쉽게 찾아볼수있도록 정리하고자한다. 다음은 일반적으로 많이 사용되는 Git 커밋 메시지 규칙이다.1. 커밋 메시지 구조: 2. 커밋 메시지 타입타입은 커밋의 목적을 명확하게 나타내며, 다음과 같은 타입이 자주 사용된다.feat: 새로운 기능 추가fix: 버그 수정docs: 문서 변경style: 코드 포맷팅, 세미콜론 누락 등 코드 변경이 없는 경우refactor: 코드 리팩토링 (기능 변경 없음)test: 누락된 테스트 추가 또는 기존 테스트 수정chore: 빌드 프로세스 또는 보조 도구 수정 (라이브러리 추가 등)perf: 성능 향상 관련 변경build:..
-
[Architecture] 헥사고날 아키텍처(Hexagonal Architecture) (ft. 계층형 아키텍처, 클린 아키텍처, DDD)DEV/ETC 2024. 6. 5. 00:12
헥사고날 아키텍처를 설명하기전에 계층형 아키텍처와 클린 아키텍처, 그리고 도메인 주도 설계(DDD)관련하여 가볍게 짚고 넘어가야한다. 헥사고날 아키텍처는 전통 방식인 계층형 아키텍처의 단점을 보완하기위해 설계되었다. 계층형 아키텍처의 문제점1) 데이터베이스, 영속성에 대한 의존성도메인 계층이 데이터베이스에 의존하게 되어 데이터베이스에 변화가 일어나면 도메인 계층에도 변화가 생긴다.서비스 계층에서도 영속성 모델을 도메인 모델처럼 사용하게 된다. 그렇다면 즉시로딩, 지연로딩, 트랜잭션, 플러시 등을 고려해야하고 영속성에 대한 의존이 프로젝트 전체적으로 퍼지게 되어 변경에 취약해진다. 2) 아키텍처 경계를 강제할 수 없다.계층형 아키텍처에서는 상위 계층에 있는 컴포넌트에 접근할 목적으로 해당 컴포넌트를 하위 ..
-
[Architecture] MA와 MSA 개념 / 장단점 / 차이점DEV/ETC 2024. 5. 30. 16:11
MA : Monolithic Architecture모놀리식 아키텍처는 단일 코드 베이스의 애플리케이션이다.전체 애플리케이션은 단일 코드로 작성되어 단일 데이터베이스에 연결된다.보편적으로 많이 사용되는 방식으로 마이크로서비스 아키텍처보다 구현이 쉽고, 덜 복잡하다는 장점이 있다. 장점주로 단일코드 베이스, 단일 애플리케이션에서 나오는 장점을 갖고 있다.단순성간편한 배포보편성쉬운 디버깅쉬운 테스트 (ft. E2E 테스트)쉬운 모니터링단점큰 규모에서는 유지보수가 어려움유연하지 않은 확장성 : 일부 확장이 어렵고 전체적인 확장만 가능대규모 팀 작업의 어려움 : 동일한 코드와 환경에서 작업하기때문에 충돌 가능성이 높고 다른 기능에 영향을 줄수있음기술 유연성 낮음 : 다른 기술로 변경하는것에 어려움이 있기 때문에 ..
-
[JWT] JSON WEB TOKEN 개념 / 구성 요소 / 동작 방식 / 장단점 / Session과 차이점 / 저장 위치DEV/ETC 2024. 5. 30. 15:04
JWT란?JSON WEB TOKEN의 약자로 속성 정보 (Claim)를 JSON 데이터 구조로 표현한 토큰으로서 네트워크를 통해서 서로 다른 장치끼리 안전하게 전송하기 위해 설계됨구성 요소JWT는 세 파트로 나누어지며, 각 파트는 점으로 구분하여 표현된다.헤더 (Header), 페이로드 (Payload), 서명 (Sinature)으로 구성된다. 1) header : 해시 암호화 알고리즘과 토큰의 타입으로 구성첫 번째는 HMAC, SHA256 또는 RSA와 같은 서명 생성에 사용된 해시 알고리즘두 번째는 토큰의 유형 (JWT)2) payload : 내용, 즉 토큰에 담을 클레임(claim) 정보를 포함Payload 에 담는 정보의 한 ‘조각’ 을 클레임이라고 부르며, name / value 의 한 쌍으로 ..