소프트웨어 개발수명주기(SDLC) 모델은 소프트웨어 개발 프로세스를 상위 수준에서 추상화하여 표현한 것이다. SDLC 모델은 개발 프로세스의 단계와 활동 유형이 논리적, 시간적으로 어떻게 연관되는지 정의한다.
소프트웨어 개발 프로세스의 일부 활동은 특정 개발 방법과 애자일 실천법으로 설명된다.
테스팅의 성공을 위해 알맞은 SDLC 모델이 필요하며, 모델 선택은 다음 요소에 영향을 미친다.
순차적 모델
반복적 점진적 개발 모델 :
애자일 소프트웨어 개발 :
우수한 테스팅 프랙티스
• 모든 개발 활동에 상응하는 테스트 활동을 배치하여 품질 제어를 보장
• 테스트 레벨마다 구체적이고 독립적인 테스트 목적을 설정하여 중복을 피하고 포괄적인 테스팅 가능
• 각 개발 단계에서 테스트 분석과 설계를 시작하여 조기 테스팅 원칙 준수
• 테스터가 문서 초안이 가용한 즉시 작업 산출물 리뷰에 참여하여 시프트-레프트 전략 지원 및 조기 결함 발견
TDD, ATDD, BDD 개발은 서로 유사한 개발 접근법으로 개발 방향 결정을 위한 수단으로 테스팅을 정의한다. 이런 접근법을 통해 코드 작성 전에 테스트를 정의하고 조기 테스팅 원리를 구현하고 시프트-레프트 접근법을 따르게 한다. 반복적 개발 모델을 지원하며, 다음과 같은 특징이 있다.
테스트 주도 개발(TDD)
인수 테스트 주도 개발(ATDD)
행위 주도 개발(BDD)
위의 모든 접근법에서 테스트는 향후 적용/리팩토링 시 코드 품질 보장을 위해 자동화 테스트로 유지 가능하다.
데브옵스
테스팅 관점에서의 데브옵스 이점
데브옵스의 리스크와 어려움
데브옵스는 높은 수준의 테스팅 자동화를 동반하지만, 수동 테스팅 또한 여전히필요하다.
조기 테스팅 원리는 테스트를 소프트웨어 개발수명주기(SDLC) 초기에 수행하도록 하는 접근법으로, 시프트-레프트라고도 지칭한다. 시프트-레프트는 테스트를 더 일찍 수행해야 한다는 의미이지만, SDLC 후반의 테스트를 무시해도 된다는 의미는 아니다.
시프트-레프트를 달성하는 좋은 프랙티스
시프트-레프트 접근법은 프로세스 초기에 훈련, 공수, 비용이 추가로 들지만, 프로세스 후반의 공수와 비용의 절감을 기대할 수 있다.
이해관계자들이 시프트-레프트 접근법의 개념을 이해하고 받아들이는 것이 중요하다.
회고는 프로젝트나 반복 주기가 끝날 때 필요시 진행할 수 있다. 회고의 시기는 소프트웨어 개발수명주기(SDLC)모델에 따라 달라지며 회의에서 참가자는 다음에 대해 논의한다.
결과는 기록해야 하며, 이를 테스트 완료 보고서에 포함하는 경우가 많다. 회고는 지속적인 개선을 성공적으로 구현하기 위해 반드시 필요하며, 권장된 모든 개선 사항에 대한 후속 조치가 이루어 지는 것이 중요하다
테스팅 관점에서 일반적인 이점은 다음과 같다.
문제 1: 소프트웨어 개발수명주기(SDLC) 모델의 선택이 테스팅에 미치는 영향으로 옳지 않은 것은?
A) 테스트 활동 범위 및 시기
B) 테스트 문서 상세화 수준
C) 테스트 기법 및 접근법 선택
D) 소프트웨어의 배포 주기 결정
정답(드래그)
D
해설(드래그)
SDLC 모델 선택에 영향을 미치는 것은 다음과 같다. 테스트 활동 범위 및 시기, 테스트 문서 상세화 수준, 테스트 기법 및 테스트 접근법 선택, 테스트 자동화 범위, 테스터의 역할과 책임
문제 2: 순차적 모델에서 테스터의 주요 역할은 무엇인가?
A) 초기 단계에서 요구사항 리뷰, 테스트 분석과 설계에 참여
B) 반복 주기마다 동작하는 프로토타입 테스트
C) 가벼운 작업 산출물과 테스트 자동화 수행
D) 경험 기반 테스트 기법으로 수동 테스트 수행
정답(드래그)
A
해설(드래그)
반복 주기마다 동작하는 프로토타입 테스트 : 반복적 점진적 개발 모델
가벼운 작업 산출물과 테스트 자동화 수행 : 애자일
경험 기반 테스트 기법으로 수동 테스트 수행 : 애자일
문제 3: 반복적 점진적 개발 모델의 주요 특징으로 옳지 않은 것은?
A) 반복 주기마다 동작하는 프로토타입이나 제품 증분 생성
B) 모든 테스트 레벨에서 정적 테스팅과 동적 테스팅 수행
C) 증분을 자주 전달하여 빠른 피드백과 광범위한 리그레션 테스팅 필요
D) 초기 단계에서 요구사항 리뷰와 테스트 설계에 집중
정답(드래그)
D
해설(드래그)
반복적 점진적 개발 모델의 주요 특징은 다음과 같다.
1. 반복 주기마다 동작하는 프로토타입이나 제품 증분 생성
2. 모든 테스트 레벨에서 정적 테스팅과 동적 테스팅을 수행
3. 빠른 피드백과 광범위한 리그레션 테스팅이 필요
문제 4: 애자일 소프트웨어 개발에서 테스팅의 주요 특징으로 옳지 않은 것은?
A) 프로젝트의 어느 시점에서도 변화 가능
B) 리그레션 테스팅을 수월하게 하는 가벼운 작업 산출물과 테스트 자동화 선호
C) 경험 기반 테스트 기법으로 수동 테스트 진행
D) 초기 단계에서 모든 요구사항을 확정하고 테스트 설계 수행
정답(드래그)
D
해설(드래그)
애자일 소프트웨어 개발에서의 테스팅은 다음과 같다.
1. 프로젝트의 어느 시점에서도 변화가 가능함
2. 가벼운 작업 산출물과 테스트 자동화를 선호
3. 수동 테스팅은 경험 기반 테스트 기법으로 진행한
문제 5: 소프트웨어 개발수명주기(SDLC) 모델 중 반복적 점진적 모델에 해당하는 것은?
A) 폭포수 모델
B) V-모델
C) 나선형 모델
D) 테스트 주도 개발(TDD)
정답(드래그)
C
해설(드래그)
A,B => 순차적 개발 모델
D => 소프트웨어 개발 방법과 애자일 실천법
문제 6: 순차적 모델에서 동적 테스팅을 초기 단계에서 수행하기 어려운 이유는 무엇인가?
A) 테스트 기법이 복잡해서
B) 테스트 자동화가 어려워서
C) 실행 가능한 코드가 개발 후반에 생성되기 때문에
D) 요구사항이 불확실해서
정답(드래그)
C
해설(드래그)
순차적 모델에서는 실행 가능한 코드가 개발 후반에 생성되므로 초기 단계에서 동적 테스팅을 수행하기 어렵다
문제 7: 애자일 프로젝트에서 리그레션 테스팅을 수월하게 하기 위해 선호하는 것은?
A) 정적 테스트 기법
B) 경험 기반 테스트 기법
C) 가벼운 작업 산출물과 테스트 자동화
D) 모든 요구사항을 문서화
정답(드래그)
C
해설(드래그)
애자일 프로젝트에서는 리그레션 테스팅을 수월하게 하기 위해 가벼운 작업 산출물과 테스트 자동화를 선호한다.
문제 8: 반복적 점진적 개발 모델에서 테스팅의 주요 이점은 무엇인가?
A) 초기 단계에서 모든 결함을 찾아낼 수 있다
B) 빠른 피드백을 통해 품질을 향상시킬 수 있다
C) 개발 비용을 줄일 수 있다
D) 모든 테스트 활동을 자동화할 수 있다
정답(드래그)
B
해설(드래그)
반복적 점진적 개발 모델에서는 빠른 피드백을 통해 품질을 향상시킬 수 있다.
문제 9: 소프트웨어 개발수명주기(SDLC) 모델의 예로 옳지 않은 것은?
A) 폭포수 모델
B) V-모델
C) 나선형 모델
D) 행위 주도 개발(BDD)
정답(드래그)
D
해설(드래그)
행위 주도 개발(BDD)는 개발 방법론이다.
문제 10: 애자일 소프트웨어 개발에서 경험 기반 테스트 기법의 특징은 무엇인가?
A) 사전 테스트 분석과 설계가 필요하지 않음
B) 모든 테스트 케이스를 자동화
C) 정적 테스팅을 우선적으로 수행
D) 요구사항을 문서화한 후 테스트
정답(드래그)
A
해설(드래그)
애자일 소프트웨어 개발에서 경험 기반 테스트 기법은 사전 테스트 분석과 설계가 필요하지 않는다. 이는 테스트를 보다 유연하게 수행할 수 있도록 한다.
문제 11: 시프트-레프트 접근법이란 무엇인가?
A) 테스트를 개발 과정의 후반부에 집중시키는 접근법
B) 테스트를 소프트웨어 개발수명주기(SDLC) 초기에 수행하는 접근법
C) 테스트를 외부 전문가에게 아웃소싱하는 접근법
D) 테스트를 자동화하지 않고 수동으로만 수행하는 접근법
정답(드래그)
B
해설(드래그)
시프트-레프트 접근법은 테스트를 소프트웨어 개발수명주기(SDLC) 초기에 수행하는 접근으로 이는 조기 테스팅 원리를 적용하여 결함을 조기에 발견하고 수정할 수 있도록 한다.
문제 12: 테스팅에서 시프트-레프트를 달성하는 좋은 프랙티스가 아닌 것은?
A) 테스팅 관점에서 명세를 리뷰
B) 코드를 작성하기 전에 테스트 케이스 작성
C) 코드 저장소에 소스 코드를 저장할 때 자동 컴포넌트 테스트 제출
D) 동적 테스팅을 완료한 후 정적 분석 수행
정답(드래그)
D
해설(드래그)
시프트-레프트 접근법에서는 동적 테스팅을 완료한 후 정적 분석을 수행하는 것이 아니라, 동적 테스팅 전 또는 자동화된 프로세스의 일부로 소스 코드의 정적 분석을 완료하는 것
문제 13: 회고의 주요 목적이 아닌 것은?
A) 무엇이 성공적이었고, 유지해야 할 것 확인
B) 무엇이 부족했고, 개선할 수 있는 점 확인
C) 모든 결함을 완벽히 제거
D) 향후 개선 사항 도입 방법 논의
정답(드래그)
C
해설(드래그)
회고의 주요 목적은 프로젝트나 반복 주기의 성공적 요소와 개선 가능한 요소를 논의하고, 향후 개선 사항을 도입하는 방법을 논의하는 것으로 모든 결함을 완벽히 제거하는 것은 회고의 목적이 아님
문제 14: 회고의 테스팅 관점에서의 일반적인 이점이 아닌 것은?
A) 테스트 효과성/효율성 향상
B) 테스트웨어 품질 향상
C)* 팀의 결속 및 학습 향상
D) 테스트 자동화 비용 증가
정답(드래그)
D
해설(드래그)
회고의 테스팅 관점에서의 일반적인 이점은 다음과 같다.
1. 테스트 효과성/효율성 향상
2. 테스트웨어 품질 향상
3. 팀의 결속 및 학습 향상
4. 테스트 베이시스 품질 개선
5. 개발과 테스팅 간의 협업 개선