소프트웨어 테스팅이 왜필요한가?
- 결함발견
- 품질향상
- 개발 프로세스와 테스팅 프로세스를 개선하기 위한 정보 제공.
- 품질에대한 자신감 확보
- 결함 예방 활동
오류(Error) : 잘못 된 결과를 낳는 인간의 행위, 실수(mistake)와 동의어
결함(Defect, Bug,Fault) : 일반적으로 버그, 결함, 결점의 동의어, 요구된 기능을 적절히 처리하지 못하는 장애를 발생 시키는것
장애(Failure): 코드에 존재하는 결함의 실행
테스팅이란 무엇인가.
응용프로그램 또는 시스템의 동작과 성능, 안정성이 사용자가 요구하는 수준을 만족하는지 확인하기 위해 결함을 발견하는 매커니즘
테스트의 일반적인 원리.
- 테스팅은 결함이 존재함을 밝히는 활동이다.
- 완벽한 테스팅은 불가능 하다.
- 개발초기에 테스팅을 시작하라
- 결함 집중
- 살충제 패러독스
- 테스팅은 정황에 의존적이다.
- 오류 부재의 궤변
테스트 프로세스의 기초.
- 테스트 계획과 제어
테스트 목표와 임무를 달성하기 위해 이를 면밀히 확인하고 필요한 활동을 정의
계획
- 테스트 범위와 테스트를 위한 리스크에 대한 결정, 그리고 테스팅의 목적에 대한 식별
- 테스트 정책 의 실현과 테스트 전략의 구현
- 테스트 접근 방법에 대한 결정
- 테스트에 필요한 리소스의 결정
- 테스트 분석과 설계 작업의 일정 관리
- 테스트 완료 조건의 결정
제어
- 테스트 결과에 대한 측정과 분석
- 테스트 진척상황, 테스트 커버리지와 완료 조건의 모니터링 문서화
- 테스트 계획과의 차이를 교정하는 활동
- 테스팅의 진행과 변경에 대한 의사 결정 활동
산출물 : 테스트 계획 문서
- 분석과 설계
일반적이고 추상적인 테스팅 목적을 실제적이고 구체적인 테스트 상황과 테스트 케이스로 변환되는 활동
- 테스트 베이시스 리뷰
- 요구사항 명세서
- 아키텍쳐 (쇼프트웨어 구조)
- 개발 설계 문서
- 인터페이스
- 테스트 대상 아이템 또는 제품, 명세, 동작과 구조의 분석을 통해 테스트 상황 식별, 우선순위 선정
- 테스트 케이스의 설계와 우선순위 선정
- 비공식적인 테스트 기법으로 테스트 케이스 추가 도출 및 보완
- 테스트 상황과 테스트 케이스에 필요한 테스트 데이터 식별
- 테스트 환경 구축에 대한 디자인과 요구되는 기반 시설 및 도구의 식별
- 구현과 실행
가장 효율적이고 효과적으로 테스트를 실행하기 위하여 테스트 케이스를 조합하고 테스트 실행에 필요한 다른 정보를 포함하는 테스트 프로시저 쪼는 테스트 스크립트를 명세화 하는 활동
- 테스트 케이스의 개발, 구현과 우선순위 선정
- 자동화 테스트 스크립트 작성
- 테스트 하네스 준비
- 효율적인 테스트 시행을 위해 테스트 수트 생성
- 테스트 환경의 올바른 구축 여부 확인
- 계획된 순서에 의거하여 수동 또는 테스트 실행도구로 준비된 테스트 프로시저 수행
- 예상결과와 불일치시 인시던트 또는 결함 보고
- 불일치 원인을 알아내기 위하여 실제 결과나 현상 분석
- 테스트 케이스 결함
- 테스트 정황 결함
- 어플리케이션 결함
- 어플리케이션 정황 결함
- 각각의 불일치를 조치한 결과를 확인하기 위해 테스트 활동을 반복
- 확인테스트 : 수정을 확인하기 위해 이전에 실패한 테스트를 실행
- 회귀테스트 : 수정으로 인해 새로운 버그가 추가 발생하지 않았는지 또는 변경되지 않은 부분에 수정사항과 관련된 버그가 발생하지 않았는지 확인하는 테스트 실행
결함 유형
- 치명적 결함
- 하드웨어 또는 소프트웨어 장애, 시스템 중지, 시스템 잠김(접근불가), 데이터 손실 또는 변조
- 주요 결함
- 기능 상실, 잘못된 기능, 주요기능 오작동
- 일반 결함
- 불완전한 기능, 사소한 기능 오작동, 잘못된 인터페이스
- 사소한 결함
- 타이핑 에러, 사용자 불편, 스크린 표준의 위반, 좋지않은 인터페이스
- 개선 사항
- 에러는 아니지만 개선이 필요한 사항
우선순위도 중요하지만 상황에 따라 다름.
- 완료 조건의 평가와 리포팅
초기에 정의된 테스트 목표에 비해 어느정도 실제 테스트가 수행되었는지를 평가하는 활동
- 테스트 실행결과가 테스트 계획에 명시된 완료 조건을 만족하는지 확인
- 추가적인 테스트가 필요한지, 아니면 명세된 테스트 완료 조건을 변경해야 하는지에 대한 평가 수행
- 이해 관계자 에게 배포할 테스트 요약 보고서 작성
리포팅
- 발견된 결함과 미해결 결함의 추이 및 우선순위
- 테스트 진척도
- 리스크 및 매트릭으로 실증된 조언
- 테스트 환경의 가용성
- 테스트 커버리지, 결함 발견 효과성/효율성, 품질 평가 결과, 결함 상태별 결함수, 소프트웨서 사이즈 대비 결함수, 요구사항 별 테스트 일수, 해결되지 않은 결함과 그 영향, 오랫동안 수정 되지 않은 결함 분석 등
- 테스트 마감 활동
테스트 활동에서 데이터를 수집하여, 테스트에서 발견된 사실 및 수치적 데이터와 함께 테스팅 경험과 테스트웨어를 종합하고 축적하는 활동
- 테스트 결과 마감
- 예정된 산출물 확인
- 인시던트 리포트(결함 리포트 포함) 종료
- 해결되지 않은 추가 및 변경 요구 사항에 대한 처리
- 시스템을 인수하는 것 문서화
- 테스트웨어, 테스트환경, 테스트 기반설비를 차후에 사용할 것을 대비하여 마감 하고 보관
- 테스트웨어를 유지보수 조직에 이관
- 테스트 프로세스 심사(평가) 및 개선 사항 제안
- 이후 릴리즈나 프로젝트, 테스트 설숙도의 개선에 지침이 될 수 있도록 테스트 프로젝트를 통해 얻은 교훈을 분석
테스팅의 심리학
테스트 수행에 일정 수준 독립성 확보는 효율적
아래 숫자가 높을 수록 독립성이 높다
- 테스트 대상 소프트 웨어의 개발자가 설계한 테스트
- (개발팀 내의) 다른 인원이 설계한 테스트
- 다른 그룹의 독립적인 테스트 팀의 일원, 또는 테스트 전문가가 설계한 테스트
- 다른 조직 또는 다른 회사의 인원이 설계한 테스트
개발자와 테스터간의 원만한 커뮤니케이션
- 다툼보다는 협력으로 시작한다.
- 소프트 웨어를 개발한 사람에 대한 비평없이 중립적이고 사실에 근거해서 찾아낸 사항을 전달
- 다른인원이 어떻게 느끼는지 왜 그렇게 반응하는지 이해 하려고 노력한다.
- 상호간에 의사소통 했던 것을 상대방이 정확히 이해했는지 확인한다.
'ISTQB' 카테고리의 다른 글
ISTQB CTFL 국제자격증 2013년 5회 정기시험(한글)(강북)(9월 30일) (0) | 2013.10.15 |
---|---|
4장 테스트 설계 기법 (0) | 2013.09.26 |
3장 정적 기법 (0) | 2013.09.26 |
2장 소프트웨어 수명주기와 테스팅 (0) | 2013.09.25 |