소프트웨어 테스팅이 왜필요한가?

  • 결함발견
  • 품질향상
  • 개발 프로세스와 테스팅 프로세스를 개선하기 위한 정보 제공.
  • 품질에대한 자신감 확보
  • 결함 예방 활동

오류(Error) : 잘못 된 결과를 낳는 인간의 행위, 실수(mistake)와 동의어

결함(Defect, Bug,Fault) : 일반적으로 버그, 결함, 결점의 동의어, 요구된 기능을 적절히 처리하지 못하는 장애를 발생 시키는것  

장애(Failure): 코드에 존재하는 결함의 실행

테스팅이란 무엇인가.

응용프로그램 또는 시스템의 동작과 성능, 안정성이 사용자가 요구하는 수준을 만족하는지 확인하기 위해 결함을 발견하는 매커니즘

테스트의 일반적인 원리.

  • 테스팅은 결함이 존재함을 밝히는 활동이다. 
  • 완벽한 테스팅은 불가능 하다.
  • 개발초기에 테스팅을 시작하라
  • 결함 집중
  • 살충제 패러독스
  • 테스팅은 정황에 의존적이다.
  • 오류 부재의 궤변 

테스트 프로세스의 기초.

- 테스트 계획과 제어

테스트 목표와 임무를 달성하기 위해 이를 면밀히 확인하고 필요한 활동을 정의 

계획

  • 테스트 범위와 테스트를 위한 리스크에 대한 결정, 그리고 테스팅의 목적에 대한 식별
  • 테스트 정책 의 실현과 테스트 전략의 구현
  • 테스트 접근 방법에 대한 결정 
  • 테스트에 필요한 리소스의 결정
  • 테스트 분석과 설계 작업의 일정 관리 
  • 테스트 완료 조건의 결정 

제어

  • 테스트 결과에 대한 측정과 분석
  • 테스트 진척상황, 테스트 커버리지와 완료 조건의 모니터링 문서화
  • 테스트 계획과의 차이를 교정하는 활동
  • 테스팅의 진행과 변경에 대한 의사 결정 활동

산출물 : 테스트 계획 문서

- 분석과 설계

일반적이고 추상적인 테스팅 목적을 실제적이고 구체적인 테스트 상황과 테스트 케이스로 변환되는 활동

  • 테스트 베이시스 리뷰
    • 요구사항 명세서
    • 아키텍쳐 (쇼프트웨어 구조)
    • 개발 설계 문서
    • 인터페이스
  • 테스트 대상 아이템 또는 제품, 명세, 동작과 구조의 분석을 통해 테스트 상황 식별, 우선순위 선정
  • 테스트 케이스의 설계와 우선순위 선정
  • 비공식적인 테스트 기법으로 테스트 케이스 추가 도출 및 보완
  • 테스트 상황과 테스트 케이스에 필요한 테스트 데이터 식별
  • 테스트 환경 구축에 대한 디자인과 요구되는 기반 시설 및 도구의 식별

- 구현과 실행

가장 효율적이고 효과적으로 테스트를 실행하기 위하여 테스트 케이스를 조합하고 테스트 실행에 필요한 다른 정보를 포함하는 테스트 프로시저 쪼는 테스트 스크립트를 명세화 하는 활동

  • 테스트 케이스의 개발, 구현과 우선순위 선정
  • 자동화 테스트 스크립트 작성
  • 테스트 하네스 준비
  • 효율적인 테스트 시행을 위해 테스트 수트 생성
  • 테스트 환경의 올바른 구축 여부 확인
  • 계획된 순서에 의거하여 수동 또는 테스트 실행도구로 준비된 테스트 프로시저 수행
  • 예상결과와 불일치시 인시던트 또는 결함 보고
  • 불일치 원인을 알아내기 위하여 실제 결과나 현상 분석
    • 테스트 케이스 결함
    • 테스트 정황 결함
    • 어플리케이션 결함
    • 어플리케이션 정황 결함
  • 각각의 불일치를 조치한 결과를 확인하기 위해 테스트 활동을 반복
    • 확인테스트 : 수정을 확인하기 위해 이전에 실패한 테스트를 실행
    • 회귀테스트 : 수정으로 인해 새로운 버그가 추가 발생하지 않았는지 또는 변경되지 않은 부분에 수정사항과 관련된 버그가 발생하지 않았는지 확인하는 테스트 실행

