TensorFlow 테스트 모범 사례

여기서는 TensorFlow 리포지토리에서 코드를 테스트하기 위한 모범 사례를 알아봅니다.

시작하기 전에

TensorFlow 프로젝트에 소스 코드를 제공하기 전에 프로젝트의 GitHub 리포지토리에서 CONTRIBUTING.md 파일을 살펴보기 바랍니다(예: 핵심 TensorFlow 리포지토리에 대한 CONTRIBUTING.md 파일 참조). 모든 코드 기여자는 기여자 라이선스 계약(CLA)에 동의해야 합니다.

일반 원칙

BUILD 규칙에서 사용하는 내용에만 의존

TensorFlow는 방대한 라이브러리이며 하위 모듈에 대한 단위 테스트를 작성할 때 전체 패키지를 따르는 것이 관례입니다. 그러나 이렇게 하면 bazel 종속성 기반 분석이 사용되지 않습니다. 즉, 지속적인 통합 시스템이 사전 제출/사후 제출 실행에 관련이 없는 테스트를 지능적으로 제거할 수 없습니다. BUILD 파일에서 테스트 중인 하위 모듈에만 의존하면 모든 TensorFlow 개발자의 시간과 귀중한 컴퓨팅 자원을 절약할 수 있습니다.

하지만 전체 TF 대상을 생략하기 위해 빌드 종속성을 수정하면 Python 모드에서 가져올 수 있는 내용에 다소 제약이 따릅니다. 즉, 단위 테스트에서 더 이상 import tensorflow as tf 문을 사용할 수 없게 됩니다. 하지만 모든 개발자가 불필요하게 수천 번의 테스트를 실행해야 하는 수고를 덜어주므로 그럴만한 가치가 있습니다.

모든 코드에 단위 테스트가 있어야 함

작성하는 모든 코드에 대해 단위 테스트도 작성해야 합니다. 새 파일 foo.py를 작성하는 경우, 단위 테스트를 foo_test.py에 배치하고 동일한 변경 내에서 제출해야 합니다. 모든 코드에 대해 90% 이상의 증분 테스트 범위를 목표로 삼으세요.

TF에서 기본 바젤 테스트 규칙을 사용하지 말 것

TF에는 테스트를 실행할 때 많은 세부적인 부분들이 관련됩니다. 그래서 이러한 모든 복잡성을 바젤 매크로 내에 숨기기 위해 노력했습니다. 이러한 부분을 처리할 필요가 없도록 기본 테스트 규칙 대신 다음을 사용하세요. 이 모든 내용은 tensorflow/tensorflow.bzl에 정의되어 있습니다. CC 테스트의 경우 tf_cc_test, tf_gpu_cc_test, tf_gpu_only_cc_test를 사용하고 python 테스트의 경우 tf_py_test 또는