8장. 소프트웨어 테스팅
소프트웨어 테스팅 개요
프로그램 테스팅
- 프로그램이 의도한 대로 수행하는지를 보여주고 사용하기 전에 프로그램 결함을 발견하는 것을 목적으로 한다.
- 소프트웨어를 테스트할 때는 인공 데이터를 사용하여 프로그램을 실행한다.
- 테스트 실행 결과에서 오류, 이상 현상 또는 프로그램의 비기능적 속성에 대한 정보를 확인한다.
- 오류의 존재는 드러낼 수 있지만 오류의 부재는 증명할 수 없다.
- 정적 검증 기법도 포함하는 더 일반적인 검증과 확인 프로세스의 일부이다.
프로그램 테스팅 목표
- 개발자와 고객에게 소프트웨어가 요구사항을 만족한다는 것을 보여주기
- 맞춤 소프트웨어: 요구사항 문서의 모든 요구사항에 대해 최소한 하나의 테스트가 있어야 함
- 일반 소프트웨어 제품: 제품 릴리스에 포함될 모든 시스템 기능과 기능들의 조합에 대한 테스트가 있어야 함
- 소프트웨어의 동작이 잘못되거나 바람직하지 않거나 명세에 맞지 않는 상황 발견
- 결함 테스팅은 시스템 크래시, 다른 시스템과의 원치 않는 상호작용, 잘못된 계산, 데이터 손상 등 바람직하지 않은 시스템 동작을 찾아내는 것과 관련
검증(Verification)과 확인(Validation)
- 검증: "제품을 올바르게 구축하고 있는가"
- 확인: "올바른 제품을 구축하고 있는가"
- 소프트웨어가 사용자가 실제로 요구하는 것을 수행해야 한다.
V&V 신뢰도
- V&V의 목적은 시스템이 '목적에 적합'하다는 신뢰를 구축하는 것
- 시스템의 목적, 사용자 기대, 마케팅 환경에 따라 달라짐
- 소프트웨어 목적: 소프트웨어가 조직에 얼마나 중요한지에 따라 신뢰 수준이 결정됨
- 사용자 기대: 사용자가 특정 종류의 소프트웨어에 대해 낮은 기대를 가질 수 있음
- 마케팅 환경: 프로그램의 결함을 찾는 것보다 제품을 시장에 일찍 출시하는 것이 더 중요할 수 있음
검사와 테스팅
소프트웨어 검사 (정적 검증)
- 문제를 발견하기 위해 정적 시스템 표현을 분석하는 것과 관련