KR20180018722A - 실패한 테스트 스크립트들에 대한 디버그 정보를 생성, 캡처, 저장 및 로딩하기 위한 방법 및 장치 - Google Patents

실패한 테스트 스크립트들에 대한 디버그 정보를 생성, 캡처, 저장 및 로딩하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20180018722A
KR20180018722A KR1020187001188A KR20187001188A KR20180018722A KR 20180018722 A KR20180018722 A KR 20180018722A KR 1020187001188 A KR1020187001188 A KR 1020187001188A KR 20187001188 A KR20187001188 A KR 20187001188A KR 20180018722 A KR20180018722 A KR 20180018722A
Authority
KR
South Korea
Prior art keywords
trace
source code
user interaction
code data
associated source
Prior art date
Application number
KR1020187001188A
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 KR20180018722A publication Critical patent/KR20180018722A/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/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for 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)
  • Stored Programmes (AREA)

Abstract

사용자 상호 작용없이, 실패한 테스트 스크립트에 대한 디버그 데이터를 생성, 캡처, 저장 및 로딩하기 위한 방법 및 시스템이 개시된다. 예시적인 실시예에서, 트레이스 캡처 컴포넌트는 실패한 테스트 스크립트를 자동으로 재-실행하고, 테스트 스크립트의 재실행 동안, 실패한 테스트 스크립트와 연관되는 실행 콘텍스트 정보 및 소스 코드 파일들을 캡처할 것이다. 실행 콘텍스트 정보 및 연관된 소스 코드는 데이터베이스 또는 다른 공유 저장 매체 상에 저장되고, 다수의 사용자들에 의한 동시적 디버깅을 허용하도록 다수의 사용자들이 액세스 가능하다. 캡처된 정보는 애플리케이션의 재-실행 또는 원래의 머신에 대한 액세스를 요구함 없이, 실패한 테스트 스크립트의 디버깅을 허용한다.

Description

