티스토리 뷰

QA_Theory

소프트웨어 테스트 개요

QABABO 2014. 10. 22. 14:27

소프트웨어 테스트 개요

결함의 원인

개발자는 코드, 문서 작성 시 실수를 저지를 수 있다. 여기서 이 실수가 오류(Error)이다. 그리고 이 오류로 인해 코드나 문서에는 결함(Defect, Bug)이 만들어진 것이다. 이 결함에 의해서 소프트웨어는 동작중에 의도와는 다른 동작을 하게 된다. 이 것을 장애(Failure)라고 한다. 모든 결함이 장애를 일으키는 것은 아니다. 고로, 결함의 원인은 인간이 범한 오류이다.

  • 결함의 원인-인간의 오류
    1.시간적 압박
    2.복잡한 코드
    3.기반환경(Infrastructure)의 복잡성
    4.기술이나 시스템의 변경
    5.시스템 상호간의 연동
  • 결함의 원인-환경적인 조건
    1.방사
    2.자기
    3.전자기장
    4.물리적 오염

테스팅의 역할

  1. 체계적인 테스팅은 시스템 또는 문서의 결함을 발견하여, 리스크를 줄이고 소프트웨어 시스템의 품질향상에 도움을 준다.

  2. 개발단계에서는 초기에 시작하여 리뷰, 정적분석 등을 통해 정적으로 시작될 수 있으며, 각 개발 단계에 대응되는 테스트레벨(Test level)에 따라 테스팅이 이루어진다.

  3. 유지보수 단계에서는 변경, 단종, 환경 변화에 따라, 운영 테스팅과 장애 예방 활동이 된다.

  4. 계약상 요구조건들이나 산업에 특화된 표준들을 만족시키기 위해서 필요하기도 하다.

QA와 QC

QA 면접 시에 자주 나오는 단골 질문이죠. QA와 QC의 차이점은 절대적으로 구분짖기는 어렵다고 생각합니다. QM, QE 모두 마찬가지죠. 그래도 어느정도의 일반적인 구분은 아래와 같습니다.

  • QC (Quality Control) : 품질관리
    1.제품의 불량율, 문제점 관리
    2.제품이 프로젝트 품질 기준에 적합한지 검사
    3.표준/규칙을 준수한다.

  • QA (Quality Assurance) : 품질보증
    1.프로세스 관리, 프로세스 준수 측정
    2.품질 기준(결함발생률, 결함수정률, 결함유형, 결함원인, 사용성평가점수 등)을 정하고, 추적하여 기준 이상인지 판단
    3.표준/규칙을 만든다.

테스팅이란?

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

  • 전통적 개념 : 정상 작동 여부 확인
  • 현재의 개념 :
    • 사용자의 기대수준과 요구사항에 맞게 구현되었는지를 확인
    • 리스크 정보를 정량적 수치로 의사결정권자에게 전달
    • 결함 예방 활동(개발 산출물 리뷰, 테스트케이스 작성중 결함 발견)
  • 일반적인 목적
    • 잔존 결함 발견
    • 명세 충족 확인
    • 사용자 및 비즈니스의 요구 충족 확인
    • 결함 예방
  • 부가적인 목적
    • 품질 수준에 대한 자신감 획득과 정보 제공
    • 비즈니스 리스크를 감소시키는 정보에 근거한 조언 제공
    • 개발 프로세스 점검
    • 논리적 설계의 구현 검증(Validate)
    • 시스템과 소프트웨어가 적절히 동작함을 확인
  • 관점에 따른 목적
    • 개발과정 : 결함을 찾아내고 수정하기 위해서 가능한 많은 장애 상황을 만든다
    • 인수 테스팅 : 요구사항에 맞는지 확신을 얻는 과정
    • 품질 평가 : 특정 시간에 시스템을 출시(release)하는 것의 리스크를 개발 프로젝트 관련자에게 전달
    • 유지보수 : 변경 작업이 일어나는 경우 새로운 결함이 유입되었는지 확인(리그레션 테스팅(Regression testing))
    • 운영 테스팅 기간 : 신뢰성, 가용성 등 시스템 특성 평가
  • 테스팅과 디버깅
    • 테스팅 : 결함을 발견하기 위한 활동
    • 디버깅 : 결함의 원인 분석, 코드 수정(개발활동)

참고자료 :

1. ISTQB 실라버스
2. 개발자도 알아야할 소프트웨어 테스팅 실무, 권원일 외