KR20050071377A - 암시적 구성가능 메시지-큐-기반 사용자 인터페이스자동조작의 동기화를 위한 시스템 및 방법 - Google Patents

암시적 구성가능 메시지-큐-기반 사용자 인터페이스자동조작의 동기화를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20050071377A
KR20050071377A KR1020050000029A KR20050000029A KR20050071377A KR 20050071377 A KR20050071377 A KR 20050071377A KR 1020050000029 A KR1020050000029 A KR 1020050000029A KR 20050000029 A KR20050000029 A KR 20050000029A KR 20050071377 A KR20050071377 A KR 20050071377A
Authority
KR
South Korea
Prior art keywords
message
queue
user interface
empty
thread
Prior art date
Application number
KR1020050000029A
Other languages
English (en)
Inventor
도게트존디.
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20050071377A publication Critical patent/KR20050071377A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

컴퓨터 프로그램의 코드로 사용자 인터페이스 자동조작 코드의 암시적 동기화를 위한 시스템 및 방법. 사용자 인터페이스에 대응하는 윈도우의 메시지-큐에 후크하는 동기화 API가 호출된다. 동기화 API는 윈도우 및 다른 시스템 활동에 대응하는 관련 스레드가 메시지-큐가 비어 있다는 것을 표시할 때 복귀한다. 빈 메시지-큐는, 사용자 인터페이스가 유휴이고 자동조작 코드가 그 다음의 액션을 처리할 수 있다는 것을 표시한다.

Description

