1. 테스팅은 결함의 존재를 밝히는 활동
테스팅은 결함이 있음을 보여줄 수 있지만, 결함이 없음을 증명할 수 없다. 결함이 발견되지 않아도 소프트웨어가 완벽하다는 뜻은 아니다.
2. 완벽한 테스팅은 불가능
모든 것은 테스트하는 것은 현실적으로 불가능하다. 따라서 테스트 기법, 테스트 케이스 우선순위 지정, 리스크 기반 테스팅을 통해 테스트 노력을 집중해야 한다.
3. 조기 테스팅의 중요성
프로세스 초기에 결함을 발견해 제거하면 후속 결함을 예방할 수 있다. 이는 소프트웨어 개발 수명주기 후반에 발생할 수 있는 장애를 줄이고, 품질 비용을 절감할 수 있다.
4. 결함의 집중 현상
대부분의 결함은 소수의 시스템 컴포넌트에 집중되는 경향이 있다. 이는 파레토 원리의 예로, 리스크 기반 테스팅의 주요 입력으로 사용될 수 있다.
파레토 원리란?
다수의 결과가 소수의 원인에 의해 발생하는 경향이 있다는 것을 설명한다.
즉, 전체 결과의 80%가 전체 원인의 20%에서 발생한다는 의미이다.
5. 테스트 효과의 감소
동일한 테스트를 반복하면 신규 결함 식별 효과가 감소한다. 이를 극복하기 위해 기존 테스트와 데이터를 수정하고 새로운 테스트를 작성해야 한다. 예외적으로 리그레션 테스팅을 자동화 한경우는 유익할 수 있다.
6. 테스팅은 정황에 의존적이다.
모든 상황에 적용할 수 있는 하나의 테스팅 접근법은 없다. 테스팅은 정황에 따라 다르게 진행해야 한다.
7. 결함-부재는 궤변
소프트웨어 베리피케이션이 시스템의 성공을 보장하지 않는다. 모든 요구사항을 테스트하고 결함을 수정해도 사용자 요구나 기대를 충족하지 못할 수 있다. 따라서 베리피케이션과 함께 밸리데이션도 수행해야 한다.
문제 1: 테스팅의 주요 목적 중 하나로 가장 적절한 것은?
A) 소프트웨어의 모든 결함을 완벽하게 제거하기 위한 활동이다.
B) 소프트웨어의 결함이 없음을 증명하기 위한 활동이다.
C) 소프트웨어 결함의 존재를 밝히기 위한 활동이다.
D) 소프트웨어의 모든 기능을 테스트하기 위한 활동이다.
정답(드래그)
C
해설(드래그)
테스팅의 주요 목적은 결함의 존재를 밝혀내는 것입니다. 결함이 없음을 증명하는 것이 아니라 결함이 있을 가능성을 줄이는 것이 테스팅의 역할입니다.
문제 2: 다음 중 '완벽한 테스팅은 불가능하다'는 원리에 대한 설명으로 옳은 것은 무엇입니까?
A) 모든 결함을 발견하고 수정할 수 있다.
B) 모든 기능을 테스트할 수 있다.
C) 모든 상황을 테스트하는 것은 불가능하다.
D) 모든 결함이 없음을 증명할 수 있다.
정답(드래그)
C
해설(드래그)
완벽한 테스팅은 현실적으로 불가능합니다. 따라서 테스트 기법, 테스트 케이스 우선순위 지정, 리스크 기반 테스팅을 통해 테스트 노력을 집중하는 것이 필요합니다.
문제 3: 테스팅의 원리 중 '조기 테스팅'의 장점으로 가장 적절한 것은 무엇입니까?
A) 테스트 시간을 줄일 수 있다.
B) 결함을 조기에 발견하여 후속 결함을 예방할 수 있다.
C) 모든 결함을 제거할 수 있다.
D) 테스트 비용을 절감할 수 있다.
정답(드래그)
B
해설(드래그)
조기 테스팅은 결함을 초기에 발견하고 제거하여 후속 결함을 예방할 수 있으며, 이는 소프트웨어 개발 수명주기 후반에 발생할 수 있는 장애를 줄이고 품질 비용을 절감할 수 있습니다.
문제 4: 결함은 집중된다'는 테스팅 원리의 의미는 무엇입니까?
A) 모든 결함이 고르게 분포되어 있다.
B) 결함은 특정 컴포넌트에 집중되는 경향이 있다.
C) 모든 결함을 한 번에 발견할 수 있다.
D) 결함은 시간에 따라 분포가 변한다.
정답(드래그)
B
해설(드래그)
대부분의 결함은 소수의 시스템 컴포넌트에 집중되는 경향이 있습니다. 이는 파레토 원리의 예로, 리스크 기반 테스팅의 주요 입력으로 사용될 수 있습니다.
문제 5: 동일한 테스트를 계속 반복하면 테스트 효과가 줄어드는 이유는 무엇입니까?
A) 테스트가 자동화되기 때문이다.
B) 신규 결함 식별 효과가 점점 줄어들기 때문이다.
C) 테스트 환경이 변화하기 때문이다.
D) 테스트 데이터가 부족해지기 때문이다.
정답(드래그)
B
해설(드래그)
동일한 테스트를 반복하면 신규 결함 식별 효과가 줄어듭니다. 이를 극복하기 위해 기존 테스트와 데이터를 수정하고 새로운 테스트를 작성해야 합니다.