요구사항에 대한 변경 요청이 들어왔을 때 다음 절차
- 코드를 조금 수정한다.
- 기존 기능을 망가뜨리지 않았는지 확인하기 위해 모든 테스트를 실행한다.
- 수정된 부분이 다른 부분과 잘 통합되는지 확인해서 수정된 부분에 의존하는 다른 프로젝트들이 잘 돌아가는지 확인한다.
코드 통합을 위해 다음 절차
- 최신 버전의 소스코드를 소스코드 저장소에서 받아온다
- 전체를 로컬 머신에서 컴파일을 시도해 본다.
- 로컬 머신에서 모든 테스를 실행한다.
- 망가진 것이 있으면 고친다.
- 소스코드를 체크인한다.
자동화된 빌드
- 모든 프로젝트의 최신 버전을 가져온다.
- 모든 프로젝트를 최신 버전으로 컴파일한다.
- 빌드 출력물을 테스트 서버에 배포한다.
- 로컬 머신이나 테스트 서버에서 테스트를 실행한다.
- 날짜와 빌드 번호를 기반으로 해서 빌드 출력물들을 보관해 둔다.
- 출력물을 스테이징 서버에 배포하거나 심지어는 제품 서버에 배포한다.
- 대상 서버에서 컴포넌트를 설정하고 설치한다.
- 이 단계 가운데 하나라도 실패하면 관련 있는 사람들에게 알린다. (이메일로)
- 데이터베이스들을 통합한다.
- 빌드 품질, 이력, 테스트 상황에 대한 보고서를 생성한다.
- 특정 과업이 실패할 경우 과업 또는 작업 아이템을 자동으로 생성한다.(팀 시스템) 작업이 아이템을 추가한다거나 해서).
자동화된 빌드 종류
- 야간 빌드(nightly build)
- 오래 걸리는 테스트를 전부 실행한다.
- 시스템 테스트를 실행한다.
- 릴리즈 빌드(release build)
- 야간 빌드를 실행한다.
- 서버에 배포하고 결과물을 보관해둔다
- 지속적인 통합(CI) 빌드
- 금방 끝나는 테스트를 전부 실행한다.
- 10분 안에 끝난다.
테스트를 작성하는 과정에서 테스트들을 실행시간에 따라 분류하는 것이 좋다.
- 금방 끝나는(fast-running) 테스트
- 오래 걸리는(slow-running) 테스트
테스트가 실패의 몇 가지 이유
- 테스트 대상 코드에 버그가 존재한다.
- 테스트가 작성된 방식에 문제가 있다
- 테스트가 이제는 적절하지 않다.
- 실행하는 데 설정이 필요하다