실패한 테스트 스크립트들에 대한 디버그 정보를 생성, 캡처, 저장 및 로딩하기 위한 방법 및 장치
[0001] 소프트웨어가 더욱 정교해짐에 따라, 소프트웨어를 설계, 개발, 테스트 및 디버깅하는 툴들도 또한 더욱 진보되어 왔다. 결과적으로, 소프트웨어 개발자들은 이제 점점 더 팀으로 작업하고 자신들의 코드에서 에러들(흔히 "버그들"로서 지칭됨)를 식별하고 해결하는 데 도움을 주는 개발 툴들, 예컨대, 디버거들 및 테스트 스크립트들(test scripts)에 의존한다.
[0002] 일반적으로 IDE(integrated development environment) 솔루션의 일부인 디버거는 소스 코드에서 에러들을 식별하고 해결하는 데 사용되는 툴이다. 디버거들 내의 공통 컴포넌트는 디버거가 개발중인 애플리케이션과 같은 다른 프로세스의 실행을 레코딩, 관찰 및 제어하도록 허용하는 "실행 트레이서(execution tracer)"이다. 애플리케이션의 실행을 트레이싱하는 동안, 디버거는 애플리케이션이 실행 중일 때 애플리케이션의 "실행 콘텍스트 정보"에 액세스할 수 있다. 애플리케이션의 실행 콘텍스트 정보는 실행 경로, 메서드(method) 호출 이력, 호출 스택, 및 로컬 및 글로벌 변수들의 값들과 같은 정보를 포함할 수 있다.
[0003] 일반적으로, 실행 트레이싱은 "중단지점들(breakpoints)"과 함께 사용된다. 트레이스 지점들과 중단지점들은 거의 동의어이다. 주요 차이는 트레이스 지점들이 실행 트레이서에 의해 자동으로 세팅되고 처리된다는 것이다. 대조적으로, 중단지점은 사용자가 애플리케이션을 재개하기를 기다린다. 중단지점은 애플리케이션의 실행 동안 도달된 경우, 그 지점에서 애플리케이션의 실행을 중단하고 개발자에게 실행 콘텍스트 정보를 제공하는 코드의 특정 지점이다. 실행이 중단되는 동안, 개발자는 실행 콘텍스트 정보를 검토하여 에러의 원인을 결정할 수 있다. 디버깅을 계속하기 위해, 개발자는 다른 중단지점이 히트(hit)되거나 애플리케이션이 실행을 완료할 때까지 애플리케이션의 실행을 재개할 수 있다.
[0004] 디버깅 프로세스는 매우 지루하고 시간이 소모적이며, 중단지점을 세팅하고 애플리케이션을 실행하는 다수의 사이클들을 필요로 할 수 있다. 테스트가 실패하거나 애플리케이션에서 에러가 발생하면, 디버깅 프로세스에서 개발자의 첫 번째 단계는, 잠재적으로 에러를 유발하는 코드의 영역들을 식별하고, 그 코드 위치들에 수동으로 중단지점들을 세팅하고, 디버거를 사용하여 애플리케이션을 수동으로 재시작하고, 그 후 실행이 중단지점에 도달하기를 기다리는 것이다. 중단지점이 도달되는 경우, 개발자는 애플리케이션의 거동을 분석하기 위해 그 지점에서 애플리케이션의 실행 콘텍스트 정보를 검토한다. 개발자가 에러의 원인을 결정할 수 없는 경우, 개발자는, 실행이 다음 중단지점에 도달하거나 실행이 완료될 때까지 애플리케이션의 실행을 재개한다(또는 필요에 따라, 점진적으로 실행의 다음 단계로 진행함).
[0005] 에러를 해결할 수 없고 애플리케이션이 종결된 경우, 개발자는 디버거를 사용하여 애플리케이션을 재시작하고, 필요에 따라 다른 중단지점들을 수동으로 세팅해야 한다. 다른 개발자들이 애플리케이션의 디버깅을 보조하기를 원하는 경우, 이들은 로컬 개발 머신에 대한 액세스를 공유하고, 위에서 설명된 단계들을 사용하거나, 또는 자신들의 머신 상에 개발 환경(즉, 소스 코드, 바이너리들, 디버거)을 복제(이는 시간 소모적이고 자원 집약적이며, 여전히, 에러가 복제될 것임을 반드시 보장하진 않음) 해야 한다.
[0006] 발명자에 의해 인지되는 바와 같이, 애플리케이션의 수동 재-실행 또는 로컬 개발 머신에 대한 액세스를 요구하지 않으면서, 애플리케이션 에러 또는 실패된 테스트를 디버그하는 데 필요한 디버그 정보를 생성, 캡처, 저장 및 로딩하기 위한 방법 또는 툴이 필요하다.
[0007] 본 명세서는 테스트 스크립트들을 사용하여 소프트웨어 디버깅과 관련된 기술을 설명하며, 특히, 실패한 테스트 스크립트들의 실행 콘텍스트 정보를 캡처, 저장 및 공유하기 위한 방법들 및 시스템들에 관한 것이다.
[0008] 일반적으로, 본 명세서에서 설명된 청구 대상의 일 양상은, 사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅 데이터를 캡처 및 저장하기 위한 방법들 및 컴포넌트들로 실시될 수 있다. 예시적인 컴포넌트는 하나 또는 그 초과의 프로세싱 디바이스들 및 명령들을 저장하는 하나 또는 그 초과의 저장 디바이스들을 포함하며, 명령들은, 하나 또는 그 초과의 프로세싱 디바이스들에 의해 실행될 때, 하나 또는 그 초과의 프로세싱 디바이스들로 하여금, 예시적인 방법을 구현하게 한다. 예시적인 방법은, 소프트웨어 테스트 스크립트를 실행하는 단계; 및 소프트웨어 테스트 스크립트의 성공적이지 않은 실행에 응답하여, 사용자 상호작용 없이, 테스트 스크립트를 재-실행하는 단계; 사용자 상호작용 없이, 테스트 스크립트의 실행의 트레이스(trace) 및 연관된 소스 코드 데이터를 캡처하는 단계; 및 사용자 상호작용 없이, 테스트 스크립트의 트레이스 및 연관된 소스 코드 데이터를 저장하는 단계를 포함할 수 있다.
[0009] 이들 및 다른 실시예들은 선택적으로 다음의 특징들, 즉: 성공적이지 않은 실행은 테스트의 실패를 포함할 수 있는 것; 성공적이지 않은 실행은 테스트의 시간초과(timeout)를 포함할 수 있는 것; 원격 개발 환경 상에서의 디버깅을 위해, 저장된 트레이스 및 연관된 소스 코드 데이터를 로딩하는 것; 데이터베이스에 트레이스 및 연관된 소스 코드 데이터를 저장하고 이로부터 액세스하는 것; 로컬 개발 환경에 트레이스 및 연관된 소스 코드 데이터를 저장하고 이로부터 액세스하는 것; 데이터베이스와 같은 저장 매체를 통해, 다수의 사용자들에게 저장된 트레이스 및 연관된 소스 코드 데이터에 대한 동시적 액세스들을 제공하는 것; 트레이스 및 연관된 소스 코드 데이터를 사용자에게 디스플레이하는 것; 트레이스 및 연관된 소스 코드 데이터를 IDE(integrated development environment)에 디스플레이하는 것 중 하나 또는 그 초과를 포함할 수 있다.
[0010] 본 발명의 하나 또는 그 초과의 실시예들의 세부사항들은, 단지 예시로서 제공되는 첨부된 도면들 및 하기 설명에서 기술된다. 본 발명의 다른 특징들, 양상들, 및 이점들은 설명, 도면들, 및 청구항들로부터 명백해질 것이다. 다양한 도면들 내의 유사한 참조 번호들 및 지정들은 유사한 엘리먼트들을 표시한다.
[0011] 도 1은 소스 코드 파일들, 바이너리 파일들, 유닛 테스트 파일들, 디버거 및 본원에서 설명된 방법을 수행하는 트레이스 캡처 컴포넌트를 포함하는 로컬 개발 환경을 예시하는 도면이다. 디버그 데이터를 포함하는 데이터베이스를 호스팅하는 서버가 또한 예시된다.
[0012] 도 2는 3개의 메서드들을 선언한 클래스의 예시적인 소스 코드 파일이다.
[0013] 도 2a는 도 2에서 선언된 메서드(MethodA)의 예시적인 소스 코드이다.
[0014] 도 3a는 "SUCCESS"을 리턴하는 MethodA에 대한 유닛 테스트의 실행의 예이다.
[0015] 도 3b는 "FAIL"을 리턴하는 MethodA에 대한 유닛 테스트의 실행의 예이다.
[0016] 도 4는 유닛 테스트를 디버깅하는 개발자의 종래 방법의 흐름도이다.
[0017] 도 5는 어떠한 사용자 상호작용도 요구함 없이 유닛 테스트의 디버그 데이터를 생성, 캡처 및 저장하기 위한 예시적인 방법의 흐름도이다.
[0018] 도 6은 다수의 원격 사용자들/개발자들이 액세스 가능한 데이터베이스 상에 저장된 디버그 데이터를 예시하는 도면이다.
[0019] 도 7은 애플리케이션의 재-실행 또는 로컬 개발 환경에 대한 액세스를 요구함 없이 개발자가 유닛 테스트를 디버깅하는 방법의 흐름도이다.
[0020] 도 8은 로컬 개발 환경에서 유닛 테스트를 디버깅하는 IDE의 사용자 인터페이스의 스크린샷이다.
[0021] 도 9는 예시적인 컴퓨팅 디바이스를 예시하는 블록도이다.
[0022] 본원에서 설명된 예시적인 실시예는, 개발자가 디버깅 프로세스를 셋업하거나 활성 디버거/디버깅 프로세스와 상호작용할 필요 없이, 로컬 개발 환경으로부터 실패한 테스트 스크립트에 대한 디버그 데이터를 생성, 캡처, 저장 및 로딩하기 위한 단계들을 포함한다. 도 1은 로컬 개발 환경(105) 및 데이터베이스(155)를 도시한다. 로컬 개발 환경(105)은 소스 코드 파일들(110), 소스 코드 파일들(110)과 연관된 실행 가능 바이너리들(115), 바이너리들(115)에 대해 실행될 유닛 테스트들(120), 실행 트레이스 데이터를 생성하기 위한 디버거(125) 및 본원에서 설명된 방법을 구현하기 위한 트레이스 캡처 컴포넌트(trace capture component)(130)를 포함할 수 있다. 본원에서 설명된 로컬 개발 환경(105)은 단지 예로서 의도되며 본 발명의 범위를 제한하는 것으로 고려되어서는 안 된다. 일부 실시예들에서, 개발 환경(105)은 원격 라이브러리들 및 서비스들에 대한 액세스를 요구하는 다수의 위치들에서의 소스 코드 및 바이너리들을 통해 보다 정교해질 수 있다. 또한, 개발 머신에는 IDE(integrated development environment) 소프트웨어를 가질 수 있다.
[0023] 예시적인 실시예에서, IDE는 소스 코드 파일들, 바이너리들, 디버거, 컴파일러, 프로파일러 및 통합된 소프트웨어 솔루션의 다른 개발 컴포넌트들을 관리할 수 있다. 이 예시적인 실시예는 이들 IDE 엘리먼트들을 갖는 트레이스 캡처 컴포넌트(130)의 기능성을 설명한다. 이 예에서 트레이스 캡처 컴포넌트(130)는 자립형 컴포넌트로서 도시되었지만, 다른 예들에서, 컴포넌트(130)는 디버거(125)에, 확장으로서 IDE에 또는 서비스로서 서버 상에 통합될 수 있다.
[0024] 도 1은 또한 실패한 유닛 테스트에 대한 연관된 실행 트레이스 및 소스 코드 데이터를 포함하는 디버그 데이터(160, 165, 170)를 저장할 수 있는 데이터베이스(155)를 도시한다. 이 예시적인 실시예에서, 일반적으로, 실패한 테스트들만이 디버깅을 요구하기 때문에, 실패한 테스트들만이 처리되고 데이터베이스(155)에 저장되지만, 이 방법은 실패한 테스트들로 제한되지 않고, 성공적인 유닛 테스트 및 일반적인 애플리케이션 테스팅을 포함하여 모든 디버깅에 적용될 수 있다.
[0025] 도 2는 3개의 메서드들 즉, MethodA(205), MethodB(210) 및 MethodC(215)를 선언하는 클래스에 대한 소스 코드 파일의 예이다. 도 2a는 선언된 메서드 중 하나인 MethodA(205)의 예시적인 소스 코드이다. MethodA는 2개의 정수 입력 파라미터들을 가지며, 참(true) 또는 거짓(false)의 부울 값(boolean value)을 리턴할 수 있다. 제 1 파라미터(x)가 제 2 파라미터(y)의 값의 절반인 경우, MethodA는 참을 리턴해야 하고, 그렇지 않으면, 메서드는 거짓을 리턴해야 한다. 이 메서드와 연관된 유닛 테스트들의 잘-구성된 세트는, 다음의 경우들, 1) x의 값이 y의 값의 절반일 때, 그리고 2) x의 값이 y의 값의 절반이 아닐 때 둘 모두를 테스트할 것이다. 여기서, 소스 코드는 에러성으로 항상 참을 리턴하고, 이에 따라 버그를 포함한다. 따라서, 이 메서드에 대한 유닛 테스트는 제 1 파라미터(x)가 제 2 파라미터(y)의 값의 절반이 아닐 때를 테스트하고, 소스 코드의 버그/에러를 표시하도록 (아래의 도 3b에서 추가로 예시되는 바와 같이) "거짓"을 리턴해야 한다.
[0026] 도 3a는 MethodA와 연관된 유닛 테스트의 예시적인 실행이다. 소프트웨어 테스트 스크립트인 MethodA_UnitTest1은 입력 파라미터들(6 및 12)을 갖는 MethodA를 호출한다. 이 예에서, 제 1 파라미터(x)가 제 2 파라미터(y)의 값의 절반인 경우 메서드가 참을 리턴하는지를 유닛 테스트가 테스트하기 때문에, 테스트는 성공적이다. 6의 값이 12의 절반이기 때문에, 테스트는 참의 리턴 값을 기대하며, 메서드는 실제로 참의 값을 리턴한다. 따라서, 테스트는 통과된다.
[0027] 도 3b는 다른 유닛 테스트의 예시적인 실행이다. MethodA_UnitTest2는 또한 MethodA를 호출하지만 입력 파라미터들은 1 및 10이다. 1이 10의 값의 절반이 아니기 때문에, 유닛 테스트는 거짓의 리턴 값을 기대하지만, 메서드는 실제로 참의 값을 리턴한다. 따라서, 유닛 테스트는 실패하고 애플리케이션의 잠재적 버그에 관한 경고를 발생시킨다.
[0028] 유닛 테스트들은 애플리케이션을 실행하고 테스트하는 단지 하나의 수단이다. 본원에서의 유닛 테스트들의 사용은 단지 예로서 의도되며 본 발명의 범위를 제한하는 것으로 고려되어서는 안 된다. 예를 들어, 다른 유형들의 테스트팅은 일반(비-유닛) 테스트 스크립트들, 자동화된 GUI 테스트 툴들 또는 사용자 구동 테스팅을 포함할 수 있다. 한 번에 하나의 메서드가 테스트되는 본원에서 설명된 메서드-포커스-유형의 유닛 테스트들은 또한 단지 예일 뿐이고, 또한 본 발명의 범위를 제한하는 것으로 고려되어서는 안 된다. 유닛 테스트들의 구조 및 복잡성 또는 개발중인 애플리케이션과 연관된 다른 테스트 전략들은 애플리케이션의 개발 및 설계에 기초하여 변동될 수 있다.
[0029] 도 4는 유닛 테스트를 디버깅하기 위한 종래 방법의 흐름도이다. 일반적으로, 유닛 테스트들 모두 또는 그의 세트는, 코드 변경이 있었고 애플리케이션의 연관된 바이너리들이 리빌딩(rebuilding)되었을 때 개발자에 의해 인보크(invoke)되거나 자동으로 실행된다. 유닛 테스트들은 빌드(build)의 무결성을 검증하고 코드 변경들로부터 발생하는 임의의 잠재적인 에러들을 검출하도록 새롭게 생성된 빌드에 대해 실행된다. 통상적으로, 유닛 테스트가 실패할 때, 개발자는 실행 콘텍스트 정보를 검토하기 위해 본원에서 보다 상세히 설명되는 바와 같이 소스 코드에서 중단지점들을 세팅하고 디버거를 사용하여 애플리케이션을 재-실행하는 수동 프로세스를 거친다.
[0030] 종래의 방법은 유닛 테스트의 실행(410)으로 시작된다(405). 테스트가 통과되는 경우(415, 416)(어떠한 버그도 검출되지 않고) 개발자는 아무것도 하지 않는다(420). 테스트가 실패하는 경우(415, 417), 개발자는 먼저 실패를 유발한 소스 코드의 영역을 결정하도록 유닛 테스트 및 임의의 연관된 에러들을 검토한다(425). 다음으로, 개발자는 코드의 이 영역들에 중단지점을 세팅하여 이들 지점들에서 애플리케이션의 실행을 중단하도록 디버거에 지시한다(430). 그 후, 개발자는 애플리케이션의 실행을 트레이싱하도록 디버거를 사용하여 유닛 테스트를 재시작한다(435). 애플리케이션 실행이 중단지점(440, 441)에 도달하는 경우, 디버거는 그 지점에서 애플리케이션의 실행을 중단하고 애플리케이션의 실행 콘텍스트 정보를 개발자에게 제공한다. 개발자는 그 정보를 검토(445)하여 버그를 시험(try)하고 해결(450)한다.
[0031] 개발자가 버그를 해결할 수 있는 경우(450, 451), 방법은 완료되며(460), 개발자는 필요한 소스 코드 변경들을 구현할 수 있다. 그러나 개발자가 버그를 해결할 수 없는 경우(450, 452), 개발자는 애플리케이션의 실행을 재개한다(455). 다른 중단지점이 히트되는 경우(440, 441), 실행은 다시 중단되고 개발자는 중단지점에서 실행 콘텍스트 정보(445)를 검토하여 버그를 시험하고 해결하기 위한 단계들을 반복한다. 어떠한 중단지점들도 히트되지 않으면(440, 442), 실행이 지속될 수 있는데, 즉, 실행은 완료되거나 종결되고 버그가 여전히 존재한다.
[0032] 개발자는 그 후 유닛 테스트를 검토하는 단계(425)로 리턴한다. 도시된 바와 같이, 유닛 테스트들 및 소스 코드 파일들을 수동으로 검토하고 중단지점들을 세팅하고 애플리케이션을 재-실행하는 다수의 사이클들을 잠재적으로 요구하는 이 프로세스는, 개발자에게 매우 시간 소모적이고 지루할 수 있다. 또한, 이것은 개발자가 애플리케이션에 상주하는 로컬 개발 머신에 액세스하고 디버거를 사용하여 애플리케이션을 실행하고 연관된 소스 코드에 중단지점을 수동으로 세팅하여 애플리케이션에 대한 실행 콘텍스트 정보를 검토할 것을 요구한다.
[0033] 도 5는 예시적인 실시예에 따라, 어떠한 사용자 상호작용도 없이, 실패한 유닛 테스트의 실행에 이어 트레이스 캡처 컴포넌트에 의해 생성된 관련 디버그 데이터를 생성, 캡처 및 저장하기 위한 예시적인 방법을 도시하는 흐름도이다. 이 예시적인 실시예에서, "실패한 유닛 테스트"는 기대된 리턴 값이 실제 리턴 값과 매칭하지 않는 경우를 표현하지만, 이것이 본 발명의 범위를 제한하는 것으로 고려되어서는 안 된다. "실패"는 코드가 비효율적이거나 성능 기준에 못미치는(non-performant) 경우들을 또한 포함할 수 있다.
[0034] 예시적인 방법은 유닛 테스트의 실행(510)으로 시작된다(505). 테스트가 통과되는 경우(515, 516), 이 방법은 아무것도 하지 않을 수 있다(520). 테스트가 실패하는 경우(515, 517)(소프트웨어 테스트 스크립트의 실행이 성공적이지 않은 것을 의미함), 예시적인 방법은 사용자 상호작용 없이, 디버거를 사용하여 유닛 테스트를 자동으로 재-실행하고 실행 트레이싱이 인에이블된다(525). 이 재-실행 단계는 개발자가 이 단계를 수동으로(435), 아마도, 여러 번(450, 452) 그리고 소스 코드를 검토하는 것(425) 그리고 수동 중단지점들을 세팅하는 것(430)과 같이 몇 개의 다른 이전의 단계들과 함께 수행하는 종래의 방법과 대조적이다. 이 예시적인 방법에서, 트레이스 캡처 컴포넌트는 사용자 상호작용 없이, 유닛 테스트의 실행 경로와 연관된 소스 코드의 각각의 라인에 대한 트레이스 지점들을 자동으로 세팅할 수 있고(530), 소스 코드의 각각의 라인에 대한 실행 콘텍스트 정보를 캡처할 수 있다(535). 트레이스 캡처 컴포넌트는 또한, 사용자 상호작용 없이, 소스 코드 파일들의 위치, 유형 및 크기와 같은 소정의 팩터들에 기초하여 실행 콘텍스트 정보를 자동으로 캡처 및 저장하도록 구성/최적화될 수 있다. 이들은 트레이스 캡처 컴포넌트/방법의 효과 및 효율을 개선하기 위한 단지 일부의 예시적인 팩터들일 뿐이며, 본 발명의 범위를 제한하는 것으로 고려되어서는 안 된다. 소프트웨어 테스트 스크립트의 실행은 테스트의 실패의 경우 또는 테스트 시간초과(timeout)의 경우에 성공적이지 않다.
[0035] 대조적으로, 종래의 방법에서, 개발자는 연관된 소스 코드 파일을 결정하도록 수동으로 유닛 테스트를 검사하고(425) 그 코드 영역을 트레이싱하도록 연관된 소스 코드에서 중단지점들을 수동으로 세팅하고(430) 그 지점들에서 실행 콘텍스트 정보를 검토한다(445).
[0036] 예시적인 방법에서, 캡처된 관련 트레이스 데이터(즉, 실행 콘텍스트 정보 및 연관된 소스 코드)는 그 후, 다수의 개발자들에 의한 검토를 위해 데이터베이스 또는 다른 저장 매체 상에 저장(540)되고 이로부터 액세스될 수 있다. 일부 예들에서, 단지 실패한 유닛 테스트에 대한 관련 트레이스 데이터만이 저장될 수 있다. 저장된 트레이스 및 연관된 소스 코드 데이터에 대한 동시적 액세스가 다수의 사용자들에게 제공된다. 이는 예시적이 방법을 완료하며(545), 유닛 테스트를 위해 캡처된 디버그 데이터는 애플리케이션을 재실행하거나 로컬 개발 머신에 액세스할 필요 없이, 에러를 디버깅하기 위해 임의의 개발자에 의해 이제 사용될 수 있다. 이는 개발자가 로컬 개발 머신에 액세스하여 애플리케이션이 실행중인 동안 애플리케이션을 디버깅하는 종래의 방법에 현저히 대조적이다.
[0037] 도 6은 MethodA_UnitTest2(610)에 대한 디버그 데이터를 포함하는 데이터베이스(605)의 예이다. 도 3b의 본 예 및 도 5의 흐름도에 기초하여, 이것은 예시적인 실시예에서 설명된 바와 같은 방법을 적용할 때의 결과이어야 한다. 도시된 바와 같이, 원래의 개발자 또는 팀의 다른 개발자들과 같은 다수의 사용자들(615, 620, 625)은, 애플리케이션을 재-실행하거나 로컬 개발 환경에 액세스할 필요 없이, 디버그 데이터(630)(유닛 테스트에 대한 캡처된 실행 콘텍스트 정보 및 연관된 소스 코드)에 액세스하여 자신의 로컬 머신에 리트리브(retrieve)할 수 있다.
[0038] 도 7은 애플리케이션의 재-실행 또는 원래의 로컬 개발 환경에 대한 액세스를 요구함 없이, 개발자가 유닛 테스트를 디버깅하는 방법의 흐름도이다. 예시적인 방법은 705에서 시작하며, 개발자는 (도 5에서 설명된 바와 같이) 캡처되고 (도 6에서 설명된 바와 같이) 저장될 수 있는, 유닛 테스트에 대한 디버그 데이터를 로딩(710)할 수 있다. 이 데이터를 사용하여, 개발자는, 유닛 테스트 또는 애플리케이션을 재-실행함 없이, 자신의 로컬 머신(즉, 원래의 개발 머신이 아님)으로부터 버그를 해결하도록, IDE(integrated development environment) 소프트웨어와 같은 사용자 인터페이스에서 실행 콘텍스트 및 연관된 소스 코드를 검토할 수 있다(715).
[0039] 도 8은 MethodA_UnitTest2_DebugData에 대한 디버그 데이터를 갖는 새로운 개발 환경, 이 경우에, 로컬 개발 환경 2 상의 IDE 사용자 인터페이스 스크린 샷의 예이다. 이 예에서, 실패한 유닛 테스트에 대한 디버그 데이터가 캡처되고, 저장되며, 이제 원래의 로컬 개발 환경(105)이 아닌 상이한 새로운 개발 환경인 로컬 개발 환경 2(800)에 로컬로 로딩된다. 이 예시적인 UI는 유닛 테스트에 대한 연관된 소스 코드 파일(815, 816, 817)을 나열하고 개발자가 선택하도록 허용하는 IDE 소프트웨어(805)를 도시한다. 또한, 사용자 인터페이스는, 애플리케이션의 실행 트레이스를 탐색(navigate through)하기 위해, 애플리케이션이 실제로 로컬 머신 상에서 실행되고 있을 때와 유사한 디버깅 능력들, 예컨대, "step back"(820), "step forward"(821), "step into method"(822), 및 "step out of method"(823) 옵션들을 제공한다. 여기서 "step into method" 기능성은, 실행 지점(835)이 메서드 호출인 코드의 라인 상에 있지 않기 때문에 인에이블되지 않는다. 트레이스 캡처 컴포넌트로부터 캡처된 디버그 데이터는, 원래의 로컬 개발 환경 상의 디버거와 유사한 기능성을 개발자에게 허용한다. 내부 윈도우(825)는 또한 라인 번호들(830)과 함께, 이 경우 MethodA에 대한 관련 소스 코드를 디스플레이한다. 디버깅 프로세스에서 현재 실행 지점(835)이 또한 개발자에게 강조된다. 그 지점(835)에서의 실행 콘텍스트 정보가 아래 윈도우(845)에 디스플레이된다. 강조된 현재 실행 지점(835)과 디버깅 정보(840-845)는 개발자가 소스 코드의 다른 라인들(830)을 클릭하거나, 이들로 "스테핑"(820-823)할 때 업데이트된다. 개발자는 또한, 로컬 변수 정보(840), 호출 스택 데이터(841), 메서드 이력(842) 또는 변수 이력(843)과 같이, 디스플레이할 실행 콘텍스트 정보(840-843)의 유형을 선택할 수 있다. 이 스크린샷에서, 유닛 테스트의 실행 동안 실행 지점(835) 라인 8에서 로컬 변수들의 값들을 디스플레이(845)하는 "로컬들"(840)이 선택된다. 이제, 개발자는, 이 경우에, 로컬 변수가 올바르게 로딩되지만 리턴 값이 올바르지 않는다는 것을 결정할 수 있고, 이에 따라 버그를 해결할 수 있다.
[0040] 도 9는 컴퓨팅 디바이스(900)상의 애플리케이션을 보여주기 위한 고-레벨 블록도이다. 기본 구성(901)에서, 컴퓨팅 디바이스(900)는 통상적으로 하나 또는 그 초과의 프로세서들(910), 시스템 메모리(920) 및 메모리 버스(930)를 포함한다. 메모리 버스는 프로세서들과 시스템 메모리 간의 통신을 수행하는 데 사용된다. 구성은 또한 위에서 설명된 방법을 구현하는 자립형 트레이스 캡처 컴포넌트(926)를 포함할 수 있거나, 또는 애플리케이션(922, 923)에 통합될 수 있다.
[0041] 상이한 구성들에 의존하여, 프로세서(910)는 마이크로프로세서(μP), 마이크로제어기(μC), DSP(digital signal processor) 또는 이들의 임의의 결합일 수 있다. 프로세서(910)는 L1 캐시(911) 및 L2 캐시(912)와 같은 하나 또는 그 초과의 레벨들의 캐싱, 프로세서 코어(913) 및 레지스터들(914)을 포함할 수 있다. 프로세서 코어(913)는 ALU(arithmetic logic unit), FPU(floating point unit), DSP 코어(digital signal processing core), 또는 이들의 임의의 결합을 포함할 수 있다. 메모리 제어기(916)는 프로세서(910)의 독립적인 부분 또는 내부 부분일 수 있다.
[0042] 원하는 구성에 의존하여, 시스템 메모리(920)는 휘발성 메모리(예컨대, RAM), 비-휘발성 메모리(예컨대, ROM, 플래시 메모리 등) 또는 이들의 임의의 결합을 포함(그러나 이에 제한되지 않음)하는 임의의 유형의 메모리일 수 있다. 시스템 메모리(920)는 통상적으로 운영 체제(921), 하나 또는 그 초과의 애플리케이션들(922) 및 프로그램 데이터(924)를 포함한다. 애플리케이션(922)은, 트레이스 캡처 컴포넌트(926), 또는 테스트 또는 애플리케이션의 실행의 디버그 데이터를 생성, 캡처, 저장 및 로딩하기 위한 시스템 및 방법(923)을 포함할 수 있다. 프로그램 데이터(924)는, 하나 또는 그 초과의 프로세싱 디바이스들에 의해 실행될 때, 설명된 방법 및 컴포넌트에 대한 시스템 및 방법(923)을 구현하는 명령들을 저장하는 것을 포함한다. 또는, 명령들 및 방법의 구현은 트레이스 캡처 컴포넌트(926)를 통해 실행될 수 있다. 일부 실시예들에서, 애플리케이션(922)은 운영 체제(921) 상의 프로그램 데이터(924)로 동작하도록 배열될 수 있다.
[0043] 컴퓨팅 디바이스(900)는, 부가적인 특징들 또는 기능성, 및 기본 구성(901)과 임의의 요구되는 디바이스들 및 인터페이스들 간의 통신을 용이하게 하기 위한 부가적인 인터페이스들을 가질 수 있다.
[0044] 시스템 메모리(920)는 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk)들 또는 다른 광학 저장소, 자기 카세트들, 자기 테이프, 자기 디스크 저장 또는 다른 자기 저장 디바이스들, 또는 원하는 정보를 저장하는 데 이용될 수 있고 컴퓨팅 디바이스(700)에 의해 액세스될 수 있는 임의의 다른 매체를 포함(그러나 이에 제한되지 않음)한다. 임의의 그러한 컴퓨터 저장 매체는 디바이스(900)의 일부일 수 있다.
[0045] 컴퓨팅 디바이스(900)는 셀 폰, 스마트폰, PDA(personal data assistant), 개인용 미디어 플레이어 디바이스, 태블릿 컴퓨터(태블릿), 무선 웹-감시 디바이스, 개인용 헤드셋 디바이스, 애플리케이션-특정 디바이스 또는 위의 기능들 중 임의의 것을 포함하는 하이브리드 디바이스와 같은 소형 팩터 휴대용(또는 모바일) 전자 디바이스의 일부로서 구현될 수 있다. 컴퓨팅 디바이스(900)는 또한 랩톱 컴퓨터 및 비-랩톱 컴퓨터 구성들 둘 모두를 포함하는 개인용 컴퓨터로서 구현될 수 있다.
[0046] 위의 상세한 설명은 블록도들, 흐름도들 및/또는 예들의 사용을 통해 디바이스들 및/또는 프로세스들의 다양한 실시예들을 기술하였다. 이러한 블록도들, 흐름도들 및/또는 예들이 하나 또는 그 초과의 기능들 및/또는 동작들을 포함하는 한, 그러한 블록도들, 흐름도들 또는 예들 내의 각각의 기능 및/또는 동작은 광범위한 하드웨어, 소프트웨어, 펌웨어 또는 사실상 이들의 임의의 결합에 의해 개별적으로 및/또는 집합적으로 구현될 수 있다는 것이 당업자들에 의해 이해될 것이다. 일 실시예에서, 본원에서 설명되는 청구 대상의 몇 개의 부분들은 ASIC(Application Specific Integrated Circuit)들, FPGA(Field Programmable Gate Array)들, DSP(digital signal processor)들 또는 다른 통합된 포맷들을 통해 구현될 수 있다. 그러나 당업자들은, 본원에서 개시된 실시예들의 일부 양상들이 전체적으로 또는 부분적으로, 집적 회로들에, 하나 또는 그 초과의 컴퓨터들 상에서 실행되는 하나 또는 그 초과의 컴퓨터 프로그램들로서, 하나 또는 그 초과의 프로세서들 상에서 실행되는 하나 또는 그 초과의 프로그램들로서, 펌웨어로서, 또는 사실상 이들의 임의의 결합으로서 등가로 구현될 수 있고, 소프트웨어 및/또는 펌웨어를 위한 코드를 작성하는 것 그리고/또는 회로를 설계하는 것은 또한 본 개시에 비추어 당연히(well) 당업자들의 기술 내에 있을 것이란 것을 인지할 것이다. 또한, 당업자들은, 본원에서 설명된 청구 대상의 메커니즘들이 다양한 형태들의 프로그램 제품으로서 배포될 수 있고, 본원에서 설명된 청구 대상의 예시적인 실시예는 배포를 실제로 수행하는 데 사용되는 특정한 유형의 비-일시적인 신호 보유 매체와 무관하게 적용된다는 것을 인지할 것이다. 비-일시적인 신호 보유 매체의 예들은, 플로피 디스크, 하드 디스크 드라이브, CD(Compact Disc), DVD(Digital Video Disk), 디지털 테이프, 컴퓨터 메모리 등과 같은 레코딩 가능 유형 매체, 및 디지털 및/또는 아날로그 통신 매체와 같은 송신 유형 매체(예를 들어, 광섬유 케이블, 도파관, 유선 통신 링크, 무선 통신 링크 등)를 포함(그러나 이에 제한되지 않음)한다.
[0047] 본원에서의 임의의 복수 및/또는 단수 용어들의 사용과 관련하여, 당업자들은 콘텍스트 및/또는 적용에 적절하면, 복수에서 단수로 그리고/또는 단수에서 복수로 해석할 수 있다. 다양한 단수/복수의 치환들은 명료성을 위해 본원에서 명시적으로 기술될 수 있다.
[0048] 따라서, 청구 대상의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 일부 경우들에서, 청구항들에서 인용된 액션들은, 상이한 순서로 수행될 수 있으며, 여전히 바람직한 결과들을 달성할 수 있다. 부가적으로, 첨부한 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 반드시 요구하는 것은 아니다. 소정의 구현들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.
[0049] 예시적인 실시예들에 따라, 사용자 상호작용 없이, 실패한 테스트 스크립트에 대한 디버그 데이터를 생성, 캡처, 저장 및 로딩하기 위한 방법 및 시스템이 개시된다. 예시적인 실시예에서, 트레이스 캡처 컴포넌트는 실패한 테스트 스크립트를 자동으로 재-실행하고, 테스트 스크립트의 재실행 동안 실패한 테스트 스크립트와 연관된 소스 코드 파일들 및 실행 콘텍스트 정보를 캡처할 것이다. 실행 콘텍스트 정보 및 연관된 소스 코드는 데이터베이스 또는 다른 공유 저장 매체 상에 저장되고, 다수의 사용자들에 의한 동시적 디버깅을 허용하도록 다수의 사용자들이 액세스 가능하다. 캡처된 정보는, 애플리케이션의 재-실행 또는 원래의 머신에 대한 액세스를 요구함 없이, 실패한 테스트 스크립트의 디버깅을 허용한다.
[0050] 이하, 본 개시에 따른 시스템 및 방법의 추가의 예들이 설명된다.
[0051] 제 1 예는 사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법에 관한 것이며, 이 방법은, 소프트웨어 테스트 스크립트를 실행하는 단계; 및 소프트웨어 테스트 스크립트의 성공적이지 않은 실행에 응답하여, 사용자 상호작용 없이, 테스트 스크립트를 재-실행하는 단계; 사용자 상호작용 없이, 테스트 스크립트의 실행의 트레이스(trace) 및 연관된 소스 코드 데이터를 캡처하는 단계; 및 사용자 상호작용 없이, 테스트 스크립트의 실행의 트레이스 및 연관된 소스 코드 데이터를 저장하는 단계를 포함한다.
[0052] 제 1 예에 기초한 제 2 예에서, 성공적이지 않은 실행은 테스트의 실패이다.
[0053] 제 1 예 또는 제 2 예에 기초한 제 3 예에서, 성공적이지 않은 실행은 테스트의 시간초과(timeout)이다.
[0054] 제 1 예 내지 제 3 예 중 하나에 기초한 제 4 예에서, 방법은, 원격 개발 환경 상에서의 디버깅을 위해, 저장된 트레이스 및 연관된 소스 코드 데이터를 로딩하는 단계를 더 포함한다.
[0055] 제 1 예 내지 제 4 예 중 하나에 기초한 제 5 예에서, 방법은, 데이터베이스에 트레이스 및 연관된 소스 코드 데이터를 저장하고 이 데이터베이스에서 트레이스 및 연관된 소스 코드 데이터를 액세스하는 단계를 더 포함한다.
[0056] 제 1 예 내지 제 4 예 중 하나에 기초한 제 6 예에서, 방법은, 로컬 개발 환경에 트레이스 및 연관된 소스 코드 데이터를 저장하고 이 로컬 개발 환경에서 트레이스 및 연관된 소스 코드 데이터를 액세스하는 단계를 더 포함한다.
[0057] 제 1 예 내지 제 6 예 중 하나에 기초한 제 7 예에서, 방법은, 데이터베이스와 같은 저장 매체를 통해, 다수의 사용자들에게 저장된 트레이스 및 연관된 소스 코드 데이터에 대한 동시적 액세스들을 제공하는 단계를 더 포함한다.
[0058] 제 1 예 내지 제 7 예 중 하나에 기초한 제 8 예에서, 방법은, 트레이스 및 연관된 소스 코드 데이터를 사용자에게 디스플레이하는 단계를 더 포함한다.
[0059] 제 1 예 내지 제 8 예 중 하나에 기초한 제 9 예에서, 방법은, 트레이스 및 연관된 소스 코드 데이터를 IDE(integrated development environment)에 디스플레이하는 단계를 더 포함한다.
[0060] 제 10 예는, 사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트에 관한 것이며, 이 트레이스 캡처 컴포넌트는, 소프트웨어 테스트 스크립트의 상태를 수신하기 위한 하나 또는 그 초과의 프로세싱 디바이스들; 명령들을 저장하는 하나 또는 그 초과의 저장 디바이스들을 포함하고, 명령들은, 하나 또는 그 초과의 프로세싱 디바이스들에 의해 실행될 때, 하나 또는 그 초과의 프로세싱 디바이스들로 하여금, 소프트웨어 테스트 스크립트를 실행하게 하고; 그리고 소프트웨어 테스트 스크립트의 성공적이지 않은 실행에 응답하여, 사용자 상호작용 없이, 테스트 스크립트를 재-실행하게 하고; 사용자 상호작용 없이, 테스트 스크립트의 실행의 트레이스 및 연관된 소스 코드 데이터를 캡처하게 하고; 그리고 사용자 상호작용 없이, 테스트 스크립트의 실행의 트레이스 및 연관된 소스 코드 데이터를 저장하게 한다.
[0061] 제 10 예에 기초한 제 11 예에서, 상태는 테스트의 실패를 표현한다.
[0062] 제 10 예 또는 제 11 예에 기초한 제 12 예에서, 상태는 테스트의 시간초과를 표현한다.
[0063] 제 10 예 내지 제 12 예 중 하나에 기초한 제 13 예에서, 트레이스 캡처 컴포넌트는, 원격 개발 환경 상에서의 디버깅을 위해, 저장된 트레이스 및 연관된 소스 코드 데이터를 로딩하는 것을 더 포함한다.
[0064] 제 10 예 내지 제 13 예 중 하나에 기초한 제 14 예에서, 트레이스 캡처 컴포넌트는, 데이터베이스에 트레이스 및 연관된 소스 코드 데이터를 저장하고 이 데이터베이스에서 저장된 트레이스 및 연관된 소스 코드 데이터를 액세스하는 것을 더 포함한다.
[0065] 제 10 예 내지 제 13 예 중 하나에 기초한 제 15 예에서, 트레이스 캡처 컴포넌트는, 로컬 개발 환경에 트레이스 및 연관된 소스 코드 데이터를 저장하고 이 로컬 개발 환경에서 저장된 트레이스 및 연관된 소스 코드 데이터를 액세스하는 것을 더 포함한다.
[0066] 제 10 예 내지 제 15 예 중 하나에 기초한 제 16 예에서, 트레이스 캡처 컴포넌트는, 다수의 사용자들에게 저장된 트레이스 및 연관된 소스 코드 데이터에 대한 동시적 액세스들을 제공하는 것을 더 포함한다.
[0067] 제 10 예 내지 제 16 예 중 하나에 기초한 제 17 예에서, 트레이스 캡처 컴포넌트는, 트레이스 및 연관된 소스 코드 데이터를 IDE(integrated development environment)에 디스플레이하는 것을 더 포함한다.