결함 유형

  • 치명적 결함
    • 하드웨어 또는 소프트웨어 장애, 시스템 중지, 시스템 잠김(접근불가), 데이터 손실 또는 변조
  • 주요 결함
    • 기능 상실, 잘못된 기능, 주요기능 오작동
  • 일반 결함
    • 불완전한 기능, 사소한 기능 오작동, 잘못된 인터페이스
  • 사소한 결함
    • 타이핑 에러, 사용자 불편, 스크린 표준의 위반, 좋지않은 인터페이스
  • 개선 사항 
    • 에러는 아니지만 개선이 필요한 사항

우선순위도 중요하지만 상황에 따라 다름.

- 완료 조건의 평가와 리포팅

초기에 정의된 테스트 목표에 비해 어느정도 실제 테스트가 수행되었는지를 평가하는 활동

  • 테스트 실행결과가 테스트 계획에 명시된 완료 조건을 만족하는지 확인
  • 추가적인 테스트가 필요한지, 아니면 명세된 테스트 완료 조건을 변경해야 하는지에 대한 평가 수행
  • 이해 관계자 에게 배포할 테스트 요약 보고서 작성

리포팅 

  • 발견된 결함과 미해결 결함의 추이 및 우선순위
  • 테스트 진척도
  • 리스크 및 매트릭으로 실증된 조언
  • 테스트 환경의 가용성
  • 테스트 커버리지, 결함 발견 효과성/효율성, 품질 평가 결과, 결함 상태별 결함수, 소프트웨서 사이즈 대비 결함수, 요구사항 별 테스트 일수, 해결되지 않은 결함과 그 영향, 오랫동안 수정 되지 않은 결함 분석 등 

- 테스트 마감 활동

테스트 활동에서 데이터를 수집하여, 테스트에서 발견된 사실 및 수치적 데이터와 함께 테스팅 경험과 테스트웨어를 종합하고 축적하는 활동

  • 테스트 결과 마감
    • 예정된 산출물 확인
    • 인시던트 리포트(결함 리포트 포함) 종료
    • 해결되지 않은 추가 및 변경 요구 사항에 대한 처리
    • 시스템을 인수하는 것 문서화
  • 테스트웨어, 테스트환경, 테스트 기반설비를 차후에 사용할 것을 대비하여 마감 하고 보관
  • 테스트웨어를 유지보수 조직에 이관
  • 테스트 프로세스 심사(평가) 및 개선 사항 제안
  • 이후 릴리즈나 프로젝트, 테스트 설숙도의 개선에 지침이 될 수 있도록 테스트 프로젝트를 통해 얻은 교훈을 분석

테스팅의 심리학

테스트 수행에 일정 수준 독립성 확보는 효율적

아래 숫자가 높을 수록  독립성이 높다 

  1. 테스트 대상 소프트 웨어의 개발자가 설계한 테스트
  2. (개발팀 내의) 다른 인원이 설계한 테스트
  3. 다른 그룹의 독립적인 테스트 팀의 일원, 또는 테스트 전문가가 설계한 테스트
  4. 다른 조직 또는 다른 회사의 인원이 설계한 테스트

개발자와 테스터간의 원만한 커뮤니케이션

  • 다툼보다는 협력으로 시작한다.
  • 소프트 웨어를 개발한 사람에 대한 비평없이 중립적이고 사실에 근거해서 찾아낸 사항을 전달
  • 다른인원이 어떻게 느끼는지 왜 그렇게 반응하는지 이해 하려고 노력한다.
  • 상호간에 의사소통 했던 것을 상대방이 정확히 이해했는지 확인한다. 


Posted by 마법수정화살
,