테스트

소프트웨어 테스트의 종류 - 3단계 분류

소밍소밍 2022. 3. 14. 00:23

시나리오 테스트 (Large Tests)

시나리오, Scenario : 영화의 대본

이름에서도 알 수 있듯, 대본 속 인물이 되어 연기를 하듯이 사용자의 입장이 되어 테스트를 하는 것이다. 즉, 사용자의 입장에서 전체 Application을 테스트하는 것이다. 그러나 이 방법은 느리고, 힘들고, 의도된 동작만을 테스트 할 가능성이 높아진다. 특히 개발자가 직접 테스트할 때에 이 방법을 사용하게 되면 처음 생각했던 대로, 그리고 정해진 동작 위주로 테스트를 하는 일명 Happy Path를 따르기 때문에 정확한 테스트가 이루어지기에는 한계가 있다.

따라서 이 부분은 전문적으로 테스트를 수행하는 Test Engineer가 주로 담당하게 되는 부분이다.

기능 테스트 (Medium Tests)

기능 단위로 테스트를 하는 방식으로, 시나리오 테스트보다 조금 더 명확한 형태이다. 시스템 간의 연관관계를 테스트하고, 또 클래스 간의 상호작용을 테스트하는 등 '기능' 자체에 보다 집중하는 형태라고 볼 수 있다.

단위 테스트 (Small Tests)

한마디로 비즈니스 로직*을 테스트하는 것이다. 그러나 여기에서 말하는 단위는 굉장히 유연하기 때문에 명확히 여기까지가 어떤 단위이다, 라고 정해져 있지는 않다. 그러나 대체로 method 단위로 테스트를 진행하게 된다. 특징으로는 Input, Output이 없고, 디버깅이 필요없다는 것이다. 

* 비즈니스 로직(Business Logic) : 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성, 표시, 저장, 변경하는 부분을 일컫는 말

시나리오 테스트와의 차이점은 다음과 같다.

  시나리오 테스트 단위 테스트
단위 주로 클래스 단위, 모듈 단위 주로 method 단위
속도 느림 매우 빠름 (시나리오 테스트보다)
개발과정에서 테스트 가능 일부 X, 완성된 프로그램을 테스트하는 경우가 일반적임 O

개발 과정에서 테스트가 가능하다는 것은 단위 테스트가 가능하고, 개발자 레벨에서 가장 효율적이라는 것이지 이 외의 테스트를 개발자가 수행하면 안된다는 것은 아니다! 그러나 대체로 개발자는 단위 테스트, 어느 정도의 기능 테스트까지를 수행하게 된다고 한다.

 

이렇듯 여러 방식의 테스트가 존재하지만 어떤 것 하나 중요하지 않은 것이 없다. 각 단계별 테스트에서 찾을 수 있는 버그 유형이 같지 않기 때문에 모든 단계별 테스트가 중요하다.

특히 단위 테스트와 같은 낮은 단계의 테스트에서는 커버할 수 없는 높은 단계의 테스트가 존재한다. 구체적으로, 개발 환경과 실 사용 환경은 다를 수밖에 없기 때문이다. 예를 들어 실제로 수행하는 테스트는 굉장히 다양한데, 네트워크 상태를 조절하는 등의 극한 상황까지도 테스트해보는 것이 필요하다고 한다. 

'테스트' 카테고리의 다른 글

테스트 대역 (Test Doubles)  (0) 2022.03.14
이클립스에서 JUnit4 사용하기  (0) 2022.03.14
JUnit4  (0) 2022.03.14
단위 테스트 (Unit Test)  (0) 2022.03.14
Mock Testing  (0) 2022.03.14