프로그램 코드를 작성하고 컴파일이 된다고 해서 모든 개발작업이 끝난 것은 아닙니다.

코딩작업이 끝났다면 테스트 단계가 남았고, 어쩌면 디버깅 과정을 거쳐야 할지도 모릅니다.

 

그럼 테스트라는 것은 무엇인가? 간단하게 말하자면 프로그램이 내가 원하는 형태로 잘 만들어 졌는가를 알아보는 작업입니다.

하지만 밑도 끝도 없이 테스트라는 것을 하려고 하니 막막해 지시는 분들도 있을 겁니다.

 

오늘은 그 테스트라는 것을 보다 세밀하고 효율적으로 하는데 도움을 줄 수 있는테스트 시나리오라는 것을 어떻게 만드는지 개략적으로 나마 살펴 보도록 하겠습니다.

개략적이란 말을 쓴 이유는 각각의 프로그램마다 특성이 다르기 때문에 일정한 룰을 적용하기 어렵고, 일정한 룰을 적용하기 어렵기에 일반적이고도 개략적인 상황만을 다루기 때문입니다. 그럼 잡설을 접고 시나리오를 작성해 보도록 하겠습니다.




테스트 시나리오 작성


저 같은 경우 테스트 시나리오를 작성 할 때, 기능(function) 테스트, 폴트(fault) 테스트, 스트레스(stress) 테스트 이렇게 크게 세 가지로 분류하고 시작하곤 합니다.

 

기능 테스트요구사항들에 대해서 프로그램이 정상적으로 동작하고 있는지에 대해서 증명 하는 테스트 입니다.

예를 들어 A라는 메시지를 보내면 B라는 응답이 와야 한다 정도를 기능 테스트라고 분류 할 수 있습니다. 프로그램을 작성하기 전의 요구사항 리스트들을 쭉 뽑아 모든 요구사항에 대해 정상적으로 동작하는지에 대해 테스트 하면 됩니다. 테스트 주도 개발 방법론에서는 각 모듈, 함수 등에 대해 모두 이런 테스트를 적용하라고 권고하기도 하지요.

 

그렇다고 해서 프로그램이 구동하는 환경이 언제나 정상적인 상황일 수 만은 없지요. 폴트 테스트장애 상황이나 올바르지 못한 입력에서 프로그램이 어떻게 동작하는가에 대한 테스트 입니다. 간단하게 예를 들자면 만일 AB라는 입력을 받아서 처리를 해야 하는 단계가 있는데, 입력 A로만 단계를 진행하려고 할 경우 프로그램이 어떻게 처리하는지에 대한 테스트 입니다. 원하는 형태로 적절히 예외상황을 표현하고 처리하거나 죽어나가는 형태를 테스트 합니다.

 

다음으로 일반 어플리케이션 보다 서버 프로그램에서 좀 더 비중 있게 다뤄지는 스트레스 테스트입니다. 개인적으로 이 테스트는 다시 롱텀(long-term) 테스트노멀(normal) 테스트, 헤비(heavy) 테스트로 분류를 하곤 합니다.


롱텀 테스트라는 것은 일반적인 상황에서 프로그램이 얼마나 오랫동안 구동이 가능한지를 테스트 하는 것입니다. 주로 자원 누수에 대한 테스트가 주를 이룹니다. 노멀 테스트는 프로그램이 요구되어 지는 처리량에 대해서 정상적으로 처리를 해 줄 수 있는지 여부를 테스트 하는 것입니다. 예를 들자면 어플리케이션에 일정량의 데이터를 입력할 때 CPU 50%이상을 넘어가면 안 된다 던지, 서버에 동시접속자가 몇 명 이상이 붙어도 서버가 이상이 없음을 증명하는 테스트 입니다. 헤비 테스트는 일반적인 상황이 아닌 프로그램을 극적인 상황으로 몰고 갔을 때 예상되는 동작을 하는지 여부에 대한 테스트 입니다. 여러 대의 서버로 이루어진 분산시스템의 경우, 서버한대가 죽었을 때 다른 서버들도 같이 도미노처럼 차례로 같이 죽어 나간다 던지 하는 테스트 입니다. 그리고 이런 테스트를 하기 전에 프로그램은 얼마만큼의 기간을 버텨야 하는지 얼마만큼의 처리량을 견뎌야 하는지를 가장 먼저 정해야 할 것입니다.

 

그리고 이런 종류의 테스트는 사람이 직접 하기에는 인력과 자원이 많이 소모 되기 때문에 테스트 전용 프로그램을 만들어 먼저 테스트 해보는 것이 보통 입니다.




이상으로 테스트 시나리오에 필요한 요소들에 대해서 간단히 알아 보았습니다.

의문이 가거나, 이해가 가지 않는 부분에 대해서는 언제든지 메일이나 댓글 달아 주세요.


Posted by kukuta

댓글을 달아 주세요

  1. Favicon of https://www.ikpil.com BlogIcon 최익필 2008.11.29 06:03 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 이렇게 세분화 시키면 좋겠구나 생각이 듭니다. 관련 서적 있으시면 추천 해도 될까요?

    • Favicon of https://kukuta.tistory.com BlogIcon kukuta 2008.12.02 12:40 신고  댓글주소  수정/삭제

      없는데요...
      위의 글은 저희 회사 인턴들한테 약간의 가이드라인을 잡아 주기 위해서 제 멋대로 쓴글이라서...

      용어들도 딱히 어디 공식화 된게 아니라 대충대충 긁어다 모은것이라서...한번 날 잡아서 다시 정리해야 할 필요가 있겠지요..

      혹시 관심있으시다면 트랙백으로 정리한번 해보심이...
      (은근히 떠넘기기..쿨럭)

  2. Favicon of https://www.ikpil.com BlogIcon 최익필 2008.12.03 19:23 신고  댓글주소  수정/삭제  댓글쓰기

    정리에 있어서 용어가 참 까다로운거에 대해서 크게 동감합니다. 자주 들려서 많이 읽겠습니다. :)

  3. 장정훈 2011.11.30 14:56  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다.

  4. 이일신 2018.05.01 16:29  댓글주소  수정/삭제  댓글쓰기

    테스트 시나리오 보다는 테스트 슈트(Test Suite)가 더 적절한 표현이고, 각 테스트 요구사항에 따라서 실제 작성되는 Test Code의 내용이 테스트 시나리오(별도 Tool에서 작성되는 Code 형태의 Script는 테스트 스크립트)가 됩니다. 이런 시나리오 혹은 Script가 모이면 Test Suite가 되는 것이고요.