[테스트 진행 방식 - 개별 테스트(Unit Test)]

in #unit6 years ago (edited)

개발자로서 개발 프로세스는 자연스레 몸에 익어 개발을 진행하고 있었는데, 어느 날 되돌아보니 이 자연스러움에서 진행한 프로세스 단계에 대해서 의문이 생겼다.
개발 프로세스 단계에서 내가 이론으로 배웠던 것과 실무는 같았는데 미처 깨닫지 못한 적이 많았고, 이를 하나씩 정리를 해보자! 하게 되어 첫번째 주제는 요즘 하고 있는 테스트이다~!

테스트 시에는 개별 테스트(unit test) 혹은 통합 테스트(integration test)를 진행하게 된다.
먼저 개별 테스트(unit test) 진행을 정리해보겠다.

"Unit Test 란?"

Unit Test는 개발한 프로그램의 각 파트를 테스트하고 개별 모듈이 제대로 구현되어 정해진 기능을 정확히 수행하는지 테스트한다.

특징

  • White Box 테스트 부류이다.
  • 모듈 세분화로부터 시작한다.
  • 하나의 모듈에 집중해서 작업한다.
  • 유닛 자체의 기능을 테스트하고 통합 테스트에서 발생 가능한 에러는 감지하지 못할 수도 있다.
  • 개발한 부분에서 어디가 에러가 있는지 찾기 쉽다.
  • 개발한 코드가 외부에서 작용하는게 정확한지 확인하기가 힘들다.
  • 유지관리가 싸다.

unit test에서 객체 지향 프로그래밍으로 개발한 프로그램은 MOCK을 사용하여 진행한다. 안타깝게도 우리회사는 MOCK을 이용한 테스트를 진행하지 않아 MOCK 객체로 유닛 테스트를 해본 적은 없다.
그래서 MOCK에 대해 찾아보고 정리를 해보았다.

"MOCK이란?"

흔히 Mock Object라고도 한다. 실제 사용하는 모듈을 쓰지 않고 가짜 모듈을 만들어 사용하는 객체이다.
비용과 시간이 많이 들거나 의존성이 길게 걸쳐져 있고, UI나 데이터베이스 테스트 등과 같이 구현하기 어려운 경우 사용한다.

Mock 객체를 사용하는 경우는?

  • 테스트 작성을 위한 환경 구축이 어려운 경우
    ex) 환경 구축을 위한 작업 시간이 많이 필요한 경우에 Mock객체를 사용한다. (데이터베이스, 웹서버, 웹애플리케이션서버, FTP서버, 등)
    ex) 특정 모듈을 갖고 있지 않아서 테스트 환경을 구축하지 못할 때 또는 타 부서와의 협의나 정책이 필요한 경우에 사용한다.
  • 테스트가 특정 경우나 순간에 의존적인 경우
  • 테스트 시간이 오래 걸리는 경우
  • 개인 PC의 성능이나 서버의 성능문제로 오래 걸릴수 있는 경우 시간을 단축하기 위해 사용한다.

출처 :
개별테스트 정보 - https://www.guru99.com/unit-test-vs-integration-test.html
mock 정보
http://www.incodom.kr/Mock
https://ko.wikipedia.org/wiki/%EB%AA%A8%EC%9D%98_%EA%B0%9D%EC%B2%B4

Sort:  

Go here https://steemit.com/@a-a-a to get your post resteemed to over 72,000 followers.

@ekkim, I gave you an upvote on your first post! Please give me a follow and I will give you a follow in return!

Please also take a moment to read this post regarding bad behavior on Steemit.

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.033
BTC 64678.67
ETH 3086.68
USDT 1.00
SBD 3.87