강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김민진님의 프로필 이미지
김민진

작성한 질문수

Flutter 중급 1편 - 클린 아키텍처

09 Mockito를 활용한 테스트

결국 테스트 할때는 더미데이터가 필요한건가요?

작성

·

1.1K

0

실제 백엔드와 소통시 백엔드가 좀 늦어진다던지 db에 가 데이터도 없어서 데이터를 전달 받을 수 없을때는

fakeJson 부분처럼 가 데이터가 있다고 생각하고 테스트를 진행해야 하는 게 맞나요?

 

저는 조금 의아한게 실제로 서버와의 소통시 저렇게 mock이라는 임의의 데이터와 임의의 통신코드를 받고 진행한걸 너무 믿게되어서 실제 데이터와 통신때 에러가 나더라도 ' 난 테스트 성공했다 내 문제는 아니다~' 라고 해버리는 개발자가 나오지 않을까...

 

질문은 1. 결국 가 데이터를 만들어 준뒤 그 데이터로 테스트를 하는건가요? 그럼 사실 테스트를 하는게 의미가 있나요? 가 데이터대로 데이터가 무조건 들어올껀데..

  1. 저 가 데이터로 테스트한걸 토대로 '난 테스트 가 성공했다 내 문제는 아니다' 라고 할 수 있는걸까요? 테스트의 신뢰도가 있을까요?

답변 1

0

오준석님의 프로필 이미지
오준석
지식공유자

질문 1에 대한 답.

화면까지 코드를 다 짜놓고 동작 되는 것 확인 후에 테스트를 하면 의미가 없을 수 있습니다.

그래서 보통 네트워크 테스트 수행후 잘 되는 것 확인 후에 UI 만들고 붙이고 합니다.

Dart에서의 Json 파싱은 휴먼 에러가 얼마든지 일어날 수 있습니다. 생각나는 것만 나열해 보면 다음과 같은 인간의 실수할 수 있는 부분이 있습니다.

  • map의 key에 접근시 오타.

  • jsonDecode() 시 dynamic을 리턴하기 때문에 강제 형변환 등에서 에러.

  • 모델 객체의 fromJson() 내부의 에러.

  • int, double 이 혼재해서 들어오는 경우 num으로 처리를 못 한 부분의 에러.

이런 걸 조기에 발견하기 위해 테스트가 의미는 있지요.

 

질문 2에 대한 답.

보통 서버측에서 데이터를 정의해서 보내줄때 null 여부 같은걸 미리 정해줍니다. 클라이언트는 그 사양에 맞게 코드를 짭니다. 그렇기 때문에 정해진 사양이 아닌 잘못된 데이터가 오면 서버 잘못입니다.

내가 짠 건 문제가 없다는 걸 증빙하기 위해 테스트 코드를 작성하는 것도 맞습니다.

테스트 신뢰도에 대한 것은 기업마다 조직마다 조금씩 다를 것 같습니다만, 테스트 코드만 전담해서 다른 사람이 짤 수도 있고, 정해진 테스트 케이스에 의해 테스트 코드를 짜기도 합니다.

해당 기능을 만든 사람이 테스트 코드를 짤 때는 꼼꼼하게 짜야 합니다.

화이트 박스 테스트와 블랙박스 테스트에 대해 조사해 보시고, 테스트 커버리지도 확인해야 합니다.

모든 분기문을 테스트 코드가 통과하고 있는지, 모든 입력값에 대한 테스트를 제대로 수행했는지 검증해야 합니다.

이 강의에서는 테스트 코드의 방법에 대해 간단히 소개하고 있습니다.

추 후에 시간이 되면 위와 같은 내용을 다루는 강의도 기획해 보겠습니다.

 

김민진님의 프로필 이미지
김민진
질문자

감사합니다. 충분한 설명이 되었습니다.

저만 그런건지 모르겠습니다만 1번의 경우 ui를 그리고 모델의 데이터를 ui에 붙이는 작업을 하면서 휴먼오류를 잡기도 합니다. 사실 아직까지는 이걸 테스트로 나눠서 테스트한뒤 ui에 값을 붙이는 작업을 해야할까? 하기는 합니다.. 좀더 오래걸리고 복잡한 작업이 될 거 같은 느낌이 강한거 같습니다.

사실 아직까지 협업이라는 과정보다는 혼자 작업하는 경우가 많았고 나름 개발하면서 자체 qa를 돌리면서 작업을 하기에 오류를 최소한 최대한 안내게끔 하고는 있습니다. 제가 아직 경험이 부족해서 그렇게 느끼는거 같다고 생각은 듭니다... 2번의 경우는 결국 '내 코드는 옳다' 라는 느낌을 강하게 받았습니다. 그러므로 테스트를 좀더 촘촘히 자세하게 작성하여 내가 말하는 근거자료로 쓴다는거 같습니다.

말씀해주신 화이트박스 테스트 블랙박스 테스트 라는거는 처음 알게되었습니다 학습에 참고하겠습니다.

정말 감사합니다.

김민진님의 프로필 이미지
김민진

작성한 질문수

질문하기