✔️ 테스트 전략에 대한 설명으로 가장 올바른 것은?
- 테스트 전략은 테스트를 효과적으로 수행하여 테스트 대상 품질을 향상시키기 위한 전략적 접근법으로 테스트 설계 단계에 수립한다.
- 테스트 전략은 테스트 레벨, 유형, 사람, 도구, 절차, 방법, 자원 등과 같은 테스트 요소들에 대해 타당한 근거를 기반으로 결정한다.
- 테스트 설계 기법이나 테스트 실행 순서 등은 테스트 결과에 영향을 미치므로 테스트 전략 요소로 사용할 수 없다.
- 조직의 테스트 철학과 개요를 정의한 문서로써 모든 프로젝트의 테스트에 반영해야 한다.
정답 : 2번
✔️ 테스트 프로세스 필요성으로 거리가 먼 것은?
- 소프트웨어 품질목표 달성에 프로세스가 중요한 역할을 하기 때문에
- 효율적이고 효과적인 테스트 수행을 위한 관리의 중요성이 부각되었기 때문에
- 충분한 시간과 비용을 사용하여 체계적인 테스트 수행이 필요하기 때문에
- 평가를 통한 테스트 활동 개선이 필요하기 때문에
정답 : 3번
✔️ 테스트 효과성 평가 메트릭에 대한 설명으로 적절하지 않은 것은?
- 커버리지 기반 기준에서는 요구사항 커버리지, 설계 커버리지, 코드 커버리지를 기준으로 평가할 수 있다.
- 개발 단계에서 생성된 결함을 해당 단계에서 검출하는 비율로 효과성을 평가한다.
- 테스트 케이스 통과 기반 기준에서는 각 테스트 케이스의 심각도를 고려한다.
- 테스트 케이스의 실패율이 통과 기준이 될 수 있다.
테스트 케이스 기반 메트릭은 테스트 케이스 실패율, 테스트 케이스 효율성을 평가 메트릭으로 결정합니다.
성공적인 테스트 케이스 비율, 결함당 사용된 테스트 케이스 수에 따라 TC 효과성을 평가합니다.
정답 : 3번
✔️ 테스트 케이스 명세서에 대한 설명으로 적절하지 않은 것은?
- 테스트 케이스가 입력될 테스트 대상이 명시된다.
- 테스트 대상에 입력될 값과 예상 출력값이 명시된다.
- 입력값에 의해서 실제로 출력될 값을 관찰하는 방법이 명시된다.
- 해당 테스트 케이스 고유의 테스트 환경이 있다면 이를 명시한다.
- 정확성: 테스트 케이스 명세서는 '예상 출력값'을 명시해야 하지만, '실제로 출력될 값'을 미리 알 수는 없습니다. 실제 출력값은 테스트 실행 후에 관찰되는 것입니다.
- 관찰 방법 vs 검증 방법: 테스트 케이스 명세서에는 '관찰 방법'보다는 '검증 방법' 또는 '평가 기준'이 명시되어야 합니다. 즉, 예상 출력값과 실제 출력값을 어떻게 비교하고 평가할 것인지에 대한 정보가 포함되어야 합니다.
- 시점의 문제: '실제로 출력될 값'이라는 표현은 테스트 실행 이후의 상황을 가정하고 있어, 테스트 케이스 설계 단계에서 작성되는 명세서의 내용으로는 적절하지 않을 수 있습니다.
정답 : 3번
✔️ 다음 설명에 부합되는 테스트 설계 기법은?
프로그램 내부 논리 구조를 참조하지 않고 사용자의 요구사항이나 설계 정보 등을 이용하여 테스트 케이스를 개발하는 방법이다.
- 클리어박스 테스트
- 구조기반 테스트
- 그레이박스 테스트
- 명세기반 테스트
명세기반 테스트는 블랙박스 테스트의 한 형태로, 시스템의 내부 구조나 동작 방식을 모른 채 외부 명세(요구사항, 설계 문서 등)만을 기반으로 테스트 케이스를 설계하는 방법입니다. 이는 주어진 설명과 정확히 일치합니다.
정답 : 4번
✔️ 어느 시스템에서 버튼이 눌러졌을 때 액션은 시스템이 현재 어떤 기능을 수행하고 있는지에 따라 달라진다고 한다면
이를 테스트하는데 가장 적합한 테스트 방법은 무엇인가?
- 리그레션 테스트
- 상태 전이 테스트
- 결정 테이블 테스트
- 페어와이즈 테스트
리그레션 테스트: 이는 시스템 변경 후 기존 기능이 여전히 제대로 작동하는지 확인하는 테스트입니다.
현재 상황과는 직접적인 연관이 없습니다.
상태 전이 테스트: 이 방법은 시스템의 다양한 상태와 상태 간 전이를 테스트합니다.
현재 상태에 따라 동작이 달라지는 시스템을 테스트하는 데 매우 적합합니다.
결정 테이블 테스트: 여러 입력 조건에 따른 다양한 결과를 테스트하는 데 사용됩니다.
현재 상황에도 적용할 수 있지만, 상태 전이만큼 직접적으로 적합하지는 않습니다.
페어와이즈 테스트: 모든 가능한 입력 조합의 부분집합을 테스트하는 방법입니다.
현재 상황과는 직접적인 연관성이 낮습니다.
정답 : 2번
✔️ 다음 설명 중 인스펙션에 해당하는 것을 모두 고른 것은 무엇인가?
(가) 완성된 결과물이 아닌 중간 산출물을 대상으로 한다.
(나) 참가자의 역할이 명확하다
(다) 검토 결과에 따라 다음 단계로 진행할지 여부를 승인한다.
(라) 체크리스트를 사용한다.
(가)의 설명은 인스펙션의 고유한 특징을 정확하게 나타내지 못하고 있으며, 인스펙션의 적용 범위를 부적절하게 제한하고 있어
틀린 답입니다.
(다)의 설명은 인스펙션의 주요 목적은 결함을 찾는 것이며, 다음 단계 진행 여부를 결정하는 것은 일반적으로 인스펙션의 역할이 아닙니다.
반면에 (나) "참가자의 역할이 명확하다"와 (라) "체크리스트를 사용한다"는 인스펙션의 고유하고 중요한 특징을 정확하게 나타내고 있어 정답으로 선택할 수 있습니다.
정답 : (나), (라)
✔️ 정적 테스트에 대한 설명으로 타당하지 않은 것은 무엇인가?
- 동적 테스트 방법에서 검출하기 힘든 오류들을 찾아낸다.
- 가능한 개발 초기에 오류들을 찾아내어 품질을 향상시킨다.
- 프로그램 개발단계에서 산출되는 결과물에서 결함을 찾아낸다.
- 코드 분석을 기반으로 프로그램을 실행하여 오류를 찾아낸다.
1번에서 정적 테스트는 코드 실행 없이 분석하므로 동적 테스트로 찾기 어려운 논리적 오류나 보안 취약점 등을 발견할 수 있습니다.
2번에서 정적 테스트는 코드 작성 단계에서부터 적용할 수 있어 초기에 오류를 발견하고 수정할 수 있습니다.
3번에서 정적 테스트는 코드, 설계 문서, 요구사항 명세서 등 개발 과정의 다양한 산출물을 대상으로 수행될 수 있습니다.
4번은 정적 테스트의 특성과 맞지 않습니다. 정적 테스트는 프로그램을 실행하지 않고 코드나 문서를 분석하는 방법입니다.
프로그램을 실행하여 오류를 찾는 것은 동적 테스트의 특징입니다.
정답 : 4번
✔️ 워크쓰루에 대한 설명으로 올바르지 않은 것은 무엇인가?
- 회의 시작 전에 참가자들이 작업물에 대해 철저한 준비를 해야 한다.
- 보통은 개발자에 의해 회의가 진행된다.
- 회의를 주재하기 위해 별도의 훈련을 필요로 하지 않는다.
- 회의의 결과가 잘 처리되었는지 확인하는 작업을 생략할 수 있다.
워크스루는 상대적으로 비형식적인 검토 방법입니다. 따라서 엄격한 후속 조치 확인 과정이 필수적이지 않을 수 있습니다.
참가자들에게 철저한 사전 준비를 요구하는 것은 이러한 비형식적 특성과 맞지 않습니다.
정답 : 1번
✔️ 심볼릭 실행과 관련이 없는 것은 무엇인가?
- 동적 분석 방법
- 프로그램 테스트 데이터 자동 생성
- 실행 불가능한 경로 검출
- 주어진 경로가 실행 가능한지 검사
심볼릭 실행은 프로그램의 모든 가능한 경로를 분석하여 각 경로를 실행하는 데 필요한 입력 값을 생성할 수 있습니다.
이는 테스트 데이터 자동 생성의 한 방법이므로 심볼릭 실행과 관련이 있습니다.
심볼릭 실행은 프로그램의 모든 가능한 경로를 분석하면서 실행 불가능한 경로를 식별할 수 있습니다.
따라서 이는 심볼릭 실행과 관련이 있습니다.
심볼릭 실행은 특정 경로를 실행하기 위해 필요한 입력 조건을 계산할 수 있습니다.
이를 통해 주어진 경로가 실행 가능한지 여부를 판단할 수 있으므로, 이 역시 심볼릭 실행과 관련이 있습니다.
심볼릭 실행은 정적 분석 기법의 일종으로, 프로그램을 실제로 실행하지 않고 분석합니다. 반면 동적 분석은 프로그램을 실제로 실행하면서 분석하는 방법입니다. 따라서 동적 분석 방법은 심볼릭 실행과 직접적인 관련이 없습니다.
정답 : 1번
✔️ 다음 테스트 도구 중 테스트 실행 자동화에 해당하지 않는 것은?
- 캡처/재생 도구
- 메모리 테스트 도구
- 성능 테스트 도구
- 커버리지 분석 도구
커버리지 분석 도구는 테스트 실행 결과를 분석하여 코드 커버리지 측정에 사용되지만,테스트 실행 자체를 자동화하지는 않습니다.
이 도구는 테스트가 얼마나 철저하게 수행되었는지를 평가하는 데 도움을 주지만,
테스트 케이스를 자동으로 실행하거나 테스트 프로세스를 자동화하지는 않습니다.
정답 : 4번
✔️ 결함의 고립화(solation)란, 결함이 발견되었을 때, 사용된 테스트 데이터, 테스트 절차, 테스트 환경 등을 구성하는 어떤 요소가 결함 발생에 영향을 미치는지 분석하는 것이다. ( O / X )
이 문장은 결함의 고립화(Isolation)에 대한 설명입니다. 문장의 정확성을 판단해 보겠습니다.
결함의 고립화(Isolation)는 실제로 다음과 같은 과정을 의미합니다:
- 결함이 발견되었을 때, 그 결함의 정확한 원인과 위치를 찾아내는 과정입니다.
- 결함이 발생한 특정 조건이나 상황을 식별하고, 그 결함을 재현할 수 있는 최소한의 조건을 찾아내는 것을 포함합니다.
- 결함의 영향 범위를 파악하고, 다른 부분과 분리하여 문제를 정확히 정의하는 과정입니다.
주어진 문장을 분석해보면:
- "테스트 데이터, 테스트 절차, 테스트 환경 등을 구성하는 어떤 요소가 결함 발생에 영향을 미치는지 분석하는 것"이라는 부분은 결함의 고립화 과정의 일부를 정확히 설명하고 있습니다.
- 이는 결함을 재현하고 그 원인을 파악하는 데 필요한 조건을 식별하는 과정을 나타냅니다.
따라서, 이 문장은 결함의 고립화에 대한 올바른 설명을 제공하고 있습니다.
이 설명은 결함의 고립화 과정을 정확하게 설명하고 있으며, 소프트웨어 테스팅에서 중요한 개념인 결함 분석과 디버깅 과정의 핵심 부분을 잘 나타내고 있습니다.
✔️ 결정 테이블 테스트는 논리적으로 의존적인, 가능한 모든 조건의 조합을 생성하는 테스트 설계 기법으로, 누락된 요구사항을 검사하고자 할 때 효과적으로 사용할 수 있다. ( O / X )
결정 테이블 테스트에 대한 설명을 부분별로 살펴보겠습니다:
- "논리적으로 의존적인, 가능한 모든 조건의 조합을 생성하는 테스트 설계 기법"
- 이 부분은 정확합니다. 결정 테이블은 여러 조건과 그에 따른 행동을 표로 나타내어 모든 가능한 조합을 고려합니다.
- "누락된 요구사항을 검사하고자 할 때 효과적으로 사용할 수 있다"
- 이 부분도 정확합니다. 결정 테이블은 모든 가능한 조건 조합을 체계적으로 나열하므로, 요구사항에서 누락된 경우나 고려하지 않은 조건 조합을 쉽게 발견할 수 있습니다.
결정 테이블 테스트의 주요 특징:
- 복잡한 비즈니스 로직을 테스트하는 데 효과적입니다.
- 입력 조건과 그에 따른 행동을 명확하게 정의합니다.
- 모든 가능한 조합을 고려하므로 테스트 케이스의 완전성을 보장합니다.
- 조건과 행동 사이의 관계를 시각적으로 표현하여 이해하기 쉽습니다.
- 누락된 로직이나 모순된 요구사항을 발견하는 데 도움이 됩니다.
따라서, 주어진 문장은 결정 테이블 테스트의 특성과 용도를 정확하게 설명하고 있습니다.
이 설명은 결정 테이블 테스트의 본질과 효용성을 잘 나타내고 있으며, 특히 누락된 요구사항 검사에 효과적이라는 점을 정확히 지적하고 있습니다.
✔️ 구조기반 테스트는 특성상 시스템 및 인수 테스트 단계에서만 수행한다. ( O / X )
이 문장의 정확성을 분석해 보겠습니다.
구조기반 테스트(Structure-based testing)에 대해 먼저 이해해야 합니다:
- 정의: 구조기반 테스트는 소프트웨어의 내부 구조나 코드를 기반으로 테스트 케이스를 설계하는 방법입니다.
이는 화이트박스 테스팅이라고도 불립니다. - 특징:
- 소프트웨어의 내부 로직을 검증합니다.
- 코드 커버리지를 높이는 데 중점을 둡니다.
- 주로 개발자가 수행합니다.
- 적용 단계:
- 주로 단위 테스트(Unit Testing) 단계에서 많이 사용됩니다.
- 통합 테스트(Integration Testing) 단계에서도 사용될 수 있습니다.
- 경우에 따라 시스템 테스트 단계에서도 일부 사용될 수 있습니다.
주어진 문장의 문제점:
- "시스템 및 인수 테스트 단계에서만 수행한다"는 것은 잘못된 설명입니다.
- 구조기반 테스트는 주로 단위 테스트와 통합 테스트 단계에서 수행됩니다.
- 시스템 테스트와 인수 테스트는 주로 블랙박스 테스팅 방법을 사용하며, 소프트웨어의 외부 동작에 초점을 맞춥니다.
따라서, 이 문장은 구조기반 테스트의 적용 단계에 대해 잘못된 정보를 제공하고 있습니다.
구조기반 테스트는 주로 단위 테스트와 통합 테스트 단계에서 수행되며, 시스템 및 인수 테스트 단계에서만 수행되는 것이 아닙니다. 오히려 시스템 및 인수 테스트 단계에서는 구조기반 테스트보다는 블랙박스 테스팅 방법이 더 많이 사용됩니다.
✔️ 프로그램 코드에 대해 자료 흐름 분석을 수행할 때 dd, kk, ~u, du는 이상 패턴에 해당한다. ( O / X )
자료 흐름 분석에서 주로 사용되는 패턴들:
- d (define): 변수에 값을 할당
- u (use): 변수의 값을 사용
- k (kill): 변수의 값을 무효화
이상 패턴(Anomaly Patterns):
- dd: 잠재적 결함 (두번 연이어 정의됨)
- kk: 잠재적 결함
- ~u: 잠재적 결함 (자료가 정의되지 않고 바로 사용됨)
- du: 문제 없음
✔️ 다음의 설명에 해당하는 테스트 유형을 기재하시오.
- 오류를 수정한 후 오류가 정상적으로 수정되었는지 확인한다.
- 오류 수정 중 발생된 코드 변경으로 인해, 새로운 오류가 발생하지 않았는지 확인한다.
- 전체 테스트 케이스를 모두 재실행하는 것은 비효율적이므로 테스트 일정 및 예산·비용 등을 고려해서 재실행할 테스트 케이스를 신중하게 선택 및 개발해야 한다.
주어진 설명은 "회귀(Regression) 테스트"를 가리킵니다.
오류 수정 확인: 발견된 오류가 수정된 후, 해당 수정이 제대로 이루어졌는지 확인합니다.
새로운 오류 검출: 코드 변경으로 인해 기존에 잘 작동하던 기능에 새로운 문제가 발생하지 않았는지 확인합니다.
선택적 실행: 모든 테스트 케이스를 재실행하는 것은 비효율적일 수 있으므로,
변경된 부분과 관련된 테스트 케이스를 선별하여 실행합니다.
자동화 중요: 효율적인 회귀 테스트를 위해 자동화된 테스트 도구를 사용하는 것이 일반적입니다.
지속적 수행: 소프트웨어 개발 및 유지보수 과정에서 지속적으로 수행되어야 하는 중요한 테스트 유형입니다.
회귀 테스트는 소프트웨어의 변경이 기존 기능에 부정적인 영향을 미치지 않았는지 확인하는 중요한 품질 보증 활동입니다.
이를 통해 소프트웨어의 안정성과 신뢰성을 유지할 수 있습니다.
✔️ 다음은 전기밥솥의 동작을 표로 나타낸 것이다. 페어와이즈 설계 기법을 적용하여 테스트 케이스를 설계할 때 도출될 수 있는 최소 테스트 케이스 개수는 몇 개인지 기재하시오.
모드 | 설정 | 전원 |
취사 | 현미 | ON |
보온 | 백미 | OFF |
페어와이즈 테스팅은 모든 가능한 입력 조합을 테스트하는 대신, 모든 가능한 입력 쌍 조합을 최소한 한 번씩 테스트하는 방법입니다.
모든 가능한 조합:
- 취사 - 현미 - ON
- 취사 - 현미 - OFF
- 취사 - 백미 - ON
- 취사 - 백미 - OFF
- 보온 - 현미 - ON
- 보온 - 현미 - OFF
- 보온 - 백미 - ON
- 보온 - 백미 - OFF
페어와이즈 테스팅을 적용하면, 모든 가능한 쌍의 조합을 커버하는 최소한의 테스트 케이스를 얻을 수 있습니다:
- 취사 - 현미 - ON
- 취사 - 백미 - OFF
- 보온 - 현미 - OFF
- 보온 - 백미 - ON
이 4개의 테스트 케이스로 모든 가능한 입력 쌍의 조합을 최소 한 번씩 테스트할 수 있습니다.
따라서, 페어와이즈 설계 기법을 적용하여 테스트 케이스를 설계할 때 도출될 수 있는 최소 테스트 케이스 개수는 4개입니다.
(결정 테이블 기법은 모든 경우의 수를 구합니다)
✔️ 테스트 케이스 설계를 위한 다음 용어 정의 중 올바르지 않은 것은 무엇인가?
- 요구사항(Requirement): 사용자가 제품에 기대하는 기능 혹은 품질 특성
- 테스트 시나리오(Test Scenario): 테스트가 필요한 상황
- 테스트 케이스(Test Case): 입력 + 사전 조건 - 사후 조건 + 예상 출력
- 테스트 스크립트(Test Script): 테스트 케이스를 작성한 문서
테스트 케이스 : 입력과 대응되는 예상 결과를 묶어서 부르는 말
테스트 절차 : 테스트를 준비하고, 실행하고, 결과를 관찰/기록하는 절차
테스트 스크립트 : 자동화 도구가 해석하고 실행하는 언어
정답 : 4번