암시적 구성가능 메시지-큐-기반 사용자 인터페이스 자동조작의 동기화를 위한 시스템 및 방법{SYSTEM AND METHOD FOR IMPLICIT CONFIGURABLE MESSAGE-QUEUE-BASED USER INTERFACE AUTOMATION SYNCHRONIZATION}
컴퓨터 프로그램과 관련된 에러를 정정하는 반복적인 프로세스는 고객 기대를 충족시키는 제품의 인도에 있어서 중요한 부분이다. 컴퓨터 프로그램을 테스트하기 위한 다양한 테스팅 절차가 개발되어 왔다. 소정의 테스트는 컴퓨터 프로그램의 많은 부분에 대한 반복적인 자동 테스트를 허용하도록 자동화되어 왔다.
자동조작 프로세스가 적용된 컴퓨터 프로그램의 한 부분은 사용자 인터페이스(UI) 기능을 포함한다. 컴퓨터 프로그램을 위한 선택된 형태의 UI의 자동 테스트를 위한 UI 테스트 자동조작 코드가 제공된다.
본 발명은 컴퓨터 프로그램의 상태와 자동조작 코드의 암시적 동기화를 허용한다. 일반적으로, 자동조작 코드의 저자(author)는 자동조작을 위한 동기화 코드를 기입하여 컴퓨터 프로그램의 사용자 인터페이스의 테스트시에 동작하도록 할 필요가 있다. 본 발명은 이러한 명시적(explicit) 동기화 코드의 필요성을 제거한다. 본 발명에 따르면, 자동조작 코드는 프로그램의 UI를 포함하는 액션이 완료할 때를 검출하는 이벤트에 의해 구동된다. 따라서, 자동조작 코드는 컴퓨터 프로그램과 암시적으로 동기하고 컴퓨터 프로그램의 UI와 관련된 각각의 액션이 완료하는 때를 확인할 수 있다. 바꾸어 말하면, 본 발명은, 시스템이 다음의 단계에 대하여 준비될 때까지(즉, 컴퓨터 프로그램 UI가 다음의 자동조작 단계를 준비할 때까지) 자동조작의 임의의 특정 단계가 완료되지 않았다고 선언하는 발견적 방법(heuristic)을 도입한다. 사용자 인터페이스에 대응하는 윈도우의 메시지-큐내로 후크(hook)하는 동기화 API가 호출된다. 동기화 API는 윈도우 및 다른 시스템 활동에 대응하는 관련 스레드(thread)가 메시지-큐가 비어 있다는 것을 표시할때 복귀한다. 비어 있는 메시지-큐는, 사용자 인터페이스가 유휴이고 자동조작 코드가 그 다음의 액션을 처리할 수 있다는 것을 표시한다.
본 발명은 첨부된 도면을 참조하여 이하에서 더 상세히 기재될 것이며, 첨부된 도면은 예로서 본 발명을 실행하는 특정한 예시적 실시예를 나타내며 그 일부를 형성한다. 그러나, 본 발명은 여기에 기재된 실시예에 한정되도록 제한되지 않으며 많은 다른 형태로 구현될 수 있고, 이들 실시예들은 본 개시를 이해하도록 제공되는 것이고 본 기술에 숙련된 자에게 본 발명의 범위를 완전히 전달할 것이다. 무엇보다도, 본 발명은 방법 또는 장치로서 구현될 수 있다. 따라서, 본 발명은 완전한 하드웨어 실시예, 완전한 소프트웨어 실시예 또는 소프트웨어와 하드웨어 형태를 결합한 실시예를 취할 수 있다. 다음의 상세한 설명은 제한적인 의미를 갖지 않는다.
예시적인 오퍼레이팅 환경
도 1은 본 발명을 구현하는 시스템(100)에 포함될 수 있는 예시적인 컴퓨팅 장치를 나타낸다. 컴퓨팅 장치(100)는 본 발명에 적용될 수 있는 일반적인 오퍼레이팅 환경을 나타낸다. 매우 기본적인 구성에서, 컴퓨팅 장치(100)는 일반적으로 하나 이상의 프로세싱 유닛(102)과 시스템 메모리(104)를 포함한다. 프로세싱 유닛(102)은 기존의 물리적 프로세서, 설계된 물리적 프로세서, 함께 동작하는 다수의 프로세서, 가상 프로세서 및 이진 실행가능 명령을 해석할 수 있는 임의의 다른 장치 또는 소프트웨어 프로그램을 포함한다. 컴퓨팅 장치의 정확한 구성 및 유형에 의존하여, 시스템 메모리(104)는 휘발성(RAM 등), 비휘발성(ROM, 플래쉬 메모리 등) 또는 그 둘의 임의의 조합일 수 있다. 시스템 메모리(104)는 일반적으로 오퍼레이팅 시스템(105), 하나이상의 프로그램 모듈(106)을 포함하고, 프로그램 데이터(107)를 포함할 수 있다. 이 기본적인 구성은 도 1에서 점선(108)내의 구성요소들로 표시된다.
컴퓨팅 장치(100)는 또한 추가의 특징 또는 기능을 포함할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 또한 예를 들어, 자기 디스크, 광 디스크 또는 테이프와 같은 추가의 데이터 저장 장치(분리형 및/또는 비분리형)를 포함할 수 있다. 이러한 추가의 저장 장치는 도 1에서 분리형 저장 장치(109)와 비분리형 저장 장치(110)로 표시되어 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함할 수 있다. 시스템 메모리(104), 분리형 저장 장치(109) 및 비분리형 저장 장치(110)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치 또는 컴퓨팅 장치(100)에 의해 액세스될 수 있고 원하는 정보를 저장하는데 사용될 수 있는 임의의 기타 매체를 포함하지만, 이에 한정되는 것은 아니다. 이러한 임의의 컴퓨터 저장 매체는 컴퓨팅 장치(100)의 일부일 수 있다. 컴퓨팅 장치(100)는 키보드, 마우스, 펜, 스타일러스, 음성 입력 장치, 터치 입력 장치 등의 입력 장치(들)(112)을 가질 수 있다. 디스플레이, 스피커, 프린터 등의 출력 장치(들)(114)가 또한 포함될 수 있다. 이들 모든 장치는 본 분야에 공지된 것이며 여기서 상세히 설명하지 않는다.
컴퓨팅 징치(100)는 그 장치가 네트워크를 통해 다른 컴퓨팅 장치(118)와 통신하도록 하는 소정의 통신 접속부(116)를 포함할 수 있다. 통신 접속부(들)(116)는 통신 매체의 일예이다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 반송파 또는 기타 전송 메카니즘 등의 변조 데이터 신호로 구현하고 임의의 정보 전달 매체를 포함한다. "변조 데이터 신호"라는 용어는 정보를 신호로 인코딩하도록 설정되거나 변경된 특성 중의 하나 이상을 갖는 신호를 의미한다. 예로서, 제한하는 것은 아니지만, 통신 매체는 와이어드 네트워크 또는 다이렉트-와이어드 접속부 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함한다. 여기에서 사용된 컴퓨터 판독가능 매체는 저장 매체 및 통신 매체 둘다를 포함한다.
도 2는 본 발명에 사용되는 이동 장치를 위한 다른 오퍼레이팅 환경을 나타낸다. 본 발명의 일실시예에서, 이동 장치(200)는 집적화된 개인 휴대 정보 단말기(PDA) 및 무선 전화 등의 컴퓨팅 장치로 집적된다.
이 실시예에서, 이동 장치(200)는 프로세서(260), 메모리(262), 디스플레이(228) 및 키패드(232)를 갖는다. 메모리(262)는 일반적으로 휘발성 메모리(예를 들어, RAM) 및 비휘발성 메모리(예를 들어, ROM, 플래쉬 메모리 등)를 포함한다. 이동 장치(200)는, 메모리(262)에 상주하고 프로세서(260) 상에서 실행하는 오퍼레이팅 시스템(264)을 포함한다. 키패드(232)는 푸쉬 버튼 숫자 다이얼링 패드(일반적인 전화 등), 멀티키 키보드(종래의 키보드 등)일 수 있거나 터치 스크린 또는 스타일러스를 존중하여 이동 장치에 포함되지 않을 수 있다. 디스플레이(228)는 액정 디스플레이이거나 이동 컴퓨팅 장치에 공통으로 사용되는 임의의 다른 유형의 디스플레이일 수 있다. 디스플레이(228)는 터치 센싱일 수 있으며 또한 입력 장치로서 동작할 수 있다.
하나 이상의 애플리케이션 프로그램(266)은 메모리(262)에 로딩되고 오퍼레이팅 시스템(264) 상에서 실행된다. 애플리케이션 프로그램의 예는 전화 다이얼러 프로그램, 이메일 프로그램, 스케쥴링 프로그램, PIM(personal information management) 프로그램, 워드 프로세싱 프로그램, 스프레드시트 프로그램, 인터넷 브라우저 프로그램 등을 포함한다. 이동 장치(200)는 또한 메모리(262) 내의 비휘발성 저장 장치(268)를 포함한다. 비휘발성 저장 장치(268)는 이동 장치의 파워가 다운될때 손실되지 않아야 하는 지속적인 정보를 저장하는데 사용될 수 있다. 애플리케이션(266)은 이메일 또는 이메일 애플리케이션에 의해 사용되는 다른 메시지, PIM에 의해 사용되는 콘택 정보, 스케쥴링 프로그램에 의해 사용되는 예약 정보(appointment information), 워드 프로세싱 애플리케이션에 의해 사용되는 문서 등의 정보를 사용하고 그것을 저장 장치(268)에 저장할 수 있다. 동기화 애플리케이션은 또한 이동 장치 상에 상주하고 호스트 컴퓨터 상에 상주하는 대응하는 동기화 애플리케이션과 상호작용하여 호스트 컴퓨터에 저장된 대응하는 정보와 동기하여 저장 장치(268)에 저장된 정보를 유지하도록 프로그래밍된다.
이동 장치(200)는 하나 이상의 배터리로서 구현될 수 있는 전원(270)을 갖는다. 전원(270)은 AC 어댑터 또는 배터리를 보충하거나 재충전하는 파워 도킹 크래들(powered docking cradle) 등의 외부 전원을 더 포함할 수 있다.
이동 장치(200)는 또한 LED(240)와 오디오 인터페이스(274)의 2가지 유형의 외부 통지 메카니즘을 갖는 것으로 도시된다. 이들 장치는, 활성화될 때 프로세서(260) 및 다른 구성요소들이 배터리 전력을 절약하기 위하여 차단되더라도 통지 메카니즘에 의해 지시된 기간 동안 활성화된 상태로 남아 있도록 전원(270)에 직접 결합될 수 있다. LED(240)는 사용자가 액션을 취하여 장치의 파워-온 상태를 표시할 때까지 무한히 그 상태로 남아 있도록 프로그래밍될 수 있다. 오디오 인터페이스(274)는, 사용자에게 가청 신호를 제공하고 사용자로부터 가청 신호를 수신하는데 사용된다. 예를 들어, 오디오 인터페이스(274)는, 전화 대화를 용이하게 하기 위하여 가청 출력을 제공하는 스피커와 가청 입력을 수신하는 마이크로폰에 결합될 수 있다.
이동 장치(200)는 또한 무선 주파수 통신을 송수신하는 기능을 수행하는 라디오(272)를 포함한다. 라디오(272)는 통신 캐리어 또는 서비스 제공자를 통해 이동 장치(200)와 외부 세계 사이의 무선 접속을 용이하게 한다. 라디오(272)로/로부터의 송신은 오퍼레이팅 시스템(264)의 제어 하에서 수행된다. 즉, 라디오(272)에 의해 수신된 통신은 오퍼레이팅 시스템(264)을 통해 애플리케이션 프로그램(266)에 분산되거나 그 반대일 수 있다.
라디오(272)는 이동 장치(200)로 하여금 네트워크 등을 통해 다른 컴퓨팅 장치와 통신하도록 한다. 라디오(272)는 통신 매체의 일예이다. 통신 매체는 일반적으로 반송파 또는 다른 전송 메카니즘 등의 변조 데이터 신호의 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 기타 데이터에 의해 구현되고 임의의 정보 전달 매체를 포함한다. "변조 데이터 신호"라는 용어는 정보를 신호로 인코딩하도록 설정되거나 변경된 특성 중의 임의의 하나 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 와이어드 네트워크 또는 다이렉트 와이어드 접속부 등의 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체 등의 무선 매체를 포함한다. 여기에서 사용된 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 둘다를 포함한다.
메시지-큐-기반 UI 자동조작의 동기화
전통적인 UI 테스트 자동조작 코드의 문제점은 구동 로직이 테스트되는 UI-기반 타겟과 비동기적으로 실행된다는 것이다. 이것은 통상 UI를 구동하는데 사용되는 일반적인 방법 자체가 동기하지 않기 때문에 선택된 것일 뿐이다. 그 결과 이러한 자동조작의 저자는 코드를 명시적으로 제공하여 자동조작을 애플리케이션의 상태와 동기시켜야 한다. 즉, 액션을 수행하고, 액션이 수행된 몇개의 명시적 신호 또는 임의의 시간을 대기한 후 다음의 동작을 진행한다. 소정의 명시적 동기화 솔루션은 특정 기간동안 자동조작을 루프로 하여 컴퓨터 프로그램의 상태가 특정 조건에 도달하도록 보장하는 것을 포함한다. 이러한 별도의 동기화 코드는 기입하기 난해하고, 가상적으로 보증된 유지 비용으로, 사용자가 변함없이 성능 문제에 대한 작업에 맞추어야 하기 때문에, 명시적 신호는 이용가능하지 않다. 다른 문제점은 이 명시적 동기화가 통상 최적이 아니며 상당한 기간 만큼 프로그램의 준비가 지연(종종 신뢰성을 개선하기 위하여 과도하게 부과됨)된다는 것이다. 이것은 성능 테스트를 위한 자동조작 코드를 기입하기 어렵게 한다.
암시적 동기화는, 액션이 "수행"될 때를 항상 알고 있기 때문에 저자가 동기화를 처리하기 위하여 코드를 기입할 필요성을 제거함으로써 제1 문제점을 해결한다. 따라서, 코드는 특정 의도를 반영하고, 다음의 액션을 수행하기 위한 정확한 시간을 기다리는 로지스틱스(logistics)에 의해 오염되지 않는다.
메시지-큐-기반 동기화는 액션이 최적 시간에 완료되는 것을 검출함으로써 제2 문제점을 해결하여, 효율적으로 이벤트 구동된다.
본 발명은 설정된 지연이 자동조작 프로세스에 기입될 때 이용가능하지 않았던 성능 테스트의 레벨을 고려한다.
도 3은 본 발명에 따른 컴퓨팅 장치의 데스크탑 상의 일반적인 UI 출력(300)을 나타내는 블록도이다. 데스크탑(302)은 예시적인 윈도우(304, 306, 308)를 포함한다. 윈도우의 각각(예를 들어, 304)은, 대응하는 컴퓨팅 장치 또는 다른 위치 내에 저장되고 컴퓨팅 장치에 의해 디스플레이된 상이한 프로그램에 대응할 수 있다. 다른 실시예에서, 프로그램은 데스크탑 포맷으로 표시되지 않은 UI 출력을 제공할 수 있지만, 오히려 풀 스크린 출력 또는 다른 유형의 출력이다.
특정한 윈도우(예를 들어, 304)를 나타내는 디스플레이는, 특정한 윈도우 내에 디스플레이를 렌더링하는 컴퓨팅 장치의 시스템으로 전송되는 메시지에 대응한다. 메시지는 애플리케이션 프로그램 인터페이스(API) 호출의 결과로서 시스템에 제공된 UI 이벤트에 대응한다. API 호출은 UI 출력을 트리거하기 위하여 프로그램에 의해 제공된다. API 호출 메카니즘을 이용하는 윈도우 내에 UI 출력을 디스플레이하는 프로세스는 비동기 프로세스이다. 따라서, 프로그램의 UI와의 상호작용을 에뮬레이팅하기 위하여 제공되는 자동조작 코드 세트는 테스팅을 위한 비동기 프로세스를 트레이싱하는 어려움에 직면한다.
윈도우의 각각(예를 들어, 304)은 컴퓨팅 장치 상에서 실행되는 스레드(thread)에 의해 관리된다. 각각의 스레드는 하나 이상의 윈도우를 관리할 수 있다. 각각의 스레드는 스레드에 대응하는 윈도우에 대하여 메시지를 순환시킨다. 임의의 주어진 시간에, 각각이 다수의 윈도우에 대응하는 다수의 스레드는 컴퓨팅 장치 상에서 실행될 수 있다. 특정 윈도우에 대한 UI 출력에 영향을 주는 사용자 입력이 검출되면, 시스템은 윈도우에 대한 메시지를 처리하여 디스플레이에 필요한 변화를 초래한다. 각각의 스레드는 대응하는 메시지-큐를 가지며, 이 메시지-큐는 스레드에 의해 현재 처리되는 메시지에 대응한다.
본 발명은 각각의 스레드의 메시지-큐를 모니터링함으로써 메시지를 윈도우에 제공하는 프로세스에 자동조작 프로세스를 주입하거나 삽입한다. 따라서, 특정 메시지의 결과로서 디스플레이를 갱신하거나 변경하는 프로세스가 완료되면, 이 이벤트의 완료가 자동조작 프로세스에 알려진다. 관련 스레드의 메시지-큐가 비어 있으면, 자동조작 프로세스는 자동조작 입력으로부터 발생되는 액션이 처리된 것으로 인식한다.
일 실시예에서, 소정의 스레드는, 관심있는 프로그램과 무관하게 이들 스레드와 자동조작 프로세스간의 동기화가 제공되도록, 중요한 스레드(예를 들어, 태스크바를 위한 쉘 스레드(shell thread), 소프트웨어 입력 패널에 대응하는 스레드, 현재 디스플레이되는 윈도우, 및 기타)로서 식별된다. 다르게 말하면, 특정 프로그램을 위한 UI 출력은 특정 스레드에 의해 처리될 수 있다. 이 특정 스레드의 메시지-큐를 모니터링하기 보다는, 중요한 스레드로서 간주되는 다른 스레드의 메시지-큐가 또한 모니터링된다. 모니터링되는 스레드의 각각의 메시지-큐가 비어 있으면, 프로세스는 자동조작 입력으로부터 발생한 액션이 처리된 것으로 인식한다.
도 4는 본 발명에 따른 암시적 UI 동기화를 위한 프로세스의 논리적 흐름도를 나타낸다. 프로세스(400)는 자동조작 프로세스에 의해 동기화 프로세스를 구현하는 API가 호출된 후 블록(402)으로 진행한다. 일 실시예에서, 호출된 API는 WaitForForegroundIdleEx로 명명된다. 호출된 동기화 API는 가시적 윈도우를 소유하는 스레드의 메시지 큐를 모니터링하는 발견적 방법 뿐만 아니라 임의의 높은 프로파일 쉘 및 시스템 활동의 스레드를 사용한다. 프로세싱은 블록(404)에서 계속된다.
블록(404)에서, 디스플레이되는 소정의 선택 윈도우는 동기화 API에 의해 하위 분류된다. 일 실시예에서, 동기화 API는 윈도우가 하위 분류되도록 특정 윈도우를 후크하는 내부 C++ 클래스를 포함한다. 윈도우를 하위 분류하는 것은 특정 윈도우를 위한 윈도우 절차를 자동조작 프로세스에 대응하는 윈도우 절차로 대체하는 것을 포함한다. 결과적으로, 윈도우가 디스플레이되면, 프로그램 코드에 포함된 본래의 윈도우 절차보다 자동조작 프로세스에 대응하는 윈도우 절차가 호출된다. 다른 실시예에서, 동적 링크 라이브러리(DLL)는 애플리케이션의 프로세스 공간으로 로드되어, 애플리케이션이 후크 코드를 호스팅하도록 한다. 그후, 윈도우 절차는 DLL을 통해 후크 코드를 참조함으로써 구현될 수 있다. 프로세싱은 블록(406)에서 계속된다.
블록(406)에서, 동기화 API에 따라 하위 분류된 윈도우를 위한 타이머가 셋업된다. 다른 실시예에서, 높은 프로파일 쉘 및 시스템 활동의 스레드를 위한 타이머가 또한 셋업된다. 타이머는, 특정량의 시간을 기다리고 시간이 만료되었을 때 통지를 제공하도록 구성될 수 있는 메시지-큐 특징이다. 일 실시예에서, 제로의 기간으로 설정된 타이머가 사용되어, 타이머의 특정 특성이 영향을 받도록 한다. 제로의 기간이 사용되면, 메시지-큐가 비어 있을 때 타이머의 속성이 시동된다. 따라서, 타이머가 시동되었다는 타이머 통지를 수신하면, 자동조작 프로세스는, 일시적이라도, 메시지-큐가 비어 있는 것으로 인식한다. 프로세싱은 판정 블록(408)에서 계속된다.
판정 블록(408)에서, 스레드와 관련된 특정 타이머가 시동되었는지를 결정한다. 특정 타이머가 시동되지 않았으면, 프로세싱은 블록(408)의 시작으로 복귀하고, 타이머가 시동되기를 계속 기다린다. 특정 타이머가 시동되면, 그 스레드와 관련된 메시지-큐가 비고, 프로세싱은 블록(410)에서 계속된다.
블록(410)에서, 메시지가 관련 스레드의 메시지-큐 중의 하나에 들어갈 때 통지를 제공하는 API가 호출된다. 일 실시예에서, 이 대기 API는 MsgWaitForMultipleObjects API라 지칭된다. 대기 API가 호출된 후, 프로세싱은 판정 블록(412)으로 진행한다.
판정 블록(412)에서, 관련 스레드의 각각이 메시지를 기다리는지를 판정한다. 관련 스레드의 각각이 대기 API에 대한 호출을 기다리고 있을 때 관련 스레드의 각각이 메시지를 기다린다. 모든 관련 스레드가 대기 API에 대한 호출을 기다리지 않으면, 프로세싱은 판정 블록(408)으로 복귀하여 모든 관련 타이머가 시동되었는지를 판정한다. 그러나, 모든 관련 스레드가 대기 API에 대한 호출을 기다리고 있으면, 프로세싱은 블록(414)에서 계속된다. 블록(414)에서, 동기화 프로세스(400)로부터 자동조작 프로세스로의 복귀가 제공된다.
다른 실시예에서, 동기화 API는, 대기 API 호출을 스킵(skip)하고 단순히 메시지가 동시에 모든 UI 스레드에서 처리되는 것을 보증하도록 구성될 수 있다. 동기화 API는 또한 메시지 큐가 동시 복귀보다는 N 밀리초의 연속적인 기간동안 모두 유휴임을 보증하도록 설정될 수 있다.
상술한 명세서, 예 및 데이터는 본 발명의 구성을 제조하고 사용하기 위한 완전한 설명을 제공한다. 본 발명의 사상 및 범위를 벗어나지 않는 본 발명의 많은 실시예가 가능하며, 본 발명은 이하에 첨부된 청구범위 내에 있다.
본 발명에 따르면, 컴퓨터 프로그램의 코드로 사용자 인터페이스 자동조작 코드의 암시적 동기화를 위한 시스템 및 방법이 제공된다.
도 1은 본 발명의 일실시예에 사용될 수 있는 예시적인 컴퓨터 장치를 나타내는 도면.
도 2는 본 발명의 일실시예에 사용될 수 있는 예시적인 이동 장치를 나타내는 도면.
도 3은 본 발명에 따른 컴퓨팅 장치의 데스크탑 상에 일반적인 UI 출력을 나타내는 블록도.
도 4는 본 발명에 따른 암시적(implicit) UI 동기화를 위한 프로세스의 논리적 흐름도.
*도면의 주요 부분에 대한 부호의 설명*
200: 이동 장치
228: 디스플레이
232: 키패드
260: 프로세서
262: 메모리
264: 오퍼레이팅 시스템
266: 애플리케이션 프로그램
268: 저장 장치
270: 전원

