Thief of Wealth

결함 (defect)

 

- 소프트웨어가 제품 사양에 명시된 대로 작동하지 않는 경우.

- 소프트웨어가 제품 사양에서 하지 말아야 한다고 하는 기능을 수행하는 경우.

- 소프트웨어가 제품사양에서 언급하지 않은 것을 수행하는 경우.

- 소프트웨어가 제품 사양에서 언급하지는 않았지만 해야할 일을 수행하지 않는 경우.

- 소프트웨어가 이해하기 어렵거나, 사용하기 어렵거나, 느리거나, 테스터의 눈에 일번 사용자가 옳지 않게 사용할 것으로 보이는 경우.

 

=> 풀어서말하자면

- 예상대로 동작안하고

- 하지말란거 하고

- 언급되지도 않은거 수행하고

- 언급안했어도 해야할거를 안하고

- 사용자 측면에서도 잘못사용할 수 있는경우

들을 결함이라고 한다.

 

 

Error, Fault, Failure

 

Error (사람에 의해서 발생하는)

- 사용자가 요구사항을 잘못 파악하거나 이해하여 발생하는 실수.

- 타이핑 실수

- 프로그램 명령을 잘못하여 코딩

 

Fault/Defect

- Error가 표현된것.

 

Failure (오작동)

- 결함의 실행으로 예상과 다른 결과.

- 오작동은 결함에 의해 발생하는데 결함이 있다고 해서 반드시 오작동이 발생하는 건 아님. (제대로 동작할 수 도 있음.)

 

 

예제1)

 

// 한개의 정슈를 입력받아 입력 값의 2배를 출력하는 프로그램.

int doubleFunc(int param){

1: int retVal = 0;

2: retVal = param*param;

3: return retVal;

}

 

input: 1, 2

expected result: 2, 4

 

=> 프로그래머의 실수로 2배가 아니라 2제곱의 값을 변환해주는 코드가 탄생.

프로그머의 오타가 Error

 

=> Error로 인해 2번 문장에서 프로그램의 Defect/Fault가 존재.

 

=> input에 1을 넣었을 시 2가 출력안되고 1이 출력되어 Failure(오작동) 발생.

 

* => 그러나 input에 2를 넣을시 기댓값인 4가 나오므로 결함이 있는데도 오작동이 발생하지 않음.

 

 

예제2)

 

김차장은 설날에 가족과 함께 고향인 대전에 내려가려고 자가용을 운전했다.

호남 고속도로를 따라 운전하다가 깜빡 졸아서 경부고속도로로  핸들을 틀어서 다른길로 가게 되었다.

계속 그대로 운전하여 결국에 부산으로 가고 말았다.

 

Error: 김차장이 깜빡 졸았다.

Defect/Fault: 깜빡졸아서 핸들을 틀었다.

Failure : 핸들을 틀어서 목적지인 대전이 아니라 부산으로 가게 되었다.

 

 

SW 결함의 원인?

 

- 요구사항 결함

 

* 요구 사항의 잘못된 정의 (고객의 요구사항을 불완전하게 또는 틀리게 정의)

* 고객과 개발자 간의 소통 부족/의사전달미흡

* 고의적인 요구사항 미준수 (시간이나 예산문제로 개발자가 의도적으로 기능을 제외 및 고객의 동의없이 개발자가 시스템에 기능 추가.)

 

- 설계 결함.

 

* 소프트웨어 요구사항을 설계에 반영하는 과정에서의 실수.

 

- 코딩 결함.

 

* 설계 문서를 잘못 이해하거나 프로그래밍 도구에 익숙하지 않아서 발생하는 실수.

 

- 기타 결함.

 

* 문서나 코딩 표준에 따르지 않는 경우.

* 미흡한 테스트 프로세스

* 요구사항 불확실, 잦은 변경, 테스트 시간부족으로 인해 발생하는 실수들.

 

 

SW 결함 분포

요구사항결함 (56%)

설계결함 (27%)

코딩결함 (10%)

기타결함 (7%)

 

으로 첫단계일수록 결함의 원인이 많이 분포한다. (추후 결함 수정의 비용도 많이 든다.)

=> 즉, 요구사항 및 설계와 같은 제품 개발 초기 단계부터 테스트가 병행되어야 한다.

 

 

예제)

다음 요구사항들은 무엇인 잘못되었는가? 잘못된 점을 지적하고 올바르게 수정하시오.

 

* 이 성적 프로그램은 성적 점수대로 정렬하여야 한다.

    => 정렬에 내림차순/오름차순 인지 명시필요.

* 이 시스템은 사용하기 쉬워야 한다.

    => '쉽다' 는 너무 추상적인 표현

'개발 > QA' 카테고리의 다른 글

4. 개발 단계별 테스트 (단위, 시스템, 통합, 인수 테스트)  (0) 2020.07.03
3. SW 테스트  (0) 2020.07.03
1. SW품질이란?  (0) 2020.07.03
소프트웨어 테스팅과 AI  (0) 2019.12.24
사이클로매틱 복잡도 (2) - 계산법  (0) 2019.12.24
profile on loading

Loading...