ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 버그/이슈/결함/장애
    QA 관련/정보 2020. 10. 8. 17:49

    버그

    제품의 가치를 위협하는 제품 내의 문제

    소프트웨어 기능이나 성능에 영향을 미치는 결점

    대부분, 테스터에 의해 유닛테스트에서 발견됨

    이슈

    테스트, 프로젝트, 비지니스까지 위협하는 문제

    테스트를 어렵고 느리게 만드는 제품/프로젝트 내에 존재하는 문제

    코드에서만의 문제 X


    결함(defect)

    시스템 또는 소프트웨어 응용 프로그램의 실제 및 예상 결과의 편차

    요구사항이나 명세를 충족시키지 못 하는 결점

    개발자에 의해 발생 및 해결

    소프트웨어의 무능력, 비효율성을 나타냄

    오류 → 결함 → 장애 (결함이 반드시 장애를 일으키진 X)

    유형

    산술적(Arithmetic) 결함
    산술식에서의 실수 / 액세스 작업 또는 지식 부족으로 인해 발생 / 작성한 코드를 볼 수 없어서 생기는 코드 혼잡(congestion)
    논리적(Logical) 결함
    코드 구현에서 발생하는 실수 / 이해 X 또는 잘못된 생각으로 인해 발생 / 코너 케이스 / 소프트웨어 핵심(core) 관련

    코너케이스: 여러가지 변수와 환경의 복합적인 상호작용으로 발생한는 문제 (재현 어려움 → 디버그, 테스트 어려움)
    ex. 변수 입력  A 기계 테스트 통과 / B 기계 오류 발생 (정상 작동 또는 오류 발생 랜덤)
    구문(Syntax) 결함
    코드 작성 스타일 실수 / 작은 실수 / ; 와 같은 부호
    멀티 스레드 결함
    멀티 스레딩 프로세스는 복잡한 디버깅의 가능성이 있음 / 데드락 또는 고갈(starvation) 생성 / 시스템 장애로 이어짐

    멀티스레드: 하나의 프로세스 내에서 두 개 이상의 스레드가 동시에 작업을 수행하는 것
    데드락: 둘 이상의 프로세스가 서로 남이 가진 자원을 요구하면서 양쪽 모두 작업 수행을 할 수 없이 대기 상태로 놓이는 상태.
    고갈: 프로세스는 실행될 준비가 되어 있지만, 다른 프로세스와의 경쟁에서 우선순위가 낮다는 이유 등으로 매번 자원을 할당받지 못 해서 작업을 완료할 수 없는 상황.
    인터페이스 결함
    소프트웨어 & 사용자 상호 작용 결함 / 다양한 인터페이스 테스트 (복잡한 인터페이스, 불명확 인터페이스, 플랫폼 기반 인터페이스)
    성능(Performance) 결함
    원하는 결과와 예상되는 결과를 충족할 수 없는 경우 / 사용자의 요구사항 충족 X / 다양한 시스템 부하에 대한 응답

    경우

    요구사항에 명시되어 있는데 구현되지 않은 경우
    요구사항을 기반으로 테스트 케이스를 만들어서 실행
    요구사항대로 구현되었는데, 때에 따라 정상동작하지 않는 경우
    요구사항을 기반으로 테스트 케이스를 만들어서 실행하고, 추가적인 테스트 케이스를 수행
    (네거티브 테스트 포함)
    요구사항에 명시되어 있지 않은데 구현되어 있는 경우
    요구사항 기반의 테스트로는 해당 결함을 발견하기 어려우므로, 비공식적인 테스트(탐색적 테스팅)를 추가적으로 실행
    해당 결함을 제거하기 위해서는 요구사항이 구현된 부분을 반영하여 변경하거나 해당 부분 제거
    요구사항에는 명시되어 있지 않고 구현은 되어 있는 부분에서 정상동작하지 않는 경우
    요구사항 기반의 테스트로는 해당 결함을 발견하기 어려우므로, 비공식적인 테스트(탐색적 테스팅)를 추가적으로 실행
    기대결과를 알기 어려우므로 요구사항을 기반으로 비공식적인 테스트를 보다 체계적이고 강도 높게 설계, 실행

     


    장애(Failure)

    지정된 범위 내에서 요구되는 기능을 수행하지 못 하는 경우

    고객에게 도달한 결점

    이미 배포된 제품에서 고객이 발견한 문제

    테스트 결과 ≠ 기대 결과 → 장애를 반드시 일으키진 X (거짓음성, 거짓양성)


    테스팅 = 결함으로 인한 장애를 찾아냄

    디버깅 = 장애의 원인(결함)을 찾고 분석해서 수정

    결함이 제대로 수정되었는지 확인 (확인테스팅)

     

    [결함 분석 - 근본 원인 찾기 - 근본 원인 분석 - 프로세스 개선 - 결함 발생 가능성 ↓]

    [결과, 장애 찾기 - 결함 찾기 - 원인이 되는 최초 결함 찾기 - 최초 결함 근본 원인 찾기]

     

     

    참고: 신뢰성(Dependability) 정의

     

     

Designed by Tistory.