Claims (22)

  1. 사용자 인터페이스 자동조작의 동기화를 위한 컴퓨터 구현 방법으로서,
    사용자 인터페이스 상에 디스플레이되는 선택 윈도우를 하위 분류하는 단계 - 상기 선택 윈도우의 각각은 스레드(thread)의 메시지-큐에 대응함 -;
    상기 선택 윈도우의 각각에 대응하는 타이머를 설정하는 단계;
    상기 선택 윈도우 중의 하나와 관련된 특정 타이머가 시동되었는지를 판정하는 단계; 및
    상기 스레드의 메시지-큐가 비어 있는지를 판정하여, 상기 메시지-큐가 비어 있을 때, 상기 사용자 인터페이스 자동조작이 다음의 액션으로 진행하도록 하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서, 동기화 애플리케이션 프로그램 인터페이스를 호출하여 상기 선택 윈도우의 하위 분류를 개시하는 단계를 더 포함하는 컴퓨터 구현 방법.
  3. 제1항에 있어서, 대기 애플리케이션 프로그램 인터페이스를 호출하여 상기 스레드의 메시지-큐가 비어 있는지를 판정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  4. 제3항에 있어서, 상기 스레드의 메시지 큐는, 상기 사용자 인터페이스 자동조작이 상기 대기 애플리케이션 프로그램 인터페이스에 대한 호출을 기다리고 있을 때 빈 것으로 표시되는 컴퓨터 구현 방법.
  5. 제1항에 있어서, 상기 선택 윈도우를 하위 분류하는 단계는 상기 선택 윈도우에 대응하는 윈도우 절차 코드를 사용자 인터페이스 자동조작 코드로 대체하는 단계에 대응하는 컴퓨터 구현 방법.
  6. 제1항에 있어서, 상기 선택 윈도우의 각각에 대응하는 상기 타이머는 제로로 설정되는 컴퓨터 구현 방법.
  7. 제1항에 있어서, 상기 선택 윈도우 중의 하나와 관련된 특정 타이머가 시동되었다는 판정은 상기 선택 윈도우 중의 상기 하나에 대응하는 메시지-큐가 비어 있다는 것을 표시하는 컴퓨터 구현 방법.
  8. 제1항에 있어서, 시스템 활동에 대응하는 타이머를 설정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  9. 제8항에 있어서, 상기 사용자 인터페이스 자동조작이 다음의 액션으로 진행하기 전에 상기 시스템 활동에 대응하는 상기 스레드의 메시지-큐가 비어 있는지를 추가로 판정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  10. 사용자 인터페이스 자동조작의 동기화를 제공하는 컴퓨터 실행가능 명령을 포함하는 컴퓨터 판독가능 매체로서, 상기 컴퓨터 실행가능 명령은
    사용자 인터페이스 자동조작 코드에 대응하도록 사용자 인터페이스 상에 디스플레이되는 선택 윈도우를 후크(hook)하는 단계 - 상기 선택 윈도우의 각각은 스레드(thread)의 메시지-큐에 대응함 -;
    상기 선택 윈도우의 각각에 대응하는 타이머를 설정하는 단계;
    상기 선택 윈도우 중의 하나와 관련된 특정 타이머가 시동되었는지를 판정하는 단계; 및
    상기 스레드의 메시지-큐가 비어 있는지를 판정하여, 상기 메시지-큐가 비어 있을 때, 상기 사용자 인터페이스 자동조작이 다음의 액션으로 진행하도록 하는 단계
    를 포함하는 컴퓨터 판독가능 매체.
  11. 제10항에 있어서, 동기화 애플리케이션 프로그램 인터페이스를 호출하여 상기 선택 윈도우의 하위 분류를 개시하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  12. 제10항에 있어서, 상기 선택 윈도우를 후크하는 단계는 상기 선택 윈도우에 대응하는 윈도우 절차 코드가 사용자 인터페이스 자동조작 코드로 대체되도록 선택 윈도우를 하위 분류하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  13. 제10항에 있어서, 상기 선택 윈도우를 후크하는 단계는 동적 링크 라이브러리를 상기 선택 윈도우에 대응하는 윈도우 절차 코드에 부착하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  14. 제10항에 있어서, 대기 애플리케이션 프로그램 인터페이스를 호출하여 상기 스레드의 메시지-큐가 비어 있는지를 판정하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  15. 제14항에 있어서, 상기 스레드의 메시지 큐는, 상기 사용자 인터페이스 자동조작이 상기 대기 애플리케이션 프로그램 인터페이스에 대한 호출을 기다리고 있을 때 빈 것으로 표시되는 컴퓨터 판독가능 매체.
  16. 제10항에 있어서, 상기 선택 윈도우 중의 하나와 관련된 특정 타이머가 시동되었다는 판정은 상기 선택 윈도우 중의 상기 하나에 대응하는 메시지-큐가 비어 있다는 것을 표시하는 컴퓨터 판독가능 매체.
  17. 사용자 인터페이스 자동조작을 동기화하기 위한 시스템으로서,
    사용자 인터페이스 자동조작 코드에 대응하도록 사용자 인터페이스 상에 디스플레이되는 선택 윈도우 - 상기 선택 윈도우의 각각은 스레드(thread)의 메시지-큐에 대응함 - 를 후크(hook)하고;
    상기 선택 윈도우의 각각에 대응하는 타이머를 설정하고;
    상기 선택 윈도우중의 하나와 관련된 특정 타이머가 시동되었는지를 판정하고;
    상기 스레드의 메시지-큐가 비어 있는지를 판정하여, 상기 메시지-큐가 비어 있을 때, 상기 사용자 인터페이스 자동조작이 다음의 액션으로 진행하도록 구성된 애플리케이션 프로그램 인터페이스를 포함하는 애플리케이션
    을 포함하는 시스템.
  18. 제17항에 있어서, 상기 애플리케이션 프로그램 인터페이스는 또한 대기 애플리케이션 프로그램 인터페이스를 호출하여 상기 스레드의 메시지-큐가 비어 있는지를 판정하도록 구성된 시스템.
  19. 제17항에 있어서, 상기 스레드의 메시지-큐는 상기 사용자 인터페이스 자동조작이 상기 대기 애플리케이션 프로그램 인터페이스에 대한 호출을 기다리고 있을 때 빈 것으로 표시되는 시스템.
  20. 제17항에 있어서, 상기 애플리케이션 프로그램 인터페이스는 또한 상기 선택 윈도우의 각각에 대응하는 타이머가 제로로 설정되도록 구성되는 시스템.
  21. 제17항에 있어서, 상기 애플리케이션 프로그램 인터페이스는 또한 시스템 활동에 대응하는 타이머를 설정하도록 구성되는 시스템.
  22. 제21항에 있어서, 상기 애플리케이션 프로그램 인터페이스는 또한 상기 사용자 인터페이스 자동조작이 다음의 액션으로 진행하기 전에 상기 시스템 활동에 대응하는 상기 스레드의 메시지 큐가 비어 있는지를 추가로 판정하도록 구성되는 시스템.
