프록시 개발 우수 사례

다음 우수 사례는 프록시를 개발하는 동안 더 능률적이고 효율적으로 작업하는 데 유용합니다. 개발 노력을 개선하려면 다음 방법을 고려하십시오.
GUI 오브젝트에 적합한 계층 구조 사용

GUI 오브젝트는 상위-하위 및 소유자-피소유자와 같이 두 개의 관련된 계층으로 배열됩니다. 상위-하위 관계의 예로는 대화 상자와 이에 포함된 단추를 들 수 있습니다. 소유자-피소유자 관계의 예로는 최상위 레벨 창과 대화 상자를 들 수 있습니다. 오브젝트에 맞는 계층 유형을 어느 것이든 한 가지 사용하십시오.

프록시 구현 시 Java™ 및 HWND와 같은 기본 오브젝트 모델에서 이 두 가지 관계를 혼동하여 소유자-피소유자 관계를 비대칭 상위-하위 관계로 취급하는 일이 흔히 발생합니다. 이런 경우 더 적합한 관계 모델이 소유자/피소유자인 경우에는 프록시에서 상위항목을 갖는 것을 거부해야 합니다. 계층 구조를 처리하는 데 사용할 수 있는 메소드는 getParent(), getChildren(), getOwner() 및 getOwned()입니다.

동일한 특성에 대해 다른 유형을 리턴하지 않음

특성은 이름이 지정된 값입니다. 특성 자체에는 유형이 없으나 값에는 유형이 있습니다. 프록시가 동일한 특성에 대해 다른 유형을 리턴하지 않게 하십시오. 때때로 특성 값은 값이 아닌 오브젝트의 참조가 될 수 있습니다. 이러한 값이 스크립트에 리턴되는 경우 해당 값은 TestObject로 리턴됩니다. 특성에 액세스할 수 있는 메소드에는 getProperty(), setProperty(), getProperties() 및 getNonValueProperties()가 포함됩니다.

오브젝트에 인식 특성 및 중량을 지정하기 위해 오브젝트 라이브러리 사용

기본적으로 새 프록시 오브젝트에는 오브젝트 인식 특성 및 중량이 없습니다. 오브젝트 라이브러리를 사용하여 인식 특성 및 중량을 지정하십시오. 오브젝트 인식 특성 및 중량에 액세스하는 메소드에는 getRecognitionProperties() 및 getRecognitionPropertyWeight()가 있습니다. 상위 오브젝트에 둘 이상의 동일한 클래스 오브젝트가 있는 경우 하위 오브젝트의 인식 특성으로 .classIndex 특성(0에서 시작하는 양수 값)을 추가하십시오.

맵핑 가능한 계층 관리

일반적으로는 오브젝트의 전체 계층이 맵핑됩니다. 그러나 특정 오브젝트는 테스트 애플리케이션의 빌드 사이에서 자주 변경될 가능성이 높습니다. 예를 들어, Java의 경우 클러스터 오브젝트에 패널을 함께 추가하는 것이 일반적입니다. Functional Tester를 사용하면 프록시 오브젝트를 맵핑하지 않도록 사용자가 지정할 수 있습니다. 맵핑할 수 없는 오브젝트가 테스트 오브젝트 맵에 없는 경우라도 오브젝트 계층 구조는 사용자가 상위-하위 계층을 순회하는 동안 이들 오브젝트를 표시합니다. 맵핑 가능한 계층을 관리하는 메소드에는 shouldBeMapped(), getMappableParent() 및 getMappableChildren()이 포함됩니다.

정식 특성 사용

일부 경우, Java, HTML 및 .NET와 같은 기본 오브젝트 모델이 특성을 이해할 수 있도록 지원합니다. Functional Tester를 사용하면 프록시에서 추가 특성을 구현할 수 있습니다. 프록시에서 직접 특성을 구현하는 경우 오브젝트의 다른 특성과 혼동되지 않도록 특성 이름은 다른 패턴을 가져야 합니다. 인식을 위해 사용할 일반 특성 이름은 마침표(.)로 시작해야 합니다. 특정 관리 특성은 인식을 위해 사용할 수 없는 프레임워크에서 사용되며 이러한 특성 이름은 숫자 부호(#)로 시작합니다.

오브젝트 메소드 호출

많은 경우, 기본 오브젝트에는 찾아서 호출할 수 있는 메소드가 있습니다. 일반적으로 프레임워크 및 도메인 구현에서 이러한 메소드를 직접 관리하지만 getMethod()는 대개 도메인의 기본 프록시에서 구현됩니다.

알맞게 정의된 스크립트 가능한 메소드 사용

가능한 경우에는 항상 글래스(Glass)에서 마우스 조치를 재생하십시오. 메소드 이름에 "클릭" 또는 "끌어오기"가 포함되는 경우 마우스 이벤트에서 조치를 수행하게 하십시오. 조치를 구현하는 데 마우스 이벤트를 사용하지 않는 경우에는 "클릭" 또는 "끌어오기"와 같은 메소드 이름을 사용하지 마십시오. 키보드 이벤트에서 조치를 구현하지 않는 경우 키 또는 키보드를 참조하는 메소드 이름을 사용하지 마십시오. 메소드가 수행할 조치를 반영하고 재생 시에는 안정되게 하십시오. 경험적 접근은 하지 마십시오.

부속 항목 관리

오브젝트에는 기타 오브젝트가 들어 있을 수 있으며 중첩된 오브젝트로 공개되지 않은 내부 구조가 있을 수 있습니다. 예를 들어, 목록에 항목이 들어 있지만 목록 오브젝트가 항목을 오브젝트로 공개하지 않을 수 있습니다. HWND 기반 오브젝트에서는 이러한 동작이 일반적입니다. 부속 항목을 처리하는 데 가장 많이 사용되는 메소드는 getSubitem()과 click(), drag() 및 doubleClick()과 같은 마우스 조치 메소드입니다. getSubitem() 메소드는 널(null) 또는 문자열을 리턴합니다.

부속 항목의 오브젝트를 완전한 오브젝트로 공개하지 않으려면 다음과 같은 전략을 사용하십시오.

예외 및 오류

예외 및 오류 구현 시 다음 규칙을 따르십시오.


피드백