지속적인 통합(CI: Continuous Integration) 환경
애플리케이션 개발 과정 중 지속적으로 개발된 프로그램을 통합, 빌드, 배포하여 애플리케이션의 개발 내역을 검증, 테스트할 수 있는 환경
빌드 도구
애플리케이션의 배포 단위, 형식에 따라 소스코드를 컴파일, 패키징하며, 배포하는 스크립트를 제공하고 수행하는 도구
(Ant, Maven 등)
테스트 도구
개발된 소스코드를 테스트할 수 있는 테스트 코드를 작성, 동작시킬 수 있는 도구로, 통합 빌드 수행시 연결할 수 있다
(Junnit, DBUnit, StrutsTestCase 등)
소스코드 품질 측정도구(코드 인스펙션)
정해진 소스코드 작성 규칙에 따라 소스코드를 점검하고 규칙 위반 여부를 체크하는 도구.
통합 빌드 수행 시 연결할 수 있다(PMD, FindBugs 등)
테스트 커버리지
전체 프로그램의 범위 대비 테스트 수행 시 해당 테스트 수행을 위해 동작된 프로그램의 범위 비율
라인 커버리지(Statement Coverage)
개발 소스의 각 라인이 수행되었는지 확인하는 측정 지표.
분기 커버리지(Decision Coverage)
개발소스의 각 분기문이 수행되었는지를 확인하는 측정 지표.
만약 소스 내에 if문에 대한 true/false 조건이 있다면, 두 가지 경우가 모두 테스트되어야 100%로 측정된다
조건 커버리지(Condition Coverage)
각 분기문 내에 존재하는 조건식이 모두 테스트되었는지를 확인하는 측정 지표.
조건식 간의 조합에 대해서는 체크하지 않는다
소프트웨어 빌드
소스 코드 파일을 컴퓨터에서 실행할 수 있는 제품 소프트웨어의 단위로 변한하는 과정을 말하거나 그에 대한 결과물,
소스 코드 파일이 샐행 코드로 변환되는 컴파일 과정을 핵심으로 수행.
빌드 도구 ( ant, make, maven, gradle ...)
1) Ant
- 공통적인 프로젝트 디렉토리 구조와 같은 공식적인 관레를 가지고 있지 않으며, 소스를 찾기 쉽고, 어디에 산출물을 두어야 하는지 정확하게 명시해야한다. [시간낭비, 결과물 비체계화]
- 절차적이며 항상 Ant에게 '컴파일하고 복사한다'와 같이 무엇을 언제 할것인지 정확하게 알려줘야한다.
- goal과 goal 디펜던시를 정의할 수 있는 각 라이프사이클이 없다 ▷ 각 goal에 태스크 순서를 붙여줘야한다.
2) Maven
메이븐은 Make나 Ant와 같은 툴을 단순하게 향상시킨것이 아니라 소프트웨어 프로젝트와 소프트웨어 개발에 관련된 새로운 시맨틱(Semantics)들을 포괄하는 플랫폼이다.
- 디펜던시(dependency) 관리 : 그룹식별자, 산출물 식별자와 버전으로 구성된 중복되지 않은 코디네이트들을 프로젝트에 정의한다.
- 원격저장소 : 의존성 관리와 관련하여, 메이븐 산출물들의 저장소를 생성하기 위하여 메이븐 프로젝트 객체 모델(Project Object Model, POM)안에 정의된 코디네이트를 사용할 수 있다.
- 빌드 로직의 전역적인 재사용 : 플러그인은 POM에 따라 실행될 수 있도록 개발되었는데, 플로그인의 동작 시 어떠한 외부 파일도 참조하지 못한다.
- 툴에 대한 이식성과 통합 : 이클립스나 넷빈즈 그리고 IntelliJ와 같은 툴은 프로젝트에 대한 정보를 찾을 수 있는 공통 공간을 가지고 있다.
- 프로젝트 산출물들의 쉬운 검색과 필터링 : 넥서스와 같은 툴은 POM 안의 정보 저장소를 사용하여 저장소의 내역들을 인덱스하고 검색하는 것을 허용한다.
3) gradle
- 안드로이드 공식 빌드 도구
- Groovy, remote repository를 가져올 수 있음
- convention 정책과 함께 custom 빌드 스크립트(groovy) 작성가능
- 멀티플랫폼 프로젝트에도 적합(상위 스크립트, 하위 스크립트 독립적으로 작성)
- 상속이 아닌 주입
'web & Application > 이론' 카테고리의 다른 글
[애플리케이션] 형상관리 & 도구(cvs, svn, git) (0) | 2023.03.23 |
---|---|
[애플리케이션] 배포 (0) | 2023.03.15 |
[애플리케이션] 배포환경 구성 (0) | 2023.03.09 |
[애플리케이션] 소스코드 검증 & 테스트 (0) | 2023.03.09 |