Defect와 Bug와 Error, Failure는 모두 같은 말인가요?
ISTQB Syllabus 2018
소프트웨어에서의 문제점들을 칭하는 다양한 용어들이 존재합니다. 실무에서도 "버그, 이슈, 문제, 굳었다, 뻗었다, 죽었다" 등 다양한 표현으로 소프트웨어 상의 문제를 표현하곤 합니다. 사실 실무와 합쳐져 발생한 콩글리시를 제외한다 해도, 국제 표준에서 사용되고 전 세계적으로 통용되는 공식적인 용어들이 많이 있습니다.
해당 용어들의 차이는 Software Development Life Cycle의 어느 단계에서 발견 되었는가 전체적으로 차이가 있습니다.
결함은 크게 두 가지 설명으로 통용됩니다.
(1) 실제 결과와 예상 결과 간의 차이를 결함이라고합니다.
(2) 개발자가 문제를 찾아 개발 단계에서 스스로 해결하면 이를 결함이라고합니다.
ISTQB와 같은 자격증을 공부하실 때, 혹은 국제 표준을 공부하실 때에는 '소프트웨어의 결함'에는 특정 속성이 있음을 이해하셔야 합니다.
치명적임 | "치명적"인 결함은 즉각적인 수정이 필요합니다. 중대한 결함은 소프트웨어 제품 또는 대규모 기능에 영향을 줄 수있는 필수 기능에 직접 영향을줍니다. 예를 들어, 기능 / 기능 장애 또는 전체 시스템의 붕괴 등 |
주요함 | 소프트웨어 제품의 주요 기능에 영향을 미치는 결함은 주요 결함입니다. 그러나 이러한 결함으로 인해 시스템이 완전히 고장 나지는 않지만 소프트웨어의 몇 가지 주요 기능이 정지 될 수 있습니다. |
경미함 | 이러한 결함은 영향이 적고 소프트웨어 제품에 큰 영향을 미치지 않습니다. 이러한 결함의 결과는 제품 작동에서 볼 수 있습니다. 그러나 사용자가 작업을 실행하는 것을 방해하지는 않습니다. 다른 대안을 사용하여 작업을 수행 할 수 있습니다. |
사소함 | 이러한 유형의 결함은 제품 작동에 영향을 미치지 않습니다. 따라서 때로는 무시하고 생략하기도 합니다. 예를 들어 철자나 문법 오류가 있습니다. |
높음 | 거의 모든 응용 프로그램 사용자가 결함의 존재를 추적 할 수 있습니다. 이것은 높은 확률을 나타냅니다. |
중간 | 사용자의 절반이 소프트웨어 제품에 결함이 있는지 추적 할 수 있습니다. |
낮음 | 일반적으로 사용자가 감지하지 않거나 소수의 사용자만 감지 할 수 있습니다. |
높음 | 우선 순위가 높으면 결함을 수정하기 위해 가능한 빨리 진행해야 합니다. |
중간 | 다음 버전 또는 제품 릴리스에는 이를 해결하는 것이 포함됩니다. |
낮음 | 이 유형의 결함은 개별적으로 수정할 필요가 없습니다. 다른 유형의 결함과 함께 이러한 유형의 결함을 수정합니다. |
버그는 프로그램의 코딩 오류 또는 오류로 인해 프로그램이 의도하지 않거나 예상치 못한 방식으로 작동함을 의미할 때 사용하는 용어입니다.
"버그가 있다"라는 의미는 프로그램에 결함이 있다는 의미입니다. 버그는 프로그램의 소스 코드나 디자인에서 사람이 만든 실수와 오류로 인해 발생합니다. 일반적으로 모든 유용한 컴퓨터 프로그램에는 버그가 있지만 잘 작성된 프로그램에는 비교적 적은 버그가 포함되어 있으며 이러한 버그는 일반적으로 프로그램이 작업을 수행하는 것을 방해하지 않습니다.
소프트웨어에서 버그가 발생하는 요인은 굉장히 여러 군데가 있으며, 이를 해결하기 위한 인류의 노력, 실무 가이드가 바로 소프트웨어 공학이라는 학문입니다. 소프트웨어 공학의 내용이 전체적으로 이해하기 어렵고, 다소 생경한 표현들이 등장하다보니 소프트웨어 공학을 단순히 '이론'으로 치부하고 학습하기를 꺼리는게 흔한 현상입니다. 하지만 지금 이 글을 읽고 계시는 독자분들도 그러셨다면, 오늘 이 블로그의 내용을 읽고 이해하려 노력하시는 부분에서부터 시작하시면 됩니다.
프로그래머가 프로그램을 성공적으로 컴파일하거나 실행할 수 없는 경우 이를 오류라고합니다.
사용자 인터페이스 오류 |
시스템과 사용자가 상호 작용하는 동안 일반적으로 나타나는 오류입니다. 시스템의 누락 또는 잘못된 기능, 백업 기능이 없거나 사용 가능한 역기능 등 |
오류 처리 오류 |
사용자가 소프트웨어와 상호 작용하는 동안 발생하는 모든 오류는 정확하고 의미 있는 처리가 필요합니다. 그렇지 않으면 혼동됩니다. |
구문 오류 | 소프트웨어 GUI를 테스트 할 때 철자가 틀린 단어나 문법적으로 잘못된 문장 |
계산 오류 | 이 오류는 잘못된 논리, 잘못된 수식, 일치하지 않는 데이터 형식 등으로 인해 발생합니다. |
흐름 제어 오류 |
소프트웨어 프로그램이 예기치 않게 동작하는 잘못된 방향으로 프로그램 제어를 전달하는 것과 관련된 오류는 흐름 제어 오류입니다. 무한 루프의 존재, 런타임시 구문 오류보고 등 |
테스트 오류 | 테스트 프로세스를 구현하고 실행할 때 발생한 오류를 의미합니다. 예를 들어, 버그 스캔 실패, 오류 또는 결함 보고의 비효율성. |
하드웨어 오류 | 이러한 오류는 하드웨어 장치와 관련이 있습니다. 가용성 및 장치 호환성 |
소프트웨어 제품이 사용자들에게 배포되고 고객이 문제를 발견하면 제품을 '제품의 실패' 라고 합니다. 릴리스 후 최종 사용자가 문제를 발견하면 해당 특정 문제를 실패 라고합니다.
소프트웨어의 실패는 아래와 같은 성격을 가지고 있습니다. 힘 빠질 수 있는 내용이지만 실무에서의 우리는 잦은 실패를 경험하게 되어 익숙해지기도 합니다. 하지만 ISTQB를 공부하시는 입장에서는 아래의 내용을 명확히 이해하셔야 합니다.
버그는 코딩 오류의 결과이고 결함은 요구사항에서 벗어나 발생하는 문제입니다. 결함이 반드시 코드에 버그가 있음을 의미하는 것은 아니며 구현되지 않았지만 소프트웨어 요구 사항에 정의된 기능 일 수 있습니다. 하지만, 위의 내용은 이론적인 내용이며, 실무에서는 보통 "버그" 혹은 "이슈"라는 용어로 사용하고 있습니다.
그 외, 여러 소프트웨어의 문제점들을 칭하는 여러 용어들에 대한 설명은 difference-between-defect-error-bug-failure-and-fault 를 참고하여 주세요.
※ STEEG 개인 의견은 각 전문가 개인이 경험한 경력에 따른 의견이므로, 주관적 견해가 개제될 수 있습니다. 개인 의견에 대한 내용은 본 블로그와 관련이 없습니다. |
※ 아래는 필자들이 선정한 관련 외부 자료입니다. 아래 자료들은 필자들이 작성한 본문 의견과 다를 수 있으며, 필자들과 관련되지 않았을 수 있습니다. |