2009-11-19 4 views
2

비디오, 이미지, 음악 등과 같은 복잡한 데이터 유형을 테스트하는 몇 가지 방법이 있습니다. TDD를 사용하고 있으며 렌더링 알고리즘에 대한 "금 파일"테스트의 대안이 있습니까? 귀하가 추측 할 수있는 결과를 렌더링하거나 사용하지 않는 프로그램의 다른 부분을 테스트 할 수있는 방법이 있다는 것을 알고 있습니다. 그러나 특히 이미지/비디오 테스팅 알고리즘을 렌더링하는 데 관심이 있습니다.복잡한 데이터 유형 테스트?

OpenCV/Python을 사용하여 기본적인 얼굴 인식을하고 그 정확성을 확인하고자 할 때 질문이 떠 올랐습니다.

확실한 제안이 없더라도 도움이 될만한 제안이 있습니다.

+0

TDD를 너무 많이 사용하고있는 것 같습니다. – nosklo

답변

2

렌더링을 테스트하는 방법이 아이디어는 매우 간단합니다 알고리즘을 사용하면 원시 입력을 인코딩하고 인코딩 된 값을 렌더링하고 렌더링 된 출력과 원시 입력 간의 차이를 분석 할 수 있습니다. 한 가지 문제는 임의의 입력을 인코딩/디코딩하는 것이 적절하지 않을 때 원시 입력을 얻는 것입니다. 또 다른 과제는 원시 입력과 렌더링 출력 간의 차이점을 평가하는 것입니다. 일부 렌더링 소프트웨어를 작성하는 경우 데이터에 대한 주파수 분석을 수행 할 수 있어야합니다. (일부는 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) 

당신이 비교 대상 렌더링 기능이있는 경우. 이러한 종류의 테스트 방법은 작동하는 기능이있는 경우 유용합니다. 이 기능이 귀하의 벤치 마크입니다. 느려지거나 많은 메모리를 사용하지만 쉽게 디버깅되거나 올바른 것으로 입증 될 수 있기 때문에 프로덕션 환경에서 사용할 수 없습니다.

+0

와우 감사합니다. 이것은 내가 예상했던 대답이었고, 나는 TDD에 너무 관심이 없지만 골드 파일과 함께 제시된 유지 보수 문제에 관심이있다. – prafulfillment

+0

@dasickis - 다른 접근 방식을 추가했습니다. 유용하고 구현하기가 더 쉬울 수 있습니다. –

+0

굉장! 고마워요. 교수님과 이야기 한 후에 다시보고하겠습니다. 그들은 단위 테스트에 대해 전체 수업을 가르치기 때문에 그것에 대한 연구를하고 있습니다. – prafulfillment

0

"금 파일"기술의 문제점은 무엇입니까? 그것은 당신의 테스트 픽스쳐의 일부입니다. 모든 테스트에는 미디어 집약적 인 응용 프로그램의 "금 파일"과 동일한 데이터 고정 장치가 있습니다.

일반 비즈니스 응용 프로그램의 일반 TDD를 수행 할 때 반드시 사용해야하는 황금 데이터베이스 픽스처가 있습니다.

setUp 메서드는 응용 프로그램의 간단한 함수와 핵심 클래스를 테스트 할 때 해당 클래스 나 함수에 대해 일종의 "금 파일"고정 장치를 만듭니다.

그 기술에 어떤 문제가 있습니까? 문제가있는 특정 문제로 업데이트하십시오.

f(f^-1(x)) = x 

것은 렌더링을 테스트하려면 : 함수가 inverse function를 사용하고 (일치 귀하의 경우 평등하지 않습니다) 입력 및 출력 일치하는지 확인 테스트 :