Claims (17)

  1. 사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법으로서,
    소프트웨어 테스트 스크립트를 실행하는 단계; 및
    상기 소프트웨어 테스트 스크립트의 성공적이지 않은 실행에 응답하여,
    사용자 상호작용 없이, 상기 테스트 스크립트를 재-실행하는 단계;
    사용자 상호작용 없이, 상기 테스트 스크립트의 실행의 트레이스(trace) 및 연관된 소스 코드 데이터를 캡처하는 단계; 및
    사용자 상호작용 없이, 상기 테스트 스크립트의 실행의 트레이스 및 연관된 소스 코드 데이터를 저장하는 단계를 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법.
  2. 제1항에 있어서,
    상기 성공적이지 않은 실행은 테스트의 실패인,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법.
  3. 제1항에 있어서,
    상기 성공적이지 않은 실행은 테스트의 시간초과(timeout)인,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법.
  4. 제1항에 있어서,
    원격 개발 환경 상에서의 디버깅을 위해, 저장된 트레이스 및 연관된 소스 코드 데이터를 로딩하는 단계를 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법.
  5. 제1항에 있어서,
    데이터베이스에 상기 트레이스 및 연관된 소스 코드 데이터를 저장하고 상기 데이터베이스에서 상기 트레이스 및 연관된 소스 코드 데이터를 액세스하는 단계를 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법.
  6. 제1항에 있어서,
    로컬 개발 환경에 상기 트레이스 및 연관된 소스 코드 데이터를 저장하고 상기 로컬 개발 환경에서 상기 트레이스 및 연관된 소스 코드 데이터를 액세스하는 단계를 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법.
  7. 제1항에 있어서,
    데이터베이스와 같은 저장 매체를 통해, 다수의 사용자들에게 저장된 트레이스 및 연관된 소스 코드 데이터에 대한 동시적 액세스들을 제공하는 단계를 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법.
  8. 제1항에 있어서,
    상기 트레이스 및 연관된 소스 코드 데이터를 사용자에게 디스플레이하는 단계를 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법.
  9. 제8항에 있어서,
    상기 트레이스 및 연관된 소스 코드 데이터를 IDE(integrated development environment)에 디스플레이하는 단계를 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 방법.
  10. 사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트(trace capture component)로서,
    소프트웨어 테스트 스크립트의 상태를 수신하기 위한 하나 또는 그 초과의 프로세싱 디바이스들; 및
    명령들을 저장하는 하나 또는 그 초과의 저장 디바이스들을 포함하고,
    상기 명령들은, 상기 하나 또는 그 초과의 프로세싱 디바이스들에 의해 실행될 때, 상기 하나 또는 그 초과의 프로세싱 디바이스들로 하여금,
    소프트웨어 테스트 스크립트를 실행하게 하고; 그리고
    상기 소프트웨어 테스트 스크립트의 성공적이지 않은 실행에 응답하여,
    사용자 상호작용 없이, 상기 테스트 스크립트를 재-실행하게 하고;
    사용자 상호작용 없이, 상기 테스트 스크립트의 실행의 트레이스 및 연관된 소스 코드 데이터를 캡처하게 하고; 그리고
    사용자 상호작용 없이, 상기 테스트 스크립트의 실행의 트레이스 및 연관된 소스 코드 데이터를 저장하게 하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트.
  11. 제10항에 있어서,
    상태는 테스트의 실패를 표현하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트.
  12. 제10항에 있어서,
    상태는 테스트의 시간초과를 표현하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트.
  13. 제10항에 있어서,
    원격 개발 환경 상에서의 디버깅을 위해, 저장된 트레이스 및 연관된 소스 코드 데이터를 로딩하는 것을 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트.
  14. 제10항에 있어서,
    데이터베이스에 상기 트레이스 및 연관된 소스 코드 데이터를 저장하고 상기 데이터베이스에서 저장된 트레이스 및 연관된 소스 코드 데이터를 액세스하는 것을 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트.
  15. 제10항에 있어서,
    로컬 개발 환경에 상기 트레이스 및 연관된 소스 코드 데이터를 저장하고 상기 로컬 개발 환경에서 저장된 트레이스 및 연관된 소스 코드 데이터를 액세스하는 것을 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트.
  16. 제10항에 있어서,
    다수의 사용자들에게 저장된 트레이스 및 연관된 소스 코드 데이터에 대한 동시적 액세스들을 제공하는 것을 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트.
  17. 제10항에 있어서,
    상기 트레이스 및 연관된 소스 코드 데이터를 IDE(integrated development environment)에 디스플레이하는 것을 더 포함하는,
    사용자 상호작용을 요구함 없이, 소프트웨어 테스트 스크립트들을 통합하고 디버깅하기 위한 트레이스 캡처 컴포넌트.
KR1020187001188A 2015-09-10 2016-08-19 실패한 테스트 스크립트들에 대한 디버그 정보를 생성, 캡처, 저장 및 로딩하기 위한 방법 및 장치 KR20180018722A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/850,255 2015-09-10
US14/850,255 US20170075789A1 (en) 2015-09-10 2015-09-10 Method and apparatus for generating, capturing, storing, and loading debug information for failed tests scripts
PCT/US2016/047739 WO2017044291A1 (en) 2015-09-10 2016-08-19 Method and apparatus for generating, capturing, storing, and loading debug information for failed tests scripts

Publications (1)

Publication Number Publication Date
KR20180018722A true KR20180018722A (ko) 2018-02-21

Family

ID=56801867

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187001188A KR20180018722A (ko) 2015-09-10 2016-08-19 실패한 테스트 스크립트들에 대한 디버그 정보를 생성, 캡처, 저장 및 로딩하기 위한 방법 및 장치

Country Status (8)

Country Link
US (1) US20170075789A1 (ko)
EP (1) EP3295312A1 (ko)
JP (1) JP2018532169A (ko)
KR (1) KR20180018722A (ko)
CN (1) CN107820608A (ko)
DE (2) DE112016002814T5 (ko)
GB (1) GB2555338A (ko)
WO (1) WO2017044291A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200130752A (ko) * 2018-04-10 2020-11-19 어드밴스드 마이크로 디바이시즈, 인코포레이티드 프로세서를 디버깅하는 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6421249B2 (ja) * 2015-10-26 2018-11-07 株式会社日立製作所 デバッグを支援する方法及び計算機システム
US10503630B2 (en) * 2016-08-31 2019-12-10 Vmware, Inc. Method and system for test-execution optimization in an automated application-release-management system during source-code check-in
US10303586B1 (en) * 2018-07-02 2019-05-28 Salesforce.Com, Inc. Systems and methods of integrated testing and deployment in a continuous integration continuous deployment (CICD) system
CN109032933A (zh) * 2018-07-09 2018-12-18 上海亨钧科技股份有限公司 一种软件错误信息的捕获或重现方法
CN109710538B (zh) * 2019-01-17 2021-05-28 南京大学 一种用于大规模系统中状态相关缺陷的静态检测方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938245B1 (en) * 1997-10-29 2005-08-30 Veritas Operating Corporation Interactive debugging system with debug data base system
JP2002351696A (ja) * 2001-05-25 2002-12-06 Mitsubishi Electric Corp デバッグ装置
US8429619B2 (en) * 2007-07-03 2013-04-23 International Business Machines Corporation Executable high-level trace file generation system
US8359581B2 (en) * 2008-12-10 2013-01-22 International Business Machines Corporation Automatic collection of diagnostic traces in an automation framework

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200130752A (ko) * 2018-04-10 2020-11-19 어드밴스드 마이크로 디바이시즈, 인코포레이티드 프로세서를 디버깅하는 방법
US11093676B2 (en) 2018-04-10 2021-08-17 Advanced Micro Devices, Inc. Method of debugging a processor

Also Published As

Publication number Publication date
EP3295312A1 (en) 2018-03-21
DE112016002814T5 (de) 2018-03-08
JP2018532169A (ja) 2018-11-01
CN107820608A (zh) 2018-03-20
GB201720879D0 (en) 2018-01-31
US20170075789A1 (en) 2017-03-16
DE202016008043U1 (de) 2017-02-21
WO2017044291A1 (en) 2017-03-16
GB2555338A (en) 2018-04-25

Similar Documents

Publication Publication Date Title
Adamsen et al. Systematic execution of android test suites in adverse conditions
US9202005B2 (en) Development and debug environment in a constrained random verification
KR20180018722A (ko) 실패한 테스트 스크립트들에 대한 디버그 정보를 생성, 캡처, 저장 및 로딩하기 위한 방법 및 장치
US9684584B2 (en) Managing assertions while compiling and debugging source code
US9898387B2 (en) Development tools for logging and analyzing software bugs
CN107111544B (zh) 生产诊断中的历史控制流可视化
US8762971B2 (en) Servicing a production program in an integrated development environment
CN110554965B (zh) 自动化模糊测试方法及相关设备、计算机可读存储介质
US8756572B2 (en) Debugger-set identifying breakpoints after coroutine yield points
Yan et al. Systematic testing for resource leaks in Android applications
US9658907B2 (en) Development tools for refactoring computer code
US9239773B1 (en) Method and system for debugging a program that includes declarative code and procedural code
US20140282415A1 (en) Method and system for debugging a program
WO2019109553A1 (zh) 功能及性能测试脚本的创建方法、装置、设备及存储介质
US9639343B2 (en) Method for altering execution of a program, debugger, and computer-readable medium
US9117020B2 (en) Determining control flow divergence due to variable value difference
WO2019184597A1 (zh) 函数选取方法和服务器
Li et al. ADAutomation: An activity diagram based automated GUI testing framework for smartphone applications
US9229846B1 (en) Testing application code changes using a state assertion framework
EP3921734B1 (en) Using historic execution data to visualize tracepoints
EP3891613B1 (en) Software checkpoint-restoration between distinctly compiled executables
Yan Program analyses for understanding the behavior and performance of traditional and mobile object-oriented software
Wu et al. CydiOS: A Model-Based Testing Framework for iOS Apps
US20130031534A1 (en) Software Development With Information Describing Preceding Execution Of A Debuggable Program
US9632912B1 (en) Method and system for debugging a program

Legal Events

Date Code Title Description
A201 Request for examination