//구글콘솔 광고 추가가
테스팅과 디버깅의 차이
테스팅 - 결함을 발견하기 위한 활동.
- 테스트는 공정상(한 제품이 완성되기까지 거쳐야되는 단)의 결함을 발견할 수 있다.
- 시스템이 정지되는 결함과 정지가 되지 않는 결함이 모두 포함된다.
디버깅 - 결함의 원인을 찾고 코드를 수정하는 개발 활동.
- 디버깅 후 테스터에 의해 확인 테스팅을 수행하여 결함이 제대로 고쳐졌는지 확인 필요.
- 개발자가 수행.

 

테스팅의 특성 ★
완벽한 테스팅은 불가능하다.
- 한 프로그램 내의 내부 조건이 무수히 많을 수 있다.
- 입력이 가질 수 있는 모든 값의 조합이 무수히 많다.
- 이벤트 발생 순서에 대한 조합도 무수히 많다.
테스트는 결함이 없음을 보이려는 것이 아니다.
- 테스팅은 결함이 존재함을 밝히는 활동.
본인이 만든 프로그램의 결함을 발견하기는 쉽지 않다,
현실적인 테스팅의 목적.
- 주어진 리소스(시간, 인력 등)로 리스크가 높은 시스템 부분의 결함을 발견할 확률을 극대화 >> 리스크의 최소화.

 

테스팅의 일반적 원리 7가지
1. 테스팅은 결함이 존재함을 밝히는 활동이다.
- 잠재적으로는 존재하는 결함 줄임.
>> But, 결함이 없다고는 증명할 수 없다.
2. 완벽한 테스팅은 불가능하다.
- 리스크가 높은 것부터 해결해 나가야 함.(중요도 순서)
>> 한 프로그램 내에 내부 조건이 너무 많음.
>> 입력이 가질 수 있는 모든 값의 조합이 무수히 많다.
>> 이벤트 발생시 발생 순서에 대해 조합도 무수히 많다.
>> 리스크에 따라 테스트 강도 높게 수행 -> 실제 완벽하게 수행하는 것은 불가능하다.
3. 개발 초기에 테스팅 시작한다.
>> 개발의 시작과 동시에 테스트를 계획하고 전략적으로 접근.
>> 요구사항 분석서와 설계서 등의 개발 산출물 분석후 테스트 케이스 도출. 
4. 결함은 집중되어 있다. 
- 특정 모듈에 집중되어 있음. (넓게 퍼져있지 않음.) >> 결함이 집중돼있는 곳을 잡아야 돼.
>> 대다수의 결함들은 소수의 특정 모듈에 집중되어 발생하는 경향을 보임.
>>결함의 집중은 운영상의 장애를 초래함. (운영상의 장애 ex : 복잡한 구조의 모듈, 다른 모듈과 다량의 상호작용을 하는 모듈, 개발 난이도가 높거나 최신 기술을 사용한 모듈, 크기가 큰 모듈, 경험이 미흡한 팀에서 개발한 모듈, 새롭게 개발한 모듈)
5. 살충제 패러독스.
- 면역력이 생기는 거 >> 테스트 케이스를 늘 똑같은 걸 사용하면 버그 찾기 쉽지 않음. >> 주기적으로 업데이트된 테스트 케이스 필요.
>> 동일한 테스트 케이스로 동일한 테스트를 반복하면 결함을 찾기 어려워진다.
>> 더 많은 결함을 찾기 위해서는 테스트 케이스를 정기적으로 리뷰하고 개선해야 함. 
6. 테스팅은 정황에 의존적이다. >> 테스트는 정황과 도메인(대상 영역)에 따라 다르게 수행되어야 함.(똑같은 테스트 케이스를 쓰는 게 X)
>> 모든 테스트에 적용되어야 하는 것 : 테스트 프로젝트 기획, 표준적인 기법 적용, 독립적인 테스트 환경, 효율적/ 효과적 테스트 팀 조직, 정식 리포팅 등.
7. 오류 - 부재의 궤변.
- 개발된 소프트웨어를 사용자가 원하는 데로 만들지 않으면(요구사항 충족 ㄴㄴ, 요구 수준 만족 ㄴㄴ) 결함을 수정해도 필요(또는 의미)가 없음.

 

테스팅에 대한 오해
1. 테스트는 완벽하게 수행될 수 있다. >> X
2. 아무나 테스트를 수행할 수 있다. >> X 
3. 테스트는 그리 어려운 작업이 아니다. >> X
4. SW나 시스템이 잘 실행됨을 보여주는 것이다 >> X >> 결함이 있다는 것을 보여주는 것. 결함을 잡고 리스크를 낮춘다!! 실행이 잘되는 걸 보여주는 건 개발자의 역할!
5. 테스트는 개발 이후의 작업이다. >> X 개발 초기의 작업.
6. 개발 일정에 따라 테스트는 생략 될 수 있다. >> X
7. 시간, 인력이 부족해서 테스팅을 제대로 못한다. >> X 말도 안 되는 내용.

 

테스트 프로세스와 산출물
계획 / 통제(제어) - 조직 구성 테스트 베이시스(기초문서- 엑셀파일) 필요.

분석 및 설계 - 테스트 기법 필요, 테스트 베이시스 필수, 테스트 설비 및 환경 구축.

구현과 실행 - 테스트하는 거.

완료 조건의 평가와 리포팅 - 테스트 커버리지 90퍼센트 했으니까 그만 끝내자. 마감 보고서 쓰기(리포팅).

테스트 마감활동 - 결함 보고서 쓰기.

 

728x90
반응형

+ Recent posts