왜? 테스트은 어려운가?

개발이 완료되고 테스트를 무사히 마쳐서 제품이 출시되지만 실제 사용자로 부터 수많은 문제점이 발견되어 돌아오게 된다.  왜 그렇게 많은 테스트를 했음에도 불구하고 그러는 것일까?  테스터가 테스트를 잘못해서 그런것일까?  그건 아니다.  테스터는 정해진 품질 규격에 맞을때 까지 테스트 하였으며 모든 테스트케이스를 소프트웨어가 만족 했기 때문에 승인을 한것이다.  소프트웨어 테스트는 필터와 같아서 테스팅을 수행하는 동안 오류가 계속적으로 걸러지게 된다.  이 테스트라는 필터는 완벽하게 걸러내기란 불가능하게 된다.  일정이 결정되어 있는데 계속해서 테스트만 할 수 없는일 아닌가.  적정한 수준에서의 합의가 필요한 것이다. ^^

테스트는 왜 어려운 것인가?  테스트가 어려운 이유를 몇가지 생각해 보고자 한다.

1. 너무 복잡한 기능의 조합.

- 시스템의 다양한 기능들이 존재하게 된다.  이 기능이 조합될 경우는 무수히 많은 케이스가 있는데 이 많은 케이스를 모두 테스트 할 수 없으므로 테스트 되지 않은 잠재 오류를 내포하게 된다.

2. 실 환경과 동일한 테스트 환경의 부재

- 테스트는 가능한한 동일한 환경에서 테스트해야만 잠재 오류를 많이 찾아낼 수 있으나 실제적으로 불가능한 경우가 많다.  고층 건물의 엘리베이터를 테스트 하고자 테스트용 고층 건물을 만들수는 없다.

3. 테스트 마인드 부재

- 테스트는 단순한 노동으로 생각하고 기피하는 경향이 많다.  정확한 테스트하기 위해서는 테스팅 방법론이나 시스템에 대한 이해가 바탕이 되어야 한다.  테스트를 기피하는 업무가 아니라 전문가로 인정하는 환경 뿐만 아니라 테스터 또한 전문가로써의 자질을 겸비해야 한다.

4. 계속적인 요구사항 변경

- 개발에서도 힘들어 하지만 테스팅에서도 힘든것 중의 하나가 계속적인 요구사항 변경이다.  요구사항이 변경되면 변경된 내용이 QE팀까지 전달되어 테스팅 오류를 줄여야 하나 급한 나머지 개발에서는 개발하고 이를 전달하지 않아 테스터가 잘못된 테스팅을 진행하는 경우가 있다.  이를 줄이기 위해 변경 프로세스안에서 신속하게 개발과 테스팅에 변경사항이 반영될 수 있도록 해야 할 것이다.

5. 시간적 제약

- 개발된 소프트웨어를 테스트하는데 충분한 시간 확보가 필요하여 개발 초기에는 넉넉하게 테스팅 계획을 수립하게 된다.  그러나 프로젝트가 지연되면 테스팅을 진행할 수 없어 테스팅 일정도 함께 지연이 된다.  그러면 개발 지연 만큼 테스팅 일정이 뒤로 밀려나야 맞지만 정해진 일정이 있으므로 테스팅의 일정이 줄여서라도 정해진 일정해 맞춰야하는 일정에 대한 압박이 있게 된다.  이렇게 되면 충분한 테스트를 하지 못하고 많은 오류를 안으채 출시가 되게 되고 이는 고스란히 소비자의 불만으로 되돌아 오게 된다.

이 외에도 테스트가 어려운 점이 많이 있다.  많은 경험과 기술을 겸비한 숙련된 테스터가 우리 소프트웨어 산업에서도 많이 생기기를 바란다.

Leave a Reply