좋은 질문입니다. 나는 이것에 대한 '공식적인'정답이 없다고 생각합니다. 테스트 속도에 따라 다릅니다.
근본적인 문제는 각 병합, 컴파일 또는 배포가 잠재적으로 버그를 생성 할 수 있다는 것입니다. 테스트하는 체인을 더 '업'할수록 버그에 대해 더 빨리 알 수있을뿐만 아니라 다시 테스트해야하는 횟수가 늘어납니다.
고객이 사용중인 소프트웨어를 테스트했음을 확인하려면 고객 트래픽 (웹 앱 가정)이 파란색 / 녹색 배포 패턴을 통해 해당 서버로 라우팅되기 전에 실제 배포를 테스트해야합니다.
그러나 분명히 이것은 코드를 처음 확인한 날이 늦었습니다.
qa env에서 릴리스 브랜치를 테스트하면 위험을 감수하고 연기 테스트로 인한 라이브 테스트를 줄일 수 있습니다. 릴리스 브랜치에 버그 수정을 적용합니다. 그러나 릴리스를 작성하기 전에 기능이 완전한지 여부를 평가할 수 없습니다
개발을 테스트하면 미니 버그 수정 기능 분기가 제공됩니다. 기능은 평가하기 전에 여전히 병합되며 다음 릴리스의 기능은 현재 릴리스 테스트와 충돌 할 수 있습니다.
기능 분기를 테스트하는 경우 백만 개의 환경이 필요하며 병합 순서를 테스트하고 사인 오프를 테스트해야합니다. 많은 재시험.
내 경험으로는 다음을 권장합니다.
개발자 컴퓨터의 기능 분기를 빠르게 테스트합니다. 기능이 완전하고 테스터 / 개발자는 요구 사항의 의미에 동의해야합니다.
QA 서버에 배포 된 개발 지점의 일상적인 테스트 / 자동 테스트 모든 기능을 함께 테스트하고 릴리스 준비가되었을 때 말할 수 있습니다.
모든 기능이 있지만 테스트가 완료되지 않은 경우. 예를 들어 스프린트가 완료되었습니다. 릴리스 브랜치를 만들고 두 번째 QA 환경에 배포하십시오. 이를 통해 릴리스 1의 버그 수정 / 테스트가 릴리스 2의 기능과 동시에 계속 될 수 있습니다.
(스크럼 애호가들은 스프린트 2에 버그 수정 만 넣어야하지만 실제로는 가능하도록해야합니다)
전환하기 전에 라이브 녹색 / 파란색 배치에 대한 연기 테스트. 개발 중에 아무도 찾지 못하는 구성 / 환경 오류를 선택하므로 이는 매우 중요합니다.