KR20060050370A - 재생가능한 테스트 자동화를 위한 테스트 케이스 실행비해비어 선택 시스템 및 방법 - Google Patents

재생가능한 테스트 자동화를 위한 테스트 케이스 실행비해비어 선택 시스템 및 방법 Download PDF

Info

Publication number
KR20060050370A
KR20060050370A KR1020050073232A KR20050073232A KR20060050370A KR 20060050370 A KR20060050370 A KR 20060050370A KR 1020050073232 A KR1020050073232 A KR 1020050073232A KR 20050073232 A KR20050073232 A KR 20050073232A KR 20060050370 A KR20060050370 A KR 20060050370A
Authority
KR
South Korea
Prior art keywords
execution
comparison
manager
test case
run
Prior art date
Application number
KR1020050073232A
Other languages
English (en)
Other versions
KR101153028B1 (ko
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 KR20060050370A publication Critical patent/KR20060050370A/ko
Application granted granted Critical
Publication of KR101153028B1 publication Critical patent/KR101153028B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

실행 비해비어를 테스트 케이스로부터 분리하고, 실행 비해비어 라이브러리를 포함하거나 그와 통신하는 실행 비해비어 매니저 내에 실행 비해비어를 통합하는 시스템 및 방법이 제공된다. 상기 방법은 테스트 케이스의 단계 또는 동작을 실행하기 위한 실행 비해비어를 선택하는 단계와, 테스트 케이스에 실행을 위한 실행 비해비어를 송신하는 단계를 포함한다. 또한, 상기 방법 및 시스템은 글로벌 및 로컬 웨이팅을 실행 비해비어 선택 프로세스에 적용하는 것을 제공하고 이전에 실행된 비해비어로 테스트 케이스를 재연하는 것을 허용한다.
실행 비해비어, 테스트 케이스, 글로벌 웨이팅, 로컬 웨이팅

Description

재생가능한 테스트 자동화를 위한 테스트 케이스 실행 비해비어 선택 시스템 및 방법{SYSTEM AND METHOD FOR SELECTING TEST CASE EXECUTION BEHAVIORS FOR REPRODUCIBLE TEST AUTOMATION}
본 발명의 예시적 실시예의 후속하는 상세한 설명뿐만 아니라, 전술한 요약은 첨부된 도면과 함께 읽을 경우보다 잘 이해될 것이다. 본 발명을 설명하기 위해, 본 발명의 예시적 구성이 도시되어 있지만, 본 발명은 개시된 특정 방법 및 수단에 한정되는 것은 아니다.
도 1은 테스트 케이스로부터 실행 비해비어 추출을 갖는 테스트 케이스 실행의 양태가 실행될 수 있는 예시적 컴퓨팅 환경을 나타내는 블럭 다이아그램이다.
도 2는 실행 비해비어 추출을 갖는 테스트 케이스 실행을 위한 시스템의 예시적 실시예의 블럭 다이아그램이다.
도 3은 예시적 실행 비해비어의 블럭 다이아그램이다.
도 4는 테스트 케이스로부터 실행 비해비어 추출을 갖는 또 다른 테스트 케이스 실행 방법의 플로우 다이아그램이다.
도 5a 내지 도 5b는 테스트 케이스로부터 실행 비해비어 추출을 갖는 또 다른 테스트 케이스 실행 방법의 플로우 다이아그램들을 나타낸다.
<도면의 주요부분에 대한 부호의 설명>
120: 프로세싱 유닛
121: 시스템 버스
130: 시스템 메모리
133: BIOS
132: RAM
134: 운영 체제
136: 다른 프로그램 모듈
137: 프로그램 데이터
162: 키보드
180: 원격 컴퓨터
185: 원격 어플리케이션 프로그램
190: 비디오 인터페이스
195: 출력 주변 인터페이스
196: 프린터
197: 스피커
본 출원은, 발명의 명칭이 "Automated Test Case Verification That Is Loosely Coupled With Respect To Automated Test Case Execution"인 미국특허출원 대리인 사건 번호(U.S. Patent Application Attorney Docket Number) MSFT-4149 및 발명의 명칭이 "Test Automation Stack Layering"인 미국특허출원 대리인 사건 번호 MSFT4150과 관련되며, 본 명세서와 상호참조된다.
본 발명은 어플리케이션용 소프트웨어를 테스트하는 것에 관한 것으로, 특히 테스트 케이스로부터 실행 동작의 추출에 관한 것이다.
소프트웨어 개발의 라이프 싸이클(life cycle)의 주요 단계들은 디자인 단계, 코딩 단계, 코드 완성 단계, 알파 단계, 베타 단계, 그리고 마지막으로 시장으로의 배포 단계이다. 디자인 단계 동안, 소프트웨어 제품의 고객 문제가 언급되고 소프트웨어 제품의 기능이 정의된다. 전형적으로, 기능 설명서의 완성은 디자인 단계의 종료를 나타낸다. 코딩 단계는 이미 시작되었다. 코드 완성 단계는 코드가 기록되었지만 반드시 디버깅될 필요가 없을 경우 도달된다. 알파 단계는 제품이 안정적인 시점을 나타낸다. 즉, 대부분의 버그는 발견된 것이다. 베타 단계에서, 제품은 이상적으로 모든 주요 버그들이 없다. 남아 있는 유일한 버그는 본질적으로 무해해야 한다. 제품은 최종 품질 보증 체크리스트를 통과할 경우, 시장에 배포될 준비가 된다.
어느 누구도 동작하지 않는 소프트웨어를 원하지는 않을 것이므로, 테스팅은 라이프 싸이클의 중요한 부분이며 몇몇 단계를 포함할 수 있다. 소프트웨어 테스팅은 테스트 케이스(또는, 보다 유사하게는 테스트 케이스의 세트)를 고안하는 단계와, 입력시 테스트 케이스를 갖는 소프트웨어를 실행하는 단계와, 입력시 테스트 케이스를 갖는 소프트웨어의 성능이 예측된 결과를 도출하는 지를 검사하는 단계를 포함한다. 자동 소프트웨어 테스팅으로 언급되는 소프트웨어 검사는 사람에 의해 수동으로 실시되거나 프로그램에 입각하여 실시될 수 있다. 이상적으로, 소프트웨어의 테스팅은 소프트웨어의 라이프 싸이클 내에서 가능한한 빨리 시작되어야 한다. 그러나, 일반적으로, 소프트웨어는, 디자인 단계가 완료될 때까지는 예측된 결과가 결정되지 않기 때문에, 디자인 단계가 완료될 때까지 전혀 테스트될 수 없다. 전형적으로, 코딩 단계 동안, 개발자는 코드를 기록한 때, 그의 코드를 수동으로 테스트한다. 통상적으로 개발 프로세스에서 상당한 시간이 지날 때까지는 자동 소프트웨어 테스팅이 시작될 수 없다.
때때로, 실시되는 유일한 테스팅은, 코딩 시 수동으로 테스트하는 개발자에 의해 수행되는 것이다. 그러나, 자신의 작업을 테스트하는 개발자는, 코드에 매우 감정적으로 투자하지 않은 사람이라면 찾아낼 버그를 간과하기 쉽다. 또한, 개발자의 테스팅의 범위는 전형적으로 그의 코드의 기능 및 그의 코드와 제한된 수의 다른 소프트웨어 어플리케이션과의 통합에 한정된다.
이러한 결점을 언급하기 위해, 많은 소프트웨어 개발 하우스는, 종종 적어도 부분적으로 자동화된 테스팅 기술을 사용하여, 소프트웨어를 테스트하는 개별적인 소프트웨어 테스팅 그룹을 가지고 있다. 전형적으로, 테스팅 그룹은 테스트 케이스를 기록 및 실행함으로써 양태들 사이, 그리고 어플리케이션 사이의 상호작용을 복잡하게 한다. 일반적으로, 제품 라이프 싸이클 내에서 일찍, 심지어 디자인 단계만큼 일찍 테스팅 그룹을 포함하는 것은, 기능 설명서의 불일치의 확인, 테스트하기 곤란한 영역의 확인 등을 포함하여 많은 이점을 얻을 수 있다. 그러나, 일반 적으로, 특징 정의, 실행 및 사용자 인터페이스(user interface: UI) 튜닝의 계속된 변화에도 불구하고 각각의 테스트 케이스를 현재로 유지하는 것은 이러한 접근 방법을 실행불가능하게 만든다. 그러므로, 테스트 케이스를 기록하고 실행하는 것은 전형적으로 제품 개발의 끝부분에서 발생하는, 재촉받는 문제이다. 따라서, 테스팅, 특히 자동화된 테스팅은 늘 더뎌지게 된다. 테스트 케이스를 기록하고 소프트웨어 제품의 라이프 싸이클 내에서, 이상적으로는 디자인 단계에서, 자동화된 테스팅을 가능한 빨리 사용하는 방법이 존재한다면, 도움이 될 것이다.
테스트 케이스의 수트(suite)의 개발은 그것이 발생할 때마다 문제가 있다. 어플리케이션의 특정 특성을 테스트하기 위해, 많은 세트의 테스트가 기록되어야 한다. 예를 들어, 어플리케이션은, 마우스, 키보드, 디지타이저, 액세스가능 소프트웨어, 프로그램 입각하여, 등을 통해 많은 모드의 양태와의 상호작용을 허용할 수 있다. 그러므로, 특징에 대한 광범위한 테스트를 제공하기 위해, 테스트의 수트는 마우스를 통해 양태와 상호작용하는(사용자의 힘과 같이 텍스트를 타이핑하는) 테스트의 세트, 키보드를 통해 특징과 상호작용하는 하나의 세트, 디지타이저를 통해 특징과 상호작용하는 하나의 세트, 디폴트 동작을 호출하거나 그렇지 않으면 액세스가능성 어플리케이션을 흉내 내기 위해 액세스가능성 소프트웨어를 통해 상호작용하는 하나의 세트, 어플리케이션의 코딩 모델을 통해 특성과 상호작용하는 하나의 세트 등등을 포함한다. 생성된 테스트 케이스의 수트가 광범위한 양태 또는 어플리케이션의 테스트를 보장하고, 나아가 그 광범위한 테스트를 제공하기 위해 기록되어야 하는 전체 테스트 케이스의 수를 줄이는 방법이 있으면 도움이 될 것이다.
또한, 이들 테스트의 세트 각각에 있어서의 많은 또는 모든 로직은 다른 상태의 테스트에 있어서의 로직과 동일하며, 전형적으로 대부분의 또는 모든 결과 프로세싱의 확인도 동일하다. 그러므로, 많은 테스트는 동일하거나 거의 동일하며, 단지 실행 옵션만 변할 뿐이다. 예를 들어, 전술한 입력의 모든 멀티플 폼에 대하여, 예측된 결과는 동일할 것이다. 그러므로, 이들 입력 소스의 각각에 대한 테스트 케이스를 기록하는 것은, 전형적으로 입력 소스의 각각에 대한 테스트를 실행하고 대부분의 테스트 스크립트의 나머지를 복제하는 개별적 방법을 기록하는 것을 필요로 한다. 작은 변화로 동일한 테스트 케이스를 반복하여 기록하는 것은 지루하고 시간소모적이다. 이러한 중복적 코딩을 제거하거나 상당히 줄이고, 기록되어야 하는 테스트 케이스의 전체 수를 줄이는 방법이 존재한다면 도움이 될 것이다.
테스트 케이스를 실행하는 실제 결과가 예측된 결과와 일치하는지를 결정하기 위해 기록된 코드(결과의 확인 또는 확인이라 불림)는 종종 테스트 케이스 내에 포함된다. 특정 결과 확인의 세부를 변경하거나 새로운 결과 확인을 부가하는 것은 전형적으로 각각의 테스트 케이스의 변경을 필요로 한다. 확인 코드가 테스트 케이스로부터 분리된다면 테스트 케이스를 보다 쉽게 이해하고 확인 코드를 보다 쉽게 사용 및 유지하는데 도움이 될 것이다.
실행 세부는, 종종 테스트 케이스가 기록되기 전에 완료되는 디자인 단계를 필요로 하는 테스트 케이스로 하드 코드된다(hard-coded). 테스트 케이스가 소프트웨어 개발 라이프 씨이클에서 보다 일찍 기록될 수 있도록, 특정 실행 세부 사항 에 관한 것보다는 사용자 동작에 관하여 테스트 케이스를 정의하는 방법이 존재한다면 도움이 될 것이다.
소프트웨어 어플리케이션을 테스팅하는 것은 어플리케이션의 초기 개발 및 어플리케이션에 대한 변형의 실행에 있어서 중요한 단계이다. 소프트웨어 어플리케이션 개발자는 어플리케이션 개발의 테스팅 단계에서 많은 노력을 한다. 그러한 테스팅은 어플리케이션이 특정 동작에 예측된 방법으로 응답하는 것을 보장하는 데 도움이된다.
전형적으로, 테스트 케이스는 특히 어플리케이션의 컴포넌트를 테스팅하기 위해 코딩된다. 예를 들어, 사용자 인터페이스(UI) 테스트 케이스는 텍스트 박스, 버튼, 메뉴 등의 식별을 나타내는 코드를 포함할 수 있지만, 어플리케이션 프로그램 인터페이스(API) 테스트 케이스는 테스트되고 있는 API와 직접적으로 통신할 수 있다. 이러한 실행 방법 각각에 대해 테스트 케이스를 기록하는 것은, 실행의 방법인 테스트 케이스 사이의 변화만으로, 주로 동일한 테스트 케이스를 기록하는 것을 필요로 할 수 있다. 즉, 하나의 케이스는 버튼을 사용하는 어플리케이션의 컴포넌트를 테스팅하는 것을 특정하고, 다른 테스트 케이스는 객체 모델을 사용하는 컴포넌트를 테스팅하는 것을 특정할 수 있으며, 또 다른 테스트 케이스는 키보드 입력을 사용하는 것을 특정할 수 있다. 실행 방법은 별도로 하더라도, 이들 테스트 케이스 및 그 실행의 예측 결과는 동일할 수 있다.
또한, 테스트 케이스는 다수의 동작의 실행을 요구할 수 있는데, 각 동작은 다수의 실행 방법(예를 들어, 마우스로 버튼 또는 메뉴를 호출하는 것, 키보드로 버튼 또는 메뉴를 호출하는 것, 마우스로는 메뉴를 키보드로는 버튼을 호출하는 것 등) 중 일부를 사용하여 완성될 수 있다. 어플리케이션의 다수의 동작을 완성하는 실행 방법의 모든 가능한 조합을 테스트하는데 필요한 테스트 케이스의 수는 비교적 단순한 어플리케이션에서 조차 클 수 있다.
모든 실행 방법에 의해 어플리케이션을 테스트하기 위해 매우 많은 양의 테스트 케이스를 개발하는 것은 위압적인 전망이다. 그러한 태스크는 많은 가상적으로 동일한 테스트 케이스를, 단지 실행 방법에서 다양하게 기록하는 것을 필요로 한다. 또한, 테스트 케이스 유지는 테스트 케이스 생성보다 심지어 보다 노동 집약적이고 시간 소모적일 수 있다. 어플리케이션이 변경될 경우, 어플리케이션 테스트 케이스는 계속된 양립성을 보장하기 위해 업데이트하는 것을 필요로 할 수 있다. 각각의 실행 방법에 기록된 매우 많은 수의 테스트 케이스를 업데이트하는 것은 위압적 태스크일 수도 있을 것이다.
또한, 몇몇 실행 방법은 테스트 케이스 내에서 전혀 테스트되지 않을 수 있다. 테스트 케이스는 어플리케이션이 예상못한 결과를 야기하지 않고 특정 동작을 행하는지를 결정하도록 디자인될 수 있다. 테스트 케이스는 테스트 케이스의 목적과 관계없는 동작의 실행 방법과 관련이 없을 수 있다. 그러나, 태스트의 초점이 어플리케이션의 몇몇 다른 측면에 있을 때라도 테스트 케이스의 관계없는 단계가 다양한 실행 방법에 의해 테스트된다면 유리할 것이다. 테스트 케이스가 예를 들어, 주로 파란 사각형을 그리는 어플리케이션의 능력을 테스트하고자 의도되었다면, 테스트 케이스는 새 문서를 여는 단계를 포함할 수 있다. 새 문서를 여는 것 은 테스트 케이스의 목적과 거의 관계가 없지만, 테스트 케이스는 마우스만을 사용하여 완성되는 동작을 제공할 수 있다. 그러나, 예를 들어, 키보드를 사용하여 새 문서를 여는 것은 푸른 사각형이 사실상 붉은 색이 되거나, 원으로 생성되거나 또는 그 외에도 예상된 결과와 다르게 될 수 있다는 것이 발견될 수 있기 때문에 새 문서를 여는 모든 실행 방법을 테스트하는 것은 유용할 수 있다.
그러므로, 각각의 실행 방법 또는 가능한 실행 방법의 모든 조합에 대해 기록된 가상적으로 동일한 테스트 케이스를 요구함이 없이 다양한 실행 방법을 사용하여 어플리케이션을 테스트할 필요성이 있다.
본 발명은 단일 테스트 케이스가 많은 실행 방법 또는 그 조합에 의해 실행되는 것을 가능하게 한다. 이들 실행 방법은 "실행 비해비어(execution behaviors)"로 불린다. 본 발명은 성가시고, 실행 비해비어의 많은 조합을 고려한 세부화된 테스트 케이스 코드를 필요로함이 없이, 하나의 테스트 케이스가 다양한 실행 비해비어에 의해 실행되는 것을 가능하게 한다.
본 발명은 실행 비해비어를 테스크 케이스로부터 분리하고, 실행 비해비어의 선택을 "실행 비해비어 매니저(execution behavior manager)"라 불리는 개별 디바이스에 남긴다. 테스트 케이스 또는 테스트 케이스의 단계는 실행 비해비어 매니저를 호출할 수 있다. 실행 비해비어 매니저는 실행 비해비어를 선택하고 실행 비해비어를 테스트 케이스에 의한 실행을 위해 반송할 수 있다. 실행 비해비어 매니저는 테스트 케이스로부터 이전의 호출을 위해 전송된 이전의 실행 비해비어에 기 초하여 실행 비해비어를 선택할 수 있다. 실행 비해비어 매니저는 이전에 제공된 실행 비해비어를 추적할 수 있고 모든 이용가능한 실행 비해비어를 통해 순환할 수 있다. 이는 모든 이용가능한 실행 비해비어에 의한 어플리케이션에 대한 테스팅의 발란스를 제공할 수 있다.
또한, 적절한 실행 비해비어의 선택에 대한 모든 결정에 있어서, "글로벌(global)" 웨이팅이 실행 비해비어 매니저에 의해 적용될 수 있다. 예를 들어, 어플리케이션의 메뉴가 재구성되었을 경우, 글로벌 웨이팅이 적용될 수 있는데, 시간의 80%는 메뉴를, 시간의 20%는 버튼을 사용하라고 실행 비해비어 매니저에 통지한다. 이러한 글로벌 웨이팅은 동일한 회수로 각각의 실행 비해비어를 선택하는 실행 비해비어 매니저의 통상적 동작에 우선한다.
또한, 테스트 케이스는 로컬 웨이팅을 통해, 글로벌 웨이팅에 우선하고, 실행 비해비어 매니저에게 가령, 테스트 케이스의 "새 문서를 여는" 단계를 실행하기 위해 툴바 버튼을 사용하라고 알린다. 이러한 우선화(override)는 예를 들어, 툴바가 최근에 재구성되고 특정 테스트 케이스에서 적절히 작동하는 것을 테스터가 보장하기를 원하는 경우에 중요할 수 있다. 로컬 웨이팅은, 두 가지 웨이팅 모두가 비해비어를 실행하는 것이 고려되도록 글로벌 웨이팅과 동시에 또는 오소고날(orthogonal)하도록 번갈아 사용될 수 있다.
개관
실행 비해비어를 테스트 케이스로부터 분리하고 실행 비해비어를 실행 비해 비어 매니저 내에 통합하는 것은 어플리케이션이 보다 완전하게 테스트되도록 한다. 본 발명은 하나의 테스트 케이스가 실행 비해비어 및 실행 비해비어의 조합을 통해 실행되는 것을 가능하게 함으로써 보다 완전히 테스트하는 것을 제공한다. 실행 비해비어를 테스트 케이스로부터 분리하면, 실행 비해비어 매니저는 테스트 케이스의 각 단계에 대한 모든 다양한 실행 비해비어를 통해 계속하여 순환할 수 있다. 이러한 방식으로, 각 단계에 대한 다양한 실행 방법의 여러 가지 조합이 테스트될 수 있는데, 이는 보다 큰 포괄성을 제공한다. 본 발명은 테스트 케이스의 각 단계에 대한 실행 방법의 특정 조합으로부터의 버그의 검출을 가능하게 하는데, 여기서 버그는 미리 주지되지 않을 수 있다. 또한, 본 발명은 버그가 정정되었는지 여부를 결정하기 위해 그러한 테스트 케이스가 정확한 실행 비해비어로 재연되는 것을 제공한다.
컴퓨팅 환경의 예
도 1 및 후속하는 논의는 본 발명의 예시적 실시예가 실시될 수 있는 적합한 컴퓨팅 환경에 대한 간단하고 일반적인 설명을 제공하고자 하는 것이다. 그러나, 핸드헬드(handheld), 휴대형 및 다른 모든 종류의 컴퓨팅 디바이스가 본 발명의 함께 사용될 수 있는 것으로 고려될 수 있다는 것이 이해되어야 한다. 범용 컴퓨터가 이하 설명되지만, 이는 단지 하나의 실시예일 뿐이다. 또한, 본 발명은 네트워크 서버 상호동작가능성 및 상호작용성을 갖는 씬 클라이언트(thin client)에서 동작할 수 있다. 따라서, 본 발명의 예시적 실시예는 매우 적은 또는 최소량의 클라이언트 리소스가 연루된 가령, 클라이언트 디바이스가 단지 월드 와이드 웹(World Wide Web)에 대한 브라우저 또는 인터페이스로서 역할을 하는 네트워크 환경인 네트워크 호스트 서비스(networked hosted services)의 환경에서 실행될 수 있다.
요구되지는 않지만, 본 발명은 개발자 또는 테스터(tester)에 의해 사용되는 어플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 통해 실행될 수 있거나/있으며 프로그램 모듈과 같이, 하나 이상의 컴퓨터(가령, 클라이언트 워크스테이션, 서버 또는 다른 디바이스)에 의해 실행되는 컴퓨터 실행가능 인스트럭션의 일반 텍스트로 기술될 수 있는 네트워크 브라우징 소프트웨어 내에 포함될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 실행하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 전형적으로, 프로그램 모듈의 기능성은 다양한 실시예에서 원하는 바대로 결합 또는 분할될 수 있다. 또한, 당업자는 본 발명이 다른 컴퓨터 시스템 구성으로 실시될 수 있다는 것을 이해할 것이다. 본 발명에 사용하기에 적합할 수 있는 다른 공지된 컴퓨팅 시스템, 환경 및/또는 구성은 개인용 컴퓨터, 자동 텔러 머신(automated teller machines), 서버 컴퓨터, 핸드헬드 또는 랩탑 디바이스, 멀티 프로세서 시스템, 마이크로프로세서 기반 컴퓨터 등을 포함하며, 이에 한정되는 것은 아니다. 또한, 본 발명의 실시예는 태스크가 통신 네트워크 또는 다른 데이터 전송 매체를 통해 링크된 원격 프로세싱 디바이스에 의해 수행되는 분산형 컴퓨팅 환경 내에서 실시될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체 모두에 위치할 수 있다.
따라서, 도 1은, 위에서 명료하게 된 바와 같이, 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 단지 하나의 예이고, 본 발명의 사용 또는 기능성의 범주에 대한 어떤 제한을 제시하고자 하는 것이 아닐지라도, 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 예를 나타낸다. 또한, 컴퓨팅 환경(100)은 예시적 동작 환경(100)에 나타난 컴포넌트 중 어느 하나 또는 조합에 관련된 어떤 의존성 또는 필요성을 가지는 것으로도 해석되어서는 안 된다.
도 1을 참조하면, 본 발명을 실시하기 위한 예시적 시스템은 컴퓨터(110)의 형태인 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 컴포넌트는 프로세싱 유닛(120), 시스템 메모리(130) 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결하는 시스템 버스(121)를 포함할 수 있으며, 이에 한정되는 것은 아니다. 시스템 버스(121)는, 다양한 버스 아키텍쳐를 이용하는, 메모리 버스 또는 메모리 제어기, 주변 버스(peripheral bus), 및 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 어느 것일 수 있다. 예에 의하면, 그런 아키텍쳐는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standard Architecture) 버스 및 PCI(Peripheral Component Interconnect) 버스(매저닌 버스(Mazzanine bus)라고도 공지되어 있음)를 포함하며, 이에 한정되지 않는다.
컴퓨터(110)는 전형적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 어떤 이용가능한 매체일 수 있으며 휘발성 및 비휘발성 매체 모두와, 분리형 및 비분리형 매체를 포함한다. 한정이 아닌 예에 의하면, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체 를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 어떤 방법 또는 기술로 구현되는 휘발성 및 비휘발성 매체 모두와, 분리형 및 비분리형 매체를 포함할 수 있다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 디스크 저장, 마그네틱 카세트, 마그네틱 테이프 저장 또는 다른 마그네틱 저장 디바이스, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하며, 이에 한정되는 것은 아니다. 통신 매체는 전형적으로 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 또는 반송파 또는 다른 전송 메카니즘과 같은 변조된 데이터 신호 내의 다른 데이터를 포함하며, 소정의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하는 것과 같은 방식으로 설정 또는 변경된 하나 이상의 특성을 갖는 신호를 의미한다. 한정이 아닌 예에 의하면, 통신 매체는 유선 네트워크 또는 직접 유선 접속 및 음파, RF(radio frequency), 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 또한, 전술한 것 중 몇몇의 조합은 컴퓨터 판독가능 매체의 범주 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)와 같은 휘발성 및/또는 비휘발성 매모리의 형태로 컴퓨터 저장 매체를 포함한다. 전형적으로 시동 동안과 같이, 컴퓨터 내의 엘리먼트 사이에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(133)(BIOS)은 ROM(131) 내에 저장된다. RAM(132)은 전형적으 로 즉시 액세스가능하고/거나 현재 프로세싱 유닛(120)에 의해 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 한정이 아닌 예에 의하면, 도 1은 운영 체제(134), 어플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)를 나타낸다. RAM(132)은 다른 데이터 및/또는 프로그램 모듈을 포함할 수 있다.
또한, 컴퓨터(110)는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예에만 의하면, 도 1은 비분리형, 비휘발성 마그네틱 매체로부터 판독하고 그로 기록하는 하드 디스크 드라이브(141), 분리형, 비휘발성 마그네틱 디스크(152)로부터 판독하고 그에 기록하는 마그네틱 디스크 드라이버(151) 및 CD-ROM 또는 다른 광학 매체와 같이, 분리형, 비휘발성 광학 디스크(156)로부터 판독하고 그에 기록하는 광학 디스크 드라이브(155)를 나타낸다. 사용될 수 있는 예시적 동작 환경 내의 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 마그네틱 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하며, 이에 한정되는 것은 아니다. 하드 디스크 드라이브(141)는 전형적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되어 있고, 마그네틱 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 전형적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속되어 있다.
상기 논의되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터 판독가능 인스트럭션, 데이터 인스트럭션, 프로그램 모듈 및 다른 데이터의 저 장을 컴퓨터(110)에 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 어플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로서 도시되어 있다. 이들 컴포넌트는 운영 체제(134), 어플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)와 같을 수도 또는 상이할 수도 있다는 것을 주지하라. 운영 체제(144), 어플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)는 최소한 그들이 상이한 복제임을 나타내기 위해 여기에서 상이한 번호로 주어진다. 사용자는 키보드(162) 및 통상적으로 마우스, 트랙볼 또는 터치 패드로 지칭되는 포인팅 디바이스(161)와 같은 입력 디바이스를 통해 커맨드 및 정보를 컴퓨터(110) 내에 기입할 수 있다. 다른 입력 디바이스(미도시)는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 디바이스는 종종 시스템 버스(121)에 연결된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120a~f)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(a universal serial bus)와 같은 다른 인터페이스 및 버스 수조에 의해 접속될 수도 있다.
또한, 모니터(191) 또는 다른 유형의 디스플레이 디바이스는 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터(191)에 더하여, 컴퓨터는 스피커(197) 및 프린터(196)와 같은 다른 주변 출력 디바이스를 포함할 수 있는데, 이는 출력 주변 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같이, 하나 이상의 원격 컴퓨터에 대한 로지컬 접속을 사용하여 네트워크 환경 내에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 네트워크된 PC, 피어 디바이스 또는 다른 공통 노드일 수 있으며, 전형적으로는, 메모리 저장 디바이스(181)가 도 1에 도시되었다 할지라도, 컴퓨터(110)과 연관하여 전술한 많은 또는 모든 엘리먼트를 포함 수 있다. 도 1에 도시된 로지컬 접속은 LAN(171) 및 WAN(173)을 포함하지만, 다른 네트워크를 포함할 수도 있다. 그러한 네트워킹 환경은 사무실, 기업 범위 컴퓨터 네트워크, 인트라넷 및 인터넷에서 평범한 것이다.
LAN 네트워킹 환경 내에서 사용될 경우, 컴퓨터(110)는 네트워크 인터페이스(170) 또는 어답터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경 내에 사용될 경우, 컴퓨터(110)는 전형적으로 모뎀(172) 또는 인터넷과 같이 WAN 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메카니즘을 통해 시스템 버스(121)에 접속된다. 네트워크 환경에서, 컴퓨터(110)에 상대적으로 도시된 프로그램 모듈 또는 그 일부는 원격 메모리 저장 디바이스 내에 저장될 수 있다. 한정이 아닌 예에 의하면, 도 1은 메모리 디바이스(181)에 상주하는 원격 어플리케이션 프로그램(185)을 나타낸다. 도시된 네트워크 접속은 예시적이고 컴퓨터들간 통신 링크를 확립하는 다른 수단이 사용될 수 있다는 것이 이해되어야 한다.
당업자는 컴퓨터(110) 또는 다른 클라이언트 디바이스가 컴퓨터 네트워크의 일부로서 배치될 수 있다는 것을 이해할 수 있다. 이러한 점에 있어서, 본 발명은 몇몇 메모리 또는 저장 유닛, 몇몇 저장 유닛 또는 볼륨에서 발생하는 몇몇 어플리 케이션 및 프로세스를 갖는 어떤 컴퓨터 시스템에 적절하다. 본 발명의 실시예는 네트워크 환경에 배치된, 원격 또는 로컬 저장을 갖는 서버 컴퓨터 및 클라이언트 컴퓨터를 갖는 환경에 적용될 수 있다. 또한 본 발명은 프로그래밍 언어 기능, 해석 및 실행 능력을 갖는 독립형 컴퓨팅 디바이스에 적용될 수 있다.
실행 비해비어 추출을 통한 어플리케이션 테스팅 시스템 및 방법
도 2는 본 발명의 일 실시예에 따른 실행 비해비어 추출을 이용한 테스트 케이스 실행을 위한 시스템(5)의 블럭 다이아그램이다. 시스템(5)은 하나 이상의 텍스트 실행기(50), 테스트 케이스(20), 비해비어 매니저(30), 레지스터(31) 및 비해비어 자동 라이브러리(40)를 포함할 수 있다.
테스트 실행기(50)는 하나의 테스트 실행기(50a)일 수 있고, 복수의 테스트 실행기(50a-c) 등일 수 있다. 테스트 실행기 각각은 하나 또는 다수의 컴퓨터에 상주할 수 있으며, 그 각각은 도 1에 대해 서명된 것과 같은 컴퓨터(110)일 수 있다. 테스트 실행기(50a)는 테스트 케이스(20)와 동일한 테스트 케이스를 모두 구동할 수 있고, 상이한 테스트 케이스를 각각 구동할 수 있다. 또한, 테스트 실행기(50a-c)는 하나의 비해비어 매니저(30)와 통신할 수 있으며 각각의 비해비어 매니저(미도시)와 각각 통신할 수 있다. 테스트 실행기(50a-c)는, 가령 사용자가(미도시) 테스트 실행기(50a-c) 상의 버튼을 누름으로써 테스트 케이스(20)를 실행할 수 있다. 한편, 테스트 실행기(50a-c)는 테스트 케이스(20)를 실행하기 위해 시작 이벤트를 호출하는 랩 테스트 자동 프로젝트(a lab test automation project)의 일부일 수 있다. 또한, 테스트 실행기(50a-c)는 테스트 케이스(20)를 다른 수단에 의해 실행할 수 있다.
테스트 케이스(20)는 하나 이상의 어플리케이션 컴포넌트 또는 특성을 테스트 할 수 있다(미도시). 어플리케이션은 어떤 프로세스, 머신, 제품, 물질의 합성물, 프로그램, 소프트웨어, 하드웨어, 디바이스, 메카니즘 또는 재료, 또는 그 개량물일 수 있다. 예를 들어, 어플리케이션은 컴퓨팅 시스템 또는 환경에서 구동하는 소프트웨어 프로그램일 수 있다. 또한, 예를 들어, 어플리케이션은 컴퓨터 하드웨어 일 수 있다. 어플리케이션은 문에 부착된 손잡이 및 힌지의 강도, 탄성 또는 사용가능성을 테스트하기 위해 손잡이를 큰 망치로 두드리는 도어 테스팅 메카니즘(door test mechanism)일 수 있다. 어플리케이션은 처음으로 개발 중이거나, 이전 어플리케이션의 업데이트된 버전, 마지막 사용자가 어떤 방법으로 수정한 이전에 배포된 어플리케이션 등일 수 있다.
테스트 케이스(20)는 어플리케이션의 기능적 통합 또는 다른 테스팅을 수행할 수 있다. 기능적 테스팅은 어플리케이션의 특정 기능 컴포넌트의 테스팅을 포함할 수 있다. 기능적 레벨에서, 컴포넌트는 다수의 비해비어를 포함하 수 있는데, 그 각각은 테스팅을 필요로 한다. 또한, 컴포넌트에 대한 실행 비해비어의 각 조합은 모든 가능성 있는 조합 및 모든 상이한 가능성의 범위에 대해 테스팅하는 것을 보장하도록 테스팅하는 것을 필요로 할 수 있다. 통합 테스팅은 두 개 이상의 상호작용하는 컴포넌트가 병합되고, 함께 작용하며 서로에게 영향은 미치는 방식을 테스트한다.
테스트 케이스(20)는 하나 또는 복수의 실행 비해비어를 포함하거나 필요로 할 수 있다. "실행 비해비어"는 어플리케이션 상에서 또는 그에 의해 수행되는 동작의 종류이다. 실행 비해비어는 예를 들어, "새 문서 열기" 또는 "푸른 사각형 그리기" 또는 "망치로 손잡이 치기"일 수 있다. 다른 유형의 실행 비해비어가 존재할 수 있다.
한 유형의 실행 비해비어는 하나의 가능한 실행 방법만을 가질 수 있다. 예를 들어, 그러한 실행 비해비어는 키보드 상의 스페이스 바를 누름으로써 텍스트 박스 상의 버튼을 호출하기 위해 어플리케이션을 필요로 할 수 있다. 비해비어는 한가지 방식으로만 실행되기 때문에, 이러한 실행 비해비어는 "do it" 비해비어로서 명명될 수 있다. "do it" 비해비어는 실행에 앞서 어떤 부가적인 정보 또는 동작을 요구함이 없이 실행될 수 있다. "do it" 비해비어는 시스템(5) 내에 테스트 케이스(20)의 "do it" 비해비어로서 포함된다.
실행 비해비어는 다른 자 실행 비해비어(child execution behavior)로 구성된 부 실행 비해비어(parent execution behavior)일 수 있다. 부 실행 비해비어는 선택하 수 있는 복수의 자 실행 비해비어로 구성될 수 있기 때문에, 부 실행 비해비어는 "choose any" 비해비어라 명명될 수 있다. 이러한 부 실행 비해비어는 "choose any" 비해비어일 수 있으며, 다른 실행 비해비어를 사용하여 실행될 수 있다.
테스트 케이스(20)는 실행 비해비어 매니저가 비해비어 자동 라이브러리(40)로부터 비해비어를 선택하도록 요구하는 "choose any" 비해비어(21)에 대한 호출을 포함한다. 또한, 테스트 케이스(20)는 비해비어 자동 라이브러리(40) 내에 저장된 "do it" 비해비어의 실행을 개시하는 "do it" 비해비어에 대한 호출을 포함한다.
도 3은 몇몇 예시적 실행 비해비어 및 예시적 실행 비해비어 사이의 관계를 나타내는 블럭 다이아그램(200)이다. "choose any" 비해비어(210)는 새 문서를 열기 위한 것일 수 있다. 새 문서를 여는 "choose any" 비해비어는 3개의 자 실행 비해비어 중 어느 것에 의해 달성될 수 있다. "choose any" 비해비어(210) 중 하나의 자 실행 비해비어는 마우스를 사용하여 새 문서를 여는 다른 "choose any" 비해비어일 수 있다. "choose any" 비해비어(210) 중 다른 자 실행 비해비어는 "do it" 비해비어(220)일 수 있는데, 이는 키보드 상의 스페이스 바를 눌러 텍스트 박스 사의 버튼을 호출함으로써 새 문서를 열기 위한 것일 수 있다. "choose any" 비해비어(210) 중 제3 자 비해비어는 "execute in any sequence" 비해비어(230)일 수 있는데, 이는 이하 설명될 것이다. 이하에서 논의되는 바와 같이, 실행 비해비어 매니저(30)는 "choose any" 비해비어(210)를 실행하기 위해 자 실행 비해비어(215, 220, 230) 중 하나를 선택한다.
전술한 바와 같이, "choose any" 비해비어(210) 중 제1 자 실행 비해비어는 자신이 "choose any" 비해비어(215)일 수 있으며, 이는 마우스를 사용하여 새 문서를 열기 위한 것일 수 있다. "choose any" 비해비어(215)는 두 개의 자 비해비어로 이루어질 수 있다. 하나의 자 비해비어는 마우스를 이용하여 소정의 버튼을 클림함으로써 새 문서를 열기 위한 "do it" 비해비어(217)일 수 있다. 실행 비해비어 매니저(30)가 "do it" 비해비어(217)를 선택하면, 이러한 비해비어는 실행을 위한 "choose any" 비해비어(210)로 반송될 수 있다. 한편, 실행 비해비어 매니저 (30)는 "choose any" 비해비어(215) 중 나머지 자 비해비어를 검사할 수 있는데, 이는 마우스를 이용하여 메뉴를 호출함으로써 새 문서를 열기 위한 "choose any" 비해비어(216)일 수 있다.
또한, "choose any" 비해비어(216)는 두 개의 자 비해비어를 포함할 수 있다. 하나의 자 비해비어는 마우스를 이용하여 메뉴를 호출하고 메뉴 상의 "새로운 파일" 버튼을 클릭함으로써 새 문서를 열기 위한 "do it" 비해비어(218)일 수 있다. 제2 자 비해비어는 마우스를 사용하여 메뉴를 호출하고 키보드를 사용하여 적용가능한 메뉴 아이템을 직접적으로 호출하는 "핫 키" 또는 기억을 돕는 쇼트컷을 이용함으로써 새 문서를 열기 위한 "do it" 비해비어(219)일 수 있다. 핫 키는 메뉴의 "새로운 파일" 버튼을 호출할 수 있다. 그러므로, "do it" 비해비어(219)는 "choose any" 비해비어(210)의 "손자 "일 수 있으며, "choose any" 비해비어(210)를 실행하기 위해 선택된 "do it" 비해비어일 수 있다.
또한, "do it" 비해비어 및 "choose any" 비해비어에 더하여, 다른 실행 비해비어가 존재할 수 있다. 어떤 시퀀스로의 실행을 위해 모든 자 비해비어의 선택을 필요로 할 수 있는 "execute in any sequence" 비해비어(230)일 수 있다. 예를 들어, "execute in any sequence" 비해비어가 3개의 자 비해비어, 즉, "do it" 비해비어(231), "do it" 비해비어(232) 및 "do it" 비해비어(233)를 포함하는 경우, 실행 비해비어 매니저(30)는 각 자 "do it" 비해비어(231, 232, 233)를, 실행을 위한 어떠한 순서로, "choose any" 비해비어(210)로 전송할 수 있다.
또한, 도 3에 도시되지 않은 다른 실행 비해비어가 존재할 수 있다. 원하는 순서로의 실행을 위해 자 비해비어의 선택을 필요로 하는 "execute in sequence" 비해비어가 존재할 수 있다. 몇몇 조건이 만족될 때까지 하나 이상의 실행 비해비어의 실행을 필요로 하는 "do until" 비해비어가 존재할 수 있다. 예를 들어, "do until" 비해비어는 자 비해비어가 20번 실행될 때까지 실행되도록 요구할 수 있다. 여기에 기술된 실행 비해비어는 실행 비해비어의 예라는 것이 이해 되어야 하며, 당업자는 본 발명의 실시예에 사용되는 다른 실행 비해비어가 존재할 것이라는 것을 인식할 것이다.
각각의 실행 비해비어는 속성 또는 특성을 포함할 수 있다. 이들 속성 또는 특성은 예를 들어, C# 또는 .NET 속성 메카니즘에 기록될 수 있다. 메카니즘은, 실행 비해비어에 대한 실행 방법을 포함하는 다양한 특성을 실행 비해비어에 적용할 수 있다. 예를 들어, 하나의 특성은 마우스를 사용하여 실행 비해비어가 실행되도록 지정하지만, 다른 특성은 키보드를 사용한 실행을 지정한다.
실행 비해비어는 그들이 "choose any" 비해비어와 같이 더 큰 부 비해비어의 일부임을 알지 못할 수 있다. 그러나 실행 비해비어는 그들의 자 비해비어를 알 수 있다. 이 역시, 가령 C# 또는 .NET 속성에 의해 정의될 수 있다. 즉, 속성은 예를 들어, "choose any" 비해비어로서 명명된 실행 비해비어에 할당될 수 있다. 또한, 속성은 "choose any" 비해비어에 그 자 비해비어를 제공할 수 있다.
도 2를 다시 참조하면, 전술한 바와 같이, 테스트 케이스(20)는 복수의 실행 비해비어를 포함할 수 있다. 예를 들어, 크래픽 어플리케이션을 위한 테스트 케이스(20)는 문서의 특정 위치에서 푸른 사각형의 도면을 호출할 수 있다. 그러한 테 스트 케이스(20)는 새 문서를 여는 단계, 특정 위치에 사각형을 그리는 단계 및 사각형을 파란색으로 칠하는 단계를 포함할 수 있다. 테스트 케이스의 각 단계는 "choose any" 비해비어(21), "do it" 비해비어(22) 또는 다른 유형의 실행 비해비어일 수 있다. 예를 들어, 새 문서를 여는 단계는 마우스를 사용하여 메뉴를 호출함으로써 새 문서를 열거나, 또는 마우스를 사용하여 툴바 상의 툴을 호출함으로써 새 문서를 열거나, 키보드를 사용하여 메뉴를 호출함으로써 새로운 문서를 여는 것과 같은 "do it" 비해비어를 포함하는 "choose any" 비해비어(21)일 수 있다. 사각형을 그리는 단계 및 칠하는 단계는 각각 다양한 자 "do it" 비해비어에 의해 프로젝트 패널 또는 메뉴를 호출하는 것을 필요로 하는 "choose any" 비해비어(21)일 수 있다. 메뉴는 예를 들어, 마우스, 키보드, 객체 또는 컴퓨터 스크린을 보는 것이 곤란한 사람을 위한 접근가능성 어플리케이션 프로그래밍 인터페이스를 이용함으로써 호출될 수 있다. 키보드는 메뉴를 네비게이트하기 위한 "핫 키" 또는 "애로우 키"를 발행하는데 사용될 수 있다.
테스트 케이스(20)의 실행 시, 단계가 "do it" 비해비어(22)를 포함하는 경우, 테스트 케이스(20)는 비해비어를 실행할 수 있다. 테스트 케이스는, 예를 들어, 단계를 완료하기 위한 실행 방법이 단지 하나만 존재할 경우, "do it" 비해비어 단계를 포함할 수 있다. 예를 들어, 단계는 키보드의 엔터 키를 누름으로써, 버튼이 호출되는 것을 요구할 수 있다. 이러한 비해비어를 실행하는 방법은 하나만 존재하기 때문에, 테스트 케이스(20)는 실행 비해비어 매니저를 호출함이 없이 이러한 "do it" 비해비어를 실행할 수 있다.
그러나, 예를 들어, 단계가 "choose any" 비해비어(21)를 포함할 경우, 실행 비해비어 매니저(30)는 "choose any" 비해비어(21)의 자 실행 동작을 선택할 수 있고, 선택된 비해비어를 실행을 위한 부 "choose any" 비해비어(21)에 전송할 수 있다.
실행 비해비어 매니저(30)는 도 1에 대해 설명한 봐와 같이, 컴퓨터(110) 내에 상주할 수 있다. 실행 비해비어 매니저(30)는 실행 비해비어(31)의 레지스터를 포함할 수 있다. 실행 비해비어의 레지스터(31)는 "choose any" 비해비어(21)와 같은 부 실행 비해비어 및 관련된 자 비해비어의 목록을 포함할 수 있다. 예를 들어, 레지스터(31)를 이용하여, 실행 비해비어 매니저(30)는 어느 자 비해비어 또는 비해비어들이 부 "choose any" 비해비어(21)에 속하는 지를 결정할 수 있다.
각 실행 비해비어 또는 각 실행 비해비어의 코딩은 실행 비해비어 매니저(30)와 통신하는 비해비어 자동 라이브러리(40) 내에 위치할 수 있다. 실행 비해비어 매니저(30)는 실행을 위한 자 비해비어의 선택을 위해 테스트 케이스(20)의 "choose any" 비해비어(21)로부터의 요구를 조정할 책임이 있을 수 있다.
주지된 바와 같이, 예를 들어, "choose any" 비해비어(21)를 포함하는 테스트 케이스(20)의 실행 시, "choose any" 비해비어(21)는 실행 비해비어 매니저(30)에게, 실행 비해비어 매니저(30)가 "choose any" 비해비어(21)와 자(또는 손자 등) "do it" 비해비어를 선택하고 반송하도록 호출한다. 비해비어 매니저는 부 "choose any" 실행 비해비어와 관련된 자 비해비어의 목록을 살펴보고 자 실행 비해비어 중 하나를 선택할 수 있다. 이러한 동작을 완료했을 때, 실행 비해비어 매 니저(31)는 예를 들어, 리플렉션 방법(reflection method)을 사용할 수 있다. 리플렉션 방법은 동적 프로그래밍을 가능하게 하는 방법을 포함할 수 있고, 프로그램에 입각하여 실행 비해비어와 같은 객체의 속성을 검사하는 것을 포함한다. 이러한 방법을 통해, 실행 비해비어 매니저(30)는 실행 비해비어와 같은 객체를 검사하고, 그 이름과, 실행 비해비어가 지지하는 방법과, 그 특성 및 속성을 결정할 수 있다. 다음으로, 실행 비해비어 매니저(30)는 예를 들어, "choose any" 비해비어(21)의 자 실행 비해비어의 특성 및 속성을 결정할 수 있고, 실행을 위한 자 비해비어(자는 "do it" 비해비어라고 가정)를 선택할 수 있다. 리플렉션 방법의 사용을 통해, 자 비해비어는 구체적으로 예시될 수 있고, 실행을 위한 "choose any" 비해비어(21)에 반환될 수 있다. 또한, 자 실행 비해비어 자신이 "choose any" 비해비어일 경우, choose any" 비해비어(21)와 관련된 "do it" 비해비어가 선택될 때까지 시퀀스가 반복될 수 있다. 한편, 레지스터가 데이터베이스 또는 다른 데이터 저장인 경우, 리플렉션 방법은, 레지스터가 기능 포인터의 세트로 초기화될 때, 반드시 실행 비해비어를 실행할 필요가 있는 것은 아닐 수 있다. 또한, 당업자는 레지스터가 테스트 케이스 동안 요구 초기화되기(demand-initialized) 보다는 오히려 테스트 케이스 실행 이전에 완전하게 초기화될 수 있다는 것을 알 것이다.
실행 비해비어 매니저(30)는 "choose any" 비해비어(21)에 대해 실행되는 라인에서 다음 순서인 자 실행 비해비어를 선택할 수 있다. 예를 들어, "choose any" 비해비어(21)를 포함하는 테스트 케이스(20)가 구동되는 최초에, 실행 비해비어 매니저(30)는 예를 들어, 메뉴를 호출하여 새 문서를 열기 위한 마우스의 사용 을 요구하는 "do it" 비해비어를 선택할 수 있다. 테스트 케이스(20)가 다시 구동될 때, 실행 비해비어 매니저(30)는, 다음으로, 키보드 핫 키를 이용하여 새 문서가 열리도록 요구하는 "do it" 비해비어를 선택할 수 있다. 이러한 방법에 있어서, 실행 비해비어 매니저(30)는 실행 방법을 특정하는 테스트 케이스(20) 없이, 자동으로 부 "choose any" 비해비어(21)에 대한 실행 방법을 번갈아 바꿀 수 있다. 테스트 케이스(20)로부터의 실행 비해비어의 추출은, 상이한 테스트 케이스(20)가 테스트 케이스(20)을 실행하는 다른 방법을 고려하여 기록되는 것을 요구함이 없이, 각 실행 방법을 동일한 양으로 실행하는 것을 허용한다. 물론, 다양한 다른 선택 알고리즘도 고려될 수 있다.
부가 테스트 케이스(20)에서 "choose any" 비해비어(21)인 경우, 자 실행 비해비어가 항상 인에이블되고 실행 비해비어 매니저(30)에 의한 선택에 이용가능한 것이 아니라는 것이 주지되어야 한다. 예를 들어, 사각형을 그리는 "choose any" 비해비어(21)에 대해 5개의 상이한 자 "do it" 비해비어가 존재할 수 있다. 자 "do it" 비해비어 중 하나는 마우스를 이용하여 손으로만 사각형 을 그리기 위한 것일 수 있다. 테스트 케이스(20)가 정확한 치수의 사각형 그림을 요구할 경우, 손으로 사각형을 그리기 위한 자 "do it" 비해비어는, 비해비어의 특성 또는 속성을 검사할 때, 자 실행 비해비어가 정확한 치수의 사각형을 그리도록 계획된 것이 아니라는 것을 실행 비해비어 매니저(30)가 결정한다면, 인에이블되지 않을 수 있다. 그러므로, 실행 비해비어 매니저는, 실행 비해비어의 속성 또는 특성을 검사함으로써, 어느 "do it" 비해비어가 인에이블되지 않아야 하는지를 결정할 수 있 다. 한편, 실행 비해비어 매니저(30)는, "do it" 비해비어를 예시함으로써, 어느 실행 비해비어가 인에이블되지 않아야 하는지를 결정할 수 있으며, 예를 계속하기 위해, 자 실행 비해비어가 정확한 치수의 사각형을 그릴 수 있는지를 결정할 수 있다. 한편, 실행 비해비어 매니저는, 비해비어가 인에이블되는지 여부를 결정하기 위해 사용되는 방법을 찾기 위해, 자 비해비어에 첨부된 속성을 검사할 수 있고, 그 밖에 다른 곳도 검사할 수 있다.
개별적으로, 글로벌 웨이트 요소는, 실행 비해비어 매니저(30)가 다른 자 "do it" 비해비어의 배제보다 또는 배제에 대해 보다 자주 하나의 자 "do it" 비해비어를 선택할 수 있도록 실행 비해비어 매니저(30)에 제공될 수 있다. 실행 비해비어 매니저(30)는, 각 비해비어와 관련된 웨이트에 기초하여, 어느 비해비어를 테스트 케이스(20)의 "choose any" 비해비어(21)에 전송해야 하는지를 결정할 수 있다. 실행 비해비어 매니저는 이러한 웨이트의 고려에 기초하여 수행되는 동작의 전체 매트릭스를 구성할 수 있다. 이러한 방식으로, 테스터는 원하는 경우, 모든 테스트 케이스에 대해 소정의 실행 비해비어를 다른 실행 비해비어보다 자주 테스트할 수 있다. 이러한 웨이팅은 예를 들어, 키보드 동작이 어플리케이션 내에서 변경된 경우, 유용할 수 있다. "choose any" 비해비어는 마우스 입력 및 키보드 입력에 영향을 미치는 자 "do it" 비해비어를 가질 수 있지만, 글로벌 웨이팅은 실행 비해비어 매니저가, 가령, 키보드 입력에 시간의 80%, 시간의 100% 또는 시간의 96.3%를 요구하는 자 비해비어를 선택하도록 적용될 수 있다. 이러한 방법에서, 키보드 입력은, 웨이팅이 전형 적용되지 않을 경우에서보다 완전하게 테스트될 수 있다. 또한, 예를 들어, 핫 키가 어플리케이션에서 작용하지 않을 경우, 실행 비해비어 매니저(30)에 어떤 테스트 케이스에 대해서도 핫 키를 사용하지 못하도록 통지하여, 글로벌 웨이팅이 적용될 수 있다. 이러한 방법에 있어서, 테스트 케이스는 소멸한 핫 키에 의해 야기되는 실패를 초래함이 없이 실행될 수 있다.
로컬 웨이팅은 클로벌 웨이팅에 우선하도록 사용될 수 있다. 로컬 웨이팅은 테스트 케이스(20)의 일부로서 포함될 수 있고, 비해비어 자동 라이브러리(40) 내의 모든 비해비어보다는 특정 비해비어에 적용될 수 있다. 예를 들어, 글로벌 웨이팅이 핫 키를 사용하는 것을 막고, 테스터가 테스트 케이스의 한 단계 동안 핫 키를 사용하기를 원하는 경우, 실행 비해비어 매니저(30)에 핫 키의 사용을 포함하는 자 "do it" 비해비어를 선택하도록 통지하여, 로컬 웨이팅이 테스트 케이스(20)에 사용될 수 있다. 이러한 방식에 있어서, 로컬 웨이팅은 어떤 적용가능한 글로벌 웨이팅에 우선할 수 있다.
본 발명의 또 다른 실시예에서, 실행 비해비어 매니저(30)는 테스트 케이스(20)의 실행을 인에이블하게 할 수 있다. 이러한 방식에서, 리그레션 테스팅(regression testing) - 문제가 수정되었는지를 판정하기 위해 이전에 실패 또는 버그를 초래한 방식과 동일한 방식으로 어플리케이션을 테스팅하는 것 - 이 수행될 수 있다. 실행 비해비어 매니저(30)는 테스트 케이스(20) 동안 실행되었던 실행 비해비어를 기억하거나 기록할 수 있다. 이러한 방식에 있어서,호출된 경우, 실행 비해비어 매니저(30)는 테스트 케이스를 이전에 실행되었던 것과 같이 정확하게 재연할 수 있다. 테스트 케이스가 실패로 귀결되었고 문제를 수정하기 위한 교체가 이루어진 경우, 테스터는 문제가 해결되었음을 보증하기 위해 리그레션 테스팅을 수행하기를 원할 수 있다. 문제가 해결되었다는 것을 보장하기 위해, 테스트 케이스(20)의 "choose any" 비해비어(21)는 실패를 초래한 테스트 케이스 구동 동안 실행 비해비어 매니저(30)에 의해 전송된 동일한 자 "do it" 비해비어를 사용하여 실행될 필요가 있다. 그러므로, 실행 비해비어 매니저(30)는 각각의 이전의 테스트 케이스 실행 동안 실행을 위해 전송한 "do it" 비해비어를 기록하고, "do it" 비해비어가 실행된 순서도 기록할 수 있다.
또한, 실행 비해비어 매니저(30)는 다수의 클라이언트 머신에서 구동하는 다수의 테스트 케이스에서 작동할 수 있다는 것이 주지되어야 한다. 예를 들어, 어플리케이션 테스팅시, 어플리케이션에 대해 각각이 한번에 5000 테스트 케이스를 구동하는 20개의 컴퓨터가 존재할 수 있다. 본 발명의 일 실시예에서, 테스트 케이스를 실행하는 모든 클라이언트 머신과 통신하는 하나의 실행 비해비어 매니저가 존재할 수 있다. 다른 실시예에서는, 각각의 클라이언트 머신이 실행 비해비어 매니저(30)를 포함할 수 있다.
도 4는 방법(250)의 본 발명의 일 실시예에 따라 테스트 케이스로부터 실행 비해비어 추출을 이용하여 테스트 케이스 실행을 위한 방법의 플로우 다이아그램이다. 단계 251에서, 테스트 케이스의 "choose any" 비해비어(21)는 실행 비해비어 매니저(30)에 통보할 수 있다. 실행 비해비어 매니저는 자 실행 비해비어, "do it" 비해비어를 선택하고, 자 실행 비해비어를 "choose any" 비해비어(21)에 전송하는 것이 요구될 수 있다. 단계 252에서, 실행 비해비어 매니저(30)는 "choose any" 비해비어(21)의 자 비해비어를 검토할 수 있다. 단계 253에서, 실행 비해비어 매니저(30)는 자 비해비어를 선택할 수 있고, 실행을 위해 선택된 자 비해비어를 부 "choose any" 비해비어에 전송할 수 있다.
도 5a-5b는 본 발명의 다른 실시예에 따라 테스트 케이스로부터 실행 비해비어 추출을 이용한 테스트 케이스 실행을 위한 방법(300)의 플로우 다이아그램을 나타낸다. 방법(300)은 단계(305)에서 테스트 케이스 시작 이벤트로 시작될 수 있다. 시작 이벤트는 도 2의 테스트 실행기(50a)와 같은 클라이언트 컴퓨터 상의 버튼을 테스터가 누르는 것일 수 있는데, 이는 테스트 케이스(20)를 구동하기 위해 테스트 실행기에 신호를 보낼 수 있다. 한편, 시작 이벤트는 예를 들어, 테스트 케이스(20) 또는 복수의 테스트 케이스를 구동하는, 테스트 실행기(50a-c)와 같은 하나 이상의 클라이언트 컴퓨터를 감독하는 랩 자동 프로세스를 구동하는 것일 수 있다. 또한, 랩 자동화 프로젝트는, 실행 비해비어 매니저(30)가 테스트 케이스(20) 또는 복수의 테스트 케이스로부터의 요구 시 동작할 준비가 되도록, 실행 비해비어 매니저(30)를 생성 또는 초기화할 수 있다.
개시 이벤트 후, 테스트 케이스(20)는 단계 310에서 실행될 수 있다. 테스트 케이스(20)는 예를 들어, 그래픽 어플리케이션을 겨냥한 것이고, 예를 들어, 새 문서를 여는 단계, 새 문서상에 사각형을 그리는 단계 및 사각형을 푸른 색으로 칠하는 단계를 포함할 수 있다. 테스트 케이스(20)의 각 단계에 적용된 방법(300)(즉, 새 문서를 여는 단계, 사각형을 그리는 단계 및 사각형을 푸른 색으로 칠하는 단계)은 동일하다. 단계 315에서, 테스트 케이스의 단계가 실행된다.
테스크 케이스(20)의 단계가 "do it" 비해비어(22)일 경우, 테스트 케이스(20)는 단계 320에서 실행 비해비어 매니저(30)를 포함함이 없이 실행 비해비어를 실행할 수 있다. 단계가 가령, "choose any" 비해비어(21)인 경우, "choose any" 비해비어(21)는 단계 325에서 실행 비해비어 매니저(30)에 실행을 위한 자 "do it" 비해비어를 선택하도록 요구할 수 있다. 예를 들어, 새 문서를 생성하는 테스트 케이스(20)의 단계는, 하나는 마우스를 사용하여 메뉴를 호출함으로써 새 문서를 생성하고, 다른 하나는 키보드를 사용하여 메뉴를 호출함으로써 새 문서를 생성하는 두 개의 자 "do it" 비해비어를 갖는 "choose any" 비해비어일 수 있다.
단계 330에서, 실행 비해비어 매니저(30)는 비해비어(31)의 레지스터 상에서 "choose any" 비해비어를 검색할 수 있다. 다른 실시예에서는, 실행 비해비어매니저(31)가, 실행 비해비어의 속성 및 특성을 검사함으로써, "choose any" 비해비어(21)의 자 비해비어를 결정할 수 있다.
다음으로, 실행 비해비어 매니저(30)는 단계 335-350에서, 어느 자 비해비어가 실행을 위한 "choose any" 비해비어로 전송되어야 하는지를 결정할 수 있다. 실행 비해비어 매니저는 결정을 할 때, 다수의 요소를 고려할 수 있다. 실행 비해비어 매니저는 단계 335에서 자 비해비어 중 어느 것이 인에이블되어서는 안되는지 여부를 결정할 수 있다. 즉, 테스트 케이스의 단계는, "choose any" 비해비어가 "choose any" 비해비어의 자 비해비어 중 하나의 실행을 통해 만족되지 않도록 된 경우, 실행 비해비어 매니저는 자 비해비어가 인에이블되지 않도록 결정할 수 있다. 앞서 예시한 바와 같이, 그러한 상황의 예는, 5개의 자 "do it" 비해비어를 포함하는, 사각형을 그리는 "choose any" 비해비어(21)일 수 있다. 자 "do it" 비해비어 중 하나는 마우스를 이용하여 손으로만 사각형을 그리기 위한 것일 수 있다. 테스트 케이스(20)가 정확한 치수의 사각형의 그림을 요구하는 경우, 손으로만 사각형을 그리기 위한 자 "do it" 비해비어는, 자 실행 비해비어가 정확한 치수의 사각형을 그리기 위해 디자인되지 않았다는 것을 실행 비해비어 매니저(30)가 결정한 경우, 인에이블되지 않을 수 있다.
다음으로, 단계 340에서, 실행 비해비어 매니저(30)는, 테스트 케이스(20) 또는 어떤 다른 메카니즘이 자 "do it" 비해비어의 선택에 로컬 웨이팅을 부과했는지 여부를 결정할 수 있다. 로컬 웨이팅이 존재하는 경우, 실행 비해비어 매니저는 그 웨이팅을 적용한다. 단계 345에서, 실행 비해비어 매니저(30)는, 자 비해비어를 선택하기 전에 어떤 글로벌 웨이팅을 적용해야 하는지 여부를 결정할 수 있다. 로컬 및 글로벌 웨이팅이 실행 비해비어의 동일한 특성에 적용되는 경우에는, 실행 비해비어 매니저(30)는 자 비해비어를 선택할 때 두 가지 웨이팅 모두를 고려할 수 있다. 예를 들어, 글로벌 웨이팅은 시간의 20%만 마우스를 사용하도록 요구할 수 있다. 동시에, 로컬 웨이팅은 시간의 50%만 마우스를 사용하도록 요구할 수 있다. 실행 비해비어 매니저(30)는 자 비해비어 선택 시, 이들 웨이팅 둘 모두를 결합하거나 고려할 수 있다. 또한, 글로벌 및 로컬 웨이팅은 오소고날(orthogonal)할 수 있다는 것을 알아야 한다. 즉, 글로벌 웨이팅은, 마우스가 사용되지 않도록 요구할 수 있고, 로컬 웨이팅은, 키보드가 사용되지 않도록 요구할 수 있다. 실행 비해비어 매니저(30)는 자 비해비어를 선택할 때, 오소고날 웨이팅 을 고려할 수 있다.
적절한 웨이팅을 적용한 후 또는 적용가능한 글로벌 웨이팅이 없을 경우, 실행 비해비어 매니저는 단계 350에서 자 비해비어를 선택할 수 있다. 이러한 선택은 이전의 선택에 기초할 수 있다. 예를 들어, 이전에 선택된 자 비해비어가 마우스를 가지고 메뉴를 호출하여 새로운 파일을 열기 위한 것이었을 경우, 실행 비해비어 매니저(30)는 키보드를 가지고 메뉴를 호출하여 새로운 파일을 열기 위해 다른 자 비해비어를 선택할 수 있다. 이러한 방식으로, 실행 비해비어는 각각의 테스트 케이스 내에 기록되는 실행 비해비어 없이 모든 실행 비해비어에 대한 테스팅을 제공할 수 있다. 또한, 테스트 케이스는 새로운 파일을 열기 위해 어느 실행 방법이 사용되었는 지를 알 수조차 없을 수 있으며, 새로운 파일이 열렸다는 것만 알 수 있다.
그러나, 글로벌 웨이팅이 실행 비해비어 매니저(30)의 자 비해비어에 대한 선택에 부과되었을 경우, 실행 비해비어 매니저(30)는 적절한 자 비해비어의 선택에 웨이팅을 적용할 수 있다. 예를 들어, 글로벌 웨이팅이 마우스를 사용하는 실행 비해비어가 시간의 80% 동안 선택되어야 하며, 키보드를 사용하는 실행 비해비어는 시간의 20%만 선택되어야 한다는 것을 제공할 경우, 실행 비해비어 매니저(30)는 이러한 글로벌 웨이팅과 일치하는 선택을 해야 한다.
결정 후, 자 비해비어가 선택되어야 하는 단계 355에서, 실행 비해비어 매니저(30)는, 선택된 자 비해비어가 이전에 생성되었는지를 판정하기 위해, 단계 355에서 비해비어 자동 라이브러리(40)를 조사할 수 있다. 한편, 실행 비해비어 매니 저(30)는 컴파일된 경우, 자 비해비어를 생성할 수 있는 기능 포인터에 대해 비해비어 자동 라이브러리(40)를 조사할 수 있다. 자 실행 비해비어가 생성되지 않았거나 기능 포인터가 없을 경우, 단계 360에서, 실행 비해비어 매니저는 선택된 자 실행 비해비어를 생성할 수 있다. 예를 들어, 단계 350에서, 실행 비해비어 매니저는 마우스를 사용하여 메뉴를 호출함으로써 새 문서를 열기 위해 자 실행 비해비어를 선택하며, 단계 355에서, 실행 비해비어 매니저는 마우스를 이용하여 메뉴를 호출함으로써 새로운 문서를 열기 위한 자 실행 비해비어가 존재하지 않는다는 것을 결정하며, 단계 360에서, 실행 비해비어 매니저(30)가 자 비해비어를 생성할 수 있다. 전술한 바와 같이, 실행 비해비어 매니저(30)는 실행 비해비어의 프로파일 또는 속성을 통해 "do it" 실행 비해비어를 생성하고, 비해비어 자동 저장 라이브러리 내에 저장된 코드를 예시할 수 있다. 단계 355에서, 실행 비해비어 매니저(30)가 자 비해비어가 존재하는 것으로 결정한 경우, 실행 비해비어 매니저는 단계 360을 뛰어 넘을 수 있다. 한편, 단계 355는 필요하지 않을 수 있다는 것이 이해될 것이다. 레지스터(31)는 외부 데이터저장(datastore)으로부터 상주되고 있을 경우, 단계 355는 필요할 것이다. 그러나, 레지스터(31)가 테스트 케이스 실행 이전에 또는 그 동안 동적으로 상주한다면, 실행 비해비어 매니저(30)는 레지스터(31)가 존재하지 않는 어떤 비해비어를 포함하지 않는다고 가정할 것이다.
다음으로, 현재 또는 새로 생성된 자 비해비어를 선택한 후, 실행 비해비어 매니저(30)는 단계 365에서 자 비해비어의 선택을 기록할 수 있다. 전술한 바와 같이, 이러한 방식으로, 실행 비해비어 매니저(30)는 이전에 실행되었던 것처럼 정 확히 테스트 케이스(20)를 재실행할 할 수 있을 것이다. 이는 버그가 제거되었는지를 판정하기 위해 어플리케이션을 테스팅할 경우 중요할 수 있다.
단계 370에서, 실행 비해비어 매니저는 선택된 자 "do it" 비해비어를 실행을 위한 테스트 케이스(20)의 부 "choose any" 비해비어(21)에 반송할 수 있다. 단계 375에서, "choose any" 비해비어(21) 또는 테스트 케이스(20)는 실행 비해비어 매니저(30)에 의해 전송된 비해비어를 실행할 수 있다. 또한, 테스트 케이스(20)의 나머지 단계는, 방법 300에 도시된 단계 315-375와 유사한 방식으로 실행될 수 있다.
여기에 설명된 다양한 기술은 하드웨어 또는 소프트웨어와 관련하여 또는 그 둘의 조합으로 적절한 곳에서 실행될 수 있다. 따라서, 본 발명의 방법 및 장치, 또는 소정의 양태 또는 그 일부는, 플로피 디스크, CD-ROM, 하드 드라이브, 또는 어떤 다른 머신 판독가능 저장 매체와 같은 유형의 매체 내에 구현된 프로그램 코드(즉, 인스트럭션)의 형태를 취할 수 있으며, 여기서, 프로그램 코드가 컴퓨터오 같은 머신 내에 로딩되고 그에 의해 실행되는 경우, 머신은 본 발명을 실시하기 위한 장치가 된다. 프로그램가능 컴퓨터상에서의 프로그램 코드 실행의 경우, 컴퓨팅 디바이스는 일반적으로 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 엘리먼트), 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함한다. 본 발명의 도메인 특정 프로그래밍 모델 양태의 생성 및/또는 실행을 이용하는 하나 이상의 프로그램은, 컴퓨터 시스템과의 통신을 위해, 예를 들어, 데이터 프로세싱 API 등을 통해, 고 레벨의 처리 또 는 객체 지향 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 원하는 경우, 프로그램(들)은 어셈블리 또는 기계 언어로 구현될 수 있다. 어떤 경우라도, 언어는 컴파일된 또는 해석된 언어일 수 있으며, 하드웨어 수단에 결합될 수 있다.
본 발명은 다양한 형상의 바람직한 실시예와 관련하여 기술되었지만, 다른 실시예가 사용되거나, 본 발명으로부터 벗어남이 없이 본 발명과 동일한 기능을 수행하는 상기 기술된 실시예에 대해 변형 및 부가가 이루어질 수 있음이 이해될 것이다. 명세서 전반에 걸쳐, 푸른 사각형의 그림을 다루는 주요 예가 제공된다. 이해를 증진시키기 위해 이러한 그리고 다른 예가 제공되었다. 본 발명은 본 명세서에 제공된 예에 결코 한정되는 것이 아니다. 또한, 본 발명의 실시예는 어떤 프로세스, 머신, 제조물, 물질의 합성물, 프로그램, 소프트웨어, 하드웨어, 디바이스, 메카니즘 또는 그 어떤 개선된 것을 포함하는 어떤 어플리케이션을 포함하는 어떤 테스트에 포함될 수 있다. 그러므로, 본 발명은 어떤 하나의 실시예에 한정되어서는 안 되며, 오히려 첨부된 청구범위에 따른 호흡 및 범주 내에서 해석되어야 한다.
본 발명에 의하면, 실행 비해비어의 많은 조합을 고려한 세부화된 테스트 케이스 코드를 필요로 함이 없이, 하나의 테스트 케이스가 다양한 실행 비해비어에 의해 실행되는 것을 가능하다.

Claims (31)

  1. 동작(action)을 실행하기 위한 실행 비해비어(an execution behavior) 선택하는 시스템에 있어서,
    상기 실행 비해비어를 선택하는 실행 비해비어 매니저(an execution behavior manager)와,
    상기 실행 비해비어에 관한 데이터를 상기 실행 비해비어 매니저에 제공하는 비해비어 자동 라이브러리(a behavior automation library)를 포함하는 실행 비해비어 선택 시스템.
  2. 제1항에 있어서,
    복수의 실행 비해비어의 목록을 포함하는 비해비어 레지스터(a register of behavior)를 더 포함하는 실행 비해비어 선택 시스템.
  3. 제2항에 있어서,
    상기 실행 비해비어의 매니저는 상기 비해비어 레지스터로부터 상기 동작을 실행하기 위해 잠재적 실행 비해비어(potential execution behavior)를 결정하는 실행 비해비어 선택 시스템.
  4. 제1항에 있어서,
    상기 동작은 복수의 실행 비해비어 중 하나에 의해 실행되는 실행 비해비어 선택 시스템.
  5. 제1항에 있어서,
    상기 동작은 복수의 실행 비해비어의 시퀀스(sequence)를 실행함으로서 실행되는 실행 비해비어 선택 시스템.
  6. 제5항에 있어서,
    상기 실행 비해비어 매니저는 상기 시퀀스를 임의의 순서로 실행하는 실행 비해비어 선택 시스템.
  7. 제1항에 있어서,
    상기 실행 비해비어 매니저는 글로벌 웨이팅(global weighting) 및 로컬 웨이팅(local weighting) 중 적어도 하나에 기초하여 상기 실행 비해비어를 선택하는 실행 비해비어 선택 시스템.
  8. 제7항에 있어서,
    상기 로컬 웨이팅은 상기 글로벌 웨이팅에 우선하는 실행 비해비어 선택 시스템.
  9. 제1항에 있어서,
    상기 실행 비해비어 매니저는 이전에 선택된 실행 비해비어에 기초하여 상기 실행 비해비어를 선택하는 실행 비해비어 선택 시스템.
  10. 제1항에 있어서,
    상기 실행 비해비어 매니저는 인에이블된 상기 실행 비해비어를 선택하는 실행 비해비어 선택 시스템.
  11. 제1항에 있어서,
    상기 동작은 기능 테스트(a functional test), 기능 테스트의 단계, 통합 테스트(an integration test) 및 통합 테스트의 단계 중 적어도 하나인 실행 비해비어 선택 시스템.
  12. 제1항에 있어서,
    상기 실행 비해비어 매니저는 상기 선택된 실행 비해비어를 생성하기 위해 상기 비해비어 자동 라이브러리에 의해 제공되는 데이터를 인스턴스화(instantiate)하는 실행 비해비어 선택 시스템.
  13. 제1항에 있어서,
    상기 실행 비해비어는 속성(attributes)을 포함하는 실행 비해비어 선택 시 스템.
  14. 제1항에 있어서,
    상기 실행 비해비어 매니저는 선택된 실행 비해비어를 기록하는 실행 비해비어 선택 시스템.
  15. 제14항에 있어서,
    상기 실행 비해비어 매니저는 상기 선택된 실행 비해비어를 재연하는 실행 비해비어 선택 시스템.
  16. 제1항에 있어서,
    상기 실행 비해비어는 마우스, 키보드, 액세스가능 어플리케이션 프로그래밍 인터페이스 및 객체 모델 중 적어도 하나에 의한 입력을 포함하는 실행 비해비어 선택 시스템.
  17. 데이터 구조를 저장한 컴퓨터 판독가능 매체에 있어서,
    복수의 실행 비해비어를 나타내는 데이터를 포함하는 비해비어 자동 라이브러리 내에 저장된 데이터 필드를 포함하고,
    각각의 실행 비해비어는 테스트 케이스에 의해 적용되는 동작을 실행하는 컴퓨터 판독가능 매체.
  18. 제17항에 있어서,
    상기 데이터 구조는 실행 비해비어를 나타내는 데이터를 실행 비해비어 매니저에 제공하는 컴퓨터 판독가능 매체.
  19. 동작을 실행하기 위한 실행 비해비어 선택 방법에 있어서,
    상기 동작을 수신하는 단계와,
    상기 동작을 실행하기 위한 복수의 실행 비해비어를 검토하는 단계와,
    상기 복수의 실행 비해비어로부터 하나의 실행 비해비어를 선택하는 단계를 포함하는 실행 비해비어 선택 방법.
  20. 제19항에 있어서,
    상기 복수의 실행 비해비어는 비해비어 레지스터에 의해 제공되는 실행 비해비어 선택 방법.
  21. 제19항에 있어서,
    상기 동작은 테스트 케이스의 단계인 실행 비해비어 선택 방법.
  22. 제21항에 있어서,
    상기 선택된 실행 비해비어를 상기 테스트 케이스에 송신하는 단계를 더 포 함하는 실행 비해비어 선택 방법.
  23. 제19항에 있어서,
    상기 선택 단계는 로컬 웨이팅 및 글로벌 웨이팅 중 적어도 하나에 기초하는 실행 비해비어 선택 방법.
  24. 제19항에 있어서,
    상기 선택된 실행 비해비어를 생성하는 단계를 더 포함하는 실행 비해비어 선택 방법.
  25. 동작을 실행하기 위한 실행 비해비어를 선택하는 방법에 있어서,
    상기 동작을 수신하는 단계와,
    상기 동작을 실행하기 위한 복수의 실행 비해비어를 검토하는 단계와,
    사전결정된 일련의 실행 비해비어의 각각을 선택하는 단계를 포함하는 실행 비해비어 선택 방법.
  26. 제25항에 있어서,
    상기 일련의 실행 비해비어의 각 실행 비해비어는 소정의 순서로 선택되는 실행 비해비어 선택 방법.
  27. 단계를 수행하기 위한 컴퓨터 실행가능 인스트럭션을 갖는 컴퓨터 판독가능 매체에 있어서,
    테스트 케이스로부터 동작을 수신하는 단계와,
    상기 동작을 실행할 수 있는 복수의 실행 비해비어를 검토하는 단계를 포함하는 컴퓨터 판독가능 매체.
  28. 제27항에 있어서,
    상기 복수의 실행 비해비어로부터 하나의 실행 비해비어를 선택하는 단계를 수행하기 위한 컴퓨터 실행가능 인스트럭션을 더 포함하는 컴퓨터 판독가능 매체.
  29. 제28항에 있어서,
    상기 선택된 실행 비해비어를 상기 테스트 케이스에 송신하는 단계를 수행하기 위한 컴퓨터 실행가능 인스트럭션을 더 포함하는 컴퓨터 판독가능 매체.
  30. 제27항에 있어서,
    소정의 일련의 실행 비해비어의 각각을 선택하는 단계를 수행하기 위한 컴퓨터 실행가능 인스트럭션을 더 포함하는 컴퓨터 판독가능 매체.
  31. 제30항에 있어서,
    상기 일련의 실행 비해비어의 각 실행 비해비어는 소정의 순서로 선택되는 컴퓨터 판독가능 매체.
KR1020050073232A 2004-09-29 2005-08-10 재생가능한 테스트 자동화를 위한 테스트 케이스 실행비해비어 선택 시스템 및 방법 KR101153028B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/953,238 2004-09-29
US10/953,238 US7457989B2 (en) 2004-09-29 2004-09-29 System and method for selecting test case execution behaviors for reproducible test automation

Publications (2)

Publication Number Publication Date
KR20060050370A true KR20060050370A (ko) 2006-05-19
KR101153028B1 KR101153028B1 (ko) 2012-06-04

Family

ID=35448217

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050073232A KR101153028B1 (ko) 2004-09-29 2005-08-10 재생가능한 테스트 자동화를 위한 테스트 케이스 실행비해비어 선택 시스템 및 방법

Country Status (9)

Country Link
US (1) US7457989B2 (ko)
EP (1) EP1643369A3 (ko)
JP (1) JP5258152B2 (ko)
KR (1) KR101153028B1 (ko)
CN (1) CN1755645A (ko)
AU (1) AU2005203508B2 (ko)
CA (1) CA2517206A1 (ko)
MX (1) MXPA05009208A (ko)
RU (1) RU2390829C2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014088144A1 (ko) * 2012-12-05 2014-06-12 경북대학교 산학협력단 단위 테스트 케이스 재사용 기반의 함수 테스트 장치 및 그 함수 테스트 방법

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7823132B2 (en) * 2004-09-29 2010-10-26 Microsoft Corporation Automated test case verification that is loosely coupled with respect to automated test case execution
US7555549B1 (en) * 2004-11-07 2009-06-30 Qlogic, Corporation Clustered computing model and display
US7698691B2 (en) * 2005-09-20 2010-04-13 Microsoft Corporation Server application state
US9064038B2 (en) * 2006-08-29 2015-06-23 International Business Machines Corporation Method and system for combining multiple benchmarks
US7823130B2 (en) * 2006-09-22 2010-10-26 Sap Ag Testing machine-readable instructions
US7779303B2 (en) * 2007-02-27 2010-08-17 Cisco Technology, Inc. Targeted regression testing
US7788057B2 (en) 2008-01-23 2010-08-31 International Business Machines Corporation Test apparatus and methods thereof
US8332825B2 (en) * 2008-06-26 2012-12-11 Microsoft Corporation Dynamically monitoring application behavior
US7966521B2 (en) * 2008-07-14 2011-06-21 International Business Machines Corporation Light weight and high throughput test case generation methodology for testing cache/TLB intervention and diagnostics
JP5513263B2 (ja) * 2010-06-03 2014-06-04 キヤノン株式会社 情報処理装置及びその制御方法、プログラム
US8856749B2 (en) 2010-09-28 2014-10-07 Microsoft Corporation Multi-path brokered test automation execution
US8930761B2 (en) 2012-08-30 2015-01-06 International Business Machines Corporation Test case result processing
US8861284B2 (en) 2012-09-18 2014-10-14 International Business Machines Corporation Increasing memory operating frequency
JP6102448B2 (ja) * 2013-04-10 2017-03-29 富士通株式会社 検証支援プログラム、検証支援装置、および検証支援方法
US9311223B2 (en) * 2013-05-21 2016-04-12 International Business Machines Corporation Prioritizing test cases using multiple variables
US9703637B2 (en) * 2013-07-30 2017-07-11 Apple Inc. Undo system
RU2611961C2 (ru) * 2014-11-14 2017-03-01 Общество С Ограниченной Ответственностью "Яндекс" Способ и система регрессионного тестирования функциональности веб-страницы, машиночитаемый носитель информации
US10649740B2 (en) * 2015-01-15 2020-05-12 International Business Machines Corporation Predicting and using utility of script execution in functional web crawling and other crawling
US9703683B2 (en) * 2015-11-24 2017-07-11 International Business Machines Corporation Software testing coverage
US10037263B1 (en) * 2016-07-27 2018-07-31 Intuit Inc. Methods, systems, and articles of manufacture for implementing end-to-end automation of software services

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5335342A (en) * 1991-05-31 1994-08-02 Tiburon Systems, Inc. Automated software testing system
JPH06149618A (ja) * 1992-11-10 1994-05-31 Matsushita Electric Ind Co Ltd 自動実行装置および自動実行方法
US5513315A (en) 1992-12-22 1996-04-30 Microsoft Corporation System and method for automatic testing of computer software
US6067639A (en) * 1995-11-09 2000-05-23 Microsoft Corporation Method for integrating automated software testing with software development
JP2624226B2 (ja) * 1996-04-12 1997-06-25 日本電気株式会社 割込みコントローラ
JPH10301809A (ja) * 1997-04-23 1998-11-13 Nippon Telegr & Teleph Corp <Ntt> Gui操作手順の自動生成方法
JPH1165888A (ja) * 1997-08-19 1999-03-09 Casio Comput Co Ltd ソフトウェア試験装置および記憶媒体
US6587969B1 (en) 1998-06-22 2003-07-01 Mercury Interactive Corporation Software system and methods for testing the functionality of a transactional server
JP2001229047A (ja) * 2000-02-14 2001-08-24 Toshiba Corp サーバプロセス試験システム、サーバプロセス試験フレームワークを記録したコンピュータ読み取り可能な記録媒体、およびサーバプロセス試験プログラムを記録したコンピュータ読み取り可能な記録媒体
US6505324B1 (en) * 2000-10-05 2003-01-07 International Business Machines Corporation Automated fuse blow software system
US7117411B2 (en) * 2000-10-27 2006-10-03 Tekelec Methods and systems for testing communications network components
US6986026B2 (en) 2000-12-15 2006-01-10 Intel Corporation Single-step processing and selecting debugging modes
JP2002259159A (ja) 2001-02-27 2002-09-13 Hitachi Kokusai Electric Inc Guiソフトウエアのテストツール用シナリオデータの生成方法
CA2358563A1 (en) 2001-10-05 2003-04-05 Ibm Canada Limited - Ibm Canada Limitee Method and system for managing software testing
US6993748B2 (en) 2001-10-26 2006-01-31 Capital One Financial Corporation Systems and methods for table driven automation testing of software programs
US6871327B2 (en) 2002-03-04 2005-03-22 Sun Microsystems, Inc. Method and apparatus for extending coverage of GUI tests
JP2004005399A (ja) * 2002-04-05 2004-01-08 Sharp Corp ソフトウェアのテスト方法および装置
US7159021B2 (en) * 2002-06-27 2007-01-02 Microsoft Corporation System and method for testing peer-to-peer network applications
US7165191B1 (en) * 2004-01-29 2007-01-16 Sun Microsystems, Inc. Automated verification of user interface tests on low-end emulators and devices

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014088144A1 (ko) * 2012-12-05 2014-06-12 경북대학교 산학협력단 단위 테스트 케이스 재사용 기반의 함수 테스트 장치 및 그 함수 테스트 방법
KR101410099B1 (ko) * 2012-12-05 2014-06-25 경북대학교 산학협력단 단위 테스트 케이스 재사용 기반의 함수 테스트 장치 및 그 함수 테스트 방법

Also Published As

Publication number Publication date
JP2006099743A (ja) 2006-04-13
AU2005203508B2 (en) 2010-07-22
US7457989B2 (en) 2008-11-25
US20060075302A1 (en) 2006-04-06
EP1643369A2 (en) 2006-04-05
MXPA05009208A (es) 2006-04-03
CA2517206A1 (en) 2006-03-29
CN1755645A (zh) 2006-04-05
RU2390829C2 (ru) 2010-05-27
RU2005126695A (ru) 2007-02-27
KR101153028B1 (ko) 2012-06-04
JP5258152B2 (ja) 2013-08-07
EP1643369A3 (en) 2006-05-03
AU2005203508A1 (en) 2006-04-13

Similar Documents

Publication Publication Date Title
KR101153028B1 (ko) 재생가능한 테스트 자동화를 위한 테스트 케이스 실행비해비어 선택 시스템 및 방법
JP4950454B2 (ja) テスト自動化のスタック階層化
US9268672B1 (en) Automated test case generation for applications
US7770151B2 (en) Automatic generation of solution deployment descriptors
US9141518B2 (en) GUI testing
US7526759B2 (en) Debugging prototyped system solutions in solution builder wizard environment
US20060117267A1 (en) System and method for property-based focus navigation in a user interface
US8510712B1 (en) Testing in-container software objects
US20050240917A1 (en) Software configuration program for software applications
US20070061780A1 (en) Enterprise resource planning system test framework
JP2004213677A (ja) Guiを有するコンピュータシステムでタスクを実行する方法
US8856749B2 (en) Multi-path brokered test automation execution
US20140033123A1 (en) User interface and method for comparing a local version of a profile to an online update
US9858173B2 (en) Recording user-driven events within a computing system including vicinity searching
US20060100975A1 (en) Strongly-typed object oriented GUI automation framework
US8745587B2 (en) System and method for testing computer programs
US20050028152A1 (en) Method and apparatus for identifying a Java class package name without disassembling Java bytecodes
US20170068523A1 (en) Modular Computer Application Development and Usage
JP7328922B2 (ja) 設定装置、設定方法、及びプログラム
JP5251863B2 (ja) ツリ−構造を利用した、ユ−ザ・インタフェイスの構成要素情報の記録およびユ−ザ・インタ−フェイス操作を記録再生するためのプログラム
Versluis et al. Integrating Tests into Your Builds
Jackson et al. Making Apps Interactive: Events and Intents
Lau et al. A Reasoning Framework for Deployment Contracts Analysis
CN115495061A (zh) 一种用于工业仿真软件的作业模板脚本及实现方法
Neches et al. Knowledgeable development environments using shared design models

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 8