KR101246967B1 - 어플리케이션 호스트 환경에서 유닛 테스트를 실행하기 위한 방법 및 장치 - Google Patents

어플리케이션 호스트 환경에서 유닛 테스트를 실행하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR101246967B1
KR101246967B1 KR1020060009694A KR20060009694A KR101246967B1 KR 101246967 B1 KR101246967 B1 KR 101246967B1 KR 1020060009694 A KR1020060009694 A KR 1020060009694A KR 20060009694 A KR20060009694 A KR 20060009694A KR 101246967 B1 KR101246967 B1 KR 101246967B1
Authority
KR
South Korea
Prior art keywords
test
computing environment
program
interface
adapter
Prior art date
Application number
KR1020060009694A
Other languages
English (en)
Other versions
KR20060102479A (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 KR20060102479A publication Critical patent/KR20060102479A/ko
Application granted granted Critical
Publication of KR101246967B1 publication Critical patent/KR101246967B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • 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

Landscapes

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

Abstract

본 발명은 유닛 테스트가 마련되는 개발 환경에 관한 것이다. 상기 유닛 테스트는 프로그램 유닛의 좀 더 완전하고 정확한 테스트를 위해 호스트 환경에서 실행된다. 상기 개발 환경은 호스트 환경에서 실행되는 어댑터에 액세스하기 위해 테스트 실행 쉼(shim)을 이용한다. 상기 호스트 어댑터는 특정 테스트를 실행하는 다른 프로그램 객체들을 호출할 수 있다. 이러한 객체들은 테스트 대상 유닛에 후 바인드(late bind)될 수 있다. 액세서 클래스(accessor class)는 특정 테스트 대상 유닛에 대한 후 바인딩을 용이하게 할 수 있으며, 상기 개발 환경에서 저작된(authored) 테스트들로 하여금 상기 테스트 대상 유닛으로의 액세스에 필요한 문맥 인식 정보를 이용하도록 허용한다.
테스트 대상 프로그램, 호스트 환경, 개발 환경, 유닛 테스트, 공개 인터페이스

Description

어플리케이션 호스트 환경에서 유닛 테스트를 실행하기 위한 방법 및 장치{METHOD AND APPARATUS FOR EXECUTING UNIT TESTS IN APPLICATION HOST ENVIRONMENT}
첨부 도면들은 일정한 비율로 확대/축소가 의도된 것은 아니다. 도면에 있어서, 각 동일 구성 요소 또는 유사 구성 요소에 대해 유사 참조 부호로 나타내었다. 설명을 명확히 하기 위해, 전체 도면에 있어 모든 구성 요소에 식별 부호를 기입하지는 않았다.
도 1a는 종래 기술에 있어서의 블랙박스를 나타내는 개략도.
도 1b는 종래 기술에 있어서의 유닛을 나타내는 개략도.
도 2a는 본 발명의 일 실시예에 따른 유닛 테스트를 나타내는 개략도.
도 2b는 본 발명의 대안적 실시예에 따른 유닛 테스트를 나타내는 개략도.
도 3은 본 발명의 다른 실시예에 따른 유닛 테스트를 나타내는 개략도.
도 4는 본 발명의 또 다른 실시예에 따른 유닛 테스트를 나타내는 개략도.
도 5는 본 발명의 일 실시예에 따른 유저 인터페이스를 나타내는 개략도.
<도면의 주요 부분에 대한 부호의 설명>
122, 124: 인터페이스
226: 테스트 대상 유닛
310: 개발 환경
312: 에이전트
314: 테스트 실행 쉼(shim)
320: 호스트 환경
322: 호스트 어댑터
330: 테스트 A
본 발명은 전반적으로 소프트웨어 개발에 관한 것이며, 보다 구체적으로는 소프트웨어 구성 요소(component)들의 테스트에 관한 것이다.
소프트웨어를 개발하거나, 수정, 또는 최적화할 경우, 그 소프트웨어를 테스트하는 것이 때론 바람직할 수 있다. 소프트웨어는, 그 소프트웨어를 활성화(stimulate)하는 입력을 인가하고, 이에 응답하여 생성된 출력이 기능을 적절히 수행하는 소프트웨어인지 여부를 기대 응답과 비교하고 관찰하는 것을 의미하는 "블랙박스"로서 테스트될 수 있다. 이러한 방식의 테스트는 주로, 상기 소프트웨어에 기존의 외부 인터페이스 - 소프트웨어가 동작할 때 상기 소프트웨어와 데이터를 교환하는 데 이용되는 인터페이스 - 를 이용하여 인가되는 입력 및 출력에 의존한다.
도 1a는 상기 테스트의 접근 방식을 나타낸다. 여기엔, 개발 환경(development environment)(110) 및 호스트 환경(120)이 이용된다. 상기 테스트는 상기 개발 환경(110)에서 준비된다. 테스트 대상 프로그램은 호스트 환경(120)에서 동작된다. 호스트 환경(120)은 인터페이스 122 및 124를 포함한다.
개발 환경은 주로, 프로그램을 작성(writing)하거나 테스트하는 개발자의 컴퓨터 상에 확립된(established) 프로세스이다. 이 개발 환경은, 개발자의 프로그램 또는 테스트의 작성을 돕는 툴(tool)을 제공하는 하나의 구성 요소 및 테스트를 실행하기 위한 테스트 환경을 제공하는 다른 구성 요소와 같이, 다수의 구성 요소를 구비할 수 있다. 또한, 호스트 환경은 주로, 동일한 컴퓨터 또는 서로 다른 컴퓨터 상에서의 프로세스이다. 상기 호스트 환경은, 개발 환경 또는 유저가 테스트를 행하기 위해 호스트 어플리케이션을 기동할 경우, 동작 시스템에 의해 생성된다.
개발 환경(110)은 에이전트(112)를 포함한다. 에이전트(112)는 개별 테스트의 타이밍과 시퀀스를 제어하는 소프트웨어 프로그램이다. 또한, 에이전트(112)는 상기 테스트 결과를 기대 결과와 비교할 수 있으며, 그 테스트 결과를 시스템의 다른 부분 또는 개발자에게 처리(process) 또는 보고(report)할 수 있다. 에이전트(112)는 테스트들 114a, 114b, 및 114c 등을 호출한다. 실시예에 나타낸 바와 같이, 에이전트(112)는 테스트 어댑터(113)를 통해 테스트를 호출(invoke)한다. 실행될 각 테스트는 모든 테스트에 대한 표준 인터페이스에 의해 에이전트(112)를 제공하는 자체 테스트 어댑터를 구비할 수 있다. 각 테스트는 입력을 인가하고 호스트 환경(120) 내에서 실행되는 테스트 대상 프로그램으로부터의 출력을 관찰한다.
호스트 환경(120)은 확장성 인터페이스(extensible interface)를 통해 애드 인(add-in) 프로그램을 수용할 수 있는 어플리케이션에 의해 생성될 수 있다. 예를 들면, Word? 워드 프로세스 어플리케이션, 또는 Excel? 스프레드시트 어플리케이션과 같이, 어플리케이션의 모음집인 Microsoft? Office? 내의 어플리케이션들은 애드인 프로그램들을 수용한다. 애드인 프로그램은 유저가 작성한 것일 수도 있지만, 다른 소스로부터 유래한 것일 수도 있다. 이 애드인 프로그램은 하나 이상의 유닛으로 형성될 수 있다. 또한, 호스트 환경은 하나 이상의 유닛(이 역시 테스트 대상일 수 있음)을 포함할 수 있다. 도 1a에 있어서, 호스트 환경(120)에서 테스트될 상기 유닛들은 일반적으로 126a, 126b, 및 126c 등의 유닛으로 나타내었다.
상기 유닛들은 블랙박스 테스트를 이용하여 테스트될 수 있다. 블랙박스 테스트에 대해, 테스트 대상 프로그램은 인터페이스 122 또는 124 등의 외부 인터페이스를 통해 액세스된다. 예를 들면, 도 1a는 인터페이스(122)를 통해 입력을 인가하고 인터페이스(124)를 통해 결과를 획득하는 테스트(114a...114c)를 나타낸다. 실제 결과와 기대 결과를 비교함으로써, 테스트 대상 프로그램의 성능(performance)이 검증될 수 있다.
테스팅 소프트웨어로서 블랙박스가 갖는 단점은 모든 유닛들을 풀로 실행시키기 위해 많은 입력값들 또는 이들의 조합을 필요로 한다는 것이다. 또한, 기대한 결과가 특정 입력값들에 응답하여 관찰되지 않음으로 인해 오류가 검지되면, 이 오류에 대한 수정이 요구되는 코드의 특정 유닛을 식별하기 어려울 수 있다.
도 1b는 어플리케이션 프로그램을 테스트하기 위한 대안적 접근 방식을 나타낸다. 도 1b에 있어서, 유닛 126a 등의 테스트 대상 유닛은 테스트 환경(130)으로 로딩된다. "테스트 하네스(test harness)"라고도 불리는 에이전트(112)는, 수행될 테스트의 선택 및 시퀀스를 테스트(154)의 호출 등에 의해 제어한다. 그러나, 도 1b의 예에 있어서, 테스트 대상의 단일 유닛(single unit)에 대해 테스트가 행해지며, 개발 환경 또는 테스트 환경에서 테스트가 행해진다.
개발 환경(130)은 개발자의 작성(writing) 테스트를 돕는 툴을 포함한다. 예를 들면, Microsoft? Visual Studio? 개발 환경은 개발자가 테스트들을 저작(author)하고, 이들 테스트들의 실행을 제어하고, 그 결과의 분석을 가능하게 하는 툴들을 포함한다. Microsoft? Visual Studio? 개발 환경에 기초한 툴들의 일 피처(feature)로서 인텔리센스(Intellisence)를 들 수 있다. 인텔리센스 피처는 코드 에디터의 유저에게 문맥 인식 도움말(context-sensitive help)을 제공한다. 예를 들면, 프로그램 내의 변수에 액세스하는 코드를 유저가 저작(authoring)할 때, 인텔리센스 피처는 상기 프로그램 내의 변수 목록을 유저에게 제공할 수 있으며, 유저로 하여금 올바른 사용 변수를 신속히 선택가능하게 하거나, 유저가 명령문들을 입력하기 시작함에 따라 코드 에디터로 하여금 명령문들을 정확히 완료가능하게 한다.
도 1a에 나타낸 테스트 구성에 대한 테스트들을 생성하는 Visual Studio 개발 환경을 이용하는 테스트 개발자는, 테스트 대상 코드를 포함하는 호스트 환경 내의 프로젝트가 테스트 프로그램을 포함하는 개발 환경 내의 프로젝트에서 참조되는 경우 인텔리센스 피처가 이용될 수 있다. 그러나, 상기 프로젝트를 참조하는 다른 프로젝트 내에서는 프로젝트로부터의 공개 인터페이스만이 이용가능하다. 따라서, 인텔리센스 피처는 테스트 대상 유닛의 비공개 부분을 액세스하는 데에는 이용할 수 없다.
따라서, 소프트웨어 유닛의 테스트 방법에 대한 개선이 요망된다.
본 발명은 상기 테스트가 호스트 환경 내에서 실행되도록 허용하는 소프트웨어 유닛에 대한 테스트 실행 방법에 관한 것이다. 호스트 환경 내에서의 테스트는 상기 호스트가 상기 테스트 대상 유닛을 적절히 초기화하도록 보장하며, 상기 호스트 어플리케이션에 의해 제공된 컨텍스트 정보가 상기 테스트 동안 이용가능하게 한다. 따라서, 더 완전하고 정확한 테스트가 가능하다. 다른 양태에 있어서, 개발 환경과 호스트 환경 간의 인터페이스는, 비공개인 경우라도, 테스트 대상 소프트웨어의 매소드, 프로퍼티, 및 다른 파라미터가 상기 개발 환경에 이용가능하도록 이루어지는 그러한 방식으로 제공된다. 상기 피처는 동적으로 인스턴스(instantiated)되는 프로그램에 대한 테스트의 생성을 가능하게 한다. 또한, 특정 유닛에 대한 테스트 프로그램을 준비하는 개발자를 위해 문맥 인식 정보를 제공할 수 있다.
본 발명의 일 양태에 따르면, 본 발명은 제1 환경에서 동작되는 프로그램을 테스트하는 방법에 관한 것이다. 상기 방법은 복수의 유닛 - 적어도 하나는 테스 트 대상인 유닛 - 을 갖는 프로그램을 테스트하는 데 유용하다. 상기 방법은 제2 환경 에서 테스트 에이전트를 실행하는 단계를 포함한다. 상기 테스트 에이전트는 상기 테스트 대상 유닛에 테스트가 행해지도록 하는 테스트를 특정한다. 상기 테스트 에이전트의 실행에 응답하여, 제1 환경에서 특정 테스트가 실행된다. 이 테스트는 테스트 대상 유닛의 성능을 나타내는 테스트 결과를 생성한다. 제1 환경에서 동작되는 특정 테스트로부터의 테스트 결과는 제2 환경에서 동작되는 테스트 에이전트와 커뮤니케이션한다.
다른 양태에 있어서, 본 발명은 제1 환경에서 동작되는 프로그램의 테스팅 방법에 관한 것이다. 상기 방법은 복수의 유닛 - 적어도 하나는 테스트 대상인 유닛 - 을 갖는 프로그램을 테스트하는 데 유용하다. 상기 방법은 제1 환경에서 프로그램을 로딩하는 단계와, 제1 환경에서 객체(object)의 인터페이스를 공개(expose)하는 단계를 포함한다. 상기 객체는 상기 인터페이스를 통해 제공된 정보에 응답하여 테스트 어댑터를 로딩하는 데 이용된다. 이 테스트 어댑터는 테스트 대상 유닛의 테스트를 실행한다.
또 다른 양태에 있어서, 본 발명은, 테스트 프로그램이 복수의 호스트 환경 중 하나의 환경에서 동작되는 프로그램의 유닛을 테스트하기 위해, 테스트 프로그램이 개발될 수 있는 개발 환경을 제공하는 소프트웨어 시스템을 실행하는 단계들을 수행하기 위한, 컴퓨터 실행가능 명령문들을 갖는 컴퓨터 판독가능 매체에 관한 것이며, 상기 컴퓨터 실행가능 명령문들은, 테스트 에이전트를 생성하는 단계, 및 복수의 호스트 어댑터 중 하나를 생성하는 단계를 수행하며, 각 호스트 어댑터는 복수의 호스트 환경 중 하나의 환경에서 테스트 프로그램의 실행을 호출하는 테스트 에이전트에 의해 이용되도록 구성된다.
도 1b에 나타낸 테스트 방법의 단점은 테스트 대상 유닛(unit under test)(126a)이 개발 환경(130)에서 실행된다는 것이다. 만약, 테스트 대상 유닛(126a)이 호스트 환경(120)으로부터 컨텍스트 정보를 필요로 한다면, 테스트 중에 그 정보를 이용할 수 없다. 호스트 환경(120)으로부터의 컨텍스트 정보에 액세스 또는 의존하는 테스트 대상 유닛(126a)의 일부를 실행하는, 테스트 대상 유닛(126a)에 대한 임의의 테스트는 실패할지도 모른다. 상기 테스트는, 테스트 대상 유닛이 오류의 결과값을 반환하거나 또는 테스트 대상 유닛이 컨텍스트 정보없이는 동작될 수 없기 때문에 실패할 가능성이 있다.
또한, 도 1b에 나타낸 방법은 테스트 대상 코드가 런타임(runtime)에 빌드(build)되는 경우에는 이용될 수 없다. 예를 들어, ASP.NET은, 생성되는 코드를 정의하는 조건들을 런타임에 허용하는 프로그래밍 환경이다. 이러한 코드에 대해, 상기 코드가 정의될 때까지 테스트 하네스(harness)는 빌드될 수 없다.
도 2a는 테스트 실행을 위한 바람직한 아키텍처를 나타낸다. 개발 환경(110)에서 실행되는 에이전트(112)가 테스트(214)를 호출한다. 테스트(214)는 호스트 환경(120)에서 실행되는 테스트 대상 유닛(226)에 액세스한다. 특정 어플리케이션 및 프로그래밍 언어에 따라, 테스트 대상 유닛(226)은 함수(function), 프로시저(procedure), 매소드(method), 객체(object), 또는 호스트 환경(120)에서의 어플리케이션 프로그램이나 애드인 프로그램 내의 다른 구성들 중 하나가 될 수 있 거나, 또는 이들의 조합이 될 수 있다.
도 2b는 대안적 실시예를 나타낸다. 도 2b의 실시예에 있어서, 테스트(214)는 호스트 환경(120)에서 실행되며, 개발 환경(110) 내의 에이전트(112)와 커뮤티케이션한다. 본 실시예에 있어서, 테스트(214)는 호스트 환경(120)으로부터의 컨텍스트 정보에 다이렉트로 액세스할 수도 있다.
도 2a 및 도 2b에 나타낸 구성들은 테스트 대상 유닛(226)이 자신의 호스트 환경에서 테스트될 수 있도록 허용한다. 만약, 테스트 대상 유닛(226)이 호스트 환경(120) 내의 임의의 속성, 변수, 또는 다른 파라미터에 의존한다면, 테스트될 때 상기 속성, 변수, 또는 다른 파라미터에 액세스할 것이다. 마찬가지로, 테스트 대상 유닛(226)의 오퍼레이션이 호스트 환경(120) 내에서 행해진 임의의 초기화에 의존한다면, 테스트 대상 유닛(226)은 테스팅에 앞서 상기 호스트 환경에서 초기화될 것이다. 종래 기술의 테스트 구성에 비해, 도 2a 또는 도2b의 아키텍처에 의해 행해진 테스트는 실제의 동작 조건들을 좀 더 정확하게 나타낼 것이며, 호스트 환경(120)의 몇 가지 파라미터에 의존하는 테스트 대상 유닛(226) 내의 코드의 일부분을 실행하고자 할 때 실패할 확률은 낮으며, 또한 예외 조건을 생성할 가능성도 적다.
도 2a 또는 도 2b에 나타낸 아키텍처들은 테스트 대상 유닛(226)이 비공개 인터페이스를 포함하는 경우 등의 몇몇 환경에서는 증대될 수 있다. 본 명세서에서 사용되는, "비공개(non-public)" 인터페이스란, 프로그래밍 언어의 표준 피처를 이용하여 인터페이스가 정의되는, 프로그램 영역 외부 코드로부터 프로그래밍 언어의 표준 피처를 이용하여 액세스할 수 없는 인터페이스를 의미한다. "비공개" 인터페이스의 예들은 "내부(internal)", "보호(protected)", 또는 "비밀(privacy)" 등의 용어로 명명되는 것들이다. 예를 들어, 어떤 프로그래밍 언어에서는, "프로젝트" 내에서 프로그램이 생성된다. 하나의 프로젝트를 다른 프로젝트 내에서 참조하는 것은 하나의 프로젝트 내의 공개 인터페이스들을 다른 프로젝트 내에서 이용가능하게 하지만, 비공개 인터페이스들은 자신들이 정의된 프로젝트 내서만 이용가능할 수 있을 뿐이다.
테스트 대상 유닛(226)이 동적으로 인스턴스되거나, 컴파일되는 경우, 또는 그 외 테스트(214)가 컴파일되거나 생성될 때 이용할 수 없는 경우, 구성 요소들을 추가하는 것이 바람직할 수 있다. 이러한 시나리오에 있어서 증대(augmentation)는, 테스트가 변수, 매소드, 또는 테스트 대상 유닛(226)에 대한 정보에 다이렉트로 액세스하지는 못하더라도, 인텔리센스 피처를 포함하는 툴과 같이, 개발 환경(110) 내의 툴들로 하여금 테스트 대상 유닛(226)을 실행할 테스트들을 저작(author)하는 데 필요한 문맥 인식 정보를 적절히 표시할 수 있게 한다.
도 3은, 테스트 대상 유닛(226)이 다이렉트로 액세스 가능하지는 않더라도, 테스트 대상 유닛(226)이 자신의 호스트 환경(120) 내에서 테스트되도록 허용하는 테스트 아키텍처의 대안적 실시예를 나타낸다. 또한, 도 3의 실시예는 상업적 개발 환경에서 바람직할 수 있는 캡슐화(encapsulation)를 나타낸다. 예를 들면, 캡슐화는, 개발 환경이 다수의 호스트 환경과 함께 이용되도록 하고, 또한 새로운 각 호스트 환경이나 새로운 각 테스트와 인터페이스로 접속하는 비교적 적은 수의 추 가 소프트웨어 구성 요소만으로 다수의 테스트 및 다수의 호스트 환경과 결합하여 사용된다.
도 3의 실시예에 있어서, 에이전트(312)는 개발 환경(310) 내에서 실행된다. 종래 기술에서와 같이, 에이전트(312)는 테스트들의 실행을 코디네이트(cordinate)하고, 그 테스트 결과를 수신하고, 유저와 인터페이스 접속되거나 그외 테스트 결과를 보고 또는 이용하는 프로그램이다. 본 예에 있어서, 에이전트(312)는 C# 프로그래밍 언어로 쓰여진 함수이지만, 적절한 프로그래밍 구성이라면 어떠한 것이라도 에이전트를 실행하는 데 이용될 수 있다.
실시예에 설명된 바와 같이, 에이전트(312)는 테스트 실행 쉼(shim)(314)과 상호 작용한다. 테스트 실행 쉼(314)은, 종래 기술에 있어서 에이전트에 의해 호출되는 테스트 어댑터(113)와 같은, 테스트 어댑터를 대신한다. 테스트 실행 쉼(314)의 인터페이스가 테스트 어댑터(113)에 대한 인터페이스와 동일한 경우, 테스트 에이전트(312)는 종래 기술 또는 다른 적절한 임의의 방식으로 구성될 수 있다.
테스트 실행 쉼(314)은 호스트 환경(320)에 특정되도록 임의의 인터페이스를 캡슐화한다. 상업적 개발 환경에 있어서, 개발 시스템은 호스트 환경(320)의 타입을 리플렉트하도록 설정될 수 있는 호스트 타입 속성을 인식할 수 있다. 다수의 호스트 어댑터들이 이용가능하며, 다수의 호스트 환경에 대한 테스트를 준비하는 데 동일한 개발 환경이 이용되게 한다. 예를 들면, Microsoft?Word? 워드 프로세스 어플리케이션용으로, 또는 Microsoft?Excel? 스프레드시트 어플리케이션용으로 마련된 애드인 프로그램에 대한 테스트를 개발하는 데 상기 동일한 환경이 이용될 수 있다. 여기서 기술된 실시예에 있어서는, 각 호스트 타입에 대해 하나의 테스트 실행 쉼이 존재할 수 있다. 본 예에 있어서, 각 테스트 실행 쉼은 비쥬얼 베이직 함수의 집합이지만, 적절한 프로그래밍 구성이라면 어떠한 것이라도 테스트 실행 쉼을 실행하는 데 이용될 수 있다.
테스트 실행 쉼(314)은 인터페이스의 일측에 호스트 환경 내의 프로그램 동작을 제공한다. 여기서, 상기 인터페이스의 타측은 호스트 환경(320) 내의 호스트 어댑터(322)에 의해 제공된다. 도 3에는 인터페이스(122)를 통해 커뮤티케이션이 이루어지는 경우를 나타내었다. 더 일반적으로, 테스트 실행 쉼(314)과 호스트 어댑터(322) 간에는 적절한 임의의 커뮤니케이션 채널을 통한 커뮤니케이션이 가능하다. 개발 환경(310) 및 호스트 환경(320)의 특정 실행에 따라, 적절한 커뮤니케이션 채널의 예는 공유 메모리 공간, 네임 파이프(named pipe), RPC 인터페이스, 또는 COM 인터페이스를 포함한다. 다른 예로서, 커뮤니케이션 채널은 상업적으로 이용가능한 .NET 호스트 환경에서 "리모팅(remoting)" 구성을 이용하여 생성될 수 있다.
오퍼레이션에 있어서, 호스트 환경(320)(또는 어떤 애드인 프로그램)은, 상기 호스트 환경이 테스트 모드로 동작중이며 호스트 어댑터(322)의 초기화함을 인식한다. 호스트 어댑터(322)의 초기화의 일부로서, 호스트 어댑터(322)에 대한 인터페이스는 개발 환경에서 실행되는 프로그램을 이용가능하게 된다. 테스트 모드 동작 중이라도, 호스트 환경(320)은 테스트 대상 유닛(226)을 로딩하고 초기화하기 때문에 테스트 대상 유닛(226)은 호스트 환경 내에 존재할 것이다. 특정 호스트 환경 및 특정 테스트 대상 유닛에 따라, 호스트 환경(320)은 테스트 대상 유닛(226)의 테스트 모드로의 실행을 초기화할 수도 있고, 초기화하지 않을 수도 있다. 또한, 특정 실행에 따라, 테스트 대상 유닛의 실행은 수행되고 있는 테스트에 의하거나 다른 적절한 임의의 방식에 의해 호출될 수 있다.
호스트 환경과 개발 환경 간의 커뮤니케이션 채널은 개발 환경 내의 에이전트(312)로 하여금 호스트 환경 내에서 테스트(330)의 실행을 초기화하고 제어하게 하는 것을 허용하고, 테스트(330)의 실행 결과를 수신가능하게 한다.
호스트 어댑터(322)의 특정 실행은 호스트 환경(320)에 의존할 것이다. 일레로서, 호스트 환경(320)이 Microsoft?Office? 어플리케이션이면, 호스트 어댑터(322)는 비쥬얼 베이직 함수의 집합이 될 수 있다. 호스트 어댑터의 일례를 제공하는 의사 코드(pseudo code)는 본 명세서에 첨부된 컴퓨터 프로그램 리스트에 포함된다.
호스트 환경이 테스트 모드에 놓인 메카니즘은 개발 환경의 실행에도 의존할 것이다. ASP.NET 호스트 환경의 일례에 있어서, 테스트의 실행은 HTTP 모듈의 사용을 포함한다. 테스트 실행 쉼(314)은 테스트 모드로의 이행을 특정하는 헤더를 포함하고 있는 HTTP 리퀘스트의 전송을 기동(trigger)할 수 있다. 또한, 상기 리퀘스트는 테스트될 유닛을 나타낼 수 있다. 테스트 모드를 초기화하는 데 사용되는 특정 메카니즘과는 무관하게, 테스트 대상 유닛(226)은 호스트 환경(320)에서 초기화된다.
호스트 어댑터(322)는 특정 테스트(330)를 호출한다. 더 많은 추상화(abstraction)를 위해, 호스트 어댑터(322)는 테스트 어댑터(도 3에는 도시되지 않음)를 통해 특정 테스트 매소드에 액세스할 수 있다. 각 테스트는 호스트 어댑터(322)에 대한 공통 인터페이스를 나타내는 모든 테스트 어댑터와 함께, 자신의 테스트 어댑터를 가질 수 있다. 상기 방식으로, 호스트 환경에 대해 단일 호스트 어댑터(322)가 요구되지만, 임의의 테스트 수가 호스트 환경에서 호출될 수도 있다. 테스트가 실행되는 경우, 그 테스트에 제공되는 파라미터의 수와 타입 등의 각 테스트에 대한 특정 요구들이 테스트 어댑터 내에 캡슐화될 수 있다.
일단 호출되면, 테스트(330)는 테스트 대상 유닛(226)과 상호작용하여 테스트 대상 유닛을 활성화(stimulate)하고, 그 활성화에 대한 응답을 관찰한다. 테스트 대상 특정 유닛의 구조와 기능 및 수행될 테스트의 성질에 따라, 테스트 대상 유닛(226)으로 활성화를 제공하는 데에는 다양한 폼이 가능하다. 예를 들면, 테스트는, 상기 유닛의 메소드를 호출하고 상기 메소드 호출에 있어 인수(argument)로서 소정의 값을 제공함으로써 테스트 대상 유닛에 활성화를 제공할 수 있다.
도 3의 실시예에 있어서, 테스트(330)는 액세서(accessor)를 통해 테스트 대상 유닛(226)에 액세스한다. 액세서는 메소드, 프로퍼티, 클래스 또는 유닛의 다른 파라미터를 결정하기 위해 리플렉션(reflection)을 이용하는 프로그램이다. 액세서는 액세서 클래스를 테스트 대상 유닛(226)으로 후 바인딩(late binding)함으로써 생성될 수 있다. 액세서 클래스가 사용되는 경우, 테스트 개발자는 테스트 대상 유닛에 대한 상세한 지식 없이도 액세서 클래스를 참조하여 테스트(330) 등의 테스트 프로그램을 작성할 수 있다.
액세서 클래스의 후 바인딩에 의해 액세서를 생성하는 한 방법은 "리플렉션"을 이용하는 것이다. "리플렉션(reflection)"은 유닛으로 하여금 매소드, 프로퍼티, 클래스 또는 다른 파라미터에 대한 정보를 보유하는 데이터 구조를 판독하게 하는, 수많은 프로그래밍 언어의 일 특성이다. 리플렉트된 정보는 테스트의 타겟인 테스트 대상 유닛(226)에 액세스할 수 있도록, 액세서(332)를 인스턴스하는 데 이용될 수 있다.
액세서(332)의 후 바인딩은 특히 테스트 대상 유닛(226)이 동적으로 인스턴스되는 경우에 이점을 가질 수 있다. 액세서(332)는 테스트 대상 유닛(226)이 인스턴스되기 전이라도 이용가능하기 때문에, 테스트 대상 유닛(226)에 액세스하는 데 필요한 정보는, 인텔리센스 등의 피처들이 개발 테스트 또는 테스트 대상 유닛(226)을 갖는 프로그램에 대해 문맥 인식 정보를 표시하는 데 필요한 정보를 가질 수 있도록 개발 환경(310) 내에서 이용가능하다. 상기 방식으로, 테스트(330)는 일반적으로 코드를 저작하는 데 이용가능한 툴들의 전 영역을 이용하여 마련될 수 있다.
테스트 대상 유닛(226)에 의해 리플렉트된 정보를 수신하는 데 분리형 액세서가 이용될 필요는 없다. 대안적 실시예의 일례로서, 상기 동일한 기능이 테스트(330)로 합체될 수 있다.
테스트(330)가 결과를 생성하는 경우, 그 결과는 에이전트(312)로 역패스 (pass back)될 수 있다. 상기 결과는 호스트 어댑터(322)를 통해 역패스될 수 있다. 또는, 상기 결과는 개발 환경에 다이렉트로 통과될 수 있다. 예를 들면, 에이전트(312) 또는 테스트 실행 쉼(314)은 공개 인터페이스를 포함할 수 있다. 테스트(330)는 에이전트(312) 또는 테스트 실행 쉼(314) 뒤의 개발 환경에서 준비될 수 있기 때문에, 에이전트(312) 또는 테스트 실행 쉼(314)의 인터페이스는 테스트(330)에의 액세스가 가능해질 수 있다.
도 3은, 개발 환경(310) 내의 에이전트에 의해 실행된 명령에 응답하여, 호스트 환경(320) 내에서 초기화 및 실행이 이루어지는 테스트 대상 유닛(226)에 대한 일반적인 모습을 나타내는 도면이다. 상기 도면은, 테스트 대상 특정 코드가 상기 테스트를 위한 컴파일 시간에 이용가능하지 않거나 또는 공개되지 않은 경우에도, 테스트가 개발 환경에서 개발되도록 허용하는 피처들을 포함한다. 이러한 테스트 아키텍처는 개발 환경 및 호스트 환경과 호환가능한 임의의 적절한 방식으로 실행될 수 있다.
도 4는 개발 환경에서 준비된 테스트가, ASP.NET 환경을 나타내는 호스트 환경에서 실행될 수 있는 개발 환경 내에서 실행될 수 있는 프로세스를 설명하는 도면이다. 본 예에 있어서 테스팅은, 웹 사이트를 구현하는 어플리케이션 프로그램의 오퍼레이션을 확증(verify)할 수 있다. 실시예에서 설명된 바와 같이, 개발 환경은 기술된 바와 같은 인터페이스 접속을 더 용이하게 하는 테스트 대상 웹 사이트에 대한 web.config 파일에 액세스 할 수 있다.
하나 이상의 테스트를 저작한 후, 유저는 개발 환경(310) 내의 명령 라인 인 터페이스를 통해 테스트를 호출할 수 있다. 도 4의 예에 있어서의 테스트의 실행은, 에이전트(410)가 개발환경(310)에서 실행되도록 하여, 상기 테스트의 실행을 제어하도록 한다. 본 실시예에 있어서, 에이전트(410)는 C# 언어로 쓰여진 프로그램일 수 있다. 이것은 실행될 테스트를 생성하는 데 사용되는 상기 동일한 개발 환경 내에서 실행되거나, 전체가 분리된 개발 환경 또는 다른 컴퓨터 상에서도 실행될 수 있다.
특정 호스트 환경 내의 유닛을 테스트하기 위해, 에이전트(410)는 상기 호스트 환경에 대한 인터페이스에 적합한 테스트 실행 쉼(412)을 인스턴스한다. 본 예에 있어서, 테스트 실행 쉼(412)은 ASP.NET 호스트 환경에 대한 인터페이스를 포함한다. 개발 환경은 실행될 각 테스트에 대한 다수의 테스트 실행 쉼을 포함할 수 있다. 각 테스트 실행 쉼은 서로 다른 호스트 환경에 대한 호스트 어댑터로서 기능할 수 있다.
실시예에 나타낸 바와 같이, 상기 테스트 실행 쉼은, 상호 작용하게 될 상기 특정 호스트 환경과는 무관하게, 정의된 포맷으로 인터페이스(432)를 갖는다. 상기 방식으로, 에이전트(410)는 임의의 테스트 실행 쉼과 커뮤니케이션할 수 있다. 임의의 원하는 테스트에 액세스할 수 있는 인터페이스가 에이전트(410)에 제공되도록, 각 테스트는 분리형 테스트 실행 쉼(412)을 구비할 수 있다. 테스트 실행 쉼(412)은 테스트 대상 유닛을 포함하는 호스트 환경(320) 내의 어플리케이션에 액세스하라는 명령을 송신한다. 호스트 환경이 ASP.NET 환경으로 실시예에 나타낸 바와 같이, 액세스는 HTTP 리퀘스트를 발행함으로써 이루어진다. 상기 HTTP 리퀘스 트는 상기 프로그램이나 테스트될 프로그램 객체를 특정한다. 본 실시예에 있어서, 이 프로그램 객체는 URL에 의해 식별되는 페이지이다. 상기 HTTP 리퀘스트는 호스트 환경이 테스트 모드에서 호출되는 양자를 나타내며, 또한 테스트의 타겟인 특정 URL을 나타낸다.
호스트 환경(320)은 테스트 실행 쉼(412)에 의해 전송될 때의 리퀘스트에 응답한다. 상기 리퀘스트에 응답하여, HTTP 모듈(450)이 호출된다. 모듈(450)에 의해 표현되는 특정 HTTP 모듈은 테스트 실행 쉼(412)으로부터의 리퀘스트에 응답하여 구체적으로 생성될 수 있다. 상기 리퀘스트에 응답하여 이전에 호출된 모듈이 파괴되었다면 새로운 모듈이 사용된다. 그러나, 미사용 모듈이 파괴되지 않은 경우에는, 상기 리퀘스트를 처리하는 데 이용될 수 있다. ASP.NET의 국적없는 성질 때문에 ASP.NET 호스트 환경에서 HTTP 모듈을 재사용하는 것이 가능하다. 다른 호스트 환경에서는 상이하게 동작될 수 있다. HTTP 모듈(450) 생성의 특정 포맷과 방식은 호스트 환경(320)의 구현에 의존하며, 테스트 리퀘스트에 응답하는 임의의 적절한 방식이 이용될 수 있다.
테스트 실행 쉼(412)으로부터의 상기 리퀘스트에 응답하여, HTTP 모듈(450)은 호스트 환경 내의 통상의 프로세싱에 따라 타겟 페이지를 초기화한다. 이러한 방식으로, 테스트 대상 유닛은 호스트 환경에 의해 적절히 초기화되고 테스트가 준비된다. 본 예에서, 타겟 페이지는 테스트 대상 유닛(460)으로서 설명되어 있다. 또한, HTTP 모듈(450)은 호스트 어댑터(454)를 로딩하고, 이를 테스트 실행 쉼(412)을 이용하여 기록함으로써, 호스트 어댑터(454)에 대한 인터페이스를 테스트 실행 쉼(412)에 공개한다.
호스트 어댑터(454)는 인터페이스를 개발 환경(310)에 제공한다. 도 4의 예에 있어서, 호스트 어댑터(454)는 C# 함수로서 구현된다.
호스트 어댑터(454)는 개발 환경에서 실행되는 프로그램에 의해 액세스가 가능할 수 있는 인터페이스(480)를 갖는다. 호스트 환경(320)이 ASP.NET에 의해 제공되는 실시예에 나타낸 바와 같이, 다른 환경 내의 프로그램에 의한 액세스가 의도된 어느 한 소프트웨어 프로그램에 대한 인터페이스는, 하나의 프로그램이 다른 프로그램에 의해 기록되는 것을 허용하는 .NET 리모팅 구성을 통해 공개될 수 있다. 여기서, 호스트 어댑터(454)와 인터페이스하는 데 필요한 정보는 .NET 레지스터 명령(register command)을 이용하는 인터페이스(436)를 통해 테스트 실행 쉼(412)에 이용가능하게 된다.
일단 인터페이스(480)가 테스트 실행 쉼(412)에 등록되면, 테스트 실행 쉼(412)은 인터페이스(480)를 통해 호스트 어댑터(454)와 커뮤티케이션할 수 있다. 인터페이스(480)를 통해, 테스트 실행 쉼(412)은 특정 테스트를 실행하는 데 사용되는 테스트 어댑터(456)에 대한 정보를 요청할 수 있다. 정보를 얻기 위해 적절한 임의의 명령이 사용될 수 있지만, 본 실시예에서는 인터페이스(480)에 대한 매소드가 이용된다. 이러한 방식으로, 테스트 실행 쉼(412)은 테스트 어댑터(456)의 인터페이스(482)로 액세스할 수 있다. 본 실시예에 있어서, 테스트 어댑터(456)는 호스트 환경에서 수행될 모든 테스드에 대해 일치된 인터페이스를 제공하는 랩퍼(wrapper)이다. 테스트 어댑터(456)는 C# 함수로서 구현되거나, 임의의 다른 적절 한 방식으로 구현될 수 있다.
테스트 어댑터(456)는 테스트 대상 유닛(460)상에서 수행될 특정 테스트(416)에 대해 특정된 유닛 테스트 어댑터(458)의 인스턴스(instance)를 생성한다. 유닛 테스트 어댑터(458)는 C# 함수로서 구현되거나, 임의의 다른 적절한 방식으로 구현될 수 있다. 테스트 어댑터(456)는 유닛 테스트 어댑터(456)에 대한 액세서로 간주될 수 있다. 유닛 테스트 어댑터(456)는 런타임에 결정된 특정 테스트(416)를 호출함으로써, 테스트 대상의 특정 유닛에 후 바인드(late bind)할 수 있다. 후 바인딩에 필요한 정보는 리플렉션이나 다른 적절한 임의의 방식을 통해 테스트(416)로부터 유도될 수 있다.
유닛 테스트 어댑터(458)는, 테스트 어댑터(456)와 커뮤니케이션이 가능한 인터페이스(484)를 포함한다. 개발 환경(310)에서 실행되는 프로그램은 공개된 인터페이스(482)를 통해 커뮤니케이션할 수 있기 때문에, 인터페이스(484)는 개발 환경(310) 내에서 공개될 필요가 없다.
유닛 테스트 어댑터(458)는 테스트(416)를 호출하며, 테스트(416)가 호스트 환경(320)에서 실행되는 것을 허용한다. 대안으로서, 테스트 함수들은 유닛 테스트 어댑터(458) 내에 다이렉트로 합체될 수 있다.
일단 로딩되어 적절히 구성되면, 테스트(416)가 실행될 수 있다. 테스트(416)는 유닛 테스트 어댑터(458)에 의해 로딩되어 실행될 수 있는 DLL 모듈 내에 있을 수 있지만, 임의의 적절한 폼이 이용될 수도 있다. 특정 명령 및 컨텍스트 데이터는 개발 환경(310)과 호스트 환경(320) 간에 확립된 인터페이스를 통해 제공 될 수 있다. 결과들은 인터페이스(430)를 통해 에이전트(410)로 역공급될 수 있다.
호스트 환경 내의 테스트 대상 유닛과 개발 환경 간의 인터페이스를 제공하는 특정 매소드는 호스트 환경의 특정에 따라 변할 수 있다. 예를 들어, 호스트 환경이 Microsoft? Office? 어플리케이션 모음집의 어플리케이션인 경우, 개발 환경 내의 테스트 어댑터에 의해 송신된 테스트 리퀘스트는, 테스트 타겟으로서 웹 페이지를 특정하기 보다는, 상기 테스트 대상 유닛을 포함하는 특정 문서를 특정할 수 있다.
단일 테스트의 실행 단계들은 발생 순서에 따라 1,2,...9로 번호매김되어 있다. 단계 1은 테스트 실행 쉼(412)과 커뮤니케이션하는 에이전트(410)를 나타낸다. 단계 2는 테스트 리퀘스트를 호스트 환경(320)에 송신하는 테스트 실행 쉼(412)을 나타낸다. 단계 3은 호스트 어댑터(454)의 인터페이스를 등록하는 HTTP 모듈(450)을 나타낸다. 단계 4는, 테스트 실행 쉼(412)이 테스트 어댑터(456)의 인터페이스(482)를 통해 커뮤니케이션하도록 허용하는, 테스트 실행 쉼(412)과 호스트 어댑터(454) 간의 정보 교환을 나타낸다. 단계 5는 테스트 수행에 필요한 정보에 대해 테스트 실행 쉼(412)과 테스트 어댑터(456) 간 커뮤니케이션을 나타낸다. 단계 6은 테스트 실행 프로세스에 있어서 테스트 어댑터(456)와 유닛 테스트 어댑터(458) 간의 커뮤니케이션을 나타낸다. 단계 7은 유닛 테스트 어댑터(458)와 테스트(416) 간의 커뮤니케이션을 나타낸다. 테스트(416)는 그것이 어떻게 구성되 어야 할 지에 대한 데이터를 포함할 수 있다. 또한, 상기 테스트 실행 과정 중에 데이터가 교환될 수 있다. 단계 8은, 테스트 대상 유닛(460)을 타겟으로 하는 테스트 구성에 필요한 테스트 대상 유닛(460)으로부터 테스트 어댑터(458)에 의해 획득된 정보를 나타낸다. 단계 9는 개발 환경 내의 에이전트(410)로 역전송되는 테스트 결과를 나타낸다. 상기 단계들은 번호매김되어, 단일 테스트 실행 중인 데이터 및 제어의 양자의 흐름에 대한 일례를 제공한다. 실제 구현에 있어서, 상기 단계들은 표시된 순서대로 수행될 필요는 없다. 또한, 각 단계는 한번에 수행될 필요는 없다. 예를 들어, 테스트 어댑터(414)는 다수의 인스턴스에 있어 명령 또는 데이터를 테스트 어댑터(456)에 송신할 수 있다.
도 4는 단일 테스트(416)의 실행을 나타낸다. 실제 어플리케이션 프로그램을 테스트함에 있어서, 테스트 실행(run) 시 다수의 테스트가 행해질 수 있다. 에이전트(410)는 테스트 실행 시 많은 테스트들의 호출을 유사한 방식으로 제어한다. 테스트 실행 시 각 테스트는 자신의 테스트 실행 쉼(412)을 이용할 수 있다. 전체 테스트 실행에 대해 적용가능한 속성 또는 다른 설정들은 에이전트(410) 내에 제공될 수 있다. 상기 단일 테스트에 적용가능한 속성 또는 다른 설정들은 테스트 실행 쉼(412), 유닛 테스트 어댑터(458), 또는 테스트(416)를 통해 적용될 수 있다.
예를 들어, 각 테스트에 대해, 테스트할 전체의 URL이 특정될 필요는 없다. 오히려, 특정 머신을 특정하는 일부 등 URL의 어떤 부분이 테스트 환경에서 일단 특정될 수 있다. 모든 후속하는 URL에 대한 참조는 상기 머신을 참조하도록 취해질 수 있다. 예를 들어, 수행될 각 유닛 테스트에 대해, 특정 페이지를 특정하는 상기 부분과 같은 머신 독립형 부분(machine independent piece)이 특정될 수 있다.
도 5는 전술한 소프트웨어 구성에 의해 이루어질 수 있는 개발 환경의 또 다른 양태를 나타낸다. 도 5는 개발 환경(310)에서 테스트를 개발하는 인간 프로그래머에 의해 이용될 수도 있는, 테스트 에디터에 대한 인터페이스(500)를 나타낸다. 프로그래머가 테스트 프로그램을 작성하고 있을 때, 인터페이스(500)는 명령문(statement)(510) 등의 프로그램 명령문을 표시한다.
또한, 인터페이스(500)는 본 명세서에서는 팝업 윈도우라고 설명된 보충 표시 영역(supplemental display area)(512)을 포함한다. 보충 표시 영역은 테스트 프로그램을 작성하는 동안 유저와 관련된 정보를 표시하는 데 이용될 수 있다. 본 예에 있어서, 보충 표시 영역(512)은 본 테스트 프로그램의 타겟인 테스트 대상 유닛에 액세스하는 데 사용된 액세서에 대한 정보를 표시한다.
테스트 대상 유닛이 그 테스트가 작성된 때에 정의된 것이 아닌 경우에도, 도 5에 나타낸 바와 같이, 액세서를 통해 액세스에 필요한 정보를 이용할 수 있다. 이러한 방식으로, 인텔리센스 등의 피처는 개발 환경에서 동작될 수 있다.
실시예에 나타낸 바와 같이, 표시된 특정 정보는 컨텍스트에 의존한다. 도 5에 나타낸 예에 있어서, 유저는 명령문(510)의 일부를 작성했다. 명령문(510)은 테스트 대상 유닛에 액세스하는 데 사용될 수 있는 코드 액세서 내의 변수에 대한 부분적인 레퍼런스(partial reference)를 포함한다. 상기 명령문의 상기 부분은, 작성된 것이 코드 액세서 내에 정의된 변수 네임에 의해 완료될 필요성이 존재한다 는 사실을 식별하는 데 충분하다. 따라서, 팝업 윈도우(512)는 코드 액세서 내에서 정의되는 변수들의 목록을 포함한다. 유저는, 상기 변수의 풀 네임을 모두 작성하기 보다는, 팝업 윈도우(512) 내의 목록으로부터 상기 의도된 변수를 선택할 수 있다. 목록으로부터 엔트리(entry)를 선택하는 것은 유저로 하여금 상기 엔트리에 대해 전체 식별자를 작성하도록 요구하는 것보다 더 간단하며, 오류도 줄일 수 있다.
이러한 접근 방식은 단지 변수 네임을 표시하는 데 국한되는 것은 아니다. 선택 목록은 다른 컨텍스트 정보와 결합한 부분 명령문이 선택군을 식별할 만큼의 정보를 제공할 때마다 제공될 수 있다. 상기 접근 방식은 함수, 인터페이스, 또는 프로그램 내에 사용될 수 있는 다른 구조에 적용될 수 있다. 선택군의 식별 및 표시는 종래 기술에서처럼 수행될 수 있다. 호스트 환경 내의 테스트 대상 유닛을 실행하기 위한 접근 방식은, 도 5에 표시된 작성 정보를 생성하는 데 필요한 정보를 이용가능하게 하는, 액세서의 이용과 일맥상통한다.
본 발명에 있어 적어도 일 실시예의 몇 가지 양태들을 기술했지만, 당업자라면 다양한 변경, 개조, 및 개량을 쉽게 행할 수 있을 것으로 이해된다.
예를 들면, 전술한 소프트웨어 아키텍처는, 호스트 환경 및 개발 환경이 실행되는 특정 하드웨어 아키텍처에 의존하지 않는다. 호스트 환경 및 개발 환경은 동일한 단일 시스템 또는 멀티-프로세서 시스템 상에서 실행될 수 있다. "리모팅(remoting)"은 하나의 컴퓨터 상에서 서로 다른 호스트 어플리케이션을 실행함으로써 생성된 서로 다른 환경들 간에 존재할 수 있으며, 분리된 물리적 위치에 있어서 의 컴퓨터들, 서버들 또는 다른 프로세서들 상에서 실행되는 프로세스들 간에는 요구되지 않는다.
또한, 도 2 내지 도 4 등의 도면은 개발 환경이나 호스트 환경에서 실행되는 소프트웨어 구성 요소들을 설명한다. 테스트가 호스트 환경 내에서 이용가능한 메소드, 프로퍼티 및 다른 컨텍스트 정보에 액세스할 경우에는, 호스트 환경에서 실행되고 있다고 말한다. 프로그램을 생성하거나 호출하는 데 사용되는 어플리케이션은 상기 프로그램이 실행되는 환경을 지시할 필요가 없다.
또한, 프로그램이 실행하는 하드웨어는 자신의 실행 환경을 결정할 필요가 없다. 구체적인 예로서, PDA 또는 스마트 폰 등의 이동식 전자 디바이스에 대한 어플리케이션에 대해 테스트를 원하는 경우, .NET 리모팅을 통한, 개발 환경과 호스트 환경 간의 모든 상호작용을 이용하여, 호스트 환경을 세퍼레이트(separate), 즉 원격 플랫폼(platform)으로서 다루는 것이 바람직할 수 있다. 대안적으로, 에이전트와 테스트 프로그램의 전부 또는 일부를 실행하기 위해 이동식 전자 디바이스로 로딩하는 것이 바람직할 수 있다.
본 명세서에서는, 테스트 대상 유닛에 있어 통상적으로 비공개일지도 모르는 매소드 및 변수가 액세서 프로그램을 통해 리플렉트되는 것이 기술되어 있다. 더 일반적으로, 테스트 대상 유닛의 임의의 파라미터가 리플렉트될 수 있다. 액세서 프로그램을 통해 리플렉트될 수 있는 파라미터들의 성질 또는 타입은 테스트 대상 특정 유닛 또는 그것이 마련되는 프로그래밍 언어에 기초하여 변할 수 있다.
본 발명은 상기 테스트 결과로 이루어진 사용에 국한되는 것은 아니다. 상 기 테스트 결과들은 테스트 대상 유닛의 성능의 몇 양태에 대한 데이터를 제공할 수 있다. 성능 정보의 특정 타입은 특정 테스트 프로그램에 의존할 것이다. 상기 성능 정보는 상기 유닛이 원하는 동작 결과를 제공하는지 여부를 나타낼 수 있다. 대안적으로, 상기 유닛의 실행 시간 또는 상기 테스트 실행중에 사용된 프로세싱 자원들에 대한 정보를 제공할 수 있다.
다른 예로서, 테스트 대상 유닛에 액세스하는 특정 매소드도 변할 수 있다. 추상화(abstraction)가 이용될 필요는 없다. 대안적으로, 추상화에 대한 더 많은 레벨이 이용될 수 있다. 일례로서, 도 4는 테스트 어댑터(456)가 유닛 테스트 어댑터(458)를 통해 테스트(416)에 액세스하는 것을 나타낸다. 추상화의 추가적 레벨들이 테스트(416) 주위의 랩퍼를 제공함 등에 의해 제공될 수 있다. 또는, 테스트 어댑터(456)를 테스트(416)에 다이렉트로 액세스하게 함으로써, 추상화의 더 낮은 레벨들이 이용될 수 있다.
일반적으로, 도면에 있어서의 분리형 블록을 포함하는 것을 나타낸 프로그램들은 간략화를 위해 상기 방식으로 나타내었다. 다수의 블록에 의해 설명된 함수들은 단일 함수, 웹 페이지 또는 다른 프로그램 엘리먼트로 결합될 수 있다. 또는, 단일 블록 내에서 수행된 것으로 나타내진 함수들은 다수의 프로그램 엘리먼트에서 실행될 수 있다. 전술한 바와 같은 하나의 블록의 함수들이 다수의 프로그램 엘리먼트에서 실행되는 경우, 상기 프로그램 엘리먼트들은 하나의 기능성 블록으로서 군집되어 보일 수 있다. 환언하면, 하나의 프로그램 엘리먼트가 다수의 블록들로 나타낸 함수들을 실행할 경우, 상기 블록은 상기 기능성 블록들의 전부 또는 그 중 임의의 것을 실행하도록 고려될 수 있다.
이러한 변경, 개조, 및 개량은 본 공개의 일부로서 의도된 것이며, 본 발명의 사상 및 영역 내에 존재하도록 의도된 것이다. 따라서, 전술한 설명 및 도면들은 일례에 불과하다.
본 발명의 전술한 실시예들은 수많은 방식으로 실현될 수 있다. 예를 들면, 상기 실시예들은 하드웨어, 소프트웨어, 또는 이들 조합을 이용하여 실행될 수 있다. 소프트웨어로 실행될 경우, 하나의 컴퓨터에 제공되든 다수의 컴퓨터 중에 분산되든, 소프트웨어 코드는 임의의 적절한 프로세서 또는 프로세서들의 콜렉션 상에서 실행될 수 있다.
또한, 본 명세서에 개설된(outlined) 다양한 매소드나 프로세스들은 다양한 동작 시스템 또는 플랫폼 중 임의의 하나를 채용하는 하나 이상의 프로세서들 상에서 실행가능한 소프트웨어로서 코딩될 수 있다. 또한, 상기 소프트웨어는 많은 수의 적절한 프로그래밍 언어 및/또는 종래의 프로그래밍이나 스크립팅 툴들 중 임의의 하나를 이용하여 작성될 수 있으며, 또한 실행가능한 기계 언어 코드로서 컴파일될 수도 있다.
이러한 관점에서, 본 발명의 일 실시예는, 하나 이상의 컴퓨터 또는 다른 프로세서들 상에서 실행될 경우, 전술한 본 발명의 다양한 실시예들을 실현하는 매소드들을 수행하는, 하나 이상의 프로그램을 이용하여 인코딩된 컴퓨터 판독가능 매체(또는 다수의 컴퓨터 판독가능 매체)(즉, 컴퓨터 메모리, 하나 이상의 플로피 디스크, 컴팩트 디스크, 광 디스크, 자기 테입 등)를 나타낸다. 상기 컴퓨터 판독가 능 매체 또는 미디어는 이동식이 가능하기 때문에, 그곳에 저장된 프로그램(들)은 전술한 본 발명의 다양한 양태들을 실행하기 위해 하나 이상의 서로 다른 컴퓨터나 다른 프로세서로 로딩될 수 있다.
본 명세서에서의 "프로그램"이란 일반적인 의미로, 전술한 본 발명의 다양한 양태들을 실현하기 위한 컴퓨터나 다른 프로세서를 프로그래밍하도록 채용될 수 있는 명령문들의 집합 또는 컴퓨터 코드 중 임의의 타입을 말한다. 또한, 본 실시예의 일 양태에 따르면, 본 발명의 수행 방법들을 실행할 경우 하나 이상의 컴퓨터 프로그램은 하나의 컴퓨터나 프로세서 상에 설치될 필요가 없지만, 본 발명의 다양한 양태들을 실현하기 위한 많은 수의 서로 다른 컴퓨터 또는 프로세서 중 모듈러 방식으로 분산될 수 있다.
또한, "파라미터(parameter)", "객체(object)", 및 "매소드(method)"는 일반적인 의미로 사용된다. 몇몇 프로그래밍 언어들은 값들을 함수에 넘기는 것과 관련하여 "파라미터"들을 정의하지만, 여기서의 상기 용어는 더 일반적인 의미로서 임의의 정보를 언급하는 것으로 사용된다. 마찬가지로, 몇몇 프로그래밍 언어들은 "객체" 및 "메소드"와 같은 용어들을 특정 프로그래밍 구성을 언급하는 것으로 사용된다. 명백히 다른 것을 나타내는 것이 아니라면, 여기서 사용된 상기 용어들은 상기 구성에만 국한되는 것은 아니다.
본 발명의 다양한 양태들이 개별적으로 이용되거나, 조합하여 이용되거나, 또는 전술한 실시예에서 구체적으로 논의되지 않은 다양한 구성으로 이용될 수 있기 때문에, 그 응용에 있어서, 전술한 상세한 설명란이나 도면에서 설명된 구성 요 소들의 구성에 한정되는 것은 아니다. 예를 들어, 일 실시예에서 기술된 양태들은 다른 실시예에서 기술된 양태들과 임의의 방식으로 조합될 수 있다.
클레임에 있어서, 클레임 엘리먼트를 조절하기 위한 "제1", "제2", "제3" 등의 원(original) 용어의 사용은 그 자체로 어떤 우선도나 선행, 또는 하나의 클레임 엘리먼트로부터 다른 엘리먼트로의 순서를 의미하거나 매소드가 수행되는 시간적인 순서를 나타내는 것이 아니라, 클레임 엘리먼트들을 구별하기 위해, 단지 소정의 네임을 갖는 하나의 클레임 엘리먼트를 동일한 네임(그러나, 서수적인 용어를 사용함)을 갖는 다른 엘리먼트와 구별하기 위한 라벨로 사용된 것이다.
또한, 여기서 사용된 어구나 용어는 설명을 목적으로 한 것이며, 한정의 의미를 갖는 것으로 간주되어서는 아니된다. "포함하는(including)", "포함하는(comprising)", 또는 "갖는(having)", "포함하는(containing)", "포함하는(involving)", 및 이들의 변형어들은 그 뒤에 리스트된 아이템들 및 부가 아이템뿐 만 아니라 그 균등물도 포함(encompass)한다는 의미를 갖는다.
컴퓨터 프로그램 리스팅
이하는, ASP.NET에서 실행되도록 구성된 테스트의 샘플이다.
Figure 112006007670820-pat00001
이하는, 호스트 어댑터의 실행을 위한 의사 코드(pseudocode)의 일례이다.
Figure 112006007670820-pat00002
테스트 실행 쉼은, 다음과 같은 폼으로 인터페이스를 통해 호스트 어댑터와 커뮤니케이션할 수 있다.
Figure 112006007670820-pat00003
이하는, 상기 클래스가 테스트 대상 유닛에 후 바인딩될 경우 액세서를 생성하는 데 사용될 수 있는 간단한 액세서 클래스 정의에 대한 일례이다.
Figure 112006007670820-pat00004
본 발명에 따르면, 호스트 환경에서의 테스트에 있어서, 호스트가 테스트 대상 유닛을 적절히 초기화하는 것을 보장하며, 호스트 어플리케이션에 의해 제공된 컨텍스트 정보가 상기 테스트 동안 이용가능하도록 허용함으로써, 더 완전하고 정확한 테스트를 가능하게 한다. 또한, 개발 환경과 호스트 환경 사이의 인터페이스가 비공개인 경우에도, 테스트 대상 소프트웨어의 방법, 특성, 및 다른 파라미터가 상기 개발 환경에 이용가능한 방식을 제공함으로써, 동적으로 인스턴스(instantiated)되는 프로그램에 대한 테스트의 생성을 가능하게 한다. 또한, 특정 유닛에 대한 테스트 프로그램을 준비하는 개발자를 위해 문맥 인식 정보를 제공할 수 있다

Claims (20)

  1. 컴퓨터에 의하여 실행되며, 제1 컴퓨팅 환경에서 작동되는 프로그램을 테스트하는 방법으로서 - 상기 프로그램은 적어도 하나의 테스트 대상 유닛을 포함하는 복수의 유닛을 구비함 - ,
    a) 제 2 컴퓨팅 환경에서 테스트 에이전트(test agent)를 실행하는 단계 - 상기 테스트 에이전트는 상기 적어도 하나의 테스트 대상 유닛을 테스트하기 위해 상기 제1 컴퓨팅 환경에서 수행되는 테스트를 특정하고, 상기 테스트 에이전트는 상기 적어도 하나의 테스트 대상 유닛의 비공개 (non-public) 인터페이스를 통하여 상기 특정 테스트에 대하여 상기 제 1 컴퓨팅 환경의 상기 적어도 하나의 테스트 대상 유닛과 통신하며, 상기 제1 컴퓨팅 환경은 실행 중인 어플리케이션 프로그램이고, 상기 프로그램은 상기 어플리케이션 프로그램으로의 애드인(add-in)임 - ;
    b) 상기 테스트 에이전트의 실행에 응답하여, 상기 제1 컴퓨팅 환경에서 상기 특정 테스트를 실행하는 단계 -상기 특정 테스트의 실행 단계는 상기 특정 테스트의 실행 단계 동안 상기 특정 테스트에 의하여 상기 제 1 컴퓨팅 환경의 상기 어플리케이션 프로그램의 비공개 속성, 변수 또는 다른 파라미터에 액세스하는 단계와 상기 테스트 대상 유닛의 성능 특성(performance characteristic)을 나타내는 테스트 결과를 생성하는 단계를 포함함 -; 및
    c) 상기 특정된 테스트의 실행을 통하여 상기 제 1 컴퓨팅 환경의 상기 어플리케이션 프로그램의 상기 액세스된 비공개 속성, 비공개 변수 또는 다른 비공개 파라미터들 중 적어도 일부에 대한 정보와 상기 테스트 결과를 상기 테스트 에이전트에게 제공하는 단계 -상기 제공 단계는 상기 정보 및 상기 테스트 결과를 상기 적어도 하나의 테스트 대상 유닛의 상기 비공개 인터페이스를 통하여 상기 제 2 컴퓨팅 환경의 상기 테스트 에이전트에게 통신하는 단계를 포함함-
    를 포함하는 프로그램 테스트 방법.
  2. 제1항에 있어서,
    상기 특정 테스트를 상기 제1 컴퓨팅 환경에서 실행한 테스트 결과를 상기 제 2 컴퓨팅 환경에서 실행되는 상기 테스트 에이전트에게 통신(communicate)하는 단계를 더 포함하는 프로그램 테스트 방법.
  3. 제2항에 있어서,
    상기 제1 컴퓨팅 환경에서 특정 테스트를 실행하는 단계는, 상기 제1 컴퓨팅 환경에서 인터페이스를 생성하는 단계 및 상기 인터페이스를 상기 제 2 컴퓨팅 환경 내의 어댑터에 등록(register)하는 단계를 포함하는 프로그램 테스트 방법.
  4. 제3항에 있어서,
    상기 특정 테스트를 실행하는 단계는:
    a) 상기 제1 컴퓨팅 환경에서 테스트 객체를 실행하는 단계; 및
    b) 상기 제1 컴퓨팅 환경 내의 인터페이스를 통해 상기 제 2 컴퓨팅 환경 내의 어댑터와 상기 테스트 객체 간에 통신하는 단계
    를 더 포함하는 프로그램 테스트 방법.
  5. 제2항에 있어서,
    상기 특정 테스트를 실행하는 단계는, 상기 제1 컴퓨팅 환경에서 테스트 어댑터(test adapter)를 실행하는 단계 및 상기 테스트 어댑터에 의해 상기 특정 테스트를 호출하는(invoke) 단계를 포함하는 프로그램 테스트 방법.
  6. 제5항에 있어서,
    상기 특정 테스트를 실행하는 단계는, 상기 특정 테스트를 나타내는 파라미터를 상기 테스트 어댑터를 이용하여 수신하는 단계 및 상기 파라미터에 응답하여 선택된 테스트를 호출하는 단계를 더 포함하는 프로그램 테스트 방법.
  7. 제5항에 있어서,
    상기 제1 컴퓨팅 환경은 확장성 인터페이스를 포함하며, 상기 테스트 어댑터를 실행하는 단계는 상기 확장성 인터페이스를 통해 제공된 명령에 응답하여 상기 제1 컴퓨팅 환경에서 테스트 어댑터를 실행하는 단계를 포함하는 프로그램 테스트 방법.
  8. 제1항에 있어서,
    상기 특정 테스트를 실행하는 단계는, 상기 적어도 하나의 테스트 대상 유닛을 상기 비공개 인터페이스를 통해 실행하는 단계를 포함하는 프로그램 테스트 방법.
  9. 제1항에 있어서,
    상기 특정 테스트를 상기 제1 컴퓨팅 환경에서 실행한 테스트 결과를 상기 테스트 에이전트에게 통신하는 단계는, 상기 테스트 결과를 상기 제1 컴퓨팅 환경의 비공개 인터페이스를 통하여 상기 테스트 에이전트에게 통신하는 단계를 포함하는 프로그램 테스트 방법.
  10. 제1항에 있어서,
    상기 제1 컴퓨팅 환경의 상기 특정된 테스트를 테스트 컴포넌트와 함께 실행하는 단계는, 상기 실행 중인 어플리케이션 프로그램이 테스트 모드로 실행 중인 동안 상기 제1 컴퓨팅 환경에서 상기 특정된 테스트를 실행하는 단계를 포함하는 프로그램 테스트 방법.
  11. 제1 컴퓨팅 환경에서 작동되는 프로그램을 테스트하는 방법으로서 -상기 제1 컴퓨팅 환경은 데이터를 저장하며 상기 데이터의 제 1 부분을 상기 제1 컴퓨팅 환경의 외부로 공개(expose)시킬 적어도 하나의 인터페이스를 포함하고, 상기 적어도 하나의 인터페이스에 의하여 공개된 상기 데이터의 제 1 부분은 공개 데이터며, 상기 적어도 하나의 인터페이스에 의하여 공개되지 않는 상기 데이터의 제 2 부분은 비공개 데이터이고, 상기 프로그램은 복수의 유닛을 구비하며, 상기 유닛들 중 적어도 하나는 테스트 대상 유닛임 - ,
    a) 상기 제1 컴퓨팅 환경에서 상기 프로그램을 로딩하는 단계;
    b) 상기 제1 컴퓨팅 환경에서 호스트 어댑터의 제1 인터페이스를 공개(expose)하는 단계;
    c) 상기 제1 컴퓨팅 환경을 테스트 모드에서 작동시키는 명령어를 상기 호스트 어댑터로 수신하고, 상기 명령어의 수신에 응답하여 상기 제1 컴퓨팅 환경을 상기 테스트 모드로 설정하고, 상기 제1 컴퓨팅 환경의 테스트 어댑터를 로딩하도록 상기 호스트 어댑터를 이용하는 단계 -상기 제 1 컴퓨팅 환경의 상기 테스트 어댑터는 상기 제1 컴퓨팅 환경 안에서 실행되며 상기 적어도 하나의 테스트 대상 유닛과는 분리됨- ;
    d) 상기 제1 컴퓨팅 환경에서 적어도 하나의 테스트 대상 유닛의 테스트를 실행하기 위하여, 상기 제1 컴퓨팅 환경에서 실행되는 상기 테스트 어댑터를 이용하는 단계
    e) 상기 제1 인터페이스를 통한 상기 테스트를 이용하여, 상기 제1 컴퓨팅 환경의 비공개 속성, 상기 제1 컴퓨팅 환경의 비공개 변수 또는 상기 제1 컴퓨팅 환경의 다른 비공개 파라미터를 상기 테스트가 실행되는 동안 액세스하는 단계 -상기 액세스 단계는 상기 테스트 대상 유닛의 제 2 인터페이스를 통하여 통신하는 단계를 포함하며, 상기 비공개 속성, 상기 비공개 변수 및 상기 비공개 파라미터는 상기 적어도 하나의 인터페이스를 통하여 상기 제1 컴퓨팅 환경의 외부에서 이용할 수 없는 비공개 데이터임-; 및
    f) 제 2 컴퓨팅 환경에서 실행되는 테스트 에이전트에게 상기 제 1 인터페이스를 통하여 상기 제1 컴퓨팅 환경의 상기 액세스된 비공개 속성, 비공개 변수 또는 다른 비공개 파라미터 중 일부에 대한 정보를 제공하는 단계를 포함하는 프로그램 테스트 방법.
  12. 제11항에 있어서,
    상기 제 2 컴퓨팅 환경에서 실행되는 테스트 에이전트의 실행에 응답하여 상기 제1 인터페이스를 통해 정보를 제공하는 단계는, 상기 제1 컴퓨팅 환경의 속성에 기초하여 테스트 실행 쉼(shim)을 선택하는 단계 -상기 테스트 실행 쉼은 상기 제 2 컴퓨팅 환경에서 실행되며, 상기 테스트 에이전트와 상호작용하며, 상기 제1 컴퓨팅 환경에 인터페이스를 제공함- 및 상기 테스트 실행 쉼을 통해 상기 제1 인터페이스에 액세스하는 단계를 포함하는 프로그램 테스트 방법.
  13. 제11항에 있어서,
    상기 제 2 컴퓨팅 환경에서 실행되는 테스트 에이전트의 실행에 응답하여 정보를 제공하는 단계는, 개발 환경에서 상기 테스트 에이전트를 실행하는 단계를 포함하는 프로그램 테스트 방법.
  14. 제11항에 있어서,
    상기 제1 컴퓨팅 환경에서 상기 프로그램을 로딩하는 단계는, 어플리케이션 프로그램을 이용하여 애드인(add-in) 프로그램을 로딩하는 단계를 포함하는 프로그램 테스트 방법.
  15. 제11항에 있어서,
    상기 제1 컴퓨팅 환경은 제1 프로세스에서 생성되고, 상기 제 2 컴퓨팅 환경은 제2 프로세스에서 생성되는 프로그램 테스트 방법.
  16. 제11항에 있어서,
    a) 상기 제1 컴퓨팅 환경에 상기 프로그램의 유닛의 파라미터들을 리플렉트(reflect)하는 단계; 및
    b) 상기 리플렉트된 파라미터들을 이용하여 상기 테스트 어댑터를 구성하는 단계
    를 더 포함하는 프로그램 테스트 방법.
  17. 복수의 호스트 환경들 중 하나에서 작동되는 프로그램의 유닛을 테스트하기 위한, 테스트 프로그램이 개발될 수 있는 개발 환경을 제공하는 소프트웨어 시스템을 구현하는 단계들을 수행하기 위한 컴퓨터 실행가능 명령을 구비한 컴퓨터 판독가능 기록 매체로서, 상기 컴퓨터 실행가능 명령은:
    a) 상기 개발 환경에서 실행되는 테스트 에이전트를 생성하는 단계;
    b) 테스트 실행 쉼을 생성하는 단계 -상기 테스트 실행 쉼은 상기 개발 환경에서 실행되며, 상기 테스트 에이전트와 상호작용하며, 상기 복수의 호스트 환경들 중 적어도 하나에 인터페이스를 제공함-; 및
    b) 복수의 호스트 어댑터들 중 하나를 생성하는 단계 - 호스트 어댑터 각각은 상기 복수의 호스트 환경들 중 하나에서 실행되며, 상기 호스트 환경 각각은 실 행 중인 어플리케이션 프로그램이고, 상기 호스트 어댑터는 테스트 대상 유닛과 분리되고, 상기 호스트 어댑터 각각은 상기 복수의 호스트 환경들 중 하나에서 테스트 프로그램의 실행을 호출(invoke)하기 위해 상기 테스트 에이전트에 의해 이용되도록 구성되며, 상기 테스트 프로그램의 실행 호출은 상기 유닛의 비공개 특성으로의 액세스를 제공하기 위하여 상기 실행되는 프로그램의 상기 유닛으로 상기 테스트 프로그램의 액세서 클래스(acessor class)를 후 바인딩(late binding)하는 단계를 포함함 -
    를 수행하는 컴퓨터 판독가능 기록 매체.
  18. 제17항에 있어서,
    상기 소프트웨어 시스템은:
    a) 테스트 프로그램 내의 명령 중 일부를 특정하는 유저로부터의 입력을 수신하는 단계; 및
    b) 상기 유저로부터의 입력에 응답하여, 상기 프로그램의 유닛에 액세스하기 위해 상기 테스트 프로그램의 명령에서 이용될 수 있는 파라미터들에 관련된 문맥 인식(context sensitive) 정보를 선택적으로 표시하는 단계
    를 수행하기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 기록 매체.
  19. 제18항에 있어서,
    상기 소프트웨어 시스템은, 상기 프로그램의 유닛으로부터 리플렉트된 상기 프로그램의 유닛에 관련된 파라미터들을 수신하는 단계들을 실현하기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 기록 매체.
  20. 제17항에 있어서,
    상기 소프트웨어 시스템은, 상기 프로그램의 유닛으로부터 리플렉트된 상기 프로그램의 유닛에 대한 정보에 기초하여, 테스트 프로그램을 구성하는 객체를 생성하기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 기록 매체.
KR1020060009694A 2005-03-23 2006-02-01 어플리케이션 호스트 환경에서 유닛 테스트를 실행하기 위한 방법 및 장치 KR101246967B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/087,260 US7954088B2 (en) 2005-03-23 2005-03-23 Method and apparatus for executing unit tests in application host environment
US11/087,260 2005-03-23

Publications (2)

Publication Number Publication Date
KR20060102479A KR20060102479A (ko) 2006-09-27
KR101246967B1 true KR101246967B1 (ko) 2013-04-01

Family

ID=36847827

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060009694A KR101246967B1 (ko) 2005-03-23 2006-02-01 어플리케이션 호스트 환경에서 유닛 테스트를 실행하기 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US7954088B2 (ko)
EP (2) EP1705567A3 (ko)
JP (1) JP2006268858A (ko)
KR (1) KR101246967B1 (ko)
CN (1) CN1838089B (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572437B2 (en) * 2005-07-20 2013-10-29 International Business Machines Corporation Multi-platform test automation enhancement
KR20070035266A (ko) * 2005-09-27 2007-03-30 삼성전자주식회사 소프트웨어 검사방법
US20080115114A1 (en) * 2006-11-10 2008-05-15 Sashank Palaparthi Automated software unit testing
US7809988B1 (en) * 2006-12-29 2010-10-05 The Mathworks, Inc. Test environment having synchronous and asynchronous distributed testing
US7945921B2 (en) * 2007-03-01 2011-05-17 Microsoft Corporation Cross application domain late binding to non-local types
KR100946417B1 (ko) * 2007-09-14 2010-03-09 주식회사 신한은행 프로그램 소스코드 테스트 방법
US8245186B2 (en) * 2008-04-03 2012-08-14 Microsoft Corporation Techniques for offering and applying code modifications
US10169199B2 (en) 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
US9632909B2 (en) 2008-12-16 2017-04-25 Microsoft Technology Licensing, Llc Transforming user script code for debugging
US8707264B2 (en) * 2010-05-18 2014-04-22 Salesforce.Com, Inc. Methods and systems for testing methods in a multi-tenant database environment
US8745581B2 (en) 2010-06-21 2014-06-03 Touch Technologies, Inc. Method and system for selectively copying portions of a document contents in a computing system (smart copy and paste
KR101459867B1 (ko) * 2010-06-28 2014-11-13 현대자동차주식회사 시스템 테스트 장치
US8826239B2 (en) 2010-10-06 2014-09-02 International Business Machines Corporation Asynchronous code testing in integrated development environment (IDE)
CN102567198B (zh) * 2010-12-30 2014-12-10 中国移动通信集团公司 对应用程序在物理系统环境中进行测试的系统及其方法
KR101459868B1 (ko) * 2011-03-15 2014-11-12 현대자동차주식회사 통신 테스트 장치 및 방법
JP2013069077A (ja) * 2011-09-21 2013-04-18 Canon Inc システム、情報処理装置およびその制御方法、画像形成装置およびその制御方法、並びにプログラム
US20170024305A1 (en) * 2014-02-11 2017-01-26 Hewlett Packard Enterprise Development Lp Client application profiling
US9514031B2 (en) 2014-09-22 2016-12-06 International Business Machines Corporation Auto-deployment and testing of system application test cases in remote server environments
CN105117243B (zh) * 2015-07-30 2018-07-24 北京奇虎科技有限公司 一种获取应用程序的启动时间的方法和装置
US9823997B2 (en) * 2015-08-11 2017-11-21 Bank Of America Corporation Production resiliency testing system
US10223247B2 (en) * 2016-07-05 2019-03-05 Red Hat, Inc. Generating pseudorandom test items for software testing of an application under test (AUT)
US10372597B2 (en) 2017-05-03 2019-08-06 International Business Machines Corporation Software testing and verification
CN111782445B (zh) * 2020-06-28 2023-08-15 百度在线网络技术(北京)有限公司 设备调试环境的配置方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051871A (ja) * 1999-08-09 2001-02-23 Ricoh Co Ltd リモートデバッグ装置
JP2002189617A (ja) * 2000-12-22 2002-07-05 Nec Corp 評価システム、及び評価方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819093A (en) * 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US5751941A (en) * 1996-04-04 1998-05-12 Hewlett-Packard Company Object oriented framework for testing software
US6083281A (en) * 1997-11-14 2000-07-04 Nortel Networks Corporation Process and apparatus for tracing software entities in a distributed system
US6035303A (en) * 1998-02-02 2000-03-07 International Business Machines Corporation Object management system for digital libraries
US6754891B1 (en) * 1998-08-31 2004-06-22 Red Hat, Inc. Debugger system using tracepoints for computer software
US6356946B1 (en) * 1998-09-02 2002-03-12 Sybase Inc. System and method for serializing Java objects in a tubular data stream
US6633888B1 (en) * 1999-02-03 2003-10-14 International Business Machines Corporation Method and apparatus for visually creating and testing object oriented components
US6609130B1 (en) * 1999-02-19 2003-08-19 Sun Microsystems, Inc. Method for serializing, compiling persistent textual form of an object-oriented database into intermediate object-oriented form using plug-in module translating entries according to grammar
US6438559B1 (en) * 1999-04-02 2002-08-20 Sybase, Inc. System and method for improved serialization of Java objects
US6477701B1 (en) * 1999-09-30 2002-11-05 Seiko Epson Corporation Version-adaptive serialization and deserialization of program objects in an object-oriented environment
US20010054172A1 (en) * 1999-12-03 2001-12-20 Tuatini Jeffrey Taihana Serialization technique
US20020010781A1 (en) * 1999-12-30 2002-01-24 Tuatini Jeffrey Taihana Shared service messaging models
US20030061292A1 (en) * 2001-03-23 2003-03-27 Mark Underseth System and method for providing an interface for com-compliant applications to communicate with embedded systems
US6745208B2 (en) * 2001-05-31 2004-06-01 International Business Machines Corporation Method and apparatus for synchronizing an XML document with its object model
US20040201600A1 (en) * 2001-12-14 2004-10-14 Microsoft Corporation Methods and system for providing an XML-based interface description language
US6931409B2 (en) * 2002-01-08 2005-08-16 International Business Machines Corporation Method, apparatus, and program to efficiently serialize objects
US7437713B2 (en) * 2002-01-10 2008-10-14 Microsoft Corporation Automated system that tests software on multiple computers
US7246358B2 (en) * 2002-04-09 2007-07-17 Sun Microsystems, Inc. Methods, system and articles of manufacture for providing an extensible serialization framework for an XML based RPC computing environment
US7150004B2 (en) * 2002-08-21 2006-12-12 International Business Machines Corporation Programmatically serializing complex objects using self-healing techniques
US7143310B2 (en) * 2003-01-22 2006-11-28 Sun Microsystems Inc. Generating standalone MIDlets from a testing harness
US7334162B1 (en) * 2003-01-29 2008-02-19 Sun Microsystems, Inc. Dynamic distribution of test execution
US20040215797A1 (en) * 2003-04-28 2004-10-28 Sun Microsystems, Inc. Creating and analyzing an identifier indicating whether data is in an expected form
US7404186B2 (en) * 2003-05-28 2008-07-22 Microsoft Corporation Signature serialization
US7386836B2 (en) * 2003-06-09 2008-06-10 International Business Machines Corporation Maintaining multiple valid concurrent serialized object versions
US20050071809A1 (en) * 2003-09-29 2005-03-31 Greggory Pulley System and method for serializing objects in a compiled programming language
US7467374B2 (en) * 2003-11-05 2008-12-16 Microsoft Corporation Serialization for structured tracing in managed code
US7661096B2 (en) * 2004-02-13 2010-02-09 Microsoft Corporation Interaction with nested and non-nested streams
US7676785B2 (en) * 2004-02-13 2010-03-09 Microsoft Corporation Hosted application as a designer in an integrated development environment
US7398469B2 (en) * 2004-03-12 2008-07-08 United Parcel Of America, Inc. Automated test system for testing an application running in a windows-based environment and related methods
US7366956B2 (en) * 2004-06-16 2008-04-29 Hewlett-Packard Development Company, L.P. Detecting data races in multithreaded computer programs
JP4902282B2 (ja) * 2006-07-12 2012-03-21 株式会社日立製作所 業務システム構成変更方法、管理コンピュータ、および、業務システム構成変更方法のプログラム
CN101398779A (zh) * 2007-09-26 2009-04-01 国际商业机器公司 测试逻辑与服务器端对象的松耦合式测试方法和系统
US7860983B1 (en) * 2008-08-11 2010-12-28 The United States Of America As Represented By The Secretary Of The Navy Enterprise identity orchestration server

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051871A (ja) * 1999-08-09 2001-02-23 Ricoh Co Ltd リモートデバッグ装置
JP2002189617A (ja) * 2000-12-22 2002-07-05 Nec Corp 評価システム、及び評価方法

Also Published As

Publication number Publication date
EP1705567A2 (en) 2006-09-27
EP2560100A1 (en) 2013-02-20
CN1838089B (zh) 2010-10-13
JP2006268858A (ja) 2006-10-05
CN1838089A (zh) 2006-09-27
US7954088B2 (en) 2011-05-31
EP1705567A3 (en) 2010-04-28
KR20060102479A (ko) 2006-09-27
US20060218446A1 (en) 2006-09-28

Similar Documents

Publication Publication Date Title
KR101246967B1 (ko) 어플리케이션 호스트 환경에서 유닛 테스트를 실행하기 위한 방법 및 장치
US8291375B2 (en) Attribute-based component programming system and methodology for object-oriented languages
US11010283B2 (en) Mock-based unit test(s) for an end-to-end test of a code snippet
US7320123B2 (en) Method and system for detecting deprecated elements during runtime
US8954929B2 (en) Automatically redirecting method calls for unit testing
US6026237A (en) System and method for dynamic modification of class files
US6931627B2 (en) System and method for combinatorial test generation in a compatibility testing environment
US8887141B2 (en) Automatically modifying a native code module accessed from virtual machine bytecode to determine execution information
US20060200806A1 (en) Apparatus, system, and method for trace insertion
US7373632B1 (en) System and method for dynamic generation of proxies for isomorphic interfaces
US8578339B2 (en) Automatically adding bytecode to a software application to determine database access information
US10042658B1 (en) Automatically adding bytecode to a software application to determine network communication information
US11726799B2 (en) Preventing framework conflicts for multi-OS applications
US7730492B1 (en) Method and system for running multiple virtual machines in a single process
JP2009512014A (ja) オブジェクト合成に対する拡張可能メカニズム
US6799320B1 (en) Providing binding options for component interfaces
CN111984263A (zh) 在第一系统运行第二系统应用的方法、装置、设备及介质
US7707593B2 (en) Object models enabling hosting content in a plurality of environments
CN1988479A (zh) 一种记录系统信息的方法和对象桩
WO2004088508A2 (en) A method of creating software that is portable across different operating systems
US8387007B2 (en) Scripting bridge
US7779430B2 (en) Method, system, and article of manufacture for providing service components
CN114490398A (zh) 用于对消费方对象进行测试的方法、装置、设备
Mens Software Maintenance and Evolution
Al-Gahmi et al. Scripting Runtime Dynamic Analyses

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee