본문 바로가기

넋두리있다

테스트 시나리오 작성 방법

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

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

 

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

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

 

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

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




테스트 시나리오 작성


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

 

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

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

 

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

 

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


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

 

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




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

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


유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!