렌더링을 테스트하는 방법이 아이디어는 매우 간단합니다 알고리즘을 사용하면 원시 입력을 인코딩하고 인코딩 된 값을 렌더링하고 렌더링 된 출력과 원시 입력 간의 차이를 분석 할 수 있습니다. 한 가지 문제는 임의의 입력을 인코딩/디코딩하는 것이 적절하지 않을 때 원시 입력을 얻는 것입니다. 또 다른 과제는 원시 입력과 렌더링 출력 간의 차이점을 평가하는 것입니다. 일부 렌더링 소프트웨어를 작성하는 경우 데이터에 대한 주파수 분석을 수행 할 수 있어야합니다. (일부는 transformation이 머리에 튀어 나와야합니다.)
테스트 데이터를 생성 할 수 있다면 가능합니다. 텍스트 고정물은 실질적인 유지 관리 문제입니다. 그들은 처음에는 빛난다. 그들이 어떤면에서 변화한다면 모든 것이 무너집니다. 주요 문제는 조명기를 사용하면 테스트에서 조명기의 내용을 반복한다는 것입니다. 이것은 시험의 의도에 대한 해석을 어렵게 만듭니다. 테스트에 마법의 가치가 있다면이 가치의 중요한 부분은 무엇입니까?
기구 :
actual = parse("file.xml")
expected = "magic value"
assert(actual == expected)
생성 된 값은 :
expected = generate()
input = render(expected)
actual = parse()
assert(actual == expected)
generators에 좋은 것은 당신이 그 (것)들을 기본 유형과 필드 (python Quickcheck version)에서 시작하는 매우 복잡한 객체 그래프를 만들 수 있다는 것입니다.
발전기 기반 테스트는 본질적으로 결정적이지 않습니다. 그러나 충분한 시련을 받으면 그들은 Law of large numbers을 따른다.
추가 값은 값 범위가 인 양호한 테스트를 생성한다는 것입니다. (테스트 픽스처를 사용하여 달성하기가 어렵습니다.) 코드에서 예기치 않은 버그가 발견됩니다.
대체 시험 방법은 해당 기능을 테스트하는 것입니다 : 예를 들어
f(x) = f'(x)
당신이 비교 대상 렌더링 기능이있는 경우. 이러한 종류의 테스트 방법은 작동하는 기능이있는 경우 유용합니다. 이 기능이 귀하의 벤치 마크입니다. 느려지거나 많은 메모리를 사용하지만 쉽게 디버깅되거나 올바른 것으로 입증 될 수 있기 때문에 프로덕션 환경에서 사용할 수 없습니다.
TDD를 너무 많이 사용하고있는 것 같습니다. – nosklo