외부 파일에서 단위 테스트를위한 데이터를로드하거나로드하지 않으려면


17

단위 테스트를 할 때, 나는 얼마나 많은 데이터를 피드하고 있는지, 그리고 테스트중인 단위로부터 다시 기대할 때 종종 실제 테스트 파일에 포함시켜야합니다.

내가 끊임없이 고투하고있는 트레이드 오프는 :

  • 테스트의 많은 부분 (코드 볼륨)이 입력 및 출력 데이터로 구성되어 있으면 실제로 테스트를 읽는 것이 어려워 보이지만 실제 입출력을 쉽게 볼 수 있습니다.
  • 파일에서 테스트 데이터를로드하면 가능한 데이터 입력에 대한 다양한 변형을 쉽게 테스트하고 여러 테스트에 테스트 데이터를 쉽게 재사용 할 수 있지만 입력이 정확히 무엇인지 확인하려면 다른 파일을보기 위해 소스 코드를 남겨 두어야합니다. .

이 중 하나가 반 패턴입니까?


어떤 유형의 데이터입니까?
Jon Reid

@ JonReid : 대부분 텍스트.
DudeOnRock

답변:


11

귀하의 질문에 직접 대답하기 위해-아니요, 올바르게 사용할 때 안티 패턴이라고 생각하지 않습니다.

--- 더 자세한 답변 ---

내 경험에 비추어 볼 때 이것은 테스트의 목표에 크게 달려 있다고 생각합니다. 과거에 사용했던 경험 법칙은 다음과 같습니다.

실제로 작은 코드 단위를 테스트하고 있습니까? (진정한 단위 테스트)

그렇다면 전달되는 내용을 볼 수 있기 때문에 테스트 자체 내에서 데이터를 작성하는 것이 훨씬 쉽다는 것을 알았습니다.이 경우 일반적으로 Jasmine 과 같은 라이브러리를 찾아서 테스트 데이터를보다 쉽게 ​​만들고 유지 관리 할 수 ​​있습니다. 그것은 개인적인 취향입니다-당신의 일을 더 쉽게 만드는 것을 사용하십시오.

아니라면 실제로 시스템 자체를 테스트하는 것입니다. 이 경우 외부 소스에서 데이터를로드하는 경우가 많습니다. 그 이유는 다음과 같습니다.

  1. 이 테스트는 프로그래머를위한 코드 명확성에 관한 것이 아닙니다 (아직 중요하지만 누군가가 이것을 유지해야 함). 시스템 전체를 통해 충분히 다른 유형의 데이터를 실행하여 합리적으로 작동하는지에 관한 것입니다.
  2. 테스트 데이터를로드하고 사용하기 위해 배관 코드를 작성하는 경우가 종종 있지만 데이터 자체는 다른 사람 (보통 제 QA 직원)이 작성합니다. 이 사람들은 일반적으로 프로그래머가 아니므로 코드를 편집 할 것으로 기대할 수 없습니다.

너무 긴 대답은 테스트 대상 및 이유에 따라 다릅니다. 두 가지 방법 모두 유용하고 그 자리가 있습니다. 상황에 가장 적합한 것을 선택하십시오.


9

나는 여기서 절충안을 보지 못한다. 소스 코드는 대량의 데이터가 아닌 알고리즘 또는 최소한 비즈니스 로직을 설명해야합니다. 푸리에 변환을 작성하는 경우 부비동 톤이 단일 피크, 혼합 사운드를 더 많은 피크 등으로 올바르게 매핑했는지 확인하고 싶지만 sinus.wav루틴에 이름이 지정된 파일을 공급하고 완전히 검증 하기에 충분 합니다. 출력 구조는 당신이 기대하는 것입니다.

물론 기술적으로 sinus.wav실제로 부비동 톤을 포함 한다는 즉각적인 확신은 없지만, 소스에 100,000 진폭 값을 나열해도 실제로는 더 나쁘지 않습니다 . 최소한 오디오 플레이어로 외부 파일을 재생하여 확인할 수 있지만 소스 코드에 묻힌 데이터 값은 본질적으로 아무것도 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.