특성 평가 테스트

Characterization test

컴퓨터 프로그래밍에서 특성화 테스트(Golden Master[1] Testing이라고도 함)는 기존 소프트웨어의 실제 동작을 기술(특성화)하기 위한 수단이며, 따라서 자동 테스트를 통해 의도하지 않은 변경으로부터 레거시 코드의 기존 동작을 보호합니다.이 용어는 마이클 [2]페더스에 의해 만들어졌다.

개요

특성화 테스트의 목적은 개발자가 소프트웨어 시스템의 참조 버전에 대한 수정이 바람직하지 않거나 바람직하지 않은 방식으로 동작을 수정하지 않았음을 검증하는 데 도움이 되는 것입니다.적절한 장치 테스트가 없는 코드를 확장 및 리팩터링할 수 있도록 하고 그에 대한 안전망을 제공합니다.

제임스 바흐와 마이클 볼튼의 시험 신탁 [3]분류에서 이런 종류의 테스트는 역사적 신탁에 해당한다.어설션 기반 소프트웨어 테스트의 일반적인 접근법과는 달리 테스트 결과는 (어설션으로 확인되는) 개별 값이나 특성에 의해 결정되는 것이 아니라 테스트된 소프트웨어 프로세스의 복잡한 결과와 이전 버전의 소프트웨어에서 동일한 프로세스의 결과를 비교함으로써 결정된다.어떤 의미에서 특성화 테스트는 기존 테스트를 뒤집습니다.기존 테스트에서는 개별 속성(화이트리스트 제외)을 검사하고 특성 테스트에서는 제거되지 않은 모든 속성(블랙리스트)을 검사합니다.

특성화 테스트를 작성할 때는 특정 입력 세트에 대해 어떤 출력이 발생하는지 관찰해야 합니다.레거시 코드가 주어진 입력에 기초한 특정 출력을 제공하는 관찰이 주어지면, 레거시 코드의 출력이 주어진 입력에 대한 관측 결과와 일치한다고 주장하는 테스트를 작성할 수 있다.예를 들어, f(3.14) == 42를 관측하면 특성화 검정으로 생성할 수 있습니다.그런 다음, 시스템을 수정한 후, 테스트는 동일한 입력이 주어졌을 때 변경으로 인해 결과가 변경되었는지 여부를 판단할 수 있습니다.

유감스럽게도 모든 테스트와 마찬가지로 가능한 모든 입력 및 출력에 대해 특성화 테스트를 작성할 수 없습니다.따라서 많은 사람들이 성명서나 지점 보도 중 하나를 선택한다.하지만 이마저도 어려울 수 있다.테스트 작성자는 어느 정도의 테스트가 적절한지 판단하기 위해 자신의 판단을 따라야 합니다.엣지 케이스에 특히 주의하면서 발생하는 것으로 알려진 특정 입력 및 출력만을 대상으로 특성화 테스트를 작성하는 것으로 충분한 경우가 많습니다.

매우 유사한 회귀 테스트와는 달리 특성화 테스트에서는 코드의 올바른 동작을 검증하지 않으므로 판별이 불가능할 수 있습니다.대신 기록 시 관찰된 동작을 확인합니다.대부분의 경우 사양이나 테스트스위트를 사용할 수 없고 특성화 테스트만 옵션으로 남습니다.이는 보수적인 경로가 오래된 동작을 필수 동작으로 간주하기 때문입니다.특성화 테스트는 본질적으로 변경 검출기입니다.검출된 변화가 예상 및/또는 바람직한지, 또는 예기치 않은지 또는 바람직하지 않은지를 판단하는 것은 결과를 분석하는 사람에게 달려 있습니다.

특성화 테스트의 흥미로운 측면 중 하나는 기존 코드를 기반으로 하기 때문에 일부 특성화 테스트를 자동으로 생성할 수 있다는 것입니다.자동 특성화 테스트 도구는 광범위한 관련 및/또는 랜덤 입력 값을 사용하여 기존 코드를 실행하고 출력 값(또는 상태 변화)을 기록하고 특성화 테스트 세트를 생성합니다.생성된 테스트가 새로운 버전의 코드에 대해 실행될 때 해당 버전의 코드가 이전에 확립된 동작을 변경하는 방식으로 수정되면 하나 이상의 실패/경고가 발생합니다.

GUI 레벨에서의 테스트에서는 특성화 테스트와 인텔리전트 원숭이 테스트를 조합하여 사용 사례와 그 특수한 사례를 포착하는 복잡한 테스트 케이스를 작성할 수 있습니다.

이점

Golden Master 테스트에는 기존의 어설션 기반 소프트웨어 테스트에 비해 다음과 같은 이점이 있습니다.

  • 복잡한 레거시 시스템에 대해서는 비교적 쉽게 구현할 수 있습니다.
  • 따라서 리팩터링이 가능합니다.
  • 일반적으로 PDF, XML, 이미지 등 복잡한 결과를 얻기 위한 합리적인 접근법입니다.여기에는 어소션으로 관련된 모든 어트리뷰트를 체크하는 것은 어트리뷰트의 양으로 인해 둔감해지고 결과적으로 판독 불가/유지 불능의 테스트코드가 발생합니다.

단점들

Golden Master 테스트에는 기존의 아사션 기반 소프트웨어 테스트에 비해 다음과 같은 단점이 있습니다.

  • 반복성에 따라 다릅니다.휘발성 및 비결정성 값은 Golden Master뿐만 아니라 프로세스 결과에서도 마스킹/삭제해야 합니다.삭제해야 할 요소가 너무 많거나 삭제가 너무 복잡할 경우 Golden Master 테스트가 실용적이지 않을 수 있습니다.
  • 반복 가능한 소프트웨어뿐만 아니라 환경의 안정성과 입력 값에 따라 달라집니다.
  • Golden Master 테스트는 결과의 정확성을 추론하지 않습니다.소프트웨어 변경으로 인한 원치 않는 영향을 탐지하는 데 도움이 될 뿐입니다.

레퍼런스

  1. ^ "J. B. Rainsberger - Surviving Legacy Code with Golden Master and Sampling". Retrieved 2017-05-30.
  2. ^ 깃털, 마이클 C.레거시 코드(ISBN 0-13-117705-2)로 효과적으로 기능합니다.
  3. ^ Bolton, Michael (January 2005). "Testing Without a Map" (PDF). Better Software. Sticky Minds / TechWell. Retrieved 2017-05-30.

외부 링크