* 이 글은 개발자도 알아야할 소프트웨어 테스팅 실무 제3판을 토대로 작성되었습니다.
* 책에 실린 내용 외 추가적인 정의가 있으며 교재 목차와 순서가 다소 다를 수 있습니다.
* 2차 가공 및 재배포는 금지합니다.
* 잘못된 개념 혹은 오탈자는 댓글로 알려주세요.
1. 테스팅 관련 용어
[ 테스팅과 디버깅 ]
* 테스팅
- 결함을 발견하고 예방하기 위한 활동
* 디버깅
- 결함의 원인을 밝히고 코드를 수정하는 개발 활동. 이후, 테스터에 의한 확인 테스팅을 수행함
[ 오류, 결함, 장애 차이점과 실수, 버그와의 관련성 ]
* 오류(Error) - 실수(Mistake)
- 결함의 원인, 사람에 의해 발생되는 실수 또는 오해
예) 잘못 입력한 변수 이름, 개발자의 잘못된 계산식의 이해
* 결함(Defect) - 버그(Bug)
- 오류 또는 실수의 결과
- 코드에 존재하는 결함은 장애의 원인이지만, 모든 결함이 장애를 일으키는 것은 아님
예) 요구사항과의 편차, 잘못된 계산식으로의 코딩
* 장애(Failure)
- 결함이 실행될 때 발생할 뿐만 아니라 환경적인 조건에 의해 의도치 않은 결과 발생
예) 방사, 자기, 전자기장, 물리적 오염
2. 테스팅 정의와 종류 및 목적
[ 테스팅 정의 ]
* 과거 : 응용 프로그램, 시스템의 정상 작동 여부 확인
* 현재 : 사용자의 요구사항에 맞게 구현되고 동작하는지를 확인하여 결함을 발견 ( 결함 예방, 발견 활동 )
* 필요성 : 소프트웨어가 기대한대로 동작하지 않은 경우 다양한 문제가 발생되는 것을 최소화하기 위함
다양한 문제) 금전적 손실, 시간 낭비, 비즈니스 이미지 손상, 부상, 사망 등
[ 테스팅과 품질 ]
* 품질
- 컴포넌트, 시스템, 프로세스가 명시된 요구사항은 물론 사용자와 고객의 필요와 기대를 충족시키는 정도
* 높은 소프트웨어 품질 판단 수단
- 기능 및 비기능 테스트에서 찾은 결함이 극소수이거나 없을 경우
* 품질 높이는 방법
- 경험 기반 테스트를 통한 품질보증(QA; Quality Assurance) 관점에서의 정보 확보
- 품질보증(QA) : 주로 고객 요구 규격에 대한 적합성 판단이나 품질 경영 시스템 추진, 관리 등을 담당
[ 테스팅 종류 및 목적 ]
* 개발 과정에서의 테스트
- 개발 초기 요구사항 분석 단계에서 테스팅
- 효과 : 높아지는 품질, 결함 발생 가능성 최소화, 개발 후반부에서의 낮아지는 테스팅 비용
- 테스팅은 한 번에 이루어지는 것이 아니라 각각의 개발 단계에 대응하는 테스트 레벨이 별도로 존재
- 테스트 레벨 : 한 번에 총체적으로 조직화하고 관리하기 위한 테스트 활동의 묶음
* 유지보수 과정에서의 테스트
- 필요 이유 : 시스템 변경, 단종, 운영 환경의 변화
- 효과 : 변경으로 야기될 수 있는 결함과 그로인해 발생 가능한 장애를 예방하기 위함
[ 테스팅 목적 ]
* 일반적인 테스팅의 목적
- 결함 예방 및 발견, 사용자 및 비즈니스 요구 충족 확인
* 부가적인 테스팅의 목적
- 품질 수준에 대한 자신감 획득과 정보 제공, 시스템과 소프트웨어가 적절히 동작함을 확인
* 관점에 따른 테스팅의 목적
- 개발 과정 : 결함 발견, 수정을 위한 가능한 많은 장애 상황 만들기
- 인수 테스팅 : 예상에 맞는 동작 확인, 요구사항과 맞는지 확신 얻기
- 품질 평가 : 특정 시간에 시스템을 출시하는 것의 리스크를 개발 프로젝트 관련자에게 전달
- 유지보수 : 리그레션 테스팅(Regression Testing) 과정 포함
- 운영 : 시스템 특성(신뢰성, 가용성 등)을 평가
* 리그레션 테스팅(Regression Testing)
- 회귀 테스팅
- 수정으로 인해 변경되지 않은 소프트웨어 영역에 의도하지 않은 새로운 결함이 유입되지 않았는지
- 기존에 숨어있던 결함이 노출되지 않았는지 확인하기 위해 이전에 테스트한 프로그램을 다시 테스팅
3. 테스팅 원리 및 프로세스
[테스팅 원리 - 소프트웨어 테스트에 일반적으로 적용되는 7원칙]
* 목적
- 결함 발견 : 테스팅은 결함제거가 아닌 결함의 발견을 목적으로 함
* 법칙
- 초기 집중 : 품질 비용 감소를 위한 개발 설계, 초기에 테스트 시작
- 요르돈 법칙 : 소프트웨어 개발 초기 체계적인 분석 및 설계가 수행되지 못하면 그 결과가 프로젝트 후반에 영향을 미치게 되어 비용이 커진다는 법칙
- 결함 집중 : 결함의 80%는 20% 코드에 집중, 결함이 높은 곳에 자원 집중
- 파레토 법칙
- 오류-부재 궤변 : 결함을 모두 제거했을지라도 우수한 품질이라고 볼 수 없음
* 한계
- 불완전성 : 자원의 한계때문에 완벽한 테스팅은 불가능
- 무한 경로(내부 조건이 많음), 무한 입력값(입력값의 조합이 많음), 무한 타이밍(GUI 이벤트 발생 순서에 대한 조합 많음)
- 살충제 페러독스 : 동일한 테스트 전략을 반복적으로 수행한다면, 더이상 새로운 결함을 찾아내지 못함
- 정황 의존성 : 테스트는 테스트 주변 환경에 의한 영향을 받기 때문에 분야에 따라 다른 테스팅을 해야함
[테스팅 프로세스]
* 테스팅 준비 단계
- 테스트 실행 전(계획, 설계)에 준비해야할 네 가지와 테스트 실행 시 준비해야할 테스트 대상이 필요함
- 테스트 대상은 미리 정해둬야함
1) 테스트 베이시스
- 개발 중간산출물 등 테스트 설계 및 구현의 기반이 됨
- 테스트 계획 단계에서부터 필요, 설계 시 반드시 요구
2) 테스트 기법
- 테스트 분석 및 설계 단계에서 필요
3) 테스트 기반 설비 및 환경
- 테스트 실행 단계 전에 구축되어야 함
4) 테스트 조직
- 계획 단계에서부터 필요
- 테스트 실행 단계에서는 상대적으로 다수의 인력을 필요로 함
* 테스팅을 효과적으로 수행하기 위해서는 실행에 앞서 계획, 설계, 준비, 평가 등의 작업이 선행되어야 함
- 순서 : 계획/제어 → 분석/설계 → 구현/실행 → 완료 조건 평가/리포팅 → 마감
* 테스트 계획
- 테스트 목표와 임무를 확인하고 필요한 활동을 정의하는 것
- 테스팅 목적 식별, 테스트 접근 방법 결정, 일정 관리, 완료 조건 결정 등
- 산출물 : 테스트 계획 문서
* 테스트 제어
- 계획 대비 실제 진행 상황을 비교하는 지속적인 활동
- 테스트 결과에 대한 측정 및 분석, 테스팅의 진행/변경에 대한 의사 결정
- 산출물 : 테스트 계획 문서
* 테스트 분석과 설계
- 테스트 베이시스, 요구사항 명세서 리뷰, 테스트 상황 식별 및 우선 순위 결정 등
- 산출물 : 테스트 설계 문서, 테스트 케이스 진행 리포트
* 테스트 구현과 실행
- 테스트 케이스 개발, 구현과 우선순위 선정, 자동화 테스트 스크립트 작성
- 각각의 조치한 결과를 확인하기 위해 테스트 활동 반복
- 산출물 : 테스트 프로시저, 테스트 실행 결과, 진행 리포트, 결함 리포트
* 테스트 완료 조건 평가
- 테스트 실행 결과가 완료 조건을 만족하는지 확인
- 추가 테스트의 필요 여부와 완료 조건의 변경 여부에 대한 평가 수행
- 산출물 : 릴리즈 조언, 최종 보고서
* 리포팅
- 발견된 결함과 미해결 결함의 추이 및 우선순위 표현
- 산출물 : 릴리즈 조언, 최종 보고서
* 테스트 마감
- 산출물 확인 및 결함 리포트 작성 종료, 시스템 인수 문서화
- 테스트 프로세스 심사(평가) 및 개선 사항 제안
- 산출물 : 테스트 프로세스 심사 보고서, 테스트 프로세스 개선 계획서
'IT 자격증 > ISTQB' 카테고리의 다른 글
ISTQB) Part5 테스트 관리 (0) | 2020.12.29 |
---|---|
ISTQB) Part4 테스트 설계 기법 (0) | 2020.12.23 |
ISTQB) Part3 정적 기법 (0) | 2020.12.23 |
ISTQB) Part2. 소프트웨어 수명주기와 테스팅 (0) | 2020.12.23 |
댓글