2013년 2월 18일 월요일

고쳤으니 테스트 해주세요.

여기 두가지 테스트 방법이 있다. 우리 회사는 어떤 방법을 사용하고 있나 생각해보자.

첫째, 테스트 도중에 버그를 고쳐서 좀더 안정된 버전을 테스트팀에 계속 전달하는 방식이다.
테스트 한사이클을 도는데 2주일이 걸린다고 생각해보자. 테스트 기간내내 테스트 팀은 버그를 지속적으로 발견하여 보고를 할 것이다. 개발팀은 동시에 버그를 수정한다. 그리고 다음날 개발팀은 테스트팀이 보고한 버그를 많이 수정한 새버전을 테스트팀에 전달한다. 

테스트 팀은 새버전을 가지고 어제 테스트한 시점의 다음 단계부터 또 테스트를 진행한다. 이렇게 테스트 기간 내내 여러번 새버전을 받는다.

두번째 방법은 다음과 같다. 테스트가 2주가 걸리면 2주 동안 테스트 팀은 새버전을 절대로 받지 않고 한 버전을 가지고 테스트를 완전히 종료한다. 개발팀은 버그를 계속 고치지만 새 버전을 테스트 팀에 전달하지 않는다.

어느 방법이 더 효율적으로 보이는가? 많은 회사들이 첫번째 방법을 사용하고 있다. 믿기 어렵겠지만 사실이다. 첫번째 방법은 큰 문제가 있다. 테스트 기간 도중에 테스트 팀이 새로운 버전을 받으면 이전에 테스트 한 내용이 무효가 된다. 여기서는 그걸 무시하고 계속 테스트를 했기 때문에 테스트가 끝나도 끝난 것이 아니다.

그럼에도 첫번째 방법을 사용하는 이유는 있다. 도저히 테스트 할 수 없을 만큼 불안정한 제품을 테스트 해달라고 전달한 경우이다. 그래서 테스트 팀과 적당히 테스트를 하면서 차츰 안정화를 시켜가는 것이다. 이런 품질의 제품은 테스트를 할 필요가 없다. 이 경우는 테스트 팀을 개발팀의 딱까리로 생각하는 것이다. 

원래 테스트를 진행할 수 없을 정도의 제품을 테스트팀이 받으면 테스트를 중단하고 개발팀으로 다시 돌려보내야 한다.

이렇게 비효율적인 테스트가 우리 주변에서 흔히 벌어지는 이유의 원인 따지고 들어가면 앞단계인 분석과 설계가 엉망이거나 없기 때문인 경우가 많다. 

제품의 품질을 유지하기 위해서는 분석/설계도 중요하고 전문적인 테스트를 해야 한다. 대충 개발하고 테스트팀이 개발팀을 도와주는 형태로는 평생 주먹구구식 개발에서 못벗어나고 비용과 시간도 많이 들뿐만 아니라 개발팀은 잦은 야근에서 벗어나기도 어렵다.

앞으로 테스트에 관한 얘기를 좀더 쉽게 풀어서 써보도록 하겠다.

댓글 4개:

  1. 아직 댓글이 없네요.
    일등...

    테스트에 대한 글들을 많이 기다리고 있겠습니다.

    답글삭제
  2. 안녕하세요, 자주 블로그글을 유용히 읽고 있는 독자중에 하나입니다.
    개발자가 만든 코드의 테스트를 결국 누가 하는가인것 같습니다만,
    [우리는 개발자가 테스트해요..] 라는 글과 상충되는 느낌을 받았습니다.
    개발자가 유닛테스트를 자동화해서 거치더라도 결국엔 누군가는 사람이 테스트를 해봐야 할텐데요,
    그것이 테스트부서나 팀내 테스트인원이 아니면 누가 해야할련지요?
    (결국 팀내 테스트인원이라면 팀내 테스트인원은 개발자의 딱까리(본문의 표현;;)가 될것같습니다.. ㅠ)

    답글삭제
  3. 안녕하세요. 저도 기억이 잘 안나서 옛날 글을 읽어봤는데 어느 부분이 상충되는지 발견을 못했습니다. 좀더 자세히 찝어주시면 제가 아는한 자세히 설명드리겠습니다.
    과거의 글은 테스트팀이 없어서 발생하는 문제를 지적했고, 이 글은 테스트 프로세스 중 문제가 되는 경우를 설명했습니다.
    질문하신 내용의 요지는 테스트인원을 어디에 두느냐인 것 같습니다.
    여러 경우를 많이 봤지만 테스트인원이 개발팀내에서 개발팀장의 지휘를 받는 경우를 종종 봤습니다. 항상 그런 것은 아니지만 개발자의 딱까리가 되는 경우가 많더군요.
    그래서 테스트팀은 별도의 팀이나 부서로 두는 경우가 많습니다. 물론 순수 SW인가? HW에 탑재하는 Firmware인가에 따라서 약간씩은 효율적인 테스트 조직이 다르기 때문에 상황에 따라서 잘 판단해야하지만 테스트팀은 전문성을 발휘할 수 있도록 조직적인 배치를 하는 것이 좋습니다.

    답글삭제
  4. 관계자들이 깊이있게 곱씹을만한 글이네요.
    저도 예전에 테스트 업무만 맡은 적이 있어서요.
    그때도 QA부서가 제품의 출시 권한이 있어야 한다는 화두가 있었지만 실제적인 권한은 미미했지요.
    저도 개발자이지만 아직 기본적인 문제에서도 버그가 발생하는 것에 부끄러움을 느끼지 못하는 개발자들이 있었죠. 자기 프로그램은 자기 얼굴과도 같다고 생각합니다.

    답글삭제