[Android] TDD 차근 차근 시작하기 2 (Test Framework)

1 분 소요

안녕하세요 Reno입니다

오랜만에 다시 글을 쓰게 되네요 ㅎㅎ

최근에 좀 바쁨 + 게으름 때문에 글 쓰는 것을 미루다가

다시 쓰게 되네요 ㅋㅋㅋ

지난번에 다루었던 TDD 차근 차근 시작하기 1 (TDD 개념 잡기) 에 이어서

Test Framework를 다루는 글을 쓰게 되었네요 ㅎㅎ

이 글은

왜 Test Framework를 쓰는지

에 대해 간단히 적어보려합니다. (글이 너무 안써져여 … ㅠ)

Test Framework가 왜 필요할까??

좀 바보 같은 질문처럼 보일텐데요.

저는 무작정 JUnit과 같은 테스트 툴을 사용하면서 이게 왜 필요하지 ??

분명 테스트툴인데 왜 테스트하는게 더 어려운 것 같지?? 라는 생각을 많이 가지게 되었어요 ㅋㅋ

하지만 Test Code들을 작성을 계속하면서 “아 이래서 프레임워크가 필요했구나”라는 생각을 하게되어서

이 경험이 Test Framework의 필요성에 대해 좀 더 공감하게 될 거 같네요

저는 항상 왜 필요할까에 대한 질문에

“이것이 없다면 어떻게 될까”라는 질문으로부터 접근을 합니다.

실생활을 예를 들어 설명해볼게요

우리가 오토바이가 제대로 작동하는지 테스트를 한다고 가정해볼게요

오토바이

오토바이가 제대로 작동하는지를 테스트 해보기 위해서는

  1. 핸들이 내가 원하는 방향대로 움직이는지?
  2. 시동이 잘 걸리는지?
  3. 내가 원하는 속도로 나가는지?

등등의 테스트를 해볼거에요

근데 이 테스트를 해볼때 완성품에 바로 테스트를 해볼까요?

아니겠죠?? 왜냐하면 문제가 생겼을 때 어디서 생겼는지 알 수 없기 때문이죠

그러면 핸들, 엔진, 바퀴 등등 부품 별로 테스트를 먼저해야 (Unit Test)

부품들에 문제가 없는지 테스트를 하고 (Integration Test)

그 다음에 부품간 테스트를 해보고

또 다시 그 부품간 테스트를 통합해서 테스트를 해야 정말 잘 작동하는지 알 수 있겠죠

그럼 부품별 테스트를 해볼까요??

핸들이야 좌우로 움직일때 앞 바퀴도 좌우로 움직이는지 확인해보면 되지만

엔진이 원하는 속도만큼을 뽑아내주는지 어떻게 테스트할까요??

핸들에 있는 엑셀레이터가 있어야 (의존성) 원하는 속도를 조절할 수 있는데…

(의존성에 대해 잘 모르시는 분들은 이 글 한번 읽고 오세요 ㅎㅎ)

테스트를 하려면 핸들을 만들고 엔진에 결합한채로 테스트를 해야될까요??

이럴땐 엑셀레이터 없이 원하는 속도를 입력해주는 테스트 장치 가 있으면 편하겠죠??

이것이 Test Framework가 필요한 이유입니다

테스트 환경을 만드는 일이 어렵더라고요 ㅠㅠ

계속 코드를 추가하다보면 의존성이 많아지고 의존성이 많아 짐에 따라 그 의존성에 맞는 테스트 객체들을 만들어야 하니까요 ㅠㅠ

나는 그저 단순한 테스트 한번 하고 싶은건데 구축해야할 테스트 환경들이 너무 많은 거죠 ㅠㅠ

그래서 이런 테스트 환경을 구축하는데 도움을 주는 것이 Test Framework들 (JUnit, Espress, Mockito, Robolectric) 입니다.

마무리

오늘따라 별로 글이 안써지네용 …

그저께 Flutter 써보고 재밌어서(신기해서) 해보고 싶어서 집중이 안되네용 ㅠㅠ

다음에는 좀 더 도움이 될만한 글로 찾아뵐게용 안뇽 ㅠㅠ