KR1020050000029A 2004-01-02 2005-01-03 암시적 구성가능 메시지-큐-기반 사용자 인터페이스자동조작의 동기화를 위한 시스템 및 방법 KR20050071377A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/751,336 US20050149930A1 (en) 2004-01-02 2004-01-02 System and method for implicit configurable message-queue-based user interface automation synchronization
US10/751,336 2004-01-02

Publications (1)

Publication Number Publication Date
KR20050071377A true KR20050071377A (ko) 2005-07-07

Family

ID=34620646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050000029A KR20050071377A (ko) 2004-01-02 2005-01-03 암시적 구성가능 메시지-큐-기반 사용자 인터페이스자동조작의 동기화를 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US20050149930A1 (ko)
EP (1) EP1555612A3 (ko)
JP (1) JP2005228301A (ko)
KR (1) KR20050071377A (ko)
CN (1) CN100432938C (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8205098B2 (en) * 2008-02-25 2012-06-19 Microsoft Corporation Secure and usable protection of a roamable credentials store
CN101923382B (zh) * 2009-06-16 2013-01-16 联想(北京)有限公司 一种计算机系统的节能方法及计算机系统
CN101847107B (zh) * 2010-03-30 2012-07-04 南京恩瑞特实业有限公司 基于消息队列的外界数据接收方法
CN104423930B (zh) * 2013-08-19 2017-12-26 联想(北京)有限公司 信息处理的方法和装置
WO2015167474A1 (en) * 2014-04-29 2015-11-05 Hewlett-Packard Development Company, Lp Relating user action flows by storing relationships between threads and objects
US9678764B2 (en) 2014-04-29 2017-06-13 Hewlett Packard Enterprise Development Lp Classifying application protocol interfaces (APIS) as affecting user experience
US9946635B2 (en) 2015-09-29 2018-04-17 International Business Machines Corporation Synchronizing multi-system program instruction sequences
CN106933589B (zh) * 2017-03-13 2020-07-28 车智互联(北京)科技有限公司 一种基于配置的消息队列组件及其集成的方法
CN107479982B (zh) * 2017-07-03 2020-01-31 福建网龙计算机网络信息技术有限公司 一种数据同步的方法及终端

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5600789A (en) * 1992-11-19 1997-02-04 Segue Software, Inc. Automated GUI interface testing
US5664190A (en) * 1994-01-21 1997-09-02 International Business Machines Corp. System and method for enabling an event driven interface to a procedural program
US5504898A (en) * 1994-06-20 1996-04-02 Candle Distributed Solutions, Inc. Threaded environment for AS/400
US6611878B2 (en) * 1996-11-08 2003-08-26 International Business Machines Corporation Method and apparatus for software technology injection for operating systems which assign separate process address spaces
US20020046230A1 (en) * 1998-04-29 2002-04-18 Daniel J. Dieterich Method for scheduling thread execution on a limited number of operating system threads
JPH11250022A (ja) * 1998-03-05 1999-09-17 Nec Corp 分散情報処理装置と分散情報処理方法及び分散情報処理プログラムを記録した記録媒体
US6604150B1 (en) * 1999-02-06 2003-08-05 International Business Machines Corporation Integration of GUI application with external application extensions
ATE313113T1 (de) * 1999-08-23 2005-12-15 Sentillion Inc Anwendungs-klickstartliste
US6671875B1 (en) * 2000-09-21 2003-12-30 International Business Machines Corporation Manipulation of an object-oriented user interface process to provide rollback of object-oriented scripts from a procedural business logic debugger
US7210105B2 (en) * 2001-03-02 2007-04-24 National Instruments Corporation System and method for synchronizing software execution
US20030050834A1 (en) * 2001-09-07 2003-03-13 Sergio Caplan System and method for dynamic customizable interactive portal active during select computer time
US7047533B2 (en) * 2001-09-10 2006-05-16 Hewlett-Packard Development Company, L.P. Wait utility and method
US20050081206A1 (en) * 2003-10-14 2005-04-14 Armstrong Douglas R. Methods and apparatus for profiling threaded programs

Also Published As

Publication number Publication date
EP1555612A3 (en) 2007-09-05
EP1555612A2 (en) 2005-07-20
US20050149930A1 (en) 2005-07-07
CN1645331A (zh) 2005-07-27
CN100432938C (zh) 2008-11-12
JP2005228301A (ja) 2005-08-25

Similar Documents

Publication Publication Date Title
JP5647645B2 (ja) サスペンドの延期
US6910159B2 (en) System and method for gathering and automatically processing user and debug data for mobile devices
KR102205372B1 (ko) 클라이언트 측 활동 모니터링
US8078448B1 (en) Systems and methods for automated testing
US9021436B2 (en) Automatic reconnection of debugger to a reactivated application
JP2005251172A (ja) 開発サイクルを通じてユーザインタフェースの相違を自動的に判定する方法およびシステム
US20110061056A1 (en) Portable device and method for providing shortcuts in the portable device
US20060212727A1 (en) Systems and methods for providing power-loss protection to sleeping computers systems
US8453013B1 (en) System-hang recovery mechanisms for distributed systems
US10820274B2 (en) Systems and methods for testing power consumption of electronic devices
KR20050071377A (ko) 암시적 구성가능 메시지-큐-기반 사용자 인터페이스자동조작의 동기화를 위한 시스템 및 방법
EP3407186B1 (en) Interface refresh synchronization method and apparatus, terminal, and storage medium
US10761828B2 (en) Deviation finder
CN112948018A (zh) 用于小程序的动态库加载方法、装置、设备及介质
CN102044201B (zh) 行动设备屏幕恒亮显示的装置与方法
CN108132803B (zh) 基于移动终端的定时保活及唤醒方法、系统、终端及介质
CN113641929B (zh) 页面渲染的方法、装置、电子设备和计算机可读存储介质
CN115269431A (zh) 一种接口测试方法、装置、电子设备及存储介质
US7337308B2 (en) System and method for initiating dialup creation from modem connection to a mobile device
CN113986460A (zh) 一种数据同步方法、装置、设备和存储介质
CN111258877B (zh) 首屏页面可见时间的检测方法、装置及电子设备
CN113778659A (zh) 多线程处理方法和装置
Lakhani et al. Applying design patterns to improve the reliability of embedded systems through a process of architecture migration
US20230102015A1 (en) Minimizing c-state transitions due to software timer interrupts
CN114237752A (zh) 推送页面的显示方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid