행복한 아빠

내 프로그램에는 얼마나 많은 버그가 있을까? 본문

하고싶은말

내 프로그램에는 얼마나 많은 버그가 있을까?

행복한아빠 2010. 2. 10. 19:04
사용자 삽입 이미지
결함이 없는 프로그램은 없을 겁니다. 결함이나 버그의 수는 그 소프트웨어의 품질을 좌우하는 요소입니다. 그럼 우리회사의 제품, 또는 현재 수행하고 있는 프로젝트의 시스템에는 얼마나 많은 버그가 있을까요? 우리 프로그램에 얼마나 많은 결함(또는 버그)가 숨어있는지 예측하는 방법을 알아봅니다.



연못에 있는 물고기 수 확실히 알아내기
근처에 물고기가 살고 있는 연못을 상상해 보죠. 이 연못에 살고 있는 물고기는 얼마나 될까요?
이것을 알아내기 위한 확실한 방법은 양수기를 하나 준비하는 것입니다. 그리고 물을 모두 뽑아 내고 물고기를 모두 잡아 그 수를 세어보는 것입니다.
한 사람의 호기심에 의해 희생되는 불쌍한 물고기에 대한 생각은 접어둔다쳐도 이렇게 힘들게 알아내어야 할까요? 우리는 알아내기 힘든 대상에 대해 예측이라는 방법을 사용합니다.


물고기 수 예측하기
사용자 삽입 이미지
연못에 살고 있는 물고기 수를 예측하는 방법으로 생각해 봅니다.
우선 연못에 100마리의 물고기를 풀어놓습니다. 물론 이 100마리는 우리가 알아볼 수 있도록 꼬리표를 달아둡니다.
모두 풀었으며 연못에서 물고기를 임의로 10마리쯤 잡습니다(통계에서는 이것을 표본이라 합니다). 그리고 10마리 중 우리가 풀어놓은 물고기의 비율을 계산합니다.

예를 들어 10마리 중 2마리가 우리가 풀어놓은 물고기라면 8마리는 원래 연못에 있는 물고기일 겁니다. 결국 우리가 풀어놓은 물고기보다 원래 있는 물고기가 4배 정도 많을 것이라고 가정할 수 있습니다. 따라서 우리가 풀어놓은 물고기가 100마리이니 원래 있던 물고기는 400마리정도 될 것이라고 예측할 수 있습니다.


내 애플리케이션에 있는 결함 개수 예측하기
물고기를 다 잡기 위해 물을 다 퍼내는 것은 가능할 지 몰라도 애플리케이션에 가지고 있는 모든 결함을 찾아내는 것은 불가능에 가까운 일입니다. 아무리 테스트한다 한들 어느 누가 모든 결함을 다 찾았다고 확신할 수 있을까요?

사용자 삽입 이미지
물고기 수 예측하는 방법으로 결함 개수를 예측할 수 있습니다.
우선 결함을 10개 정도 만들어 애플리케이션에 심어 놓습니다. 물론 이 결함은 테스터들에게 알려주지 않습니다. 이 상태에서 테스터는 결함을 찾기 위한 테스트를 진행합니다.
그 후 테스터가 찾은 결함 중에 일부러 심어 놓은 결함의 비율을 계산합니다. 여기서 10개의 결함을 찾았고 그 중 2개가 우리가 심어 놓은 결함이라고 가정하면 다음과 같은 공식이 성립할 것입니다.

원래 있는 결함 수 : 심어 놓은 결함 수 = 찾은 것 중 원래 것 : 찾은 것 중 심어놓은 것
원래 있는 결함 수를 x라 하면
x : 10 = 8 : 2
2x = 80
x = 40

따라서 원래 있는 결함 수는 40개 쯤 됩니다.

결론
이 방법을 사용할 때 주의할 점은 원래 있는 결함과 일부러 심어놓은 결함을 찾을 수 있는 확률이 비슷해야 된다는 점입니다. 그래야 테스터가 찾은 결함이 통계를 위한 올바른 표본이 될 수 있습니다.

물론 이 방법은 꽤 많은 비용이 든다는 점과 위의 제약사항 등에서 몇 가지 문제가 있습니다. 그러나 결함을 통한 소프트웨어의 품질 측정이 필요할 경우 사용할 수 있는 방법입니다.


2 Comments
댓글쓰기 폼