티스토리 뷰

다음 섹션에서는 널리 사용되는 경험 기반 테스트 기법으로 다음 세 가지를 다룬다.

  • 오류 추측(Error Guessing)
  • 탐색적 테스트(Exploratory Testing)
  • 체크리스트 기반 테스트(Checklist-Based Testing)


1. 오류 추측

오류 추측(Error Guessing)은 테스터의 지식을 바탕으로 오류, 결함, 실패의 발생 가능성을 예상하는 기법이다. 이 기법은 다음과 같은 요소에 기반한다.

  • 애플리케이션이 과거에 작동했던 방식
  • 개발자가 흔히 저지르는 오류와 그로 인해 발생하는 결함 유형
  • 유사한 애플리케이션에서 발생했던 실패 유형

오류, 결함, 실패는 일반적으로 다음과 관련될 수 있다.

  • 입력: 올바른 입력이 허용되지 않거나 매개변수가 잘못되거나 누락된 경우
  • 출력: 잘못된 형식, 잘못된 결과
  • 로직: 누락된 경우, 잘못된 연산자 사용
  • 계산: 잘못된 피연산자, 잘못된 계산
  • 인터페이스: 매개변수 불일치, 비호환 유형
  • 데이터: 잘못된 초기화, 잘못된 데이터 유형

결함 공격(Fault Attacks)은 오류 추측을 체계적으로 구현한 방식이다. 이 기법은 테스터가 발생 가능한 오류, 결함, 실패의 목록을 작성하거나 확보한 뒤, 해당 결함을 식별하거나 실패를 유발하는 테스트를 설계하는 것을 포함한다. 이러한 목록은 경험, 결함 및 실패 데이터, 또는 소프트웨어 실패의 일반적인 원인에 대한 지식을 기반으로 구축될 수 있다.

예시

  1. 로그인 시스템: 비밀번호 필드에 특수 문자를 포함한 입력값 테스트.
  2. 계산기 앱: 분모가 0인 경우의 나누기 연산 테스트.

2. 탐색적 테스트

탐색적 테스트(Exploratory Testing)는 테스터가 테스트 대상을 학습하면서 테스트를 설계, 실행, 평가하는 기법이다. 이 기법은 테스트 대상을 더 깊이 탐색하고 테스트되지 않은 영역을 테스트하는 데 사용된다.

특징

  • 탐색적 테스트는 때때로 세션 기반 테스트(Session-Based Testing)로 구조화될 수 있다. 이 접근법에서 테스트는 정의된 시간 범위 내에서 수행되며, 테스터는 테스트 목표를 포함하는 테스트 차터를 사용하여 테스트를 진행한다.
  • 테스트 세션 후에는 테스터와 이해관계자가 테스트 결과를 논의하는 디브리핑이 진행된다.

유용성

  • 명세가 부족하거나 불충분한 경우, 또는 테스트 시간 압박이 심한 경우에 유용하다.
  • 다른 공식적인 테스트 기법을 보완하는 데 적합하다.
  • 테스터가 경험, 도메인 지식, 분석적 사고, 호기심, 창의력을 가지고 있을 때 더욱 효과적이다.

장점

  1. 테스트되지 않은 영역을 탐색하여 숨겨진 결함을 발견할 가능성을 높인다.
  2. 테스터가 소프트웨어에 대한 지식을 실시간으로 확장하며 테스트를 진행할 수 있다.

예시

  1. 쇼핑몰 결제 시스템: 다양한 결제 옵션을 순차적으로 테스트하며 예상치 못한 결함 발견.
  2. 모바일 앱: 네트워크 연결 상태 변화(오프라인-온라인 전환) 중 애플리케이션의 동작 테스트.

3. 체크리스트 기반 테스트

체크리스트 기반 테스트(Checklist-Based Testing)는 테스터가 체크리스트에서 정의된 테스트 조건을 커버하는 테스트를 설계, 구현, 실행하는 기법이다.

특징

  • 체크리스트는 경험, 사용자에게 중요한 사항에 대한 지식, 또는 소프트웨어 실패 원인에 대한 이해를 기반으로 작성될 수 있다.
  • 체크리스트 항목은 일반적으로 질문 형태로 작성되며, 각 항목은 개별적으로 확인 가능하고 직접 검증 가능해야 한다.
  • 체크리스트는 기능 및 비기능 테스트를 지원할 수 있다(예: 사용성 테스트의 10가지 휴리스틱).

주의사항

  • 시간이 지남에 따라 체크리스트의 항목이 덜 효과적이 될 수 있으므로, 결함 분석을 기반으로 정기적으로 업데이트해야 한다.
  • 체크리스트가 지나치게 길어지지 않도록 주의해야 한다.

체크리스트 기반 테스트는 상세한 테스트 케이스가 없는 경우 가이드라인과 일관성을 제공할 수 있다.

 

예시

  1. 사용자 인터페이스(UI) 테스트
    • "모든 버튼이 예상대로 작동하는가?"
    • "레이아웃이 서로 다른 해상도에서 올바르게 표시되는가?"
  2. 보안 테스트
    • "비밀번호 입력 시 마스킹(*) 처리가 되는가?"
    • "SQL Injection 공격이 차단되는가?"

결론

경험 기반 테스트는 테스터의 직관과 지식을 활용하여 명세 기반 테스트로는 발견하기 어려운 결함을 탐지하는 데 효과적이다. 오류 추측, 탐색적 테스트, 체크리스트 기반 테스트는 각각 고유한 장점과 적용 사례를 가지고 있으며, 상황에 따라 조합하여 사용하면 테스트 범위와 품질을 극대화할 수 있다. 테스트 기법의 선택과 적용은 프로젝트 요구사항과 환경에 따라 유연하게 결정해야 한다.


 

유명 기업의 사례

구글

구글은 소프트웨어 개발 과정에서 경험 기반 테스트 기법을 적극적으로 활용한다. 구글의 테스터들은 이전 프로젝트에서 얻은 경험을 바탕으로 새로운 기능에 대한 테스트를 설계하고, 사용자 피드백을 통해 발견된 문제를 신속하게 해결한다. 또한, 탐색적 테스팅을 통해 제품의 품질을 높이는 데 기여한다.

마이크로소프트

마이크로소프트는 소프트웨어 제품에 경험 기반 테스트를 적용하여 사용자 경험을 개선한다. 특히, '도그푸딩(dogfooding)'이라는 시스템을 운영하며, 내부 직원들이 자사 제품을 사용해 문제를 발견하고 피드백을 제공한다. 이를 통해 실제 사용자 환경에서 발생할 수 있는 결함을 조기에 발견하고 수정한다.

페이스북

페이스북은 사용자 경험 개선을 위해 경험 기반 테스트를 활용한다. 새로운 기능을 배포하기 전에 내부 직원들이 해당 기능을 사용하고 피드백을 제공하며, 이 과정을 통해 실제 사용자들이 겪을 수 있는 문제를 사전에 발견하고 수정한다.

넷플릭스

넷플릭스는 사용자 인터페이스와 스트리밍 품질을 개선하기 위해 경험 기반 테스트를 실시한다. 테스터들은 다양한 환경에서 스트리밍 서비스를 테스트하며, 사용자 경험을 기반으로 문제를 식별하고 개선한다. 이 과정에서 발견된 문제를 신속하게 해결하여 사용자에게 더 나은 서비스를 제공한다.

'소프트웨어 테스팅' 카테고리의 다른 글

리스크 관리  (0) 2025.01.13
테스트 계획 및 추정  (0) 2025.01.13
테스트 활동 관리  (0) 2025.01.13
협업 기반 테스트 접근법  (0) 2025.01.13
화이트박스 테스트 기법  (0) 2025.01.13
블랙박스 테스트 기법  (0) 2025.01.13
테스트 분석 및 설계  (0) 2025.01.13
피드백과 리뷰 프로세스  (0) 2025.01.13