[소프트웨어개발] 소프트웨어 테스트

thingzoo·2024년 2월 3일
0
post-thumbnail

소프트웨어 테스트

소프트웨어에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차

  • 개발된 소프트웨어가 고객의 요구사항을 만족시키는지 확인(Validation)
  • 소프트웨어가 기능을 정확히 수행하는지 검증(Verification)

테스트는 오류를 찾는 작업, 디버깅은 오류를 수정하는 작업

소프트웨어 테스트의 기본원칙

  • 테스팅은 결함을 찾아내는 활동: 결함을 줄일 순 있지만, 결함이 없다고 증명할 수 없음
  • 완벽한 테스팅 불가능: 무한경로, 무한입력으로 인한 어려움
  • 개발 초기에 테스팅 시작: 테스팅 기간 단축, 재작업 감소로 개발기간 단축 및 결함 예방
  • 결함 집중(Defect Clustering)
    • 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재
    • 파레토 법칙(Pareto): 20% 모듈에서 80% 결함 발견(20.6)⭐️
  • 살충제 패러독스(Presticide Paradox): 반복적인 테스트로는 새로운 결함을 찾지 못함
  • 테스팅은 정황(Context)에 의존적: 소프트웨어 성격에 맞게 테스트 실시
  • 오류-부재의 궤변: 요구사항을 충족하지 못하면, 결함이 없다해도 품질이 좋다 볼 수 없음
    결완초집 살정오

테스트 프로세스

  1. 테스트 계획
  2. 테스트 분석 및 디자인
  3. 테스트케이스 및 시나리오 작성
  4. 테스트 수행
  5. 테스트 결과 평가 및 리포팅

테스트 산출물

테스트 계획서, 테스트 케이스, 테스트 시나리오, 테스트 결과서

테스트 케이스

특정 목표를 검증하기 위해 설계된 입력값, 실행조건, 기대결과를 포함한 테스트 항목의 명세서

  • 테스트 계획을 바탕으로 작성됨
  • 명세 기반 테스트(블랙박스 테스트)의 설계 산출물에 해당

테스트 시나리오

  • 테스트 수행을 위한 여러 개의 테스트 케이스의 집합
  • 테스트 케이스의 동작 순서를 기술한 문서
  • 테스트 절차를 명세한 문서

작성 시 유의점

  • 시스템별, 모듈별, 항목별 등 여러 개의 테스트 시나리오 분리
  • 고객의 요구사항과 설계 문서, 사용자 시나리오 등을 참고해 작성
  • 항목: 식별자 번호, 순서 번호, 테스트 데이터, 관련 테스트 케이스, 예상 결과, 확인 항목

테스트 오라클⭐️

  • 테스트케이스에 대해 프로그램의 실제 실행결과가 올바른 결과인지를 판단하는 메커니즘(기법)
  • 사전에 정의된 참값을 입력하여 비교

테스트 오라클의 종류

참(True) 오라클

  • 모든 입력값에 대해 정확한 결과를 생성
  • 발생된 오류를 완벽하게 검출 가능
  • 크리티컬한 시스템에서 사용(항공기, 임베디드시스템 등)

샘플링(Sampling) 오라클

  • 특정 입력값들에 대해서만 예상되는 결과를 제공
  • 대부분의 일반적인 소프트웨어에서 사용

휴리스틱(Heurisitc) 오라클

  • 특정 입력값에 대해서는 정확한 결과를 제공하나,
  • 나머지 입력값에 대해서는 근사(추정)결과 제공

일관성(Consistent) 검사 오라클

  • 소프트웨어 변경 전후 테스트 결과값이 동일한지 검증
profile
공부한 내용은 바로바로 기록하자!

0개의 댓글