소프트웨어 테스트

정의
소프트웨어 테스트(software testing)는 개발된 소프트웨어가 요구된 기능을 올바르게 수행하는지, 결함이 존재하지 않는지를 확인하기 위해 체계적으로 수행되는 검증·평가 활동을 말한다. 테스트는 일반적으로 입력 데이터를 소프트웨어에 제공하고, 예상되는 출력과 실제 출력을 비교함으로써 수행된다.

개요
소프트웨어 테스트는 소프트웨어 개발 생명주기(SDLC)의 여러 단계에서 진행되며, 주된 목적은 결함을 조기에 발견·수정하여 품질을 향상시키고, 최종 사용자에게 신뢰성 있는 제품을 제공하는 데 있다. 테스트는 크게 정적 테스트와 동적 테스트로 구분된다. 정적 테스트는 코드 자체를 분석하거나 리뷰, 정적 분석 도구 등을 이용하는 방식이며, 동적 테스트는 실제 실행 환경에서 프로그램을 구동하여 동작을 확인하는 방식이다.

동적 테스트는 다시 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트 등으로 단계별로 구분된다. 또한, 검증(Verification)확인(Validation)이라는 두 가지 관점에서 수행될 수 있다. 검증은 “설계가 올바른가”를, 확인은 “사용자의 요구를 충족하는가”를 평가한다.

테스트 자동화 도구(예: Selenium, JUnit, TestNG 등)의 활용으로 반복적인 테스트 작업을 효율화하고, 지속적 통합·배포(CI/CD) 파이프라인에 테스트를 통합하는 사례가 널리 확대되고 있다.

어원/유래
‘소프트웨어’는 영단어 software를 한글 음차한 것이며, ‘테스트’는 영단어 test의 음차·번역 형태이다. ‘소프트웨어 테스트’라는 복합 용어는 20세기 후반 컴퓨터 과학 및 소프트웨어 공학 분야에서 본격적으로 사용되기 시작했으며, 정확한 최초 사용 시점이나 출처는 확인되지 않는다.

특징

  1. 목표 지향성: 결함 발견, 품질 보증, 위험 감소 등 구체적인 목표를 가지고 설계·실행된다.
  2. 계획·설계 기반: 테스트 계획(Test Plan), 테스트 케이스(Test Case), 테스트 시나리오(Test Scenario) 등 사전 문서화가 필수적이다.
  3. 반복성: 개발 단계가 진행될수록 테스트를 반복 수행하여 새로운 변경 사항이 기존 기능에 영향을 미치지 않도록 검증한다.
  4. 자동화와 수동 테스트의 병행: 자동화가 가능한 반복 작업은 자동화하고, UI·사용자 경험·복잡한 시나리오 등은 수동으로 수행한다.
  5. 품질 메트릭 활용: 결함 밀도, 테스트 커버리지, 결함 검출율 등 정량적 지표를 통해 테스트 효율성을 평가한다.

관련 항목

  • 소프트웨어 품질 보증(SQA)
  • 소프트웨어 검증·확인(V&V)
  • 테스트 케이스, 테스트 시나리오
  • 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트
  • 회귀 테스트, 성능 테스트, 보안 테스트, 스트레스 테스트
  • 테스트 자동화, 지속적 통합(CI), 지속적 배포(CD)
  • 결함 관리(버그 트래킹)

(※ 위 내용은 공개된 문헌 및 표준을 기반으로 작성되었으며, 최신 기술 동향에 따라 추가·변경될 수 있다.)

둘러보기

더 찾아볼 만한 주제