Ethan Hur's blog

Testing 에 대한 고민

2017-07-26

신규 프로젝트를 진행하는 데, Testing 에 대한 고민을 요즘 많이 하고 있다.

고민의 항목을 보면 다음과 같다.

  1. Testing Context 를 어떻게 다룰 것인가

  2. Code Coverage 의 목표

  3. 실제 코드에서의 수정

Testing Context

신규 프로젝트를 진행하면서 가장 처음 든 생각이다. 예를 들어 User Login 을 테스트 한다고 할 때, ORM 을 사용하지 않고 직접 Test 를 해보는 건 힘들다.

fixture 사용 또는 mock DB 를 이용하는 방법을 생각해 보았다. 사실 mock DB 를 이용하는 걸로 극복했다.

처음에 어렵다고 착각한 이유는 mock DB 를 DB 자체를 시뮬레이션 해야 한다고 생각했기 때문이다.

하지만, Testing 에서 굳이 그럴 필요 없이 DB interface 에 맟춰 예상 결과를 return 하는 방법을 쓰면 극복될 것 같다. DB 자체는 잘 동작한다고 가정하는 것이다.

Test Coverage

이상적인 테스트 커버리지는 당연히 100% 일 것이다.

하지만 서버-클라이언트 모델에서 클라이언트에서 잘못 날라온 데이터를 믿지 않도록 에러처리를 한 부분까지 커버리지를 맞추는 건 인력낭비 같다는 생각을 많이 한다.

단순한 Line Coverage 보다 다른 지표가 중요할 거 같은데 무엇이 적절한 지 잘 모르겠다.

실제 코드

예를 들어 Login 에서 제 3자 Platform의 Auth 를 한다고 생각해 보자.

그러면 Login Test Code 에서는 Auth 를 보내는 부분을 탈 수 밖에 없는데, 테스트에서는 이를 Skip 하여야 한다.

이를 처리하는 방법은 여러 가지가 있을텐데 실제 코드 구조를 망가뜨리지 않으면서 Skip 하게 하는 좋은 방법이 잘 생각나지 않는다.

결론

테스팅은 어렵다 ㅠㅠ 하지만 내가 Test Case 를 쌓아논 만큼 유지 보수가 쉬어진다는 마음으로 고민중이다.

Tags: Testing