KR20210100600A - 소프트웨어 테스팅 - Google Patents

소프트웨어 테스팅 Download PDF

Info

Publication number
KR20210100600A
KR20210100600A KR1020217013226A KR20217013226A KR20210100600A KR 20210100600 A KR20210100600 A KR 20210100600A KR 1020217013226 A KR1020217013226 A KR 1020217013226A KR 20217013226 A KR20217013226 A KR 20217013226A KR 20210100600 A KR20210100600 A KR 20210100600A
Authority
KR
South Korea
Prior art keywords
test
user interface
elements
web application
version
Prior art date
Application number
KR1020217013226A
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 KR20210100600A publication Critical patent/KR20210100600A/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/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • 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/3684Test management for test design, e.g. generating new test cases
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

여기에는 테스트 소프트웨어와 관련된 기술 및 특히, 배타적이지는 않지만, 동적 애플리케이션들에 대한 실패의 가능성에 의해 테스트 단계들을 평가하고 분류하기 위한 규칙 엔진 및/또는 확률 그래픽 모델들(probabilistic graphical models)을 사용하여 실패한 소프트웨어 테스트의 원인을 식별하기 위한 방법들이 제공된다.

Description

소프트웨어 테스팅
여기에는 테스트 소프트웨어와 관련된 기술 및 특히, 배타적이지는 않지만, 그래픽 사용자 인터페이스들을 갖는 웹 애플리케이션들에 대한 실패의 가능성에 의해 테스트 단계들(steps)을 평가하고 분류하기 위한 규칙 엔진 및 확률 그래픽 모델들(probabilistic graphical models)을 사용하여 실패한 소프트웨어 테스트의 원인을 식별하기 위한 방법들이 제공된다.
본 출원은 2018 년 10 월 2 일에 출원된 미국 가특허출원 일련번호 62/740,409; 2018 년 10 월 23 일에 출원된 미국 가특허출원 일련번호 62/749,490; 및 2018 년 10 월 23 일에 출원된 미국 가특허출원 일련 번호 62/749,533; 에 우선권을 주장한고, 상기 각각은 그 전체가 본 출원에 참조로 포함된다.
소프트웨어 테스트 및 유지 관리 비용의 주요 원인 제공자는 소프트웨어 테스트 중 실패한 동작이 종종 소프트웨어 테스트 실패의 원인이 아니라는 것이다. 이러한 경우 소프트웨어 테스트 실패의 원인을 식별하고 실패 원인을 해결하려면 시간과 리소스가 필요하고 소프트웨어 다운 타임(downtime)이 증가하며 사용자 경험에 부정적인 영향을 미친다. 예를 들어 사용자 인터페이스 (user interface; UI) 테스트는 소프트웨어 인도 프로세스(software delivery process)의 일부이다. 소프트웨어 인도 프로세스는 소프트웨어가 제대로 작동하는지 확인하고 버그를 확인하는 데 사용된다. 전통적으로 UI 테스트는 품질 엔지니어에 의해 수행되었다. 그러나, 이러한 접근 방식은 UI가 더 중요한 역할을 하는 최신 애플리케이션으로 확장되지 않았다. 따라서 소프트웨어 테스트 실패의 원인을 파악하기 위한 새로운 기술이 필요하다.
자동화된 테스트를 위한 일부 기술이 개발되었다. 일부 초기 솔루션은 각 특정 소프트웨어 프로젝트에 대한 맞춤형 테스트였지만 최근 솔루션들에는 UI 테스트를 위한 오픈 소스 프레임 워크들(예를 들어, 셀레니움(Selenium))이 포함된다. 셀레니움은 UI와 상호 작용하는 사용자의 동작을 복제하도록 설계된 시스템이다. 이러한 시스템과 관련 시스템은 여러 요소들(elements)을 포함한다. 엔지니어들은 스크립팅 언어(scripting language)를 사용하여 테스트 스크립트들을 구성하고 이러한 테스트 스크립트들은 셀렌스(Selenese)라는 도메인 별 언어로 변환된다. 테스트가 실행될 때 셀렌스 스크립트는 셀렌스 스크립트를 브라우저에서 일련의 동작들로 변환하는 웹드라이버 모듈(webdriver module)로 전달되고 동작들의 결과들이 평가된다. 이 접근 방식은 강력하지만 몇 가지 단점들이 있다. 첫째, 테스트 스크립트를 작성하는 과정이 느리고 힘들다. 모든 테스트 단계에서 스크립트 작성자는 사용자와 테스트 스크립트가 상호 작용하는 요소를 식별하고 요소에 대해 수행할 작업을 결정하며 예상된 (올바른) 결과가 발생하는지 확인한다. 이 프로세스는 스크립트의 각 단계에 대해 반복된다. 이것은 요소 선택기들(element selectors)을 사용하여 수행된다. 마지막으로 사용자 인터페이스들은 시간이 지남에 따라 변경된다. 결과적으로 요소들 및 요소 선택기들도 변경되어 테스트가 잘못 실패한다. 따라서 이전 기술은 테스터가 새로운 요소 선택기들로 각 테스트를 수동으로 업데이트할 것을 요구했다.
많은 테스트 실패들은 식별하기 쉬운데, 예를 들어, 테스트는 스크립트가 올바른 요소를 찾을 수 없기 때문에 실패한다. 다른 실패들은 미묘한데(subtle), 예를 들어, 스크립트가 요소를 선택하지만 선택한 요소가 올바른 요소가 아니다. 일반적으로 이러한 실패는 테스트에서 여러 단계들 이후에 검출된다. 하나의 예시적인 실시예는 쇼핑 카트에 아이템을 추가하기 위한 두 개의 버튼들을 포함하는 쇼핑 사이트이다. 제1 버튼은 조회한 아이템(viewed item)을 추가하고 제2 버튼은 특별 제안 아이템을 추가한다. 카트(cart)에 조회한 아이템을 추가한 뒤 카트에 포함된 아이템들의 가격을 확인하는 스크립트가 실수로 제2 버튼을 선택하면 테스트는 스크립트가 쇼핑 카트의 내용과 가격을 확인할 때 오류를 생성한다.
테스트 실패들의 근본 원인을 수동으로 식별하는 것은 어렵다. 테스트 엔지니어들은 테스트를 통해 역으로 단계를 밟아야 한다. 각 테스트 단계에서 엔지니어는 실제로 일어난 일과 예상한 일을 비교한다. 오류의 가능한 원인을 찾은 후 엔지니어는 변경을 수행하고 테스트를 다시 구동하고 변경이 오류를 정정하였는지 확인한다. 종종 이 프로세스는 올바른 변경을 식별하기 위해 여러 반복들을 포함한다. 실패 유형에는 잘못된 요소 선택, 데이터 변경, 과도하게 정확하거나 부적절한 비교가 포함되지만 이에 국한되지는 않는다. 잘못된 요소 선택은 스크립트가 페이지에서 잘못된 요소(예를 들어, 잘못된 버튼, 메뉴의 잘못된 아이템 등)를 선택할 때 발생한다. 잘못된 요소 선택은 페이지 스타일이 변경되거나 레이아웃이 변경된 후에 발생할 수 있다. 데이터 변경과 관련하여 대부분의 최신 UI는 데이터베이스에서 동적으로 구축된다. 데이터베이스의 데이터가 변하면 UI가 크게 변할 수 있다. 일부 경우들에서, 결과적으로 스크립트는 예기치 않게 실패할 수 있다. 마지막으로, 테스트에 의해 생성된 값을 부적합한 정밀도를 사용하여 예상한 값과 비교할 때 지나치게 정확하거나 또는 부적합한 비교 오류들이 발생할 수 있다. 이러한 문제 및 기타 문제는 실제(real) 및 거짓 실패들(false failures)을 식별하고 거짓 실패의 원인을 식별하는 데 어려움을 증가시킨다.
따라서, 예를 들어 UI를 포함하는 웹 애플리케이션들에 대한 소프트웨어 테스트 실패의 원인들을 식별하는 기술이 여기에 제공된다. 일부 실시예들에서, 기술은 예를 들어 실패한 테스트의 근본 원인을 포함하는 테스트 단계들을 대체하기 위한 새로운 테스트 단계들을 제안 및/또는 제공하고, 소프트웨어 테스트가 성공할 때까지 새로운 단계들을 반복적으로 수행함으로써 실패한 소프트웨어 테스트들을 자가 치유 및 수정하는 방법을 추가로 제공한다. 일부 실시예들에서, 각 단계는 웹 애플리케이션 UI에서 이상들(anomalies)을 식별하도록 검증된다. 일부 실시예들에서, 기술은 UI의 변경을 검출하고 변경이 새로운 특징임을 사용자에게 알리는 분류기를 포함한다. 일부 실시예들에서, 여기에 설명된 기술은 확률 그래픽 모델 (probabilistic graphical model; PGM) 및 규칙 엔진(rules engine)을 결합하여 실패한 소프트웨어 테스트의 원인을 식별한다. 일부 실시예들에서, 소프트웨어 테스트 케이스(software test case) (예를 들어, 테스트 애플리케이션(test application) (예를 들어, 테스트 웹 애플리케이션(test web application)) 및 일련의 테스트 단계들 (예를 들어, 테스트 웹 애플리케이션과의 일련의 상호 작용들 (예를 들어, 테스트 웹 애플리케이션의 하나 이상의 요소들과의 일련의 상호 작용들))은 테스트 애플리케이션에 대해 모든 테스트 단계들 및 검증들이 성공적으로 실행되도록 빌드(built)된다. 일부 실시예들에서, 기술은 예를 들어, 테스트 케이스의 다음 실행에 대한 테스트 요소들의 함수 및/또는 위치의 변경들을 야기하는 애플리케이션의 동적 구조 (예를 들어, 애플리케이션의 요소의 함수 및/또는 속성(attribute)의 변경)에 의해 야기되는 애플리케이션의 실패를 식별한다. 일부 실시예들에서, 확률 그래픽 모델들은 각 테스트 단계동안 취해진 상호 작용들 및 애플리케이션 상의 요소들의 상태(state of elements)로부터 구축된다. 확률 그래픽 모델은 테스트 실패시 테스트 단계들을 실패의 가능성에 의해 분류하기 위해 평가된다. 또한, 일부 실시예들에서, 기술은 식별된 실패들을 보완 및/또는 무시(override)하는 규칙 엔진을 포함한다.
따라서, 일부 실시예들에서 기술은 사용자 인터페이스를 포함하는 웹 애플리케이션의 실패한 소프트웨어 테스트의 근본 원인을 식별하는 것을 위한 방법을 제공한다. 예를 들어, 일부 실시예들에서, 방법은 사용자 인터페이스를 포함하는 웹 애플리케이션을 제공하는 단계; 일련의 테스트 단계들(test steps)을 포함하는 스크립트를 제공하는 단계-각 테스트 단계는 상기 사용자 인터페이스의 요소에 대해 수행되는 동작을 포함함-; 상기 웹 애플리케이션에서 상기 스크립트를 실행하는 단계; 실패한 소프트웨어 테스트가 실패를 보고하는 상기 스크립트의 오류 단계(error step)을 식별하는 단계; 및 각 제안된 테스트 단계 및/또는 요소(element)가 상기 실패한 소프트웨어 테스트의 상기 근본 원인일 가능성에 의해 순위가 매겨진 제안된 테스트 단계들 및/또는 요소들의 리스트(list)를 생성하는 단계를 포함한다. 일부 실시예들에서, 상기 생성하는 단계는, 컴퓨터 비전(computer vision)을 사용하여 상기 사용자 인터페이스의 제1 버전의 제1 요소들을 식별하고 상기 제1 요소들의 각 요소에 대한 요소 속성들(element attributes)을 결정하는 단계; 컴퓨터 비전을 사용하여 상기 사용자 인터페이스의 제2 버전의 제2 요소들을 식별하고 상기 제2 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계; 상기 제1 요소들의 각 요소에 대한 상기 요소 속성들을 상기 제2 요소들의 각 요소에 대한 상기 제2 요소 속성들과 비교함으로써 상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이의 차이들을 식별하는 단계; 훈련된 확률 모델(trained probabilistic model)을 생성하기 위해 상기 차이들을 사용하여 확률 모델을 훈련시키는 단계; 및 각 테스트 단계 및/또는 각 요소가 상기 실패한 소프트웨어 테스트의 근본 원인일 상기 가능성을 상기 사용자 인터페이스의 각 요소 및/또는 각 테스트 단계에 할당하는 단계를 포함한다. 일부 실시예들에서, 상기 제안된 테스트 단계들은 상기 오류 단계에 선행한다.
일부 실시예들에서, 상기 컴퓨터 비전을 사용하는 것은 텍스트 상자를 검출하는 것, 문자들을 인식하는 것, 요소를 검출하는 것, 객체를 검출하는 것, 및/또는 레이아웃을 검출하는 것을 포함한다. 일부 실시예들에서, 상기 훈련시키는 단계는, 상기 사용자 인터페이스의 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 또는 그 이상의 버전들을 비교하는 것에 의해 식별된 입력들의 차이들을 수신하는 단계를 포함한다. 일부 실시예들에서, 상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이의 차이들을 식별하는 단계는, 속성 모델(attribute model) 및/또는 확률 그래픽(probabilistic graphical)을 생성하기 위해 상기 사용자 인터페이스의 상기 제2 버전의 속성 모델 및/또는 제2 그래픽과 상기 사용자 인터페이스의 상기 제1 버전의 속성 모델 및/또는 제1 그래픽을 비교하는 단계를 포함한다. 일부 실시예들에서, 상기 훈련시키는 단계는, 테스트 단계들, 요소들, 및/또는 속성 카테고리들(attribute categories)에 가중된 스코어들을 할당하는 단계를 포함한다. 일부 실시예들에서, 상기 할당하는 단계는, 각 테스트 단계 및/또는 각 요소가 상기 실패한 소프트웨어 테스트의 근본 원인일 상기 가능성을 결정하기 위해 상기 확률 모델을 평가하는 단계를 포함한다. 일부 실시예들에서, 훈련시키는 단계는 머신 러닝을 사용하는 단계를 포함한다. 일부 실시예들에서, 훈련시키는 단계는 신경망(neural net)을 사용하는 단계를 포함한다. 일부 실시예들에서, 상기 제1 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계 및/또는 상기 제2 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계는, 상기 제1 요소들의 각 요소와 연관된 소스 코드를 분석하는 단계 및/또는 상기 제2 요소들의 각 요소와 연관된 소스 코드를 분석하는 단계를 포함한다. 일부 실시예들에서, 각 제안된 테스트 단계 및/또는 요소는 상기 근본 원인을 정정하기 위한 제안된 정정들(corrections)을 제공하기 위해 규칙 엔진(rules engine)에 의해 평가된다.
일부 실시예들에서, 상기 기술은 실패한 테스트 단계를 포함하는 실패한 소프트웨어 테스트 케이스 구성(failed software test case configuration)을 정정하는 방법에 관한 것이다. 예를 들어, 일부 실시예들에서, 상기 방법들은 각 후보 실패한 테스트 단계들(candidate failed test steps)이 실패한 소프트웨어 테스트의 상기 근본 원인일 가능성에 의해 순위가 매겨진 후보 실패한 테스트들의 리스트를 수신하는 단계; 각 후보 실패한 테스트 단계에 대한 복수의 시험 테스트 케이스 구성들(trial test case configurations)을 생성하기 위해 후보 실패한 테스트 단계들의 상기 리스트의 각 후보 실패한 테스트 단계를 마르코프 결정 프로세스(Markov decision process)에 제공하는 단계; 각 후보 실패한 테스트 단계에 대해 각 시험 테스트 케이스 구성을 실행하는 단계; 성공적인 소프트웨어 테스트를 식별하는 단계; 상기 성공적인 소프트웨어 테스트를 생성한 시험 테스트 케이스 구성을 식별하는 단계; 상기 실패한 소프트웨어 테스트 케이스 구성에 관한 상기 시험 테스트 케이스의 차이들을 식별하기 위해 상기 성공적인 소프트웨어 테스트를 생성한 상기 시험 테스트 케이스 구성 및 상기 실패한 소프트웨어 테스트 케이스 구성을 비교하는 단계; 실패한 단계를 정정된 단계로 대체하는 것에 의해 상기 실패한 소프트웨어 테스트 케이스 구성을 정정하는 단계 - 상기 정정된 단계는 상기 실패한 소프트웨어 테스트 케이스에 관한 상기 시험 테스트 케이스의 차이들을 구현함-를 포함한다. 일부 실시예들에서, 상기 실행하는 단계는, 각 후보 실패한 테스트 단계에 대해 각 시험 테스트 케이스 구성을 병렬적으로 실행하는 단계를 포함한다. 일부 실시예들에서, 후보 실패 테스트 단계들의 상기 리스트는, 사용자 인터페이스를 포함하는 웹 애플리케이션(web application)을 제공하는 단계; 일련의 테스트 단계들을 포함하는 스크립트(script)를 포함하는 소프트웨어 테스트 케이스 구성을 제공하는 단계 - 각 테스트 단계는 상기 사용자 인터페이스의 요소에서 수행되는 동작(action)을 포함함 -; 상기 웹 애플리케이션 상에서 상기 스크립트를 구동하는 단계; 및 각 후보 실패 테스트 단계가 상기 실패한 소프트웨어 테스트의 상기 근본 원인일 가능성에 의해 순위가 매겨진 후보 실패 테스트 단계들의 상기 리스트를 생성하는 단계를 포함하는 방법에 의해 생성된다. 일부 실시예들에서, 후보 실패 테스트 단계들의 상기 리스트를 생성하는 단계는, 컴퓨터 비전(computer vision)을 사용하여 상기 사용자 인터페이스의 제1 버전의 제1 요소들을 식별하고 상기 제1 요소들의 각 요소에 대한 요소 속성들(element attributes)을 결정하는 단계; 컴퓨터 비전을 사용하여 상기 사용자 인터페이스의 제2 버전의 제2 요소들을 식별하고 상기 제2 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계; 상기 제1 요소들의 각 요소에 대한 상기 요소 속성들을 상기 제2 요소들의 각 요소에 대한 상기 제2 요소 속성들과 비교함으로써 상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이의 차이들을 식별하는 단계; 훈련된 확률 모델(trained probabilistic model)을 생성하기 위해 상기 차이들을 사용하여 확률 모델을 훈련시키는 단계; 및 각 테스트 단계 및/또는 각 요소가 상기 실패한 소프트웨어 테스트의 근본 원인일 상기 가능성을 상기 사용자 인터페이스의 각 요소 및/또는 각 테스트 단계에 할당하는 단계를 포함한다.
일부 실시예들에서, 상기 기술은 사용자 인터페이스를 포함하는 웹 애플리케이션의 실패들(failures)을 자율적으로 식별하는 방법에 관한 것이다. 예를 들어, 일부 실시 예들에서, 방법들은 상기 사용자 인터페이스의 요소들을 식별하기 위해 웹 애플리케이션 사용자 인터페이스를 분석하는 단계; 요소 함수들을 식별하기 위해 웹 애플리케이션의 소스 코드를 분석하는 단계; 요소-함수 연관들(element-function associations)을 생성하기 위해 상기 사용자 인터페이스의 요소들과 요소 함수들을 연관시키는 단계; 신경망(neural network)을 학습시키기 위해 영상들, 텍스트, 및 웹 애플리케이션 사용자 인터페이스 지오메트리(web application user interface geometry)를 입력하는 단계; 및 상기 웹 애플리케이션의 실패들을 생성하는 상기 웹 애플리케이션 사용자 인터페이스의 이상들(anomalies)을 식별하기 위해 상기 요소들, 요소 함수들, 및 요소-함수 연관들을 상기 훈련된 신경망에 입력하는 단계를 포함한다. 일부 실시예들에서, 상기 사용자 인터페이스의 요소들을 식별하기 위해 웹 애플리케이션 사용자 인터페이스를 분석하는 단계는, 컴퓨터 비전의 사용을 포함한다. 일부 실시예들에서, 요소 함수들을 식별하기 위해 웹 애플리케이션의 소스 코드를 분석하는 단계는, 자연어 처리의 사용을 포함한다. 일부 실시예들에서, 방법들은 웹 애플리케이션 사용자 인터페이스를 제공하기 위해 병렬 웹 크롤러(parallel web crawler)를 제공하는 단계를 더 포함한다. 일부 실시예들에서, 방법들은 상기 웹 애플리케이션의 복수의 웹 애플리케이션 사용자 인터페이스들을 제공하기 위해 병렬 웹 크롤러를 제공하는 단계를 더 포함한다. 일부 실시예들에서, 상기 방법은, 상기 웹 애플리케이션 사용자 인터페이스를 검증하기 위해 테스트 스크립트의 각 단계에 대해 수행된다.
일부 실시예들에서, 상기 기술은 웹 애플리케이션 사용자 인터페이스의 새로운 요소이거나 요소의 변경된 속성이 요소 함수와 관련이 있는 요소를 식별하는 방법을 제공한다. 여기에 사용된 바와 같이, “요소 함수와 관련이 있는 속성”은 변경될 때, 소프트웨어 테스트 오류를 생성할 가능성이 있는 속성을 나타낸다. 예를 들어, 육안으로 인식할 수 없는 요소 색상 또는 글꼴 크기의 약간의 변경은 UI에 최소한의 영향을 미치며 소프트웨어 테스트 오류를 유발하지 않을 것으로 예상된다. 그러나, 버튼 또는 텍스트 입력 필드와 같은 요소의 위치의 변경은 UI에 상당한 영향을 미치며 소프트웨어 테스트 오류를 유발할 것으로 예상된다.
일부 실시예들에서, 방법들은 사용자 인터페이스를 포함하는 웹 애플리케이션을 제공하는 단계; 일련의 테스트 단계들을 포함하는 스크립트를 제공하는 단계 -각 테스트 단계는 상기 사용자 인터페이스의 요소 상에서 수행되는 동작을 포함함-; 상기 웹 애플리케이션 상에서 상기 스크립트를 구동하는 단계; 실패한 소프트웨어 테스트가 실패를 보고하는 상기 스크립트의 오류 단계를 식별하는 단계; 및 변경된 요소 속성이 요소 함수와 관련이 있을 가능성 및/또는 각 제안된 요소가 상기 사용자 인터페이스의 새로운 요소일 가능성에 의해 순위가 매겨진 제안된 요소들의 리스트를 생성하는 단계를 포함한다. 일부 실시예들에서, 상기 생성하는 단계는, 컴퓨터 비전(computer vision)을 사용하여 상기 사용자 인터페이스의 제1 버전의 제1 요소들을 식별하고 상기 제1 요소들의 각 요소에 대한 요소 속성들(element attributes)을 결정하는 단계; 컴퓨터 비전을 사용하여 상기 사용자 인터페이스의 제2 버전의 제2 요소들을 식별하고 상기 제2 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계; 상기 제1 요소들의 각 요소에 대한 상기 요소 속성들을 상기 제2 요소들의 각 요소에 대한 상기 제2 요소 속성들과 비교함으로써 상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이의 차이들을 식별하는 단계; 훈련된 확률 모델(trained probabilistic model)을 생성하기 위해 상기 차이들을 사용하여 확률 모델을 훈련시키는 단계; 및 변경된 요소 속성이 요소 함수와 관련이 있을 가능성 및/또는 각 제안된 요소가 상기 사용자 인터페이스의 새로운 요소일 상기 가능성을 상기 사용자 인터페이스의 각 요소에 할당하는 단계를 포함한다. 일부 실시예들에서, 상기 훈련된 확률 모델은 상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이 차이를 소프트웨어 테스트 실패의 근본 원인; 새로운 사용자 인터페이스 요소; 또는 요소 함수와 관련 있는 요소 속성의 변경으로 분류한다. 일부 실시예들에서, 방법들은 웹 애플리케이션 사용자 인터페이스 요소의 변경된 속성 또는 새로운 웹 애플리케이션 사용자 인터페이스 요소를 설명하기 위해 상기 테스트 스크립트의 상기 오류 단계를 정정하는 단계를 더 포함한다. 일부 실시예들에서, 방법들은 사용자 인터페이스 요소의 속성이 변경되었거나 또는 상기 웹 애플리케이션 사용자 인터페이스가 새로운 요소를 포함함을 알리는 단계 및/또는 사용자 인터페이스 요소의 속성이 변경되었거나 또는 웹 애플리케이션 사용자 인터페이스가 새로운 요소를 포함한다는 사용자 확인(user confirmation)을 수신하는 단계를 더 포함한다. 관련된 시스템들 및 사용들이 또한 제공된다.
추가 실시예들은 여기에 포함된 교시들에 기초하여 관련 기술 분야의 당업자에게 명백할 것이다.
본 기술의 이들 및 다른 특징들, 측면들 및 이점들은 다음 도면들과 관련하여 더 잘 이해될 것이다.
도 1은 실패한 소프트웨어 테스트의 원인을 식별하기 위해 여기에 제공된 기술의 일 실시예의 흐름도이다.
도 2는 실패한 소프트웨어 테스트에 대한 해결책을 자율적으로 찾기 위해 여기에 제공된 기술의 일 실시예의 흐름도이다.
도 3은 소프트웨어 테스트 실패의 근본 원인을 식별하고 제안을 제공하기 위해 여기에 설명된 기술의 일 실시예를 보여주는 흐름도이다.
도 4는 웹 애플리케이션 사용자 인터페이스를 분석하기 위한 컴퓨터 비전 시스템의 아키텍처를 보여주는 개략도이다.
도 5는 텍스트 상자 검출 기술에 의해 처리된 예시적인 입력 웹 애플리케이션 및 텍스트 상자 검출 기술에 의해 생성된 예시적인 출력의 개략도를 보여준다.
도 6은 밀도 기반 클러스터링 기술의 출력을 그래픽 플롯(graphical plot)으로 보여준다.
도 7은 텍스트 상자 검출 기술에 의해 처리된 예시적인 입력 웹 애플리케이션 및 텍스트 상자 검출 기술에 의해 생성된 예시적인 출력의 개략도를 도시한다. 텍스트 상자 검출 기술의 출력은 요소 검출 기술로 전달된다. 요소 검출 기술의 예시적인 출력이 보여진다.
도 8은 물체 검출 기술에 의해 처리된 예시적인 입력 웹 애플리케이션 및 물체 검출 기술에 의해 생성된 예시적인 출력의 개략도를 도시한다.
도 9a는 서로 다른 2 일에 웹 페이지에 대한 요소 색상 속성들(element color attributes)의 빈도 분포를 보여주고 요소들 간의 확률 연관(probabilistic association)을 할당하는 것을 보여준다.
도 9b는 서로 다른 2 일에 웹 페이지에 대한 요소 높이 속성들(element height attributes)의 빈도 분포와 요소들 간의 확률 연관을 할당하는 것을 보여준다.
도 9c는 2 개의 상이한 페이지들에 대한 요소 폭들(element widths)의 히스토그램들(histograms)을 보여주고 여기에 제공된 기술에 의해 결정된 분포에 따라 2 개의 페이지들 상의 요소를 연관시킨다.
도면들은 반드시 축척으로 그려지는 것이 아니며, 도면들의 객체들은 반드시 서로에 대해 축척으로 그려지는 것은 아님이 이해되어야 한다. 도면들은 여기에 개시된 장치, 시스템 및 방법의 다양한 실시예를 이해하는 것과 명확성을 가져오도록 의도된 묘사들이다. 가능하면 도면 전체에 걸쳐 동일하거나 유사한 부품을 지칭하기 위해 동일한 참조 번호가 사용된다. 더불어, 도면들은 어떤 식으로든 본 교시의 범위를 제한하려는 것이 아님이 이해되어야 한다.
여기에는 테스트 소프트웨어와 관련된 기술, 특히, 그러나 배타적이지는 않게, 동적 애플리케이션들의 실패 가능성에 의해 테스트 단계들(test steps)을 평가하고 정렬하기 위해 규칙 엔진(rules engine) 및/또는 확률 그래픽 모델들(probabilistic graphical models)을 사용하여 실패한 소프트웨어 테스트의 원인을 식별하는 방법들에 관한 기술이 제공된다.
다양한 실시예들의 이 상세한 설명에서, 개시된 실시예들의 완전한 이해를 제공하기 위해 다수의 특정한 세부 사항들(specific details)이 제시된다. 그러나 당업자는 이러한 다양한 실시예들이 이러한 특정한 세부 사항들을 포함하거나 포함하지 않고 실시될 수 있음을 인식할 것이다. 다른 경우들에서는 구조들과 디바이스들이 블록 다이어그램 형식으로 보여진다. 또한, 당업자는 방법이 제시되고 수행되는 특정한 시퀀스들이 예시적이라는 것을 쉽게 인식할 수 있으며, 시퀀스들이 변경될 수 있으며 여기에 개시된 다양한 실시예들의 사상 및 범위 내에 여전히 남아 있음을 고려할 수 있다.
특허, 특허 출원, 기사, 서적, 논문 및 인터넷 웹 페이지를 포함하되 이에 국한되지 않는 본 출원에서 인용된 모든 문헌들 및 유사한 자료들은 어느 목적을 위해서든 전체가 참조로 명시적으로 포함된다. 달리 정의되지 않는 한, 여기에서 사용되는 모든 기술적 및 과학적 용어는 여기에 설명된 다양한 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 포함된 참고 문헌의 용어 정의가 본 교시에서 제공된 정의와 다른 것으로 보이는 경우, 본 교시에서 제공된 정의가 우선한다. 여기에 사용된 섹션 제목은 구성 목적으로만 사용되며 어떤 식으로든 설명된 주제를 제한하는 것으로 해석되어서는 안된다.
정의들
본 기술에 대한 이해를 용이하게 하기 위해 여러 용어들과 구문들이 아래에 정의된다. 상세한 설명 전체에 추가적인 정의들이 제시되어 있다.
명세서 및 청구 범위 전반에 걸쳐, 다음 용어들은 문맥이 명백하게 달리 지시하지 않는 한, 여기에서 명시적으로 관련된 의미를 갖는다. 여기에서 사용되는 “일 실시예에서”라는 문구는 반드시 동일한 실시예를 지칭하는 것은 아니지만, 그럴 수도 있다. 또한, 여기에서 사용된 "다른 실시예에서"라는 문구는 비록 그것이 가능할지라도 반드시 다른 실시예를 지칭하는 것은 아니다. 따라서, 후술하는 바와 같이, 본 발명의 다양한 실시예들은 본 발명의 범위 또는 사상을 벗어나지 않고 쉽게 결합될 수 있다.
또한, 여기에서 사용되는 용어 “또는(or)”은 포괄적인 “또는” 연산자이고 문맥에서 달리 명확하게 지시하지 않는 한 "및/또는"이라는 용어와 동일하다. 용어 “기초하여(based on)”은 배타적이지 않으며 문맥이 달리 명시하지 않는 한 설명되지 않은 추가 요소를 기반으로 할 수 있다. 또한, 명세서 전반에 걸쳐 "하나의(a)", " 하나의(an)"및 "상기(the)"의 의미는 복수 참조를 포함한다. "의(in)"의 의미에는 "의(in)"및 "의(on)"이 포함된다.
여기에서 사용된 바와 같이, 용어들 "약(about)", "대략(approximately)", "실질적으로(substantially)"및 "상당히(significantly)"는 당업자에 의해 이해되고 용어들이 사용되는 문맥에 따라 어느 정도 달라질 것이다. 이러한 용어들이 사용되는 맥락에서 당업자에게 명확하지 않은 사용이 있는 경우, "약" 및 "대략"은 특정 용어의 10 % 이하의 플러스 또는 마이너스를 의미하고, "실질적으로"및 "상당히"는 특정 용어의 10% 이상의 플러스 또는 마이너스를 의미한다.
여기에서 사용된 바와 같이, 범위들의 개시는 범위들에 대해 주어진 종점들(endpoints) 및 서브 범위들(sub-ranges)을 포함하여 전체 범위 내의 추가로 분할된 범위들 및 모든 값들의 개시를 포함한다.
여기에서 사용된 바와 같이, 접미사 “-프리(free)”은 "-프리(free)"가 추가된 단어의 기본 어근의 특징을 생략한 기술의 일 실시예를 의미한다. 즉, 여기에서 사용되는 “X-프리”라는 용어는 “X가 없는”을 의미하며, 여기서 X는 “X-프리”기술에서 생략된 기술의 특징이다. 예를 들어, “그래픽 처리 유닛-프리” 시스템은 그래픽 처리 유닛을 포함하지 않고, “분류-프리(sorting-free)” 방법은 분류 단계를 포함하지 않는 등이다.
용어들 "제1", "제2", "제3"등이 본원에서 다양한 단계들, 요소들(elements), 조성물들(compositions), 구성 요소들(components), 영역들(regions), 층들(layers) 및/또는 섹션들(sections)을 설명하기 위해 사용될 수 있지만, 이러한 단계들, 요소들, 구성들, 구성 요소들, 영역들, 레이어들 및/또는 섹션들은 달리 명시되지 않는 한 이러한 용어로 제한되어서는 안된다. 이들 용어들은 한 단계, 요소, 구성, 구성 요소, 영역, 층 및/또는 섹션을 다른 단계, 요소, 구성, 구성 요소, 영역, 층 및/또는 섹션과 구별하기 위해 사용된다. 여기에서 사용되는 “제1”, “제2” 및 기타 숫자 용어들(numerical terms)과 같은 용어들은 문맥에 의해 명확하게 표시되지 않는 한 순서 또는 순서를 의미하지 않는다. 따라서 여기에서 논의된 제1 단계, 요소, 조성, 구성 요소, 영역, 층 또는 섹션은 기술에서 벗어나지 않고 제2 단계, 요소, 조성, 구성 요소, 영역, 층 또는 섹션으로 지칭될 수 있다.
여기에서 사용된 바와 같이, "증가(increase)"또는 "감소(decrease)"는 각각 표준 제어(standard control)의 값에 대한, 미리 설정된 값에 대한 및/또는 변수의 이전에 측정된 값에 대한 변수의 값에서 검출할 수 있는 (예를 들어, 측정된) 양 또는 음의 변경을 의미한다. 증가는 표준 제어의 값, 미리 설정된 값 및 변수의 이전에 측정된 값에 비해 바람직하게는 적어도 10 %, 더 바람직하게는 50 %, 더더욱 바람직하게는 2 배, 훨씬 더 바람직하게는 적어도 5 배, 가장 바람직하게는 적어도 10 배의 양의 변경이다. 유사하게, 감소는 표준 제어의 값, 미리 설정된 값 및 변수의 이전에 측정된 값에 비해 바람직하게는 적어도 10 %, 더 바람직하게는 50 %, 더더욱 바람직하게는 적어도 80%, 훨씬 더 바람직하게는 적어도 90%의 음의 변경이다. "더 많은(more)"또는 "더 적은”(less)과 같은 정량적 변경 또는 차이를 나타내는 다른 용어들은 위에서 설명한 것과 동일한 방식으로 여기에서 사용된다.
여기에서 사용되는 바와 같이, "시스템"은 공통 목적을 위해 함께 작동하는 복수의 실제 및/또는 추상 구성 요소들을 지칭한다. 일부 실시예들에서, "시스템"은 하드웨어 및/또는 소프트웨어 구성 요소들의 통합 어셈블리(integrated assemblage)이다. 일부 실시예들에서, 시스템의 각 구성 요소는 하나 이상의 다른 구성 요소들과 상호 작용하고/하거나 하나 이상의 다른 구성 요소들과 관련된다. 일부 실시예들에서, 시스템은 방법을 제어하고 지시하기 위한 소프트웨어 및 구성 요소들의 조합을 지칭한다.
여기에서 사용되는 바와 같이, 용어 “웹 애플리케이션(web application)”은 웹 브라우저에서 클라이언트에 의해 실행되는 클라이언트-서버 컴퓨터 프로그램을 의미한다. 일반적인 웹 애플리케이션에는 웹 메일, 온라인 소매 판매 및 온라인 경매가 포함된다. 일부 실시예들에서, 웹 애플리케이션은 사용자 인터페이스 및/또는 클라이언트 측 로직(client-side logic) (예를 들어, 클라이언트 컴퓨터에서 실행되는 코드)을 포함한다. 일부 실시예들에서, 웹 애플리케이션은 하나 이상의 웹 페이지들을 포함하고 사용자 인터페이스는 하나 이상의 웹 페이지들의 외관, 디자인 및 요소를 지칭한다.
여기에서 사용되는 바와 같이, 용어 “요소(element)”는 다른 요소와의 관계 및/또는 식별자(identifier)에 의해 식별될 수 있는 데이터 구조(data structure)를 의미한다. 예를 들어 요소에는 이름, 숫자 또는 기호와 같은 문자열인 고유 식별자가 있을 수 있다. 따라서, 요소는 식별자를 사용하여 참조 및/또는 검색될 수 있다. 또한, 특정 요소가 부모 요소(parent element)의 제1 자식 요소(first child element)인 경우, 특정 요소는 부모 요소에 대한 포인터를 사용하여 참조 및/또는 검색된 다음 제1 자식 요소에 대한 포인터를 검색할 수 있다. 브라우저 및/또는 런타임 환경은 요소 참조 및/또는 검색을 위해 하나 이상의 애플리케이션 프로그래밍 인터페이스들 (Application Programming Interfaces; APIs)을 제공할 수 있다. 따라서, 일부 실시예들에서, 용어 "요소"는 사용자 (예를 들어, 사람, 다른 애플리케이션, 애플리케이션 프로그래밍 등)가 상호 작용하는 웹 애플리케이션의 구성 요소 (예: 애플리케이션의 그래픽 사용자 인터페이스의 그래픽 구성 요소)를 지칭한다. 일부 실시예들에서, 요소와 상호 작용하면 웹 애플리케이션이 함수(function)를 수행하게 된다. 일부 실시예들에서, "요소"는 버튼, 하이퍼 링크(hyperlink), 텍스트 상자, 텍스트 영역(text area), 체크 상자(check box), 슬라이더(slider), 라디오 버튼, 메뉴, 메뉴 아이템, 스크롤 바, 콤보 상자(combo box), 토글 버튼(toggle button), 스핀 버튼(spin button), 툴 바(tool bar), 위젯(widget), 이미지, 창(window), 달력, 탭 표시 줄(tab strip), 목록 상자(list box), 썸네일(thumbnail) 등일 수 있다. 일부 실시예들에서, 요소는 웹 페이지 또는 스크린이다. 일부 실시예들에서, 요소는 다른 요소들, 예를 들어 하나 이상의 버튼들, 텍스트 필드들(text fields) 등을 포함하는 웹 페이지를 포함한다. 일부 실시예들에서, 요소에 대응하거나 요소와 연관된 소스 코드는 사용자에 의한 보기를 위해 클라이언트 디바이스의 스크린에 제시된 가시적 요소에 매핑될 수 있다.
여기에서 사용되는 바와 같이, 용어 "속성(attribute)"은 요소의 내용(content), 행동 및/또는 외양을 식별 및/또는 설명하는 데이터를 의미한다. 소는 예를 들어, 요소와 관련된 코드; 서체(typeface); 경계(border); 크기; 텍스트; 색상; 페이지, 창 또는 스크린 상의 위치; 및 요소 유형(element type)과 같은 여러 속성들을 가질 수 있다.
여기에서 사용되는 바와 같이, 용어 "사용자"는 애플리케이션 (예를 들어, 애플리케이션의 요소와 함께)과 상호 작용하는 사람(예를 들어, 실제 또는 가상)을 지칭한다. 일부 실시예들에서, 사용자는 사람(예를 들어, 그래픽 사용자 인터페이스를 통해 애플리케이션과 상호 작용하는)이다. 일부 실시예들에서, 사용자는 다른 애플리케이션 (예를 들어, 스크립트) 또는 애플리케이션과 상호 작용하는 소프트웨어 구성 요소이다.
여기에서 사용되는 바와 같이, 용어 "모듈"또는 "구성 요소"는 구성요소 또는 모듈의 동작들을 수행하도록 구성된 하드웨어 또는 소프트웨어 구현들을 의미한다. 일부 실시예들에서, 모듈 또는 구성 요소는 범용 하드웨어 (예를 들어, 컴퓨터 판독 가능 매체, 처리 디바이스들 등)에 실행 및/또는 저장되는 소프트웨어 루틴(software routine) 또는 소프트웨어 객체(software object)이다. 일부 실시예들에서, 구성 요소들 및/또는 모듈들은 컴퓨팅 시스템에서 실행되는 객체들 또는 프로세스들 (예를 들어, 별도의 스레드들)로 구현된다. 본 개시에서 설명된 시스템들 및 방법들 중 일부는 일반적으로 소프트웨어 (범용 하드웨어에 의해 실행 및/또는 저장되는)로 구현되는 것으로 설명되지만, 특정 하드웨어 구현들, 펌웨어 구현들 또는 이들의 어떤(any) 조합도 가능하고 고려된다. 본 설명에서, "컴퓨팅 엔티티(computing entity)"는 본 개시에서 이전에 설명된 어떤 컴퓨팅 시스템, 또는 컴퓨팅 시스템에서 실행되는 어떤(any) 모듈 또는 모듈의 조합일 수 있다.
여기에서 사용되는 바와 같이, 용어 "사용자 시퀀스(user sequence)"는 웹 애플리케이션 UI의 하나 이상의 요소들과 사용자의 상호 작용을 모방하는 일련의 동작들이다.
여기에서 사용되는 바와 같이, 용어 "브라우저(browser)"는 예를 들어 모바일 디바이스, 랩톱 및/또는 데스크톱 상에서 사용을 위해 제공되는 Mozilla Firefox, Internet Explorer, Microsoft Edge, Google Chrome, Apple Safari 또는 어떤(any) 다른 웹 브라우저와 같이 World Wide Web에서 정보 리소스를 검색(retrieving), 표시(presenting) 및 탐색(traversing)하기 위한 소프트웨어 애플리케이션을 의미한다.
여기에서 사용되는 바와 같이, 용어 "사용자 인터페이스(user interface)"(UI)는 사용자가 예를 들어 포인터(pointer) 및/또는 포인팅 디바이스(pointing device)에 의해 웹 애플리케이션을 제어 및/또는 작동할 수 있도록 디스플레이된 그래픽 정보를 활용하는 프로그램 인터페이스(program interface)를 의미한다. 포인터는 디스플레이에 나타나는 커서(cursor), 화살표 또는 기타 기호를 의미할 수 있으며, UI를 통해 객체들을 선택하고 필드들을 채우고(populate) 명령들을 입력하는 등을 위해 포인팅 디바이스로 제어되거나 이동될 수 있다. 포인팅 디바이스는 예를 들어, 웹의 UI를 통해 드롭 다운 메뉴 옵션들(drop-down menu options) 및/또는 명령들(commands)과 같은 정보를 입력하거나 필드들을 채우거나 객체들을 선택하거나 및/또는 커서를 제어하는데 사용되는 모든 객체 및/또는 디바이스를 가리킬 수 있다. 이러한 포인팅 디바이스들은, 예를 들어, 터치 스크린과 결합된 손가락 끝(fingertip), 디지털 펜(digital pen), 디지털 태블릿(digitizing tablet), 스타일러스(stylus), 키보드, 트랙 스틱(track stick), 트랙 패드(track pad), 트랙볼(trackball), 마우스(mouse) 등을 포함할 수 있다. 커서는 UI의 영역에 대해 입력 선택(input selection) 또는 작동(actuation)이 이루어질 수 있는 심볼 또는 포인터를 의미할 수 있다.
여기에서 사용되는 바와 같이, 용어들 "클릭(click)"또는 "클릭하는 것(clicking)"은 예를 들어 마우스와 같은 어떤(any) 포인팅 디바이스에 의해 수행되는 선택 프로세스를 의미하지만, 이러한 용어의 사용은 이에 제한되지 않는다. 예를 들어, 터치 스크린을 통해 선택 과정이 이루어질 수 있다. 이 경우 "클릭"이 "터치"로 대체될 수 있다. 그러나 이들은 객체를 선택하거나 정보를 입력하는 방법의 예일뿐이며 청구 대상(claimed subject matter)은 이러한 점에서 범위가 제한되지 않는다.
여기에서 사용되는 바와 같이, 용어 "요소와 상호 작용(interact with an element)"은 웹 애플리케이션 UI의 요소에 대한 동작 (예를 들어, 클릭하는 것)을 수행하여 요소를 선택하거나, 요소의 상태 변경하거나, 목록에서 옵션 선택하거나, 풀 다운 메뉴를 활성화하거나, 값을 입력하거나, 값을 선택하는 것 등을 가리킨다.
여기에서 사용되는 바와 같이, 용어 "스크립트(script)"는 컴퓨터 프로그램 또는 웹 애플리케이션 내에서 일부 목표(goal)를 달성하는 사용자 인터페이스 내에서 일련의 사용자-컴퓨터 상호 작용들을 의미한다. 목표들의 예들(Examples of goals)은 사용자 계정과 관련된 이메일 주소를 확인/변경하는 것; 그룹에 의해 제어되는 파일들을 삭제하거나 쓰거나 또는 읽을 수 있는 권한을 부여하기 위해 팀/그룹에 합류하는 것; 웹 애플리케이션 내에서 구매 거래를 수행하는 것; 또는 사용자 암호를 변경하는 것을 포함한다. 따라서, 일부 실시예들에서, 스크립트는 특정 작업을 수행하기 위해 시뮬레이션된 사용자, 웹 애플리케이션 및/또는 브라우저에 의해 취해진 일련의 개별 단계들(예를 들어, 요소와 상호 작용하는 것)을 정의한다. 예를 들어, 스크립트는 애플리케이션에서 다음 스크린으로 이동하기 위해 웹 애플리케이션의 버튼의 클릭과 같은 단계를 정의할 수 있다. 다른 예에서, 스크립트는 웹 애플리케이션이 제1 입력을 암호로 받아들이기 전에 제2 입력으로 제1 입력을 검증하기를 기다리는 단계를 포함할 수 있다. 일부 실시예들에서, 스크립트는 웹 애플리케이션을 테스트하기 위해, 예를 들어, 웹 애플리케이션이 변경된 후 (예를 들어, 웹 애플리케이션의 UI가 변경된 후) 컴퓨터에 의해 일상적으로(routinely) 실행된다. 일부 실시예들에서, 스크립트는 주기적으로, 예를 들어 매시간, 매일, 매주, 매월 및/또는 매년 실행된다. 일부 실시예들에서, 스크립트는 새로운 코드가 코드 저장소(code repository)의 마스터 브랜치(master branch)에 커밋될(committed) 때마다 자동으로 실행된다. 일부 실시예들에서, 스크립트는 운영 체제 레벨에서 데이터를 입력하는 단계들을 사용하여 사용자 동작들을 시뮬레이션한다. 일부 실시예들에서, 스크립트는 운영 체제 레벨에서 출력을 추적하기 위해 기록된다. 예를 들어, 운영 체제 수준 스크립트(operating system level script)는 스크린의 픽셀의 색상 변경을 모니터링하거나 스크린의 특정 픽셀을 클릭하는 단계들을 포함할 수 있다. 일부 실시예들에서 스크립트는 데이터베이스에 제공된다.
여기에서 사용되는 바와 같이, 용어 "근본 원인(root cause)”은 소프트웨어 테스트 실패의 초기 원인 (예를 들어, 요소 속성 변경, 동작, 단계)을 의미한다. 일부 실시예들에서, 용어 "근본 원인"은 소프트웨어 테스트 실패를 유발하는 일련의 테스트 단계들에서 가장 이른 요소 속성 변경, 단계 또는 동작을 지칭한다.
설명
웹 애플리케이션들은 UI 요소들의 조합들(combinations) 및 퍼뮤테이션들(permutations)이 테스트될 명령 시퀀스들(command sequence) 및 잠재적 명령들(potential commands)의 방대한 필드를 발생시키는 복잡한 UI를 종종 갖는다. 또한 웹 애플리케이션들은 시간이 지남에 따라 변경되어 이전 테스트 스크립트들을 작동하지 않게(unworkable) 한다. 따라서, 일부 실시예들에서, 여기에 제공된 기술은 웹 애플리케이션들 (예를 들어, 웹 애플리케이션들의 UI)의 자동화된 테스트 및 소프트웨어 테스트 실패의 원인인 웹 애플리케이션들 (예를 들어, 웹 애플리케이션들의 UI)의 변경을 식별하는 것과 관련된다. 여기에 제공된 소프트웨어 테스트 기술의 일부 실시예들에서, 테스트 자동화는 예측 결과들(predicted outcomes)과 실제 결과들(actual outcomes)의 비교 및 테스트들의 실행을 제어하기 위해 일반적으로 테스트되는 소프트웨어와는 별도의 소프트웨어를 사용한다. 오늘날 많은 소프트웨어 애플리케이션들은 인터넷 브라우저 또는 브라우저 엔진에서 실행되는 웹 기반 애플리케이션으로 작성된다. 예를 들어 테스트들의 반복성 및 실행 속도와 관련하여 소프트웨어 테스트들을 자동화하는 것에는 많은 이점들이 있다.
일부 실시예들에서, 기술은 웹 애플리케이션 UI 테스트 실패들의 근본 원인들을 식별하기 위한 방법들 및 시스템들, 예를 들어 웹 애플리케이션 UI 요소들을 포함하는 하나 이상의 웹 페이지들을 포함하는 웹 애플리케이션을 제공한다. 기술은 웹 애플리케이션의 한 버전에서 웹 애플리케이션의 후속 버전으로 이루어진 다양한 유형의 변경들 (예: 요소 속성들 및/또는 웹 애플리케이션 코드)의 확률(probability)을 결정한다. 확률들은 웹 애플리케이션이 테스트될 때 어떤 요소들과 변경 유형들이 실패를 일으킬 수 있는지의 예측들을 제공하는 데 사용된다.
예를 들어, 일부 실시예들에서, 기술은 웹 애플리케이션 UI를 평가하고 하나 이상의 웹 페이지들에 존재하는 요소들을 식별한다. 일부 실시예들에서, 기술은 웹 페이지에 존재하는 요소들의 하나 이상의 속성들을 식별한다. 일부 실시예들에서, 기술은 웹 페이지 및/또는 웹 페이지상의 요소와 연관된 코드를 평가한다. 일부 실시예들에서, 기술은 웹 페이지 상의 요소들의 쌍의 관계들 (예를 들어, 거리, 상대적 배치(relative placement))를 식별하고 정량화한다. 일부 실시예들에서, 기술은 웹 페이지상의 요소들 간의 관계 및 웹 페이지상의 요소들을 나타내는 그래픽 모델을 구성한다.
일부 실시예들에서, 기술은 웹 애플리케이션 및/또는 웹 애플리케이션의 요소가 (예를 들어, 개발, 버전, 시간 등의 함수로서) 변경될 확률을 식별하는 것과 관련된다. 일부 실시예들에서, 기술은 웹 애플리케이션 UI의 제1 버전(예를 들어, 웹 페이지의 제1 버전) 및 웹 애플리케이션 UI의 제2 버전 (예를 들어, 웹 페이지의 제2 버전) 사이의 웹 페이지 코드의 변경 및/또는 요소의 속성의 변경을 식별한다. 일부 실시예들에서, 웹 애플리케이션 UI의 제1 버전 (예를 들어, 웹 페이지의 제1 버전)과 웹 애플리케이션 UI의 제2 버전(예를 들어, 웹 페이지의 제2 버전) 사이의 웹 페이지 코드 변경 및/또는 요소의 속성 변경은 그래픽 모델의 변경에 의해 표시된다. 일부 실시예들에서, 확률적 방법(예를 들어, 베이지안 분석(Bayesian analysis), 은닉 마르코프 모델(hidden Markov models) 등)은 웹 애플리케이션 UI의 제1 버전 (예를 들어, 웹 페이지의 제1 버전)과 웹 애플리케이션 UI의 제2 버전(예를 들어, 웹 페이지의 제2 버전) 사이의 요소의 속성이 변경될 확률을 결정하기 위해 사용된다. 일부 실시예들에서, 확률적 방법(예를 들어, 베이지안 분석(Bayesian analysis), 은닉 마르코프 모델(hidden Markov models) 등)은 웹 페이지의 특정 영역(particular region)이 웹 애플리케이션 UI의 제1 버전 (예를 들어, 웹 페이지의 제1 버전)과 웹 애플리케이션 UI의 제2 버전(예를 들어, 웹 페이지의 제2 버전)으로부터의 변경을 포함할 확률을 결정하기 위해 사용된다. 일부 실시예들에서, 그래픽 모델의 변경들의 확률은 웹 애플리케이션에 대한 코드 및/또는 요소 속성들의 변경들의 확률 그래픽 모델을 제공하기 위해 계산된다.
일부 실시예들에서, 규칙 엔진은 테스트 동안 입력 및/또는 계산된 값들 및/또는 요소들을 확인하기 위한 규칙들을 포함한다. 일부 실시예들에서, 규칙 엔진의 규칙은 최소 값보다 큰 값 및/또는 최대 값보다 작은 값을 확인한다.
일부 실시예들에서, 확률 그래픽 모델 및 규칙 엔진은 오류를 생성할 수 있는 웹 애플리케이션에서 가능한 변경들의 순위화된 목록을 생성하기 위해 사용된다. 일부 실시예들에서, 순위화된 목록은 웹 애플리케이션의 변경이 발생할 확률에 의해 정렬된다. 일부 실시예들에서, 웹 애플리케이션의 테스트가 수행되고 오류가 발생하는 경우, 오류를 생성할 수 있는 웹 애플리케이션의 가능한 변경들의 순위 목록이 쿼리되고(queried) 가능한 변경들이 오류에 대한 가능한 소스들로서 검사된다. 예를 들어, 도 3 참조(see).
본 기술의 실시예들은 전체 하드웨어 실시예, 전체 소프트웨어 실시 예, 또는 하드웨어 및 소프트웨어 구성 요소를 모두 포함하는 실시예의 형태를 취한다. 일부 실시예들에서, 기술은 펌웨어, 레지던트 소프트웨어(resident software), 마이크로 코드(microcode) 등을 포함하지만 이에 제한되지 않는 소프트웨어로 구현된다.
실시예들은 어떤(any) 명령어 실행 시스템(instruction execution system) 또는 컴퓨터와 관련하여 또는 이에 의한 사용을 위한 프로그램 코드를 제공하는 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는 명령어 실행 시스템, 장치 또는 디바이스와 관련하여 또는 이에 의한 사용을 위한 프로그램을 저장, 통신, 전파 또는 전송하는 어떤(any) 장치를 포함할 수 있다. 매체는 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템 (또는 장치 또는 디바이스) 또는 전파 매체일 수 있다. 예를 들어, 매체는 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 이동식 컴퓨터 디스켓(removable computer diskette), RAM (Random Access Memory), ROM (Read-Only Memory), 강성 자기 디스크(rigid magnetic disk) 및 광학 디스크(optical disk) 등과 같은 컴퓨터 판독 가능 매체를 포함한다.
일부 실시예들에서, 기술은 예를 들어 웹 페이지상의 요소들의 속성들을 식별하기 위해 웹 애플리케이션 UI를 평가하기 위한 컴퓨터 비전의 사용을 포함한다. 일부 실시예들에서, 기술은 웹 애플리케이션과 연관된 코드를 특성화하기 위한 코드 분석의 사용을 포함한다. 일부 실시예들에서, 기술은 하나의 버전에서 다른 버전으로 웹 애플리케이션 UI의 하나 이상의 요소들의 속성들의 변경을 식별하기 위한 컴퓨터 비전의 사용을 포함한다. 일부 실시예들에서, 기술은 웹 애플리케이션의 한 버전에서 다른 버전으로의 웹 애플리케이션과 관련된 코드의 변경을 식별하기 위한 코드 분석의 사용을 포함한다. 일부 실시예들에서, 기술은 웹 애플리케이션의 한 버전에서 다른 버전으로의 웹 애플리케이션의 변경을 식별하기 위해 컴퓨터 비전 및 코드 분석 모두의 사용을 포함한다.
일부 실시예들에서, 기술은 대형 분산 데이터베이스(large distributed database)와 관련된 대규모 병렬 컴퓨팅 시스템(massively parallel computing system)에서 구동되는 컴퓨터 소프트웨어에서 구현된다. 일부 실시예들에서, 기술은 클라우드 기술을 사용하여 구현된다. 일부 실시예들에서, 모델은 단일 로컬 머신 또는 클라우드 환경의 하나 또는 복수의 가상 머신들에서 생성되고 평가된다.
웹 애플리케이션들
여기에서 설명된 바와 같이, 기술은 UI를 포함하는 웹 애플리케이션에 대한 테스트 오류의 원인을 식별하는 것과 관련이 있다. 웹 애플리케이션은 하나 이상의 웹 페이지들을 포함할 수 있다. 웹 애플리케이션은 데이터베이스와 통신할 수 있다.
일부 실시예들에서, 서버 컴퓨터는 클라이언트 측에서 웹 애플리케이션을 실행하는 웹 브라우저에 웹 페이지들, 파일들 및 기타 콘텐츠를 제공하는 서버 측에서 웹 애플리케이션을 위한 코드를 구동한다. 일부 실시예들에서, 클라이언트 측 애플리케이션(client side application)은 브라우저를 사용하지 않고 실행한다. 일부 실시예들에서, 웹 애플리케이션은 액세스할 수 있는 소스 코드의 분석에 의해 및/또는 컴퓨터 비전을 사용하여 식별되고, 위치되고(located), 및 모니터링되는 요소들을 갖는다. 예를 들어, 일부 실시예들에서, 일련의 HTML 웹 페이지들로서 클라이언트 측에서 실행하는 웹 애플리케이션은 식별 가능한 DOM (Document Object Model) 요소들을 포함한다. HTML DOM에서, 요소 객체(element object)는 HTML 요소를 나타낸다. HTML 요소 객체들은 자식 노드들(child nodes)(예: 유형 요소 노드(type element node), 텍스트 노드(text node) 또는 코멘트 노드(comment node))를 가질 수 있다. HTML 요소 객체들은 속성들을 가질 수도 있다. 따라서, 일부 실시예들에서, DOM 요소들은 컴퓨터 비전 및/또는 소스 코드의 분석을 사용하여 요소를 식별하고, 위치시키고, 및 모니터링하는 여기에 제공된 기술의 실시예들에 의해 위치되고 모니터링될 수 있다(예를 들어, DOM의 상대적 및/또는 절대적 위치에 의해 및/또는 고유 식별자(unique identifier)에 의해 요소를 참조 및/또는 검색하기 위해)
일부 실시예들에서, 웹 애플리케이션은 표준 DOM 요소들을 사용하지 않고 식별되고, 위치되고 및 모니터링될 수 있는 요소들을 갖는다. 예를 들어 이러한 요소들은 XML 파일들, JSON 파일들 또는 기타 독점 파일 유형(proprietary file type)을 사용하여 정의될 수 있다. 따라서, 일부 실시예들에서, 기술은 컴퓨터 소스 코드의 분석에 의해 및/또는 컴퓨터 비전에 기초하여 이들 요소들을 식별하고, 위치시키고 및 모니터링하도록 구성된 자동화된 테스트 유틸리티(automated testing utility)에 관한 것이다. 웹 애플리케이션이 다수의 스크린들 또는 페이지들을 갖는 실시예에서, 각 스크린 또는 페이지는 부모 요소(parent element) 내부에 포함된 요소들과 별도의 웹 요소로 정의될 수 있다.
테스팅(Testing)
일부 실시예들에서, 기술은 예를 들어 웹 브라우저 자동화를 위해 웹 애플리케이션을 테스트하기 위한 스크립트들을 생성하고 스크립트를 창출하는 도구를 제공하는 자동화된 테스트 유틸리티를 제공한다. 따라서, 일부 실시예들에서, 각 스크립트는 웹 브라우저 내에서 발생하는 적어도 하나의 동작 또는 이벤트 (예를 들어, 요소와의 상호 작용)를 정의한다. 일부 실시예들에서, 자동화된 테스트 유틸리티는 웹 브라우저용 플러그인으로 제공된다. 일부 실시예들에서, 자동화된 테스트 유틸리티는 다수의 새로운 단계들을 포함하는 스크립트를 작성하기 위해 사용자 (예를 들어, 개발자, 소프트웨어 엔지니어)를 요구하지 않는다. 일부 실시예들에서, 자동화된 테스트 유틸리티는 특정 동작들 또는 이벤트들을 기록하고 편집하기 위한 제어들, 스크립트에 테스트 특정 명령들을 추가하는 것을 용이하게 하는 제어들, 및/또는 영어 구문들을 스크립트 단계들로 번역하기 위해 자연어 처리를 수행하는 구성 요소를 포함한다.
모니터링 구성 요소(Monitoring component)
일부 실시예들에서, 기술은 웹 애플리케이션의 변경을 모니터링하기 위한 구성 요소를 포함한다. 일부 실시예들에서, 모니터링 구성 요소는 자동화된 테스트가 구동되는 동안 웹 애플리케이션의 스크린 샷들을 획득하고 저장한다. 일부 실시예들에서, 모니터링 구성 요소는 자동화된 테스트가 실행되는 동안 하나 이상의 스크립트들, 자동화된 테스트 유틸리티 및/또는 웹 애플리케이션으로부터 메타 데이터(metadata)를 캡처한다. 일부 실시예들에서, 기술은 예를 들어 외부 프로그램, 브라우저용 플러그인, 또는 자동화된 테스트 유틸리티의 확장인 모니터링 구성 요소를 제공한다. 일부 실시예들에서, 모니터링 구성 요소는 자동화된 테스트 유틸리티에 의해 생성된 스크린 샷 및 데이터를 캡처한다. 일부 실시예들에서, 모니터링 구성 요소는 테스트 중인 애플리케이션 또는 애플리케이션을 실행하는 환경 (예를 들어, 웹 브라우저)을 직접 모니터링한다. 일부 실시예들에서, 모니터링 구성 요소는 스크린 샷으로 웹 페이지의 사진을 저장하고 모니터링 구성 요소는 스크린 샷으로 캡처된 웹 페이지의 사진과 관련된 소스 코드를 저장한다. 일부 실시예들에서, 스타일 시트들(style sheets) 및 이미지들은 소스 코드와 함께 기록된다. 일부 실시예들에서, 모니터링 구성 요소는 웹 애플리케이션의 테스트 동안 스크린 샷들을 캡처하고 테스트가 수행되는 컨텍스트를 설명하는 메타 데이터를 캡처하기 위해 자동화된 테스트 유틸리티로 실행한다. 일부 실시예들에서, 메타 데이터는 특정 자동화된 테스트(particular automated test)에 대해 특정적(specific)이다 (예를 들어, 메타 데이터는 특정 자동화된 테스트를 실행하는 동안 촬영된 모든 스크린 샷에 적용 가능하다 (예: 테스트 스크립트의 이름, 웹 애플리케이션의 이름 등)). 일부 실시예들에서, 메타 데이터는 자동화된 테스트의 일부(portion) 또는 단계에 대해 특정적이다 (예: 메타 데이터는 하나 이상의 특정 스크린 샷들(particular screenshots)에 적용 가능하다).
따라서, 실시예들은 자동화된 테스트 유틸리티에 일련의 명령어들을 제공하는 스크립트를 제공하고 자동화된 테스트 유틸리티는 웹 애플리케이션과 상호 작용한다. 모니터링 구성 요소는 스크립트가 자동화된 테스트 유틸리티에 의해 실행되는 동안 웹 애플리케이션 UI의 스크린 샷들을 캡처한다. 일부 실시예들에서, 스크린 캡처들은 정의된 기준이 충족될 때, 예를 들어, 특정 유형들의 단계들이 스크립트에서 식별될 때, 특정 유형들의 동작들 또는 이벤트들이 웹 애플리케이션에서 발생할 때, 또는 이들의 조합으로 기록된다. 일부 실시예들에서, 스크린 캡처들은 그들이 자동화된 테스트 유틸리티에 의해 처리되기 전 또는 그들이 웹 애플리케이션의 UI에 디스플레이된 후에 기록된다. 따라서, 일부 실시예들에서, 모니터링 구성 요소는 스크립트를 분석하는 것에 의해 그것이 발생하기 전에 상호 작용을 추적하고 스크린 캡처는 UI가 변경되기 전에 발생한다. 일부 실시예들에서, 모니터링 구성 요소는 웹 애플리케이션이 시뮬레이트된 사용자에 의해 취해진 동작들에 응답한 후 스크린 캡처를 기록한다. 스크린 캡처들은 스크립트에서 발생하는 동작 또는 이벤트를 식별하고 웹 응용 프로그램에서 일어나는 동작 이벤트(action event) (예를 들어, UI 변경)를 기다리는 모니터링 구성 요소와 관련하여 기록된다.
일부 실시예들에서, 사용자 (예를 들어, 스크립트) 동작은 UI에 의해 입력으로 수신된 클릭이고, 클릭 동안 스크린 샷들 및 관련 메타 데이터가 기록된다. 일부 실시예들에서, 스크린 샷들 및 관련 메타 데이터는 웹 애플리케이션 이벤트, 예를 들어, 충족된 임계 조건들, 변수들, 셋팅 플래그들(setting flags), 또는 검증 이벤트(validation event), DOM 요소와 같은 특정 요소의 창출(creation) 또는 삭제(deletion), 클라이언트 측 웹 애플리케이션과 서버 측 웹 애플리케이션 사이 한 방향(either direction) 또는 양방향(both directions) 커뮤티케이션들, 사용자 입력이 데이터를 데이터베이스로 전달하기 전의 특정 길이(certain length)이거나 또는 특정 기본 유형(certain primitive type)인 것과 같은 내부 유효성 함수들(internal validation functions), 멀웨어(malware)에 대한 스캐닝과 같은 함수 또는 서브 루틴(sub-routine)을 성공적으로 실행하는 것 또는 이들의 조합 동안 기록된다. 일부 실시예들에서, 스크린 샷들 및 관련 메타 데이터는 브라우저 이벤트(browser event), 예를 들어, 페이지 로딩, 브라우저 기록(browser history)에서 이전 페이지 로딩, 브라우저 기록에서 다음 페이지 로딩, 새 브라우저에서 새 페이지 열기, 새 탭에서 새 페이지 열기, 페이지 저장, 페이지 인쇄, 인쇄 미리보기 스크린(print preview screen) 열기, 웹 브라우저에서 텍스트 크기 변경 또는 이들의 조합 동안 기록된다. 일부 실시예들에서, 모니터링 구성 요소는 자동화된 테스트 동안 전송되는 이메일들 또는 인쇄된 문서들을 기록한다. 일부 실시예들에서, 모니터링 구성 요소는 웹 애플리케이션의 UI의 일부가 아닌 스크린 샷들, 예를 들어, 확인 메시지(confirmation message) 알림(notification)(예를 들어, SMS 메시지, 소셜 미디어를 통해 전송된 메시지 또는 당 업계에 알려진 다른 메시징 서비스) 및/또는 웹 애플리케이션의 일부로 타사 소프트웨어(third party software)를 통해 전송되는 이메일들 또는 외부 인증 메커니즘(external authentication mechanism)을 사용하는 웹 애플리케이션과 같은 다른 외부 웹 애플리케이션들(other external web applications)과의 상호작용들의 결과로 발생하는 커뮤니케이션들을 기록한다. 일부 실시예들에서, 스크린 샷들이 기록 및 저장되고 스크린 샷들의 분석이 그래픽 모델을 구성하는 데 사용된다. 스크린 샷들 기록과 더불어 모니터링 구성 요소는 캡처된 스크린 샷들과 관련된 메타 데이터를 기록한다. 일부 실시예들에서, 메타 데이터(예를 들어, 스크린 샷 캡처를 야기한 상호 작용, 페이지에서 클릭된 요소의 위치 및 차원(dimensions), 클릭을 수신한 페이지의 URL 및 클릭되는 페이지에 액세스한 사용자의 유형)이 자동화된 테스트(automated test) 동안 기록된다. 일부 실시예들에서, 메타 데이터는 스크린 샷을 생성하는 데 사용된 웹 페이지의 URL, 현재 사용자, 사용자 이메일, 사용자 유형(user type)(예를 들어, 기본(basic), 프로(pro), 재방문 고객(returning customer), 특정 권한이 있음(having specific permissions)), 계정 번호, 사용자의 국가, 사용자 IP 주소, 테스트 중에 기록된 스크린 샷들의 수, 스크린 샷에 해당하는 스크립트 내의 단계 또는 페이지에 적용된 모든 플래그들을 포함한다. 일부 실시예들에서, 메타 데이터는, 예를 들어, 자동화된 테스트 또는 스크립트의 이름, 스크립트가 마지막으로 업데이트 되었을 때, 현재 테스트의 시간, 자동화된 테스트 또는 스크립트의 스크립터(scripter), 테스트 중인 웹 애플리케이션에 액세스하는 디바이스의 실제 또는 시뮬레이션된 GPS 위치, 액세스 동안 시계가 가리키는 시각(time of day), 또는 이들의 조합을 포함한다.
컴퓨터 비전
일부 실시예들에서, 기술은 웹 애플리케이션 UI (예를 들어, 웹 애플리케이션 UI (예를 들어, 웹 애플리케이션 UI의 스크린 샷))을 분석하기 위한 컴퓨터 비전의 사용을 포함한다. 일부 실시예들에서, 기술은 디지털 이미지들을 획득, 처리, 분석 및 이해하기 위해 컴퓨터 비전을 사용하는 것을 포함한다. 여기에서 사용된 바와 같이, 용어 "이해하는 것 (understanding)"는 후속 분석에 의해 사용되고/되거나 데이터베이스, 데이터 구조 (예를 들어, 그래픽 모델)에 저장되고/되거나 후속 분석에 의해 사용되는 이미지의 설명으로 시각적 이미지를 변환하는 것을 의미한다. 일부 실시예들에서, 이해하는 것(understanding)은 기하학, 물리학, 통계 및 학습 이론(learning theory)에 기초한 모델들을 사용하여 이미지 데이터로부터 정보를 생성하는 것을 포함한다. 일부 실시예들에서, 컴퓨터 비전은 웹 애플리케이션 UI에서 요소의 존재(presence) 또는 부재(absence)를 결정하고, 웹 애플리케이션 UI에서 요소의 크기(size) 및/또는 위치(location)를 결정하고, 및/또는 웹 애플리케이션 UI에서 요소의 다른 속성들을 결정하는 데 사용된다. 일부 실시예들에서, 컴퓨터 비전은 예를 들어 웹 애플리케이션 UI의 컴퓨터 비전 분석에 의해 결정된 속성들에 기초하여, 요소들을 인식(예를 들어, 식별)하고 요소들을 분류한다. 일부 실시예들에서, 컴퓨터 비전은 컨볼루션 신경망들(convolutional neural networks)을 생성하기 위한 기술들의 사용을 포함한다. 일부 실시예들에서, 컴퓨터 비전은 웹 애플리케이션 UI의 여러 버전들 (예를 들어, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 또는 그 이상의 버전들)에 대한 요소들의 속성들의 변경을 식별하는 것을 포함한다.
일부 실시예들에서, 기술은 컴퓨터 비전을 사용하여 웹 애플리케이션 UI를 확인(verifies) 및/또는 검증(validates)한다. 일부 실시예들에서, 문서 템플릿 유효성 검증 (document template validation; DTV) 기술은 텍스트 상자 검출 (text box detection; TBD) 구성 요소, 문자 인식 (OCR) 구성 요소, 요소 검출 (ED) 구성 요소, 레이아웃 검출 (layout detection; LD) 구성 요소, 및/또는 템플릿 검증 (template verification; TV) 구성 요소를 포함한다. 일부 실시예들에서, 기술은 문서 템플릿 유효성 검사 (DTV)를 수행하는 단계들을 포함하는 방법, 예를 들어 텍스트 상자 검출하는 것, 문자(예를 들어, 텍스트 문자(text characters))를 인식하는 것(recognizing characters), 요소를 검출하는 것, 레이아웃을 검출하는 것, 및/또는 템플릿을 확인하는 것을 포함하는 방법을 제공한다. 일부 실시예들에서, 기술은 텍스트 상자 검출, 문자 인식, 요소 검출, 레이아웃 검출 및/또는 템플릿 검증을 수행하도록 구성된 모듈들 및/또는 구성 요소들을 포함하는 시스템을 제공한다. 도 4 참조. 예를 들어, 일부 실시예들에서, TBD 구성 요소는 LD 구성 요소 및/또는 OCR 구성 요소와 상호 작용하고; ED 구성 요소는 LD 구성 요소와 상호 작용한다. OCR 구성 요소 및/또는 LD 구성 요소는 TV 구성 요소와 상호 작용한다. 일부 실시예들에서, 통신 흐름은 예를 들어, 도 4에 보여진 바와 같이 단방향(unidirectional)이다. 예를 들어, 일부 실시예들에서, 데이터 및/또는 명령어들은 TBD 구성 요소로부터 LD 구성 요소 및/또는 OCR 구성 요소로 전달된다; 데이터 및/또는 명령어들은 ED 구성 요소에서 LD 구성 요소로 전달된다. 데이터 및/또는 명령어들은 OCR 구성 요소 및/또는 LD 구성 요소로부터 TV 구성 요소로 전달된다. 일부 실시예들에서, 데이터 및/또는 명령어들은 여기에 설명된 시스템 아키텍처에 따라 이러한 구성 요소들 사이에서 양방향으로(bidirectionally) 이동한다. 일부 실시예들에서, 각 구성 요소(예를 들어, 텍스트 상자 검출 (TBD) 구성 요소, 문자 인식 (OCR) 구성 요소, 요소 검출 (ED) 구성 요소, 레이아웃 검출 (LD) 구성 요소 및/또는 템플릿 검증 (TV) 구성 요소)는 시스템 아키텍처에 따라 다른 구성 요소로부터 정보 및/또는 데이터를 제공 및/또는 수신하도록 구성된다.
일부 실시예들에서, 각 모듈은 그 함수(function)를 수행하기 위해 머신 러닝(machine learning) 및/또는 심층 학습(deep learning)을 수행하도록 구성된다. 예를 들어, 일부 실시예들에서, 문서 템플릿 검증 (DTV) 기술은 머신 러닝 및/또는 심층 학습을 사용하여 텍스트 상자를 검출하는 것을 포함하는 방법을 수행하도록 구성된 텍스트 상자 검출 (TBD) 구성 요소, 머신 러닝 및/또는 심층 학습을 사용하여 문자들을 인식하는 것을 포함하는 방법을 수행하도록 구성된 문자 인식 (OCR) 구성 요소, 머신 러닝 및/또는 심층 학습을 사용하여 요소를 감출하는 것을 포함하는 방법을 수행하도록 구성된 요소 검출(ED) 구성 요소, 머신 러닝 및/또는 심층 학습을 사용하여 레이아웃을 검출하는 것을 포함하는 방법을 수행하도록 구성된 레이아웃 검출(LD) 구성 요소, 및/또는 머신 러닝 및/또는 심층 학습을 사용하여 템플릿을 검증하는 것을 포함하는 방법을 수행하도록 구성된 템플릿 검증 (TV) 구성 요소를 포함한다.
일부 실시예들에서, 기술은 웹 애플리케이션 UI에서 텍스트 상자를 검출하기 위한 시스템들 및 방법들을 제공한다. 일부 실시예들에서, 텍스트 상자를 검출하는 것은 웹 애플리케이션 UI상의 텍스트 상자의 위치 및/또는 차원(dimensions)를 식별하는 것을 포함한다. 일부 실시예들에서, 텍스트 상자를 검출하는 것은 웹 애플리케이션 UI 상의 텍스트 상자의 위치(예를 들어, 텍스트 상자를 포함하는 요소 또는 윈도우에 대한 x-y 좌표 및/또는 x-y 스크린 좌표) 및/또는 차원(예를 들어, 높이 및 너비)를 설명하는 값들을 생성하는 것을 포함한다. 일부 실시예들에서, 웹 애플리케이션 UI상의 텍스트 상자의 위치 및 차원을 설명하는 텍스트 상자 및/또는 값들은 문자 인식 모듈로 전달된다.
일부 실시예들에서, 텍스트 상자를 검출하는 것은 이미지 (예를 들어, 스크린 이미지)에서 텍스트를 검출하기 위해 신경망을 제공 및/또는 사용하는 것을 포함한다. 일부 실시예들에서, 텍스트를 검출하도록 구성된 구성 요소는 이미지 (예를 들어, 스크린 이미지)에서 텍스트를 검출하기 위해 신경망을 사용하도록 구성된다. 일부 실시예들에서, 여기에 제공된 기술은 백(Baek) (2019) "텍스트 검출을 위한 문자 영역 인식(Character Region Awareness for Text Detection)"arXiv : 1904.01941 [cs.CV]에 설명된 바와 같은 신경망을 포함하며, 여기에 참조로 포함된다. 일부 실시예들에서, 신경망은 여기에 참고로 포함된 백의 도 2에 보여진 아키텍처를 포함한다. 일부 실시예들에서, 신경망은 배치 정규화(batch normalization)를 사용하는 VGG-16(예를 들어, Simonyan (2018) "대규모 이미지 인식을 위한 매우 깊은 컨볼루션 네트워크(Very Deep Convolutional Networks for Large-Scale Image Recognition)"arXiv : 1409.1556 [cs.CV], 여기에 참조로 포함됨)에 기반한 중앙 컨볼루션 아키텍처(central convolutional architecture)를 포함한다. 일부 실시예들에서, 신경망은 스킵 연결들(skip connections)을 포함한다 (예를 들어, 신경망의 디코딩 구성 요소(decoding component)는 스킵 연결들을 포함한다). 일부 실시예들에서, 스킵 연결들은 U-net과 유사하다 (예를 들어, Ronneberger (2015) "U-Net : 생물 의학 이미지 분할을 위한 컨볼루션 네트워크(U-Net: Convolutional Networks for Biomedical Image Segmentation)"arXiv : 1505.04597 [cs.CV] 참조, 여기에 참조로 포함됨). 일부 실시예들에서, 텍스트 상자 검출을 위한 방법 및/또는 시스템(예를 들어, 신경망을 포함함)은 스코어 맵(score maps)으로서 2 개의 채널들을 포함하는 출력을 생성한다 : 1) 이미지에서 개별 문자들(individual characters)을 로컬라이즈(localize)하기 위해 사용되는 영역 스코어(region score); 및 2) 각 캐릭터를 단일 인스턴스(single instance)로 그룹화하는 데 사용되는 선호도 점수(affinity score). 예 1(Example 1) 참조.
일부 실시예들에서, 기술은 웹 애플리케이션 UI상의 요소를 검출하기 위한 방법들 및 시스템들을 제공한다. 일부 실시예들에서, 웹 애플리케이션 UI상의 요소를 검출하기 위한 방법들은 텍스트 상자들을 그룹화하는 것 및 텍스트 카테고리에 있지 않은 객체들을 검출하는 것(예를 들어, 비-텍스트 카테고리 객체들(non-text category objects)(예를 들어, 버튼들, 입력 상자들, 아이콘들 등)을 검출하는 것)을 포함한다. 일부 실시예들에서, 요소 검출을 위한 방법들은 그룹화된 텍스트 상자들을 포함하는 요소들 및/또는 텍스트 상자들을 검출하는 것을 포함한다. 일부 실시예들에서, 요소 검출을 위한 방법들은 객체들 (예를 들어, 비-텍스트 상자 객체들(non-text box objects))을 검출하는 것을 포함한다. 일부 실시예들에서, 요소 검출을 위한 시스템들은 그룹화된 텍스트 상자들을 포함하는 요소들 및/또는 텍스트 상자들을 검출하도록 구성된 구성 요소를 포함한다. 일부 실시예들에서, 요소 검출을 위한 시스템들은 객체들(예를 들어, 비-텍스트 상자 객체들)을 검출하도록 구성된 구성 요소를 포함한다.
일부 실시예들에서, 요소를 검출하는 것은 웹 애플리케이션 UI에서 요소의 위치 및/또는 차원을 식별하는 것을 포함한다. 일부 실시예들에서, 요소를 검출하는 것은 웹 애플리케이션 UI 상의 요소의 차원(예를 들어, 높이 및 너비로) 및/또는 위치(예를 들어, 요소를 포함하는 요소 또는 윈도우에 대한 x-y 좌표 및/또는 x-y 스크린 좌표)를 설명하는 값들을 생성하는 것을 포함한다. 일부 실시예들에서, 웹 애플리케이션 UI상의 요소의 위치 및 차원을 설명하는 값들 및/또는 요소는 문자 인식 모듈로 전달된다.
일부 실시예들에서, UI의 요소는 그룹화된 텍스트 상자들을 포함한다. 일부 실시예들에서, 기술은 벡터 u = (x, y, w, h)로 텍스트 상자를 나타내며, 여기서 x 및 y는 문서 스크린 샷(document screenshot) 또는 뷰포트(viewport)의 픽셀 포지션(pixel position)을 나타내고 w 및 h는 상자의 너비와 높이를 나타낸다. 일부 실시예들에서, 텍스트 상자들 사이의 거리가 결정된다. 일부 실시예들에서, 텍스트 상자들 사이의 거리는 소프트웨어로 인코딩된 함수에 의해 수행되는 방법을 사용하여 결정된다. 일부 실시예들에서, 텍스트 상자 사이들의 거리는 다음과 같이 인코딩된 함수를 사용하여 결정된다.
def block_distance(u, v):
if u[0] > v[0]:
dx = u[0]-(v[0]+v[2])
else:
dx = v[0] - (u[0] + u[2])
if u[1] > v[1]:
dy = u[1]-(v[1]+v[3])
else:
dy = v[1] - (u[1] + u[3])
dx = 0 if dx < 0 else dx
dy = 0 if dy < 0 else dy
return np.fabs(dx) + np.fabs(dy)
여기서 이 함수에서 u와 v는 요소들이 u = (x, y, w, h)로 정의된 두 벡터이다. 일부 실시예들에서, 텍스트 상자들 사이의 거리는 텍스트 상자들을 그룹화하고 텍스트 상자들의 클러스터들을 출력하는 밀도 기반 클러스터링(density-based clustering)을 위한 방법에 제공된다 (예를 들어, 도 6 및 도 7 참조). 일부 실시예들에서, 텍스트 상자들을 그룹화하는 밀도 기반 클러스터링은 예를 들어 요소를 식별하기 위해 텍스트 상자들의 클러스터를 생성한다. 예를 들어, 예 2(Example 2) 참조.
일부 실시예들에서, 기술은 웹 애플리케이션 UI 상에서 객체를 검출하기 위한 방법들 및 시스템들을 제공한다. 일부 실시예들에서, 요소 검출 방법은 객체 검출의 단계를 포함한다. 일부 실시예들에서, 객체를 검출하는 것은 웹 애플리케이션 UI에서 객체의 위치 및/또는 차원을 식별하는 것을 포함한다. 일부 실시예들에서, 객체를 검출하는 것은 웹 애플리케이션 UI 상의 객체의 차원(예를 들어, 높이 및 너비로) 및/또는 위치(예를 들어, 요소를 포함하는 요소 또는 윈도우에 대한 x-y 좌표 및/또는 x-y 스크린 좌표)를 설명하는 값들을 생성하는 것을 포함한다. 일부 실시예들에서, 웹 애플리케이션 UI상의 객체의 위치 및 차원을 설명하는 객체 및/또는 값들은 문자 인식 모듈로 전달된다. 일부 실시예들에서, 요소를 검출하도록 구성된 구성 요소를 포함하는 시스템은 물체를 검출하도록 구성된 하위 구성 요소(sub-component)를 포함한다. 일부 실시예들에서, 웹 애플리케이션 UI상의 객체를 검출하는 방법들은 YOLO 신경망을 제공 및/또는 사용하는 것을 포함한다. 일부 실시예들에서, 웹 애플리케이션 UI 상의 객체를 검출하기 위한 시스템들은 YOLO 신경망을 포함한다 (예를 들어, Redmon (2015) "You Only Look Once : Unified, Real-Time Object Detection" arXiv : 1506.02640 [cs.CV] ; Redmon (2016) "YOLO9000 : Better, Faster, Stronger"arXiv : 1612.08242 [cs.CV] 및 Redmon (2018) " YOLOv3: An Incremental Improvement" arXiv : 1804.02767 [cs.CV] 참조, 각각 여기에 참조로 포함됨). 일부 실시예들에서, 신경망은 비-텍스트 객체들, 예를 들어, 아이콘, 버튼 및/또는 정사각형 입력 상자들을 식별하도록 훈련된다. 일부 실시예들에서, 신경망은 아이콘들의 데이터 세트로 훈련된 아이콘 분류기(icon classifier)를 포함한다. 일부 실시예들에서, 아이콘 분류기는 아이콘들을 카트 아이콘(cart icon), 화살표 아이콘, 열린 파일 아이콘(open file icon), 저장 파일 아이콘(save file icon), 로그인 아이콘(login icon), 체크된 아이콘(checked icon), 글 머리 기호 아이콘(bullet icon) 및/또는 닫기 아이콘(close icon)으로 식별 및/또는 분류한다. 일부 실시예들에서, 예 3을 참조하라.
코드 분석
일부 실시예들에서, 기술은 컴퓨터 소프트웨어 (예를 들어, 웹 애플리케이션과 관련된 객체 코드(object code) 및/또는 소스 코드(source code))를 분석하는 것을 포함한다. 일부 실시예들에서, 기술은 웹 애플리케이션을 구동하지 않고 객체 코드 및/또는 소스 코드를 분석하는 것을 포함한다. 일부 실시예들에서, 기술은 웹 애플리케이션이 구동되는 동안 소스 코드 및/또는 객체 코드를 분석하는 것을 포함한다. 일부 실시예들에서, 자연어 처리는 동작들을 식별하고 인터페이스 요소들과 연관시키기 위해(예를 들어, 컴퓨터 비전에 의해 및/또는 소스 코드의 분석에 의해 식별됨) 소스 및/또는 객체 코드를 분석하는 데 사용된다.
그래픽 모델(Graphical model), 그래픽 모델 비교(graphical model comparison) 및 확률 그래픽 모델들(probabilistic graphical models)
실시예들은 웹 애플리케이션의 요소들의 그래픽 모델을 생성하기 위한 기술을 제공한다. 일부 실시예들에서, 그래픽 모델은 웹 애플리케이션의 요소들 간의 관계들을 포함한다. 예를 들어, 일부 실시예들에서, 그래픽 모델은 웹 애플리케이션 UI의 요소들의 상대적 위치들의 맵(map of relative locations of elements)을 포함한다. 일부 실시예들에서, 그래픽 모델은 그래픽 모델에서 요소들의 속성들 (예를 들어, 위치(location), 유형(type), 상태(state), 색상(color), 크기(size), 모양(shape) 등)을 설명하는 정보 (예를 들어, 데이터)를 포함한다. 일부 실시예들에서, 기술은 웹 애플리케이션을 모니터링하고 웹 애플리케이션에 대한 그래픽 모델의 변경들을 식별한다. 예를 들어 웹 애플리케이션의 UI 상의 버튼의 위치가 변경되면 UI를 설명하는 그래픽 모델이 변경된다. 따라서, 일부 실시예들에서, 기술은 웹 애플리케이션의 제2 버전을 설명하는 제2 그래픽 모델에 비해 웹 애플리케이션의 제1 버전을 설명하는 제1 그래픽 모델의 변경을 식별한다. 일부 실시예들에서, 기술은 다른 변경들과 상관되는 그래픽 모델의 변경들을 식별한다. 예를 들어, 일부 실시예들에서, 그래픽 모델의 분석은 그래픽 모델의 제1 변경이 그래픽 모델의 제3 변경과 함께(예를 들어, 계산된 제2 확률과 함께) 발생하는 것 보다 그래픽 모델의 제2 변경과 함께(예를 들어, 계산된 제1 확률과 함께) 더 자주 발생하는 그래픽 모델의 제1 변경을 식별한다. 일부 실시예들에서, 그래픽 모델의 변경들은 컴퓨터 비전을 사용하여 식별된다. 일부 실시예들에서, 소스 코드의 변경들이 분석된다. 일부 실시예들에서, 그래픽 모델의 변경들은 컴퓨터 비전을 사용하여 식별되고 소스 코드의 변경들이 분석된다.
일부 실시예들에서, 모니터링 구성 요소는 트리거 동작(trigger action) 또는 이벤트를 포함하는 스크립트의 단계를 식별하고 모니터링 구성 요소는 트리거 동작 또는 이벤트와 연관된 그 단계의 객체(예를 들어, 요소)를 식별한다. 일부 실시예들에서, 소스 코드의 분석이 요소가 그것이 웹 애플리케이션 UI 내에서 가시적임을 나타내는 속성을 가지고 있음을 나타내거나 및/또는 요소가 스크린 샷의 분석 (예를 들어, 컴퓨터 비전에 의해)에 의해 가시적인 것으로 검출되는 경우, 그런 다음 웹 애플리케이션 내의 요소 위치가 기록된다. 일부 실시예들에서, 요소에 대한 크기 데이터(size data) 또한 캡처된다. 객체가 가시적이지 않는 경우, 요소의 데이터(예를 들어, 속성들)가 여전히 캡처될 수 있다. 일부 실시예들에서, 요소들의 속성들(예를 들어, 상태, 위치 및 크기)은 자동화된 테스트 유틸리티에 의해 기록된다. 일부 실시예들에서, 모니터링 구성 요소는 대응하는 스크립트로부터 동작 또는 이벤트를 트리거하는 요소를 식별한 다음 자동화된 테스트 유틸리티가 식별된 요소의 이름 또는 다른 요소와의 관계에 기초하여 식별된 요소의 위치를 생성하도록 요청한다. 일부 실시예들에서, 요소의 위치는 브라우저 디스플레이(browser display)의 좌측 상단 모서리(top left corner)로부터의 픽셀들의 수 (예를 들어, x- 값, y- 값으로서 스크린을 설명하는 좌표계 사용)이다. 일부 실시예들에서, 요소의 위치는 UI의 촬영된 스크린 샷에 매핑된다. 일부 실시예들에서, 데이터는 여기에 설명된 바와 같이 그래픽 모델에 저장된다.
일부 실시예들에서, 모니터링 구성 요소는 식별된 가시적 요소(identified visible element)의 부모 요소를 분석하여 가시적 요소가 다른 가시적 요소 내에 포함되는지를 결정한다. 예를 들어, 일부 실시예들에서 요소의 관련 위치(relevant location)는 부모 요소 내의 위치, 예를 들어, 웹 브라우저 디스플레이에 상대적인 요소의 위치가 아니라 부모 요소의 왼쪽 상단 모서리에 상대적인 요소의 위치이다. 따라서, 일부 실시예들에서, 기술은 "스크린 내의 스크린” 효과(“screen within a screen” effect)에 대한 위치들을 조정하는 것을 포함하는 요소 위치들을 결정하는 것을 위한 방법들을 제공하고, 예를 들어, 모니터링 구성 요소는 가시적 요소가 부모 요소 내에 제공된다는 표시(indication)를 위해 가시적 요소에 작용하는 스크립트 단계를 분석한다. 다른 요소 내에서 제공되는 요소를 식별할 때 모니터링 구성 요소는 자동화된 테스트 유틸리티에서 자식 요소(child element)의 위치와 더불어 부모 요소의 상대적 위치를 요청한다. 일부 실시예들에서, 부모 요소의 상대적 위치는 자식 요소의 실제 위치를 결정하기 위해 자식 요소의 상대적 위치와 결합된다. 예를 들어, 부모 요소의 x- 값은 해당 부모 요소 내에 있는 자식 요소의 x- 값에 추가될 수 있다. 유사하게, 부모 요소의 y- 값은 자식 요소의 y- 값에 추가될 수 있다. 이 절차는 여러 부모 요소들 깊이(multiple parent elements deep)인 자식 요소 (예를 들어, 브라우저 내의 요소 내 요소)에 대해 재귀적으로 실행될 수 있다. 일부 실시예들에서, 가시적 요소에 대한 위치 및 크기 데이터는 에지 검출을 수행한 후에, 예를 들어, 유사한 색상의 픽셀 그룹을 식별하고 해당 픽셀들을 단일 가시적 요소(ngle visible element)로 연결하여 에지 검출 수행하도록 구성된 컴퓨터 비전 및 이미지 분석을 사용하여 수행된다. 일부 실시예들에서, 그 다음에 요소의 위치 및 크기 데이터는 모니터링 구성 요소에 의해 캡처된다. 따라서, 기술의 실시예들은 브라우저에 의해 제공 및/또는 액세스되지 않는 웹 애플리케이션들에 대한 사용을 찾는다. 일부 실시예들에서, 모니터링 구성 요소는 웹 애플리케이션의 소스 코드를 분석하는 것에 기초하여 요소의 상대적 위치를 식별한다. 일부 실시예들에서, 웹 애플리케이션의 요소들은 UI에서 가시적 요소를 제공하는 것으로 알려진 요소들의 이름들 및 위치들 및 그 속성들을 식별하는 키워드들에 대한 소스 코드를 분석함으로써 식별되고 요소들의 상대적 위치는 기록된 적절한 스크린 샷들에 매핑된다.
위에서 설명된 바와 같이 컴퓨터 비전 및/또는 소스 코드 분석에 의해 식별된 요소들은 그래픽 모델에 기록된다. 또한, 메타 데이터, 요소 속성 데이터, 및/또는 요소들의 위치들(예를 들어, 상대적 위치들)은 그래픽 모델에 기록된다.
일부 실시예들에서, 기술은 기록된 스크린 샷들을 분석하기 위한 컴퓨터 비전의 사용, UI의 요소들을 식별하기 위한 코드 분석의 사용, 및 웹 애플리케이션 UI의 그래픽 모델을 창출하기 위한 스크린 샷들과 관련하여 기록된 메타 데이터의 사용을 포함한다.
일부 실시예들에서, 기술은 여기에 제공된 기술의 사용자에 의한 검토를 위해 UI의 스크린 샷 상에 주석들, 예를 들어 강조된 영역들을 생성한다. 일부 실시예들에서, 기술은 스크린 샷들을 분석하고/하거나 주석이 달린 스크린 샷들을 생성하기 위한 컴퓨터 비전의 사용을 포함한다. 일부 실시예들에서, 강조된 영역들은 특정 모양 (예를 들어, 직사각형, 타원형, 정사각형, 원형 또는 구름) 또는 색상 (예를 들어, 빨간색, 노란색, 파란색, 녹색, 자주색, 분홍색, 주황색 또는 회색)을 사용하여 제공된다. 일부 실시예들에서, 특정 형상(particular shape) 및/또는 색상은 여기에 제공된 기술에 의해 식별되는 요소의 변경의 유형 및/또는 요소의 유형에 관한 정보를 여기에 제공된 기술의 사용자에게 제공한다. 예를 들어, 일부 실시예들에서, 사용자 입력을 나타내는 강조된 색상 또는 모양은 웹 애플리케이션 이벤트의 발생을 나타내는 색상 또는 모양과는 다른 강조된 색상 또는 모양이다. 일부 실시예들에서, 주석들은 사용자 동작들 및 웹 애플리케이션 이벤트들에 대해(예를 들어, 그레이 스케일로 표시되는 데이터에 대해) 동일한 색상으로 제공되고 요소의 변경들은 웹 애플리케이션 이벤트에 대해 및 사용자 입력 동작을 나타내는 주석에 대해 다른 모양, 텍스처 또는 아이콘으로 표시된다. 일부 실시예들에서, 텍스트, 심볼들, 사운드, 들 애니메이션들, 진동들, 또는 당 업계에 공지된 다른 형태들의 출력을 사용하여 차별화들(differentiations)이 제공된다.
비교 구성 요소
일부 실시예들에서, 기술은 비교 구성 요소(comparison component)를 포함한다. 일부 실시예들에서, 비교 구성 요소는 제1 그래픽 모델 및 제2 그래픽 모델을 입력으로 받아들이고 그래픽 모델 차이 모델(graphical model difference model)을 출력으로 생성한다. 그래픽 모델 차이 모델은 제1 그래픽 모델 및 제2 그래픽 모델에서 변경된 속성들을 갖는 요소들을 식별하는 요소 차이 엔트리들(element difference entries)을 포함한다. 일부 실시예들에서, 그래픽 모델 차이 모델은 제1 그래픽 모델 및 제2 그래픽 모델로부터 변경되지 않은 속성들을 갖는 요소들을 식별하는 요소 동일성 엔트리들(element sameness entries)을 포함한다. 따라서, 일부 실시예들에서, 그래픽 모델 차이 모델은 제1 그래픽 모델 및 제2 그래픽 모델로부터 변경된 일부 속성들을 갖고 제1 그래픽 모델 및 제2 그래픽 모델로부터 변경되지 않은 일부 속성들을 갖는 요소들을 식별하는 엔트리들을 포함한다. 일부 실시예들에서, 웹 애플리케이션 UI의 복수 버전들을 설명하는 복수의 그래픽 모델들이 비교되고 차이들이 식별된다. 일부 실시예들에서, 확률 모델들(예를 들어, 숨겨진 마르코프 모델들(hidden Markov models))은 복수의 그래픽 모델들의 비교들에 기초하여 스크린의 요소들 및/또는 영역들에 대한 변경들의 확률들을 할당하는 데 사용된다.
따라서, 일부 실시예들에서, 기술은 그래픽 모델을 생성하도록 구성된 그래픽 모델링 구성 요소; 및 그래픽 모델 비교 구성 요소를 포함한다. 일부 실시예들에서, 그래픽 모델링 구성 요소(graphical modeling component)는 버전 N (예를 들어, "애플리케이션 vN")을 갖는 웹 애플리케이션 (예를 들어, UI를 포함함)을 수용하고 vN 그래픽 모델을 생성한다. 일부 실시예들에서, 그래픽 모델링 구성 요소는 버전 N + 1 (예를 들어, "애플리케이션 vN + 1")을 갖는 웹 애플리케이션 (예를 들어, UI를 포함함)을 수용하고 vN + 1 그래픽 모델을 생성한다. 일부 실시예들에서, 그래픽 모델 비교 구성 요소는 그래픽 모델 차이 모델을 생성하기 위해 vN 그래픽 모델 및 vN + 1 그래픽 모델을 수용한다. 일부 실시예들에서, vN 그래픽 모델은 웹 애플리케이션의 제1 버전의 모델이고 vN + 1 그래픽 모델은 웹 애플리케이션의 후속 버전의 모델이다.
일부 실시예들에서, 그래픽 모델링 구성 요소는 버전 번호 N, N + 1,…, N + X (예를 들어, "애플리케이션 vN", "애플리케이션 vN +1”, … , “애플리케이션 vN+X”)를 갖는 웹 애플리케이션 (예를 들어, UI를 포함)의 복수 버전을 수용하고, vN 그래픽 모델, vN + 1 그래픽 모델,… 및 vN + X 그래픽 모델을 생성한다. 일부 실시예들에서, 그래픽 모델 비교 구성 요소는 그래픽 모델 차이 모델을 생성하기 위해 vN 그래픽 모델, vN + 1 그래픽 모델,… 및 vN + X 그래픽 모델을 수용한다.
일부 실시들예에서, 확률 모델은 웹 애플리케이션의 버전들 간에 변경될 확률이 높은 요소들을 식별하기 위해 그래픽 모델 차이 모델을 분석하는 데 사용된다. 일부 실시예들에서, 확률 모델은 웹 애플리케이션의 버전들 간에 변경될 확률이 높은 부모 요소, 창, 페이지 및/또는 스크린의 영역들을 식별하기 위해 그래픽 모델 차이 모델을 분석하는 데 사용된다. 일부 실시예들에서, 확률 모델은 웹 애플리케이션의 버전들 간에 그들의 변경될 확률에 따라 요소들의 순위를 매기기 위해 그래픽 모델 차이 모델을 분석하는 데 사용된다. 일부 실시예들에서, 확률 모델은 웹 애플리케이션의 버전들 간에 변경될 확률이 높은 부모 요소, 창, 페이지 및/또는 스크린의 영역들의 순위를 매기기 위해 그래픽 모델 차이 모델을 분석하는 데 사용된다. 일부 실시예들에서, 요소들의 순위가 매겨진 목록(list)은 실패한 소프트웨어 테스트의 가능한 원인들에 대한 출력을 사용자에게 제공하는 데 사용된다. 일부 실시예들에서, 요소들의 순위가 매겨진 목록은 소프트웨어 실패들의 자율 식별(autonomous identification)에 의해 정정할 문제들을 식별하는 데 사용된다. 일부 실시예들에서, 요소들의 순위가 매겨진 목록은 소프트웨어 실패들의 자율 복구(autonomous repair)에 의해 정정해야할 문제를 식별하는 데 사용된다.
일부 실시예들에서, 기술은 웹 애플리케이션 UI상의 요소들의 속성들을 설명하는 속성 모델을 생성하는 것을 포함한다. 일부 실시예들에서, 기술은 웹 애플리케이션 UI의 복수의 버전들 (예를 들어, 제1 버전, 제2 버전,…)에 대한 복수의 속성 모델들 (예를 들어, 제1 속성 모델, 제2 속성 모델,…)을 생성하는 것을 포함한다. 일부 실시예들에서, 비교 구성 요소는 제1 속성 모델 및 제2 속성 모델을 입력으로 받아들이고 속성 모델 차이 모델(attribute model difference model)을 출력으로 생성한다. 속성 모델 차이 모델은 제1 속성 모델 및 제2 속성 모델에서 변경된 속성들을 갖는 요소들을 식별하는 요소 차이 엔트리들을 포함한다. 일부 실시예들에서, 속성 모델 차이 모델은 제1 속성 모델 및 제2 속성 모델로부터 변경되지 않은 속성들을 갖는 요소들을 식별하는 요소 동일성 엔트리들을 포함한다. 따라서, 일부 실시예들에서, 속성 모델 차이 모델은 제1 속성 모델 및 제2 속성 모델로부터 변경된 일부 속성을 갖고 제1 속성 모델 및 제2 속성 모델로부터 변경되지 않은 일부 속성을 갖는 요소를 식별하는 엔트리를 포함한다. 따라서, 일부 실시예들에서, 속성 모델 차이 모델은 제1 속성 모델 및 제2 속성 모델로부터 변경된 일부 속성들을 갖고 제1 속성 모델 및 제2 속성 모델로부터 변경되지 않은 일부 속성들을 갖는 요소들을 식별하는 엔트리들을 포함한다. 일부 실시예들에서, 웹 애플리케이션 UI의 복수 버전들을 설명하는 복수의 속성 모델들이 비교되고 차이들이 식별된다. 일부 실시예들에서, 확률 모델 (예를 들어, 숨겨진 마르코프 모델들)은 복수의 속성 모델들의 비교들에 기초하여 스크린의 영역들 및/또는 요소들에 대한 변경들의 확률들을 할당하는데 사용된다.
따라서, 일부 실시예들에서, 기술은 속성 모델을 생성하도록 구성된 속성 모델링 구성 요소; 와 속성 모델 비교 구성 요소를 포함한다. 일부 실시예들에서, 속성 모델링 구성 요소는 버전 N (예를 들어, "애플리케이션 vN")을 갖는 웹 애플리케이션 (예를 들어, UI를 포함함)을 수용하고 vN 속성 모델을 생성한다. 일부 실시예들에서, 속성 모델링 구성 요소는 버전 N + 1 (예를 들어, "애플리케이션 vN + 1")을 갖는 웹 애플리케이션 (예를 들어, UI를 포함함)을 수용하고 vN + 1 속성 모델을 생성한다. 일부 실시예들에서, 속성 모델 비교 구성 요소는 속성 모델 차이 모델을 생성하기 위해 vN 속성 모델 및 vN + 1 속성 모델을 수용한다. 일부 실시예들에서, vN 속성 모델은 웹 애플리케이션의 제1 버전의 모델이고 vN + 1 속성 모델은 웹 애플리케이션의 후속 버전의 모델이다.
일부 실시예들에서, 속성 모델링 구성 요소는 버전 번호 N, N + 1,…, N + X (예를 들어, "애플리케이션 vN", "애플리케이션 vN + 1”, …, “애플리케이션 vN + X”)를 갖는 웹 애플리케이션 (예를 들어, UI를 포함)의 복수 버전들을 수용하고 및 vN 속성 모델, vN + 1 속성 모델,… 및 vN + X 속성 모델을 생성한다. 일부 실시예들에서, 속성 모델 비교 구성 요소는 속성 모델 차이 모델을 생성하기 위해 vN 속성 모델, vN + 1 속성 모델,… 및 vN + X 속성 모델을 수용한다.
일부 실시예들에서, 확률 모델은 웹 애플리케이션의 버전들 간에 변경될 확률이 높은 요소들을 식별하기 위해 속성 모델 차이 모델을 분석하는 데 사용된다. 일부 실시예들에서, 확률 모델은 웹 애플리케이션의 버전들 간에 변경될 확률이 높은 부모 요소, 창, 페이지, 및/또는 스크린의 영역들을 식별하기 위해 속성 모델 차이 모델을 분석하는 데 사용된다. 일부 실시예들에서, 확률 모델은 웹 애플리케이션의 버전들 간의 변경될 확률에 따라 요소들의 순위를 매기기 위해 속성 모델 차이 모델을 분석하는 데 사용된다. 일부 실시예들에서, 확률 모델은 웹 애플리케이션의 버전들 간에 변경될 확률이 높은 부모 요소, 창, 페이지 및/또는 스크린의 영역들에 순위를 매기기 위해 속성 모델 차이 모델을 분석하는 데 사용된다. 일부 실시예들에서, 요소들의 순위가 매겨진 목록은 실패한 소프트웨어 테스트의 가능한 원인들에 대한 출력을 사용자에게 제공하는 데 사용된다. 일부 실시예들에서, 요소들의 순위가 매겨진 목록은 소프트웨어 실패들의 자율 식별에 의해 정정할 문제들을 식별하는 데 사용된다. 일부 실시예들에서, 요소들의 순위가 매겨진 목록은 소프트웨어 실패들의 자율 복구에 의해 정정해야 할 문제들을 식별하는 데 사용된다.
일부 실시예들에서, 비교는 웹 애플리케이션 UI의 버전들 간의 차이들을 식별하기 위해 확률 모델을 사용하여 수행된다 (예를 들어, 모델들 간의 차이를 식별함으로써 (예를 들어, UI의 버전들을 설명하는 그래픽 및/또는 속성 모델들)). 일부 실시예들에서, 비교 구성 요소는 확률 모델을 제공 및/또는 평가하고, 확률 모델에 대한 입력들을 수용하고, 및/또는 확률 모델로부터 출력을 생성하도록 구성된다. 일부 실시예들에서, 확률 모델은 통계적 가정들, 수학적 관계들 및/또는 데이터와 관련된 가중치들, 규칙들 및/또는 변수들의 쌍들 간 수학적 관계들 및/또는 가정들을 포함하는 통계적 모델이다. 일부 실시예들에서, 확률 모델은 통계적 가정들, 수학적 관계들 및/또는 데이터와 관련된 가중치들, 규칙들 및/또는 변수들의 쌍들 간 수학적 관계들 및/또는 가정들을 입력으로서 수신하는 통계적 모델이다. 일부 실시예들에서, 확률 모델은 훈련 세트 데이터를 수신하고, 훈련 세트 데이터를 특성화하는 모델들을 생성하고 및 훈련 세트 데이터를 특성화하는 모델들을 평가하는 것에 의해 통계적 가정들, 수학적 관계들 및/또는 데이터와 관련된 가중치들, 규칙들 및/또는 변수들의 쌍들 간 수학적 관계들 및/또는 가정들을 식별하고 및/또는 생성하는 통계적 모델이다. 일부 실시예들에서, 확률 모델은 테스트 단계가 실패한 소프트웨어 테스트의 근본 원인인 확률, 동작에 의해 작동되는 테스트 요소가 실패한 소프트웨어 테스트의 근본 원인인 확률 등의 확률을 출력한다. 일부 실시예들에서, 확률 모델은 은닉 마르코프 모델이다 (예를 들어, 모델은 모델이 마르코프 시스템(Markov system)을 설명한다고 가정한다). 예를 들어, Baum (1966) “Statistical Inference for Probabilistic Functions of Finite State Markov Chains” The Annals of Mathematical Statistics 37: 1554-63; Baum (1967) “An inequality with applications to statistical estimation for probabilistic functions of Markov processes and to a model for ecology”Bulletin of the American Mathematical Society 73: 360; Baum, (1968) “Growth transformations for functions on manifolds”Pacific Journal of Mathematics 27: 211-27; Baum (1970) “A Maximization Technique Occurring in the Statistical Analysis of Probabilistic Functions of Markov Chains” The Annals of Mathematical Statistics 41: 164-71; 및 Baum (1972) “An Inequality and Associated Maximization Technique in Statistical Estimation of Probabilistic Functions of a Markov Process” Inequalities 3: 1-8를 참조, 이들 각각은 여기에 참조로 포함된다. 일부 실시예들에서, 확률 모델은 조건부 랜덤 필드(conditional random fields)의 사용을 포함한다.
근본 원인들의 식별
일부 실시예들에서, 실패한 소프트웨어 테스트는 실패한 테스트의 근본 원인이 될 가능성(likelihood)과 관련된 제안된 동작들 (예를 들어, 테스트 단계들)을 제공하는 스크립트를 실행하도록 트리거한다. 일부 실시예들에서, 테스트 실패의 확률들을 개별 동작들에 할당하는 것은 웹 애플리케이션의 버전들 간의 각 동작에 대한 요소 속성 값들의 변경들을 정량화하는 것을 포함한다. 일부 실시예들에서, 모든 속성들에 대해 동일한 가중치가 할당된다. 일부 실시예들에서, 속성들은 가중치가 할당되고, 예를 들어 버전 간에 변경될(changed from version to version) 때 (예를 들어, 지식(knowledge) (예를 들어, 데이터, 통계, 규칙들)에 기초하여) 소프트웨어 테스트 실패들을 더 자주 야기하는 속성들은 버전 간에 변경될 때 (예를 들어, 지식(knowledge) (예를 들어, 데이터, 통계, 규칙들)에 기초하여) 소프트웨어 테스트 실패들을 더 적게 야기하는 속성들보다 더 많은 가중치가 할당된다. 일부 실시예들에서, 기술은 속성이 실패한 소프트웨어 테스트의 원인일 가능성에 따라 속성들 및/또는 속성 그룹들에 할당할 가중치들을 학습하는(예를 들어, 훈련 세트들을 평가하는 것 및/또는 머신 러닝 사용하는 것에 의해 결정되는 것으로) 신경망 및/또는 결정 트리 모델(decision tree model)을 포함한다. 또한, 일부 실시예들에서, 신경망 및/또는 결정 트리 모델은 가중치들을 속성들 및/또는 속성 그룹들에 할당하기 위해, 예를 들어, 실패 유형, 요소의 유형, 동작의 유형, 및/또는 테스트 단계 동작의 실패한 동작에 대한 공간 또는 시간의 근접성과 같은 데이터를 사용한다.
일부 실시예들에서, 동작들은 하나 이상의 속성들을 갖는 요소들에 대해 수행된다. 따라서, 여기에 제공된 기술의 실시예들은 속성들을 속성 카테고리들로 그룹화한다 (예를 들어, 모델에 대한 일정한 수의 입력 특징들(input features)을 유지하기 위해). 일부 실시예들에서, 카테고리들은 텍스트, 값, 유형, 요소, 포지션 (예를 들어, 선택된 요소뿐만 아니라 부모, 자식 및 형제(sibling) 요소들의 x, y 좌표), CSS (예를 들어, 'c_' 접두사가 붙은 모든 CSS 속성들), 선택기(selector) (예를 들어, X경로(Xpath) 및 선택기 속성들), 부모 (예를 들어, x, y 좌표들 이외의 모든 부모 요소 속성), 자식 (예를 들어, x, y 좌표들 이외의 모든 자식 요소 속성들), 형제 (예를 들어, x, y 좌표들 이외의 모든 형제 요소 속성들), 여러 속성(miscellaneous attribute) (예를 들어, 클래스(class), 아이디(id), href 등의 HTML 속성들) 및 기타 (이전 목록(preceding list)에 없는 모든 것)이다.
일부 실시예들에서, 점수들(scores)은 안정성(stability)에 기초하여 각 속성 카테고리(attribute category)에 할당된다. 예를 들어, 속성이 매우 안정적이고 (예를 들어, 소프트웨어 테스트 오류를 야기하는 것 및 웹 애플리케이션 버전들 간 변경의 확률이 낮음) 실패한 테스트가 낮은 확률 값을 갖는 경우, 속성은 높은 점수를 받는다. 일부 실시예들에서, 신경망 및/또는 결정 트리 모델은 속성에 대해 "변경 정도 점수(degree of change score)"를 사용한다. 예를 들어, 숫자 속성(numeric attribute)에는 웹 애플리케이션의 복수 버전들에서 소프트웨어 테스트를 수행하는 것으로부터 획득된 숫자 속성의 여러 값들 (예를 들어, 복수 및/또는 모든)로부터 계산된 평균 및 표준 편차가 할당되고 실패한 테스트들로부터의 값들은 값들이 평균 값에서 나온 표준 편차들의 수(the number of standard deviations)를 결정하기 위해 비교된다. 일부 실시예들에서, 텍스트 값들에 대해 레벤슈타인(Levenshtein) 거리가 사용된다. 따라서, 텍스트 속성(text attribute)에는 웹 애플리케이션의 복수 버전들에서 소프트웨어 테스트를 수행하는 것으로부터 획득된 텍스트 속성의 여러 (예를 들어, 복수 및/또는 모두) 레벤슈타인 거리로부터 계산된 평균 레벤슈타인 거리 및 표준 편차가 할당되고, 실패한 테스트로부터의 레벤슈타인 거리들은 레벤슈타인 거리들이 평균 레벤슈타인 거리들로부터 나온 표준 편차들의 수를 결정하기 위해 비교된다.
일부 실시예들에서, 각 카테고리에는 카테고리에 있는 웹 애플리케이션의 요소들의 모든 값들의 평균인 전체 점수(overall score)가 할당된다. 일부 실시예들에서, 평균은 신경망 및/또는 결정 트리 모델에 제공된다. 일부 실시예들에서, 표준 편차는 예를 들어 각 카테고리 내의 점수들의 구조(structure of scores)에 대한 정보를 제공하기 위해 신경망 및/또는 결정 트리 모델에 제공된다.
일부 실시예들에서, 신경망 및/또는 결정 트리 모델은 소프트웨어 테스트의 각 단계 (예를 들어, 동작)에 각 단계가 테스트 실패의 원인일 가능성을 할당하는 데 사용되는 하나 이상의 추가 입력들을 입력으로서 수신한다. 일부 실시예들에서, 신경망 및/또는 결정 트리 모델은 각 테스트 단계와 실패를 유발한 단계 사이의 단계들의 수를 설명하는 값을 입력으로 수신한다 (예를 들어, 실패를 유발한 단계에 더 가까운 단계는 실패를 유발한 단계에서 더 먼 단계보다 실패의 원인일 가능성이 더 높다). 일부 실시예들에서, 신경망 및/또는 결정 트리 모델은 소프트웨어 테스트가 실패한 동일한 페이지 초기화 세그먼트(pageinit segment)에서 동작이 발생했거나 발생하지 않았음을 나타내는 부울 값(Boolean value)을 입력으로서 수신한다 (예를 들어, 동일한 페이지 초기화 세그먼트에 있는 동작들은 근본 원인이 될 가능성이 높다). 일부 실시예들에서, 예를 들어, 다른 동작들, 요소들, 및/또는 실패 유형들은 다른 수정 제안들(fix suggestions) 뿐만 아니라 확률들을 가질 수 있기 때문에 동작 유형 (예를 들어, 클릭, 확인, 페이지 초기화 등), 요소 유형 및/또는 실패 유형이 신경망 및/또는 결정 트리 모델에 제공된다. 일부 실시예들에서, 브라우저 유형은 다른 브라우저들이 다른 수정 제안들과 연관될 수 있기 때문에 신경망 및/또는 결정 트리 모델에 제공된다.
일부 실시예들에서, 소프트웨어 테스트가 여러 번 수행되었다. 일부 실시예들에서, 소프트웨어 테스트는 소프트웨어 테스트 오류들 없이 여러 번 수행되었다. 일부 실시예들에서, 소프트웨어 테스트 오류 없이 여러 번 테스트된 웹 애플리케이션은 실패한 소프트웨어 테스트에 대해 여기에 제공된 기술에 따라 소프트웨어 테스트 오류의 원인을 식별하기 위한 후보이다. 일부 실시예들에서, 소프트웨어 테스트 오류는 여기 및/또는 위에서 논의된 데이터의 하나 이상의 아이템들(items), 예를 들어 텍스트, 값, 유형, 요소, 포지션, CSS, 선택기, 부모(parent), 자식(child), 형제(sibling), 기타(miscellaneous) 속성 및 다른 요소 속성들에 대한 값들; 안정성 값들(stability values), 변경 정도 (평균 및/또는 표준 편차), 레벤스타인 거리 (평균 및/또는 표준 편차), 전체 점수(overall score) 및/또는 테스트 단계 거리(test step distance), 동일한 페이지 초기화 부울(same pageinit Boolean), 동작 유형, 요소 유형, 실패 유형, 및/또는 브라우저 유형과 관련하여 위에 설명된 추가 입력들을 수집하는 스크립트를 구동하도록 트리거한다. 일부 실시예들에서, 테스트가 정정(corrected)(수정(fixed))된다. 일부 실시예들에서, 테스트를 정정한 후, 어떤 단계가 수정되었는지 및 수정이 필요한 이유를 나타내는 라벨들 및 데이터 포인트들(data points)을 출력하는 스크립트가 구동한다. 일부 실시예들에서, 변경 세트들은 소프트웨어 테스터들(software testers)에 의해 생성된다. 일부 실시예들에서, 어떤 단계가 수정되었는지를 보여주는 고객 데이터 포인트들(customer data points)에 의해 테스트가 수정된다.
일부 실시예들에서, 실패한 단계를 포함하고 실패한 단계로 이끄는 각 동작은 데이터 포인트이다. 일부 실시예들에서, 각 동작에 대해 수집된 데이터 포인트는 단계가 근본 원인으로 식별되었는지를 나타내는 라벨(예를 들어, Y 또는 N)을 포함한다. 일부 실시예들에서, 단계에 대한 데이터 포인트는 수정에 대한 이유를 나타내는 라벨을 포함하며, 이는 근본 원인으로 식별되지 않은 단계들에 대해 "N/A"일 것이다. 일부 실시예들에서, 데이터는 수정될 필요가 있는 가장 가능성 있는 이유 및 각 동작이 근본 원인일 가능성을 예측하기 위해 모델을 훈련시키는데 사용된다. 일부 실시예들에서, 함수(function)는 예를 들어 가능성들에 대한 의미 있는 추정치들(meaningful estimates)을 제공하기 위해 근본 원인인 테스트 내의 각 동작에 대한 확률들을 제공한다.
일부 실시예들에서, 단계는 근본 원인으로 식별되고, 단계는 수정되며, 후속 단계는 테스트 실패를 야기한다. 따라서, 일부 실시예들에서, 기술은 수정을 성공으로 표시하고 평소와 같이 데이터 포인트를 창출한다. 일부 실시예들에서, 소프트웨어는 그러한 경우들에 데이터 포인트들의 창출을 제어하는 로직을 포함한다. 일부 실시예들에서, 프로세스는 테스트가 통과할 때까지 (예를 들어, 반복적으로(iteratively)) 반복된다. 일부 실시예들에서, 데이터 포인트들 및/또는 라벨의 창출은 자동화된다. 예를 들어, 일부 실시예들에서, 단계가 성공적으로 수정될 때마다 데이터 포인트가 창출된다. 일부 실시예들에서, 변경 세트(change set) 및 편집 이력(edit history)은 예를 들어 성공적인 테스트 완료 시 API에 저장된다. 일부 실시예들에서, 데이터는 데이터베이스, 텍스트 파일, CSV 파일 등에 저장된다. 일부 실시예들에서, 데이터는 스케일러블 컬럼(scalable columnar) 형식 (예를 들어, 클라우드 데이터 스토어(cloud datastore))으로 저장된다. 일부 실시예들에서, 데이터는 컴퓨터 비전 및/또는 소스 코드 (예를 들어, HTML)의 자연어 처리를 사용하여 획득된다.
일부 실시예들에서, 모델 (예를 들어, 후보 테스트 단계들 및/또는 요소가 근본 원인들인 후보 테스트 단계들 및/또는 요소들에 대해 확률들을 할당하는 데 사용되는 모델)에 대한 훈련 데이터는 크라우드 소스 프로세스(crowd sourced process)를 통해 생성된다. 따라서, 일부 실시예들에서 단일 의견보다는 군중 합의가 확률들을 결정하는 데 사용된다. 일부 실시예들에서, 사용자 피드백은 제안된 실패에 대한 수정을 식별하기 위해 사용되며 실패 유형 및 원인과 실패 수정(failure fix) (및 그것의 성공 또는 실패)이 추가 훈련을 위해 모델에 입력된다.
속성 분포
일부 실시예들에서, 기술은 페이지상의 포지션 (예를 들어, UI에서의 포지션)의 함수로서 요소 속성들의 변경을 평가한다. 일부 실시예들에서, 기술은 시간의 함수 (예를 들어, UI 버전의 함수)로서 요소 속성들의 변경을 평가한다.
일부 실시예들에서, 기술은 페이지상의 포지션의 함수 (예를 들어, UI에서의 위치) 및/또는 시간의 함수 (예를 들어, UI 버전의 함수로서)로서 속성 변경의 확률을 결정 및/또는 평가한다. 예를 들어, 예 4를 참조하라.
일부 실시예들에서, 기술은 개별 요소들 (예를 들어, 개별 요소의 개별 속성들, 개별 요소의 복수의 속성들)을 평가한다. 일부 실시예들에서, 기술은 UI에 걸쳐 (예를 들어, 페이지상의 위치의 함수로서) 및/또는 시간의 함수 (예를 들어, UI 버전의 함수로서)로서 요소들 및/또는 요소 속성들을 평가한다. 일부 실시예들에서, 하나 이상의 페이지들 및/또는 UI의 버전들에 대한 요소 속성들의 빈도들이 생성되고 평가된다. 일부 실시예들에서, 예를 들어, 속성이 제1 페이지 및/또는 UI에서 제2 페이지 및/또는 UI로 변경된 요소를 식별하기 위해, 확률 연관들(probabilistic associations)은 UI의 한 페이지 및/또는 버전과 UI의 제2 페이지 및/또는 버전 사이에서 계산 및/또는 생성된다.
일부 실시예들에서, 기술은 복수의 요소들 및/또는 요소 속성들에 대한 요소들 및/또는 요소 속성들의 통계적 분포를 결정한다 (예를 들어, 페이지 상에서 (예를 들어, UI 상에서)). 일부 실시예들에서, 기술은 페이지상의 위치의 함수로서 (예를 들어, UI상의 위치의 함수로서) 및/또는 시간의 함수로서 (예를 들어, UI 버전의 함수로서) 복수의 요소들 및/또는 요소 속성들에 대한 요소들 및/또는 요소 속성들의 확률 분포를 결정한다. 일부 실시예들에서, 기술은 페이지 상에서(예를 들어, UI상의 위치의 함수로서) 및/또는 시간을 통해 (예를 들어, UI 버전의 함수로서) 요소들 및/또는 요소 속성들의 특정 분포의 확률을 결정한다.
자동화된 시각적 테스트
일부 실시예들에서, 시각적 테스트(visual testing)가 자동화된다. 일부 실시예들에서, 테스트는 신경망 및/또는 결정 트리 모델 (예를 들어, 컨볼루션 신경망)의 사용을 포함한다. 일부 실시예들에서, 기술은 웹 페이지들이 올바르게 렌더링되었는지를 결정하는 것을 포함한다. 따라서, 여기에 제공된 기술의 실시예들은 시각적 의미들(visual semantics)을 평가함으로써, 예를 들어, 정적과 동적 요소들을 구별하는 것; 페이지 요소들(예를 들어, 링크들, 버튼들, 팝 다운들(popdowns) 등)을 식별하는 것; 마크 업(markup)에 자리잡은(nestled) 이미지들을 검출하는 것 등에 의해 웹 페이지 렌더(web page render)를 평가한다. 일부 실시예들에서, 기술은 다양한 디자인들, 디자인 구성 요소들(예를 들어, 글꼴들(fonts)), 낮은 레벨 브라우저(low-level browser) 및/또는 버전 렌더링 변형들(version rendering variations), 반응형 디자인(responsive design)에 의해 도출된 동적 레이아웃 변경들 및 임의의 페이지 복잡성(arbitrary page complexity)에 대한 테스트 기술(testing technology)을 제공한다.
기술은 수십, 수백 또는 수천 또는 그 이상의, 선택적으로는, 다수 언어들(multiple languages)의 페이지들을 포함하는 빈번한 릴리스들(releases)(예를 들어, 웹 사이트 및/또는 웹 애플리케이션의 새로운 버전을 제공하는 것)를 테스트하는 자동화된 테스트(automated testing)를 제공한다.
일부 실시예들에서, 기술은 개발자 및 QA/테스트 엔지니어가 테스트 케이스들을 준비하는 것의 코딩을 피할 수 있도록 돕는 것에의 사용을 찾는데, 예를 들어, 기술은 자동화된 테스트를 제공한다. 따라서, 일부 실시예들에서, 기술은 사용자에 의해 제공된 테스트 케이스를 기록하고 기술은 페이지 렌더링의 검토 가능한(reviewable) '필름 스트립(filmstrip)'을 캡처한다 (예를 들어, 스크린 캡처들의 수동 또는 자동 획득이 필요하지 않음). 렌더(render)는 페이지를 영역들로 분할한 다음 페이지 요소들()을 발견하고, 정보를 얻고, 분류하기 위해 다양한 시각적 처리 도구들(visual processing tools)을 호출(invokes)하는 결정 트리를 통해 분석된다(예를 들어, 제어들(controls) 및 그래픽들(graphics)로부터 텍스트를 구별하는 것, 정적 객체들과 동적 객체체들을 식별하는 것, 페이지에서 어떤 부분들이 테스트에 가장 중요한지 자동적으로 결정하는 것 등). 여기에 설명된 바와 같이, 기술의 실시예들은 글꼴들, 버튼들 및 제어들 및 다른 시각적 요소들의 샘플 라이브러리들(sample libraries)에서 훈련된 컨볼루션 신경망들의 사용과 소스 이미지 처리(source image processing), 광학 문자 인식 및 다른 기본 함수들(basic functions)을 위한 강인한 표준화된 솔루션들(robust standardized solutions)을 포함한다. 테스트 케이스가 기록되고 검증되면, 그것은 지원되는 에뮬레이션된 디바이스들 및 복수의 브라우저들에서 실행된다. 일부 실시예들에서, 기술은 인공 지능 시각 요소 분류(artificial intelligence visual element classification), 웹 코드(web code) 및 실시간 DOM 분석(realtime DOM analytics)을 결합한다. 따라서, 기술은 일부 실시예들에서, 예를 들어 적은 수의 기록된 테스트 케이스들로부터 모두 다양한 뷰포트 구성들을 통해 다수의 디바이스들 상에서 실행되는 반응형 디자인들에 걸쳐 매우 큰 웹 사이트들의 신뢰할 수 있는 시각적 테스트를 제공하는 강인한 기술을 제공한다. 일부 실시예들에서, 변경들이 이루어질 때, 테스트들은 예를 들어, 심층 DOM 분석(deep DOM analytics)을 정교한 시각적 처리(sophisticated visual processing)와 결합하는 것에 의해 자체 업데이트(self-updating)하며, 기술은 사용자들과 관련된 변경들 또는 다른 변경으로 인해 야기된 기능(functionality)의 어떤 변경들(any changes) 및 변경된 것(what has changed)을 결정한다. 일부 실시예들에서, 실제 사용자 사이트 상호 작용들의 기록들을 사용하여 그것의 시각적 분석을 개선하고 집중하고, 사용자들이 사이트에서 실제로 수행하는 것에 대한 응답으로 이 소스 집약적인 프로세스를 제한한다.
일부 실시예들에서, 기술은 데이터베이스, 예를 들어 훈련 세트들을 포함한다. 일부 실시예들에서, 기술은 신경망을 위한 훈련 세트들 및 신경망을 포함한다.
규칙 엔진
일부 실시예들에서, 기술은 규칙 엔진의 사용을 포함한다. 일부 실시예들에서, 규칙 엔진은 입력 기준(input criteria)을 수용하고, 입력 기준이 규칙 엔진의 규칙과 일치하는지를 결정하고, 입력 기준과 일치하는 규칙의 동작을 수행한다. 따라서, 일부 실시예들에서, 규칙 엔진은 실패한 테스트의 데이터를 분석하고 및 평가하는 구조화된 방법(structured way)을 제공하고 테스트를 수정하는 방법에 대한 제안을 제공한다. 일부 실시예들에서, 규칙 엔진의 규칙은 규칙 구문 언어(rules syntax language) (예를 들어, "if-then"또는 "if-then-else" 로직)로 인코딩된다. 따라서, 일부 실시예들에서, 규칙 엔진은 규칙들 및 제안들을 포함한다.
일부 실시예들에서, 규칙 엔진은 제안들(예를 들어, 규칙들에 의해 이름으로 참조되는) 및 평가되는 (예를 들어, 결정 트리로서) 규칙들을 포함한다. 일부 실시예들에서, 개별 규칙들은 제안들, 바들(vars) 또는 다른 규칙들을 포함할 수도 있다. 여기에서 사용되는 "바(var)"는 언어 표현들에 대응하는 새로운 식별자들을 정의하는 키/값 쌍의 목록을 의미한다. 일부 실시예들에서, 규칙들 자체는 바들 섹션(vars section)을 포함한다. 일부 실시예들에서, 규칙은 "언제(when)" 조건이 충족될 때 트리거된다 (부울 참(Boolean true)). 규칙이 트리거되면, 그것의 제안이 평가되고 반환되거나 그것의 자식이 평가된다. 규칙이 트리거되지 않은 경우 (예를 들어, "언제"조건이 충족되지 않기 때문에) 그것의 자식들이 평가된다. 규칙들은 필요한만큼 깊게 중첩될(nested) 수 있다. 표 1을 참조하라.
규칙들
필드(Field) 설명(Description)
1 언제(when) 이 규칙이 실행되기(fired) 위해 반드시 만족되어야 하는 조건
2 규칙들(rules) 언제(when)가 참일 때만 평가되는 자식 규칙들
3 제안(suggestion) 언어 결과(language result)로 제공하기 위한 제안
일부 실시예들에서, 규칙 엔진은 하나 이상의 제안들을 포함한다. 일부 실시예들에서, 제안은 자신을 설명하는 메타 데이터 (예를 들어, 이름 및 설명) 및 테스트를 수정하기 위해 테스트 입력상의 어느 필드들이 업데이트되어야 하는지를 나타내는 키(key)/값 쌍들의 임의의 맵(arbitrary map)을 포함하는 변경 필드를 포함한다. 예를 들어, 표 2를 참조하라.
제안들
필드(Field) 설명(Description)
1 이름(name) 제안의 이름. 근본 제안들 목록에서 사용될 때, 이는 그것을 반환하는 개별 규칙들로부터 그것을 참조하는 데 사용되는 이름이다. 이 필드는 인라인 제안들(inline suggestions)에 대해 선택적이다. 고유 스트링(unique string).
2 설명(description) 제안의 의미 또는 기능에 대한 선택적인 일반 영어 설명 일반 영어(plain English).
3 변경들(changes) 이는 그것을 수정하기 위해테스트 상에서 변경될 수 있는 JSON 속성들의 맵을 포함해야 한다. 이 맵의 값들은 규칙 언어의 표현들로 평가된다. 임의의 키/값 쌍들의 맵.
소프트웨어 실패들의 자율 식별(Autonomous identification of software failures)
일부 실시예들에서, 여기에 제공된 기술은 예를 들어 인공 지능(artificial intelligence)을 사용하여 소프트웨어 애플리케이션 (예를 들어, 웹 애플리케이션)의 실패들을 식별하는 것과 관련된다. 예를 들어, 일부 웹 기반 기술들은 일반적으로 웹 애플리케이션 환경의 기본 URL에서 웹 페이지를 로드하는 것(loading)에 의해 그것의 크롤(crawl)을 시작하는 링크 크롤러(link crawler)의 사용을 포함한다. 해당 기본 페이지(base page)에 대한 정보 (예를 들어, 스크린 샷, 로드 시간, 오류 정보 등)를 수집한 후 크롤러는 페이지에서 하나 이상의 요소들과 상호 작용하는 것, 예를 들어, 해당 페이지에서 제1 하이퍼링크를 클릭하고 결과를 체크하는 것에 의해 추가 동작들을 수행한다. 하이퍼 링크가 제공된 기본 URL의 도메인 내에 있는 경우, 크롤러는 페이지를 방문하고 기본 페이지에 대한 정보를 수집한 것과 동일한 방식으로 링크된 페이지에 대한 정보를 수집한다(예를 들어, 스크린 샷, 로드 시간, 오류 정보 등을 포함하는). 기본 페이지에서 식별된 추가 링크들과 이후에 방문된 페이지들은 동일한 방식으로 방문된다. 기술은 각 페이지에 대해 수집된 정보를 제한하지 않으며, 예를 들어 여기에 설명된 어떤 웹 애플리케이션, 스크린 샷, 메타 데이터, 요소, 요소 속성 및/또는 그래픽 모델 데이터든지 포함한다.
일부 실시예들에서, 기술은 웹 애플리케이션 UI의 컴퓨터 비전 분석 (예를 들어, 웹 애플리케이션 UI의 스크린 샷)과 자연어 처리를 결합하여 실패들, 예를 들어, 잘못된 아이콘들(incorrect icons), 손상된 애플리케이션 프로그래밍 인터페이스들(broken application programming interfaces), 시각적 이상들(visual anomalies), 철자 오류들(spelling errors), 끊어진 링크들(broken links) 및 당 업계에 알려진 다른 웹 애플리케이션 오류들을 찾는 크롤러에 관한 것이다. 일부 실시예들에서, 기술은 대형 분산 데이터베이스(large distributed database)와 관련된 대규모 병렬 컴퓨팅 시스템(massively parallel computing system)에서 구동되는 컴퓨터 소프트웨어에서 구현된다. 일부 실시예들에서, 기술은 클라우드 기술을 사용하여 구현된다. 일부 실시예들에서, 크롤러는 단일 로컬 머신(single local machine) 또는 클라우드 환경의 하나 또는 복수의 가상 머신(virtual machines)에서 생성되고 실행된다.
일부 실시예들에서, 기술은 소프트웨어 애플리케이션에서 실패들의 자동 식별 및/또는 검출에 관한 것이다. 일부 실시예들에서, 기술은 컴퓨터 비전, 자연어 처리 및 병렬 웹 크롤러의 조합을 사용하는 것을 포함한다. 특히, 일부 실시 예는 인터페이스 요소와 동작들(예를 들어, 소프트웨어 코드로 인코딩된)을 식별하고 연관시키기 위한 텍스트 및 언어 처리의 사용 및, 예를 들어, 여기에 설명된 바와 같이 UI에서 인터페이스 요소들을 식별하기 위한 컴퓨터 비전 분석의 사용을 제공한다. 일부 실시예들에서, 기술은 요소들을 검출하는 것, 선택적으로 요소들을 로컬라이즈하는 것, 및 웹 애플리케이션에서 요소 (예를 들어, 요소 속성들 (예를 들어, 위치, 크기, 상태)) 및 요소의 함수 (예를 들어, 요소와 연관된 소프트웨어 코드에 의해 제공되는 것으로서)을 설명하는 데이터의 조합을 사용하여 요소들을 분류하는 것을 포함한다. 일부 실시예들에서, 요소를 분류하는 것은 검출된 요소들에 동작 및/또는 함수를 할당한다. 일부 실시예들에서, 자연어 처리는 요소와의 연관에 따라 동작 및/또는 함수의 의미를 결정한다. 일부 실시예들에서, 컴퓨터 비전에 의해 검출된 요소들과 동작들 및/또는 함수들의 연관들은 요소의 기하학적 속성들, 예를 들어 렌더링에서의 포지션, 다른 요소 (예를 들어, 부모 요소들 및/또는 형제 요소들 및/또는 같은 수준의 요소들(elements at the same level))에 대한 상대적 포지션에 의해 결정된다. 일부 실시예들에서, 기술은 소프트웨어 오류들 및/또는 다른 이상들(other anomalies)을 식별하기 위해 요소 기하학적 속성들, 텍스트 및 이미지들을 사용하는 신경망의 사용을 포함한다.
소프트웨어 실패들의 자율 복구
일부 실시예들에서, 기술은 예를 들어 인공 지능을 사용하는 소프트웨어 실패들 및/또는 소프트웨어 테스트 케이스들의 자율 복구 (예를 들어, 정정, 수정 등)에 관한 것이다. 예를 들어, 여기에 설명된 바와 같이, 소프트웨어 실패들의 근본 원인들은 (예를 들어, 소프트웨어 테스트로 식별됨)은 경우에 따라 여러 솔루션들로 해결될 수 있다. 예를 들어, 올바른 솔루션이 즉시 드러나지 않는 경우, 기술은 이용할 수 있는 제안 솔루션들의 각각으로 소프트웨어 테스트를 자동으로 다시 구동(re-runs)하는 자가 치유 특징(self-heal feature)을 제공한다. 그러나 자동화된 테스트에서 테스트 실패를 디버깅하려면 종종 스크립트 작성하는 것 또는 테스트를 기록하는 것, 그것이 실패할 때까지 그것을 실행하는 것, 실패를 식별하기 위해 시도하는 것, 테스트 스크립트를 업데이트하는 것 및 다시 구동하는 것을 요구한다. 종종이 프로세스는 테스트가 작동하기 전에 반복적으로 반복된다. 응용 프로그램의 후속 변경은 테스트 중단을 야기할 수 있고 전체 프로세스를 반복하는 것이 요구한다.
따라서, 기술의 실시예들은 예를 들어 대형 분산 데이터베이스를 사용하는 대규모 병렬 컴퓨팅 시스템에서 구동되는 컴퓨터 프로그램들의 세트로 구현되는 기술로서 소프트웨어 실패들의 자율적 인 복구를 제공한다. 일부 실시예들에서, 기술은 테스트되는 웹 애플리케이션의 실패를 검출하는 것의 존재(presence) 또는 부존재(absence)에서의 사용을 찾는다. 첫째, 실시예들은 예를 들어, 여기에 설명된 웹 애플리케이션 UI의 소프트웨어 테스트 실패의 근본 원인이 되는 것의 가능성에 의해 순위가 매겨진 요소들, 테스트 동작들, 제안된 테스트 단계들의 목록으로 제공된 실패한 소프트웨어 테스트 케이스에서 후보 실패 단계들의 목록을 식별, 제공 및/또는 검색하는 것을 포함한다. 다음으로, 각 후보 실패 단계들은 성공적인 소프트웨어 테스트를 생성할 수 있는 각 후보 실패 단계에 대해 가능한 변경들을 식별하기 위해 마르코프 의사 결정 프로세스 (Markov decision process; MDP) 모델을 훈련시키기 위한 입력으로 사용된다 (예를 들어, 여기에 참조로 포함된 Bersekas (2011) “Dynamic Programming and Optimal Control” 3rd Edition, Volume II, MIT Press, Cambridge, Mass.를 참조하라). MDP는 MDP로부터 결정된 복수의 상이한 구성들을 사용하여 각 후보 실패 단계를 재구성하는 것에 의해 각 후보 실패 단계에 대한 복수의 시험 단계들 생성한다. 다른 구성들의 각각은 시험 단계가 후보 실패 단계를 대체할 때 성공적인 테스트로 이어질 수 있는 후보 실패 단계의 가능한 대체인 시험 단계를 제공한다. 다음으로 모든 시험 단계들(예를 들어, 후보 실패 단계의 제안된 수정) 또는 후보 실패 단계들을 시험 단계로 대체하는 테스트 스크립트들은 웹 애플리케이션 UI를 테스트하기 위해 병렬로 실행된다. 일부 실시예들에서, 프로세스는 반복적이며 소프트웨어 테스트 케이스가 성공적으로 통과하면 완료된다. 마지막으로, 기술은 실패한 및 성공한 소프트웨어 테스트 케이스들로부터 (예를 들어, 실패한 및 성공적으로 재구성된 테스트 단계들 사이) 차이를 식별하여 소프트웨어 테스트 케이스에 대해 검출된 실패한 테스트의 수용할 수 있는 솔루션을 제공한다. 예를 들어, 도. 2를 참조하라.
하드웨어
일부 실시예들에서, 여기에 제공된 기술은 하나 이상의 특수 목적 컴퓨팅 디바이스들(special-purpose computing devices)에 의해 구현된다. 일부 실시예들에서, 특수 목적 컴퓨팅 디바이스는 기술의 실시예들을 수행하도록 하드 와이어드(hard-wired)되고, 일부 실시예들에서 하드웨어는 기술의 실시예들을 수행하도록 지속적으로 프로그래밍되는 하나 이상의 ASIC (application-specific integrated circuit) 또는 FPGA (field programmable gate array)와 같은 디지털 전자 디바이스들을 포함한다. 일부 실시예들에서, 하드웨어는 펌웨어, 메모리, 다른 스토리지 또는 조합의 프로그램 명령어들에 기초하여 기술의 실시예들을 수행하도록 프로그래밍된 하나 이상의 범용 하드웨어 프로세서들을 포함한다. 일부 실시예들에서, 특수 목적 컴퓨팅 디바이스는 기술의 실시예들을 달성하기 위한 맞춤형 하드 와이어드 로직(custom hard-wired logic), ASIC들, 및/또는 FPGA들 및 맞춤형 프로그래밍의 사용을 포함한다. 일부 실시예들에서, 특수 목적 컴퓨팅 디바이스는 예를 들어 데스크탑 컴퓨터 시스템들, 휴대용 컴퓨터 시스템들, 핸드 헬드 디바이스들(handheld devices), 네트워킹 디바이스들, 또는 기술을 구현하기 위한 프로그램 로직 및/또는 하드 와이어드를 통합하는 어떤(any) 다른 디바이스이다.
일부 실시예들에서, 기술은 컴퓨터 시스템의 사용을 포함한다. 일부 실시예들에서, 컴퓨터 시스템은 정보를 전달하도록 구성된 버스 또는 다른 구성 요소 및 정보 처리를 위해 버스와 결합된 하드웨어 프로세서를 포함한다. 일부 실시예들에서, 하드웨어 프로세서는 범용 마이크로 프로세서이다. 일부 실시예들에서, 컴퓨터 시스템은 프로세서에 의해 실행될 명령어들 및 정보를 저장하기 위해 버스에 연결된(coupled) 랜덤 액세스 메모리 (RAM) 또는 다른 동적 저장 디바이스(dynamic storage device)와 같은 주 메모리를 포함한다. 일부 실시예들에서, 주 메모리는 프로세서에 의해 실행될 명령어들의 실행 동안 임시 변수들(temporary variables) 또는 다른 중간 정보(other intermediate information)를 저장하기 위해 사용된다. 일부 실시예들에서, 명령어들(예를 들어, 프로세서에 액세스할 수 있는 비 일시적(non-transitory) 저장 매체에 저장됨)은 명령어들에 명시된(specified) 작동들(operations)을 수행하도록 맞춤화된(customized) 특수 목적 머신을 제공하기 위해 컴퓨터 시스템에 제공된다. 일부 실시예들에서, 컴퓨터 시스템은 프로세서에 대한 정적 정보 및 명령어들을 저장하기 위해 버스(bus)에 연결된 읽기 전용 메모리(read only memory) 또는 다른 정적 저장 디바이스(static storage device)를 포함한다. 일부 실시예들에서, 자기 디스크, 광 디스크 또는 솔리드 스테이트 드라이브와 같은 저장 디바이스가 제공되고 정보 및 명령어들을 저장하기 위해 버스에 연결된다. 일부 실시예들에서, 컴퓨터 시스템은 컴퓨터 사용자에게 정보를 표시하기 위해 버스에 의해 음극선 관 (CRT), 액정 디스플레이 (LCD), 또는 당 업계에 알려진 다른 디스플레이 기술과 같은 디스플레이에 결합된다. 일부 실시예들에서, 입력 디바이스 (예를 들어, 알파뉴메릭(alphanumeric) 및 다른 키들을 포함하는)는 정보 및 명령 선택들(command selections)을 프로세서에 전달하기 위해 버스에 연결된다. 일부 실시예들에서, 커서 제어를 위한 용도를 찾는 다른 유형의 사용자 입력 디바이스들은 예를 들어, 프로세서에 방향 정보 및 명령 선택들을 전달하고 디스플레이상의 커서 이동을 제어하기 위한 마우스(mouse), 트랙볼(trackbal), 또는 커서 방향 키들(cursor direction keys)을 포함한다. 입력 디바이스들은 일반적으로 두 개의 축, 즉 제1 축 (예를 들어, x)과 제2 축 (예를 들어, y)에서 두 개의 자유도(two degrees of freedom)를 가지며, 이는 디바이스가 평면에서 위치를 명시할 수 있도록 한다.
일부 실시예들에서, 컴퓨터 시스템은 컴퓨터 시스템과 결합하여 컴퓨터 시스템이 특수 목적 머신이 되도록 야기하거나 프로그래밍하는 맞춤형 하드 와이어드 로직(customized hard-wired logic), 하나 이상의 ASIC들 또는 FPGA들, 펌웨어 및/또는 프로그램 로직을 사용하여 여기에 설명된 기술의 실시예들을 구현한다. 일부 실시예들에서, 여기에 설명된 방법은 주 메모리에 포함된 하나 이상의 명령어들의 하나 이상의 시퀀스들을 실행하는 프로세서에 응답하여 컴퓨터 시스템에 의해 수행된다. 일부 실시예들에서, 명령어는 저장 디바이스와 같은 다른 저장 매체로부터 주 메모리로 판독(read)된다. 일부 실시예들에서, 메인 메모리에 포함된 명령어들의 시퀀스들의 실행은 프로세서로 하여금 여기에 설명된 프로세스 단계들을 수행하게 한다. 일부 실시예들에서, 하드 와이어드 회로(hard-wired circuitry)는 소프트웨어 명령어들 대신에 또는 소프트웨어 명령어들과 조합하여 사용된다.
여기에서 사용된 바와 같이, "저장 매체(storage media)"라는 용어는 머신이 특정 방식(specific fashion)으로 작동하도록 야기하는 데이터 및/또는 명령어들을 저장하는 어떤(any) 비 일시적 매체(on-transitory media)를 의미한다. 이러한 저장 매체는 비 휘발성 매체 및/또는 휘발성 매체를 포함할 수 있다. 비 휘발성 매체는 예를 들어 저장 디바이스 (예를 들어, 광 디스크들, 자기 디스크들 또는 솔리드 스테이트 드라이브들)를 포함한다. 휘발성 매체는 주 메모리와 같은 동적 메모리를 포함한다. 일반적인 형태들(Common forms)의 저장 매체는, 예를 들어, 플로피 디스크, 플렉시블 디스크(flexible disk), 하드 디스크, 솔리드 스테이트 드라이브, 자기 테이프 또는 어떤(any) 다른 자기 데이터 저장 매체, CD-ROM, 어떤(any) 다른 광학 데이터 저장 매체, 어떤(any) 다른 구멍 패턴이 있는 물리적 매체(physical medium with patterns of holes), RAM, PROM, EPROM, FLASH-EPROM, NVRAM 또는 어떤(any) 다른 메모리 칩이나 카트리지를 포함한다. 저장 매체는 전송 매체와 다르지만 함께 사용될 수 있다. 전송 매체(Transmission media)는 저장 매체 간의 정보 전송에 참여한다. 예를 들어, 전송 매체는 버스를 포함하는 와이어들을 포함하여 동축 케이블(coaxial cables), 구리 와이어 및 광섬유를 포함한다. 전송 매체는 또한 전파(radio-wave) (예를 들어, IEEE 802.11) 및 적외선 데이터 통신(infra-red data communications) 중에 생성되는 것들과 같은 음향 또는 광파의 형태를 취할 수 있다. 전송 매체는 또한 인터넷, WAN 및 LAN을 포함한다.
일부 실시예들에서, 다양한 형태의 미디어는 실행을 위해 하나 이상의 명령어들의 하나 이상의 시퀀스들을 프로세서에 전달한다. 예를 들어, 명령어들은 처음에 원격 컴퓨터의 자기 디스크 또는 솔리드 스테이트 드라이브에 전달될 수 있다. 원격 컴퓨터(remote computer)는 명령어들을 동적 메모리에 로드하고 전송 매체를 통해 명령어들을 보낼 수 있다. 로컬 컴퓨터 시스템(local computer system)은 전송 매체에서 데이터를 수신할 수 있으며 적절한 회로(appropriate circuitry)는 데이터를 버스에 배치할 수 있다. 버스는 프로세서가 명령어들을 검색하고 실행하는 메인 메모리로 데이터를 전달한다. 주 메모리에 의해 수신된 명령어들은 프로세서에 의해 실행되기 전 또는 후에 저장 디바이스에 선택적으로 저장될 수 있다. 일부 실시예들에서, 컴퓨터 시스템은 버스에 연결된 통신 인터페이스를 포함한다. 일부 실시예들에서, 통신 인터페이스는 로컬 네트워크에 연결된 네트워크 링크에 연결하는(coupling) 양방향 데이터 통신(two-way data communication)을 제공한다. 예를 들어, 통신 인터페이스는 ISDN (Integrated Services Digital Network) 카드, 케이블 모뎀(cable modem), 위성 모뎀(satellite modem), 이더넷 카드(ethernet card), 무선 라디오(wireless radio) 또는 대응하는 유형의 전화선에 데이터 통신 연결(data communication connection)을 제공하는 모뎀일 수 있다. 다른 예로서, 통신 인터페이스는 호환 가능한 LAN에 데이터 통신 연결을 제공하기 위한 근거리 통신망 (LAN) 카드일 수 있다. 무선 링크들 또한 구현될 수 있다. 그러한 어떤(any)구현에서, 통신 인터페이스는 다양한 유형의 정보를 나타내는 디지털 데이터 스트림들을 운반하는 전기, 전자기 또는 광학 신호들을 송신 및 수신한다.
일부 실시예들에서, 네트워크 링크는 하나 이상의 네트워크들을 통해 다른 데이터 디바이스들에 데이터 통신을 제공한다. 예를 들어, 네트워크 링크는 로컬 네트워크를 통해 인터넷 서비스 공급자 (Internet Service Provider; ISP)에 의해 작동되는 데이터 장비 또는 호스트 컴퓨터에 대한 연결을 제공할 수 있다. ISP는 이제 일반적으로 "인터넷"이라고하는 월드 와이드 패킷 데이터 통신 네트워크를 통해 데이터 통신 서비스들을 제공한다. 로컬 네트워크와 인터넷은 모두 디지털 데이터 스트림을 전달하는 전기, 전자기 또는 광학 신호들을 사용한다.
일부 실시예들에서, 컴퓨터 시스템은 네트워크 (들), 네트워크 링크 및 통신 인터페이스들을 통해 메시지들을 전송하고 프로그램 코드를 포함한 데이터를 수신한다. 예를 들어, 서버는 인터넷, ISP, 로컬 네트워크 및 통신 인터페이스를 통해 응용 프로그램에 대해 요청된 코드를 전송할 수 있다. 일부 실시예들에서, 수신된 코드는 이후 실행을 위해 수신 및/또는 저장 디바이스 또는 다른 비 휘발성 저장 디바이스에 저장될 때 프로세서에 의해 실행된다.
일부 실시예들에서, 이들 하드웨어 구성 요소들 중 어떤(any) 것은 에뮬레이션(emulation) 및/또는 클라우드 컴퓨팅을 사용하는 가상 구성 요소로서 제공된다. 따라서, 여기에서 사용된 용어 "하드웨어" 및 여기에 설명된 하드웨어의 구성 요소들은 또한 클라우드 환경에서 하나 또는 복수의 가상 머신들로 에뮬레이션에 의해 제공되는 로컬 또는 원격 물리적 하드웨어 또는 하드웨어 및/또는 하드웨어 구성 요소들을 지칭한다.
방법들
일부 실시예들에서, 기술은 웹 애플리케이션의 실패한 소프트웨어 테스트 (예를 들어, 도 3 참조)의 근본 원인 (예를 들어, 단계, 동작, 요소)을 식별하는 방법들에 관한 것이다. 일부 실시예들에서, 방법들은 웹 애플리케이션을 제공하는 것을 포함한다 (예를 들어, 하나 이상의 요소들을 포함하는). 일부 실시예들에서, 방법들 웹 애플리케이션과의 하나 이상의 사용자 상호 작용들 (예를 들어, 웹 애플리케이션의 요소와 상호 작용하는 사용자의 동작들)을 모방하는 일련의 테스트 동작들을 제공하는 것을 포함한다. 일부 실시예들에서, 스크립트는 일련의 단계들로서 일련의 테스트 동작들을 제공한다. 일부 실시예들에서, 방법들은 단계들이 웹 애플리케이션 (예를 들어, 훈련 세트)에서 수행될 때 웹 애플리케이션의 성공적인 테스트를 초래하는 일련의 단계들을 포함하는 웹 애플리케이션 및 스크립트를 제공하는 것을 포함한다. 일부 실시예들에서, 방법들은 웹 애플리케이션의 성공적인 테스트들의 결과를 가져오는 복수의 (예를 들어, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30, 40, 50, 60, 70, 80, 90, 100 또는 그 이상) 스크립트들을 제공하는 것을 포함한다. 일부 실시예들에서, 방법들은 웹 애플리케이션의 소프트웨어 테스트가 실패했음을 결정하는 것을 포함한다. 일부 실시예들에서, 방법들은 테스트가 실패한 소프트웨어 테스트의 단계를 식별하는 것을 포함한다. 일부 실시예들에서, 방법들은 테스트가 실패한 소프트웨어 테스트 단계의 동작을 식별하는 것을 포함한다. 일부 실시예들에서, 방법들은 실패한 소프트웨어 테스트를 식별 및/또는 검출하고 각 테스트 동작이 실패한 테스트의 근본 원인일 가능성에 따라 테스트 동작들의 순위를 매기기 위해 머신 러닝을 사용하는 것을 포함한다.
일부 실시예들에서, 방법들은 동작이 웹 애플리케이션의 테스트에서 오류를 생성할 가능성 (예를 들어, 동작이 실패한 테스트의 근본 원인이 될 가능성)을 연관시키기 위해 머신 러닝(machine learning) (예를 들어, 훈련 세트로부터의 데이터를 사용하여)을 사용하는 것을 포함한다. 일부 실시예들에서, 머신 러닝은 신경망의 사용을 포함한다. 일부 실시예들에서, 머신 러닝은 요소 속성들을 입력으로 사용하는 것을 포함한다. 일부 실시예들에서, 머신 러닝은 요소 속성들의 변경을 입력으로 사용하는 것을 포함한다. 일부 실시예들에서, 요소 속성의 변경은 웹 애플리케이션의 소프트웨어 코드(예를 들어, 소스 코드 및/또는 객체 코드)의 분석 및/또는 컴퓨터 비전을 사용하여 결정된다. 일부 실시예들에서, 방법들은 가능한 근본 원인들 (예를 들어, 단계들, 동작들, 요소들)이 소프트웨어 테스트를 실패하게 할 가능성에 따라 소프트웨어 테스트의 가능한 근본 원인들의 순위를 매기는 것을 포함한다. 일부 실시예들에서, 머신 러닝은 가능한 근본 원인들 (예를 들어, 단계들, 동작들, 요소들)이 소프트웨어 테스트를 실패하게 할 가능성에 따라 소프트웨어 테스트의 가능한 근본 원인들의 순위를 매기는 데 사용된다. 일부 실시예들에서, 방법들은 웹 애플리케이션의 실패한 테스트를 생성할 가능성에 의해 순위가 매겨진 가능한 근본 원인들 (예를 들어, 단계들, 동작들, 요소들)의 순위가 매겨진 목록을 생성하는 것을 포함한다.
일부 실시예들에서, 방법들은 규칙들 (예를 들어, 조건 (예를 들어, 데이터, 단계, 동작)에 의해 만족될 때 제안을 트리거하는 기준 (예를 들어, 규칙의 "언제" 부분)을 포함하는 규칙들)을 포함하는 규칙 엔진을 제공하는 것을 포함한다. 일부 실시예들에서, 가능한 근본 원인들의 순위가 매겨진 목록이 규칙 엔진에 제공된다. 일부 실시예들에서, 규칙 엔진의 규칙은 가능한 근본 원인에 의해 트리거되고 규칙 엔진은 실패한 소프트웨어 테스트의 근본 원인을 정정하기위한 제안을 생성한다.
일부 실시예들에서, 방법들은 머신 러닝 제안 서비스(machine learning suggestion service)를 제공하는 것을 포함한다. 일부 실시예들에서, 머신 러닝 제안 서비스는 실패한 소프트웨어 테스트의 가능성이 있는 근본 원인들을 식별하고 식별된 근본 원인들의 정정들을 제안하기 위해 머신 러닝 및 하나 이상의 훈련 세트들을 사용하는 것에 기초하여 실패한 소프트웨어 테스트의 근본 원인을 정정하는 것을 위한 제안들을 포함한다.
일부 실시예들에서, 규칙 엔진에 의해 생성된 제안들 및 머신 러닝 제안 서비스에 의해 생성된 제안은 제안 풀(suggestion pool)로 결합된다. 일부 실시예들에서, 제안 풀은 분류되고(sorted) 및/또는 중복 제거된다. 일부 실시예들에서, 방법들은 분류 및/또는 중복 제거된 제안 풀을, 예를 들어, 사용자에게, 소프트웨어 실패들의 자동화된 복구 등을 제공하도록 구성된 구성 요소에 출력한다.
일부 실시예들에서, 방법들은 웹 애플리케이션의 요소들의 그래픽 모델을 생성하는 것을 포함한다. 일부 실시예들에서, 방법들은 웹 애플리케이션의 복수 버전들에 대한 복수의 그래픽 모델들을 생성하는 것을 포함한다. 일부 실시예들에서, 방법들은 웹 애플리케이션의 두 버전들 (예를 들어, 웹 애플리케이션 UI) 및/또는 웹 애플리케이션의 하나 이상의 버전들에 대응하는 하나 이상의 그래픽 모델들 (예를 들어, 웹 애플리케이션 UI) 간의 하나 이상의 그래픽 요소들의 차이들을 식별하는 것을 포함한다.
일부 실시예들에서, 방법들은 웹 애플리케이션을 테스트하기 위해 스크립트(예를 들어, 테스트 케이스) 및 웹 애플리케이션을 제공하는 것을 포함한다. 일부 실시예들에서, 스크립트는 웹 애플리케이션을 테스트하기 위해 구동된다. 일부 실시예들에서, 웹 애플리케이션에 대한 변경들이 이루어지고 (예를 들어, 웹 애플리케이션의 하나 이상의 요소들의 하나 이상의 속성들의 값을 변경하는) 웹 애플리케이션을 테스트하기 위해 스크립트가 구동된다. 일부 실시예들에서, 웹 애플리케이션에서 복수의 버전들을 테스트하기 위해 상이한 단계들 (예를 들어, 상이한 동작들을 포함하는)을 포함하는 스크립트들이 제공된다. 일부 실시예들에서, 방법들은 확률 그래픽 모델 (PGM)을 생성하는 것을 포함한다 (예를 들어, 웹 애플리케이션의 복수 버전들을 설명하고, 선택적으로, 제2 그래픽 모델에 대한 제1 그래픽 모델의 변경들을 설명하는 복수의 그래픽 모델들로부터). 일부 실시예들에서, PGM은 컴퓨터 비전, 머신 러닝, 신경망 및/또는 웹 애플리케이션 소스 코드 및/또는 객체 코드의 분석을 사용하여 생성된다. 일부 실시예들에서, 방법들은 소프트웨어 테스트 실패의 근본 원인이 될 수 있는 동작들을 식별하기 위해 PGM을 평가하는 것을 포함한다. 일부 실시예들에서, 방법들은 각 동작이 소프트웨어 테스트 실패의 근본 원인일 가능성에 따라 스크립트의 동작들의 순위를 매기기 위해 PGM을 평가하는 것을 포함한다. 일부 실시예들에서, 방법들은 소프트웨어 테스트 실패의 근본 원인이 될 각 동작의 가능성에 의해 분류된 스크립트의 동작들 목록을 생성하는 것을 포함한다. 일부 실시예들에서, 소프트웨어 테스트 실패의 근본 원인이 될 각 동작의 가능성에 의해 분류된 스크립트의 동작들의 목록은 하나 이상의 규칙들에 의해 테스트될 규칙 엔진에 제공된다. 일부 실시예들에서, 규칙 엔진은 실패한 테스트의 근본 원인을 정정하기 위한 제안을 제공한다. 예를 들어, 도 1을 참조하라.
시스템들
일부 실시예들은 웹 애플리케이션의 실패한 소프트웨어 테스트 (예를 들어, 도 3 참조)의 근본 원인 (예를 들어, 단계, 동작, 요소)을 식별하기 위한 시스템에 관한 것이다. 일부 실시예들에서, 시스템들은 스크립트 (예를 들어, 테스트 동작들을 포함하는)를 포함한다. 일부 실시예들에서, 시스템들은 웹 애플리케이션(예를 들어, 웹 애플리케이션의 UI)에서 테스트 동작들을 수행하고 스크립트를 실행하기 위한 구성 요소를 포함한다. 일부 실시예들에서, 시스템들은 훈련 세트를 포함한다. 일부 실시예들에서, 시스템들은 복수의 스크립트들, 복수 버전들의 웹 애플리케이션 및/또는 복수의 훈련 세트들을 포함한다. 일부 실시예들에서, 훈련 세트는 웹 애플리케이션에서 구동되는 테스트 스크립트의 테스트 결과, 테스트 스크립트 및 웹 애플리케이션을 포함한다. 일부 실시예들에서, 시스템들은 각 테스트 동작이 테스트 실패의 근본 원인이 될 가능성에 따라 테스트 동작들의 순위를 매기기 위한 구성 요소를 포함한다. 일부 실시예들에서, 각 테스트 동작이 테스트 실패의 근본 원인이 될 가능성에 따라 테스트 동작들의 순위를 매기기 위한 구성 요소는 머신 러닝 구성 요소이다. 일부 실시예들에서, 머신 러닝 구성 요소는 신경망을 포함한다. 일부 실시예들에서, 시스템들은 웹 애플리케이션 UI의 그래픽 모델을 포함한다. 일부 실시예들에서, 시스템들은 웹 애플리케이션 UI의 상이한 버전들의 복수의 그래픽 모델들을 포함한다. 일부 실시예들에서, 하나 이상의 그래픽 모델들은 각 테스트 동작이 테스트 실패의 근본 원인일 가능성을 제공하기 위해 머신 러닝을 사용하여 평가된다. 일부 실시예들에서, 각 테스트 동작이 테스트 실패의 근본 원인일 가능성에 따라 테스트 동작들의 순위를 매기기 위한 머신 러닝 구성요소는 각 테스트 동작이 테스트 실패의 근본 원인일 가능성에 따라 순위가 매겨진 테스트 동작들의 목록을 생성한다. 일부 실시예들에서, 시스템들은 머신 러닝 제안 서비스를 제공하도록 구성된 구성 요소를 포함한다. 일부 실시예들에서, 시스템들은 규칙 엔진을 포함한다. 일부 실시예들에서, 시스템들은 제안 매니저(suggestion manager)를 포함한다. 일부 실시예들에서, 시스템들은 제안 관리자에 의해 생성된 병합 및 필터링된 제안들(merged and filtered suggestions)을 포함한다.
여기의 개시는 특정 예시된 실시예들을 언급하지만, 이들 실시예들은 제한의 방식이 아닌 예의 방식에 의해 제시된다는 것을 이해해야 한다.
예들(Examples)
예 1 -텍스트 상자 검출
여기에 제공된 기술의 실시예들을 개발하는 동안, 텍스트 상자 검출을 위한 방법들 및 시스템들을 테스트하기 위한 실험들이 수행되었다 (예를 들어, 웹 애플리케이션 UI에서 텍스트 상자들을 검출하기 위해). 도 5에 도시된 바와 같이, 웹 애플리케이션은 템플릿 검증 시스템(template validation system)의 텍스트 상자 검출 구성 요소에 제공되었다. 텍스트 상자 검출 구성 요소 머신 러닝(text box detection component machine learning) 및/또는 딥 러닝 (예를 들어, 신경망)은 입력 웹 애플리케이션 (예를 들어, 웹 애플리케이션의 UI)을 분석한다. 텍스트 상자 검출 구성 요소는 UI에서 텍스트 상자들의 위치들과 차원들을 포함하는 출력을 생성한다.
예 2 - 요소 검출(Element detection)
여기에 제공된 기술의 실시예들을 개발하는 동안 요소 검출을 위한 방법들 및 시스템들을 테스트하기 위한 실험들이 수행되었다 (예를 들어, 웹 애플리케이션 UI에서 요소들을 검출하기 위해). 도 7에 도시된 바와 같이 웹 애플리케이션은 템플릿 검증 시스템의 텍스트 상자 검출 구성 요소(text box detection component)에 제공되었다. 텍스트 상자 검출 구성 요소 머신 러닝(text box detection component machine learning) 및/또는 딥 러닝 (예를 들어, 신경망)은 입력 웹 애플리케이션 (예를 들어, 웹 애플리케이션의 UI)을 분석한다. 텍스트 상자 검출 구성 요소는 UI에서 텍스트 상자들의 위치들(locations)과 차원들(dimensions)로 구성된 출력을 생성하고 요소 검출 구성 요소에 출력을 제공한다. 요소 검출 구성 요소 그룹들(element detection component groups)은 각 텍스트 상자를 x 및 y는 문서 스크린 샷(document screenshot) 또는 뷰포트(viewport)의 픽셀 포지션(pixel position)을 나타내고 w 및 h는 상자의 너비와 높이를 나타내는 벡터 u = (x, y, w, h)로 정의하는 것에 의해 비-텍스트 상자 객체들(non-text box objects)을 검출하고 텍스트 상자들을 그룹화하며, 텍스트 상자 사이들 사이의 거리를 결정하고 밀도 기반 클러스터링(density-based clustering)을 수행하여 텍스트 상자들을 텍스트 상자의 클러스터로 그룹화한다. 예를 들어, 텍스트 상자 검출 구성 요소는 텍스트 "amazon"을 포함하는 제1 텍스트 상자를 식별하고 텍스트 "prime"을 포함하는 제2 텍스트 상자를 식별했다. 요소 검출 구성 요소는 거리 계산 및 클러스터링을 수행하여 "amazon" 텍스트 상자와 "prime" 텍스트 상자를 모두 포함하는 텍스트 상자 클러스터를 생성했다. 예를 들어, 도 7을 참조하라. 같은 방식으로, 다른 텍스트 상자들은 요소 검출 구성 요소에 의해 그룹화되고 출력되었다.
예 3 - 객체 검출(Object detection)
여기에 제공된 기술의 실시예들을 개발하는 동안 객체 검출을 위한 방법들 및 시스템들을 테스트하기 위한 실험들이 수행되었다 (예를 들어, 웹 애플리케이션 UI에서 비-텍스트 객체들(non-text objects) 검출하기 위해). 도 8에 도시된 바와 같이 웹 애플리케이션은 템플릿 검증 시스템의 객체 검출 구성 요소에 제공되었다. 객체 검출 구성 요소 머신 러닝(object detection component machine learning) 및/또는 딥 러닝 (예를 들어, 신경망)은 아이콘들의 훈련 세트 (예를 들어, 카트 아이콘(cart icon), 화살표 아이콘, 열린 파일 아이콘(open file icon), 저장 파일 아이콘(save file icon), 로그인 아이콘(login icon), 체크된 아이콘(checked icon), 글 머리 기호 아이콘(bullet icon) 및 닫기 아이콘(close icon))을 사용하여 훈련되었다. 객체 검출 구성 요소는 UI에서 객체들의 위치들과 차원들로 구성된 출력을 생성한다. 예를 들어, 도 8을 참조하라. 객체 검출 구성 요소는 UI에서 객체의 위치 및/또는 차원들을 식별한다.
예 4 - 선택 로직(Selection logic)
여기에 설명된 기술의 실시예들을 개발하는 동안, 요소들 및/또는 요소 속성들의 분포를 평가하고 페이지에 걸쳐 및/또는 시간을 통해 요소들 및/또는 요소 속성들의 분포들의 확률(probability of distributions)을 결정하는 시스템들 및 방법들을 테스트하기 위한 실험이 수행되었다. 요소들에 사용된 배경색 빈도(background color frequency)는 2019 년 6 월 25 일 (버전 1)과 2019 년 7 월 20 일 (버전 2)에 한 페이지에 대해 기록되었다. 도 9a를 참조하라. 도 9a에서, 색상들의 빈도(frequency of colors) (왼쪽 열)는 오른쪽 열에 제공된다. 속성 분포(attribute distribution) (예를 들어, 색상들의 빈도)는 버전들 사이 요소들 간 확률 연관들을 생성하기 위해 사용되었다(예를 들어, 요소들을 도 9a의 %와 연관시키는 화살표들을 참조). 여기에 설명된 기술은 버전 2에 존재하지 않는 버전 1의 색상 219, 219, 219를 갖는 요소를 식별했다. 기술은 버전 2에서 색상 254, 249, 219의 관련 요소를 식별했다. 도 9a에 보여진 바와 같이, 확률 연관은 90 %였다. 따라서, 기술은 색상 219, 219, 219를 갖는 버전 1의 요소가 색상 254, 249, 219를 갖는 요소로 변경되었을 확률 (예를 들어, 높은 확률)을 계산했다 (예를 들어, 요소의 색상 속성이 버전 1에서 버전 2로 변경됨). 후속 페이지 버전들의 분석에서, 소프트웨어는 그것의 254, 249, 219의 새 색상을 사용하여 요소를 부분적으로 식별했다. 기술은 사용자에게 변경에 대해 경고했다. 분석은 모든 요소들과 모든 요소의의 모든 속성들에 대해 반복되었다. 일부 실시예들에서, 기술은 예를 들어 텐서(tensor)를 사용하여 더 높은 차원(higher dimensions)에서 요소들 및/또는 요소 속성들의 식별 및 평가를 수행하는 것을 포함한다. 유사한 실험들에서 높이 속성이 15 픽셀에서 5 픽셀로 변경된 요소가 식별되었다. 도 9b를 참조하라. 도 9b는 열 1에 특정 색상들을 갖는 요소들과 열 2-7의 요소들에 대해 0, 1, 5, 10, 13 및 15 픽셀들의 높이들의 분포를 보여준다. 속성 분포 (예를 들어, 높이들의 빈도(frequency of heights))는 버전들 사이의 요소들 간 확률 연관들을 생성하는 데 사용되었다. 확률 연관은 변경된 높이를 갖는 요소를 식별하는 데 사용되었다.
또한 추가 실험들에서 기술은 서로 다른 두 페이지들에 있는 요소들의 너비들의 분포들을 결정했다. 도 9c를 참조하라. 일부 실시예들에서, UI의 제1 페이지 또는 제1 버전에 대한 너비들의 제1 분포가 결정되고 상기 UI의 제2 페이지 또는 제2 버전에 대한 너비들의 제2 분포가 결정된다. 속성 분포 (예를 들어, 너비들의 빈도)는 두 페이지들 사이의 요소들 간의 확률 연관들을 생성하는 데 사용되었다. 기술은 너비들의 분포 또는 어떤(any) 특정 요소 속성을 결정하는 데 국한되지 않는다. 따라서, 기술은 UI의 버전 또는 페이지에 대한 요소 속성의 분포를 결정하는 것을 포함한다. 일부 실시예들에서, 기술은 UI의 제1 버전 또는 제1 페이지에 대한 요소 속성의 제1 분포를 결정하는 것, 상기 UI의 제2 버전 또는 제2 페이지에 대한 상기 요소 속성의 제1 분포를 결정하는 것 및 UI의 제2 페이지 또는 버전의 요소들과 UI의 제1 페이지 또는 버전의 요소들 사이 확률 연관들을 할당하는 것을 포함한다. 위의 실험들은 높이, 너비 및 색상의 분포들의 사용을 설명한다; 그러나, 기술은 한 페이지 또는 UI 버전의 요소를 제2 페이지 또는 UI 버전과 연관시키기 위한 어떤(any) 요소 속성의 분포들을 생성하는 것 및 평가를 포함한다.
상기 명세서에 언급된 모든 간행물(publications) 및 특허(patents)는 모든 목적을 위해 그 전체가 본원에 참고로 포함된다. 기술된 조성물들(compositions), 방법들 및 기술의 사용들에 대한 다양한 수정들 및 변형들은 기술된 기술의 범위(scope) 및 정신(spirit)을 벗어나지 않고 당업자에게 명백할 것이다. 기술이 특정 예시적인 실시예들과 관련하여 설명되었지만, 청구된 본 발명은 그러한 특정 실시예들에 부당하게 제한되어서는 안된다는 것이 이해되어야 한다. 실제로, 당업자에게 명백한 본 발명을 수행하기 위한 설명된 모드들(modes)의 다양한 수정은 다음의 청구항의 범위 내에 있는 것으로 의도된다.

Claims (32)

  1. 사용자 인터페이스를 포함하는 웹 애플리케이션의 실패한(failed) 소프트웨어 테스트의 근본 원인(root cause)을 식별하는 방법으로서,
    사용자 인터페이스를 포함하는 웹 애플리케이션을 제공하는 단계;
    일련의 테스트 단계들(test steps)을 포함하는 스크립트를 제공하는 단계-각 테스트 단계는 상기 사용자 인터페이스의 요소에 대해 수행되는 동작을 포함함-;
    상기 웹 애플리케이션에서 상기 스크립트를 실행하는 단계;
    실패한 소프트웨어 테스트가 실패를 보고하는 상기 스크립트의 오류 단계(error step)를 식별하는 단계; 및
    각 제안된 테스트 단계 및/또는 요소(element)가 상기 실패한 소프트웨어 테스트의 상기 근본 원인일 가능성에 의해 순위가 매겨진 제안된 테스트 단계들 및/또는 요소들의 목록(list)를 생성하는 단계
    를 포함하는,
    방법.
  2. 제1항에 있어서,
    상기 생성하는 단계는,
    컴퓨터 비전(computer vision)을 사용하여 상기 사용자 인터페이스의 제1 버전의 제1 요소들을 식별하고 상기 제1 요소들의 각 요소에 대한 요소 속성들(element attributes)을 결정하는 단계;
    컴퓨터 비전을 사용하여 상기 사용자 인터페이스의 제2 버전의 제2 요소들을 식별하고 상기 제2 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계;
    상기 제1 요소들의 각 요소에 대한 상기 요소 속성들을 상기 제2 요소들의 각 요소에 대한 상기 제2 요소 속성들과 비교함으로써 상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이의 차이들을 식별하는 단계;
    훈련된 확률 모델(trained probabilistic model)을 생성하기 위해 상기 차이들을 사용하여 확률 모델을 훈련시키는 단계; 및
    각 테스트 단계 및/또는 각 요소가 상기 실패한 소프트웨어 테스트의 근본 원인일 상기 가능성을 상기 사용자 인터페이스의 각 요소 및/또는 각 테스트 단계에 할당하는 단계
    를 포함하는,
    방법.
  3. 제1항에 있어서, 상기 제안된 테스트 단계들은 상기 오류 단계에 선행하는, 방법.
  4. 제2항에 있어서,
    상기 컴퓨터 비전을 사용하는 것은 텍스트 상자를 검출하는 것, 문자들을 인식하는 것, 요소를 검출하는 것, 객체를 검출하는 것, 및/또는 레이아웃을 검출하는 것을 포함하는,
    방법.
  5. 제2항에 있어서,
    상기 훈련시키는 단계는, 상기 사용자 인터페이스의 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 또는 그 이상의 버전들을 비교하는 것에 의해 식별된 입력들의 차이들을 수신하는 단계
    를 포함하는,
    방법.
  6. 제2항에 있어서,
    상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이의 차이들을 식별하는 단계는,
    확률 그래픽(probabilistic graphical) 및/또는 속성 모델(attribute model)을 생성하기 위해 상기 사용자 인터페이스의 상기 제2 버전의 제2 그래픽 및/또는 속성 모델과 상기 사용자 인터페이스의 상기 제1 버전의 제1 그래픽 및/또는 속성 모델을 비교하는 단계
    를 포함하는,
    방법.
  7. 제2항에 있어서,
    상기 훈련시키는 단계는,
    테스트 단계들, 요소들, 및/또는 속성 카테고리들(attribute categories)에 가중된 스코어들을 할당하는 단계
    를 포함하는,
    방법.
  8. 제2항에 있어서,
    상기 할당하는 단계는,
    각 테스트 단계 및/또는 각 요소가 상기 실패한 소프트웨어 테스트의 근본 원인일 상기 가능성을 결정하기 위해 상기 확률 모델을 평가하는 단계
    를 포함하는,
    방법.
  9. 제2항에 있어서,
    상기 훈련시키는 단계는 머신 러닝을 사용하는 단계를 포함하는,
    방법.
  10. 제2항에 있어서,
    상기 훈련시키는 단계는 신경망(neural net)을 사용하는 단계를 포함하는,
    방법.
  11. 제2항에 있어서,
    상기 제1 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계 및/또는 상기 제2 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계는,
    상기 제1 요소들의 각 요소와 연관된 소스 코드를 분석하는 단계 및/또는 상기 제2 요소들의 각 요소와 연관된 소스 코드를 분석하는 단계
    를 포함하는,
    방법.
  12. 제1항에 있어서,
    각 제안된 테스트 단계 및/또는 요소는 상기 근본 원인을 정정하기 위한 제안된 정정들(corrections)을 제공하기 위해 규칙 엔진(rules engine)에 의해 평가되는,
    방법.
  13. 실패한 테스트 단계를 포함하는 실패한 소프트웨어 테스트 케이스 구성(failed software test case configuration)을 정정(correcting)하는 방법에 있어서,
    각 후보 실패 테스트 단계들(candidate failed test steps)이 실패한 소프트웨어 테스트의 근본 원인일 가능성에 의해 순위가 매겨진 후보 실패 테스트들의 목록을 수신하는 단계;
    각 후보 실패 테스트 단계에 대한 복수의 시험 테스트 케이스 구성들(trial test case configurations)을 생성하기 위해 후보 실패 테스트 단계들의 상기 목록의 각 후보 실패 테스트 단계를 마르코프 결정 프로세스(Markov decision process)에 제공하는 단계;
    각 후보 실패 테스트 단계에 대해 각 시험 테스트 케이스 구성을 실행하는 단계;
    성공적인 소프트웨어 테스트를 식별하는 단계;
    상기 성공적인 소프트웨어 테스트를 생성한 시험 테스트 케이스 구성을 식별하는 단계;
    상기 실패한 소프트웨어 테스트 케이스 구성에 관한 상기 시험 테스트 케이스의 차이들을 식별하기 위해 상기 성공적인 소프트웨어 테스트를 생성한 상기 시험 테스트 케이스 구성 및 상기 실패한 소프트웨어 테스트 케이스 구성을 비교하는 단계;
    실패한 단계를 정정된 단계로 대체하는 것에 의해 상기 실패한 소프트웨어 테스트 케이스 구성을 정정하는 단계 - 상기 정정된 단계는 상기 실패한 소프트웨어 테스트 케이스에 관한 상기 시험 테스트 케이스의 상기 차이들을 구현함-
    를 포함하는,
    방법.
  14. 제13항에 있어서,
    상기 실행하는 단계는,
    각 후보 실패 테스트 단계에 대해 각 시험 테스트 케이스 구성을 병렬적으로 실행하는 단계
    를 포함하는,
    방법.
  15. 제13항에 있어서,
    후보 실패 테스트 단계들의 상기 목록은,
    사용자 인터페이스를 포함하는 웹 애플리케이션(web application)을 제공하는 단계;
    일련의 테스트 단계들을 포함하는 스크립트(script)를 포함하는 소프트웨어 테스트 케이스 구성을 제공하는 단계 - 각 테스트 단계는 상기 사용자 인터페이스의 요소에서 수행되는 동작(action)을 포함함 -;
    상기 웹 애플리케이션 상에서 상기 스크립트를 구동하는 단계; 및
    각 후보 실패 테스트 단계가 상기 실패한 소프트웨어 테스트의 상기 근본 원인일 가능성에 의해 순위가 매겨진 후보 실패 테스트 단계들의 상기 목록을 생성하는 단계
    를 포함하는 방법에 의해 생성되는,
    방법.
  16. 제15항에 있어서,
    후보 실패 테스트 단계들의 상기 목록을 생성하는 단계는,
    컴퓨터 비전(computer vision)을 사용하여 상기 사용자 인터페이스의 제1 버전의 제1 요소들을 식별하고 상기 제1 요소들의 각 요소에 대한 요소 속성들(element attributes)을 결정하는 단계;
    컴퓨터 비전을 사용하여 상기 사용자 인터페이스의 제2 버전의 제2 요소들을 식별하고 상기 제2 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계;
    상기 제1 요소들의 각 요소에 대한 상기 요소 속성들을 상기 제2 요소들의 각 요소에 대한 상기 제2 요소 속성들과 비교함으로써 상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이의 차이들을 식별하는 단계;
    훈련된 확률 모델(trained probabilistic model)을 생성하기 위해 상기 차이들을 사용하여 확률 모델을 훈련시키는 단계; 및
    각 테스트 단계 및/또는 각 요소가 상기 실패한 소프트웨어 테스트의 근본 원인일 상기 가능성을 상기 사용자 인터페이스의 각 요소 및/또는 각 테스트 단계에 할당하는 단계
    를 포함하는,
    방법.
  17. 사용자 인터페이스를 포함하는 웹 애플리케이션의 실패들(failures)을 자율적으로 식별하는 방법에 있어서,
    상기 사용자 인터페이스의 요소들을 식별하기 위해 웹 애플리케이션 사용자 인터페이스를 분석하는 단계;
    요소 함수들을 식별하기 위해 웹 애플리케이션의 소스 코드를 분석하는 단계;
    요소-함수 연관들(element-function associations)을 생성하기 위해 상기 사용자 인터페이스의 요소들과 요소 함수들을 연관시키는 단계;
    신경망(neural network)을 학습시키기 위해 영상들, 텍스트, 및 웹 애플리케이션 사용자 인터페이스 지오메트리(web application user interface geometry)를 입력하는 단계; 및
    상기 웹 애플리케이션의 실패들을 생성하는 상기 웹 애플리케이션 사용자 인터페이스의 이상들(anomalies)을 식별하기 위해 상기 요소들, 요소 함수들, 및 요소-함수 연관들을 상기 훈련된 신경망에 입력하는 단계
    를 포함하는,
    방법.
  18. 제17항에 있어서,
    상기 사용자 인터페이스의 요소들을 식별하기 위해 웹 애플리케이션 사용자 인터페이스를 분석하는 단계는,
    컴퓨터 비전의 사용을 포함하는,
    방법.
  19. 제17항에 있어서,
    요소 함수들을 식별하기 위해 웹 애플리케이션의 소스 코드를 분석하는 단계는,
    자연어 처리의 사용을 포함하는,
    방법.
  20. 제17항에 있어서,
    웹 애플리케이션 사용자 인터페이스를 제공하기 위해 병렬 웹 크롤러(parallel web crawler)를 제공하는 단계
    를 더 포함하는,
    방법.
  21. 제17항에 있어서,
    상기 웹 애플리케이션의 복수의 웹 애플리케이션 사용자 인터페이스들을 제공하기 위해 병렬 웹 크롤러를 제공하는 단계
    를 더 포함하는,
    방법.
  22. 제17항에 있어서,
    상기 방법은,
    상기 웹 애플리케이션 사용자 인터페이스를 검증하기 위해 테스트 스크립트의 각 단계에 대해 수행되는,
    방법.
  23. 웹 애플리케이션 사용자 인터페이스의 새로운 요소인 요소를 식별하는 방법에 있어서,
    사용자 인터페이스를 포함하는 웹 애플리케이션을 제공하는 단계;
    일련의 테스트 단계들을 포함하는 스크립트를 제공하는 단계 -각 테스트 단계는 상기 사용자 인터페이스의 요소 상에서 수행되는 동작을 포함함-;
    상기 웹 애플리케이션 상에서 상기 스크립트를 구동하는 단계;
    실패한 소프트웨어 테스트가 실패를 보고하는 상기 스크립트의 오류 단계를 식별하는 단계; 및
    변경된 요소 속성이 요소 함수와 관련이 있을 가능성 및/또는 각 제안된 요소가 상기 사용자 인터페이스의 새로운 요소일 가능성에 의해 순위가 매겨진 제안된 요소들의 목록을 생성하는 단계
    를 포함하는,
    방법.
  24. 제1항에 있어서,
    상기 생성하는 단계는,
    컴퓨터 비전(computer vision)을 사용하여 상기 사용자 인터페이스의 제1 버전의 제1 요소들을 식별하고 상기 제1 요소들의 각 요소에 대한 요소 속성들(element attributes)을 결정하는 단계;
    컴퓨터 비전을 사용하여 상기 사용자 인터페이스의 제2 버전의 제2 요소들을 식별하고 상기 제2 요소들의 각 요소에 대한 요소 속성들을 결정하는 단계;
    상기 제1 요소들의 각 요소에 대한 상기 요소 속성들을 상기 제2 요소들의 각 요소에 대한 상기 제2 요소 속성들과 비교함으로써 상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이의 차이들을 식별하는 단계;
    훈련된 확률 모델(trained probabilistic model)을 생성하기 위해 상기 차이들을 사용하여 확률 모델을 훈련시키는 단계; 및
    변경된 요소 속성이 요소 함수와 관련이 있을 가능성 및/또는 각 제안된 요소가 상기 사용자 인터페이스의 새로운 요소일 상기 가능성을 상기 사용자 인터페이스의 각 요소에 할당하는 단계
    를 포함하는,
    방법.
  25. 제24항에 있어서,
    상기 훈련된 확률 모델은 상기 사용자 인터페이스의 상기 제1 버전과 상기 사용자 인터페이스의 상기 제2 버전 사이 차이를
    1) 소프트웨어 테스트 실패의 근본 원인;
    2) 새로운 사용자 인터페이스 요소; 또는
    3) 요소 함수와 관련 있는 요소 속성의 변경
    로 분류하는,
    방법.
  26. 제24항에 있어서,
    웹 애플리케이션 사용자 인터페이스 요소의 변경된 속성 또는 새로운 웹 애플리케이션 사용자 인터페이스 요소를 설명하기 위해 상기 테스트 스크립트의 상기 오류 단계를 정정하는 단계
    를 더 포함하는,
    방법.
  27. 제24항에 있어서,
    사용자 인터페이스 요소의 속성이 변경되었거나 또는 상기 웹 애플리케이션 사용자 인터페이스가 새로운 요소를 포함함을 알리는 단계
    를 더 포함하는,
    방법.
  28. 제27항에 있어서,
    사용자 인터페이스 요소의 속성이 변경되었거나 또는 웹 애플리케이션 사용자 인터페이스가 새로운 요소를 포함한다는 사용자 확인(user confirmation)을 수신하는 단계
    를 더 포함하는,
    방법.
  29. 제1항에 따른 방법을 수행하는 시스템.
  30. 제13항에 따른 방법을 수행하는 시스템.
  31. 제17항에 따른 방법을 수행하는 시스템.
  32. 제23항에 따른 방법을 수행하는 시스템.
KR1020217013226A 2018-10-02 2019-10-02 소프트웨어 테스팅 KR20210100600A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862740409P 2018-10-02 2018-10-02
US62/740,409 2018-10-02
US201862749490P 2018-10-23 2018-10-23
US201862749533P 2018-10-23 2018-10-23
US62/749,533 2018-10-23
US62/749,490 2018-10-23
PCT/US2019/054366 WO2020072701A1 (en) 2018-10-02 2019-10-02 Software testing

Publications (1)

Publication Number Publication Date
KR20210100600A true KR20210100600A (ko) 2021-08-17

Family

ID=70055477

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217013226A KR20210100600A (ko) 2018-10-02 2019-10-02 소프트웨어 테스팅

Country Status (9)

Country Link
US (1) US11645139B2 (ko)
EP (1) EP3861437A4 (ko)
JP (1) JP7398068B2 (ko)
KR (1) KR20210100600A (ko)
CN (1) CN113168339A (ko)
AU (1) AU2019355933B2 (ko)
CA (1) CA3114899A1 (ko)
IL (1) IL281921A (ko)
WO (1) WO2020072701A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102614650B1 (ko) * 2022-11-28 2023-12-19 쿠팡 주식회사 전자 장치 및 그의 api 관리 방법
KR102617002B1 (ko) * 2022-11-28 2023-12-27 쿠팡 주식회사 애플리케이션의 성능을 측정하는 장치 및 방법

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7398068B2 (ja) 2018-10-02 2023-12-14 ファンクショナイズ,インコーポレイテッド ソフトウェアテスト
US20200225927A1 (en) * 2018-11-02 2020-07-16 Nilesh Pachpande Methods and systems for automating computer application tasks using application guides, markups and computer vision
US10984066B2 (en) * 2019-01-02 2021-04-20 Zyte Group Limited System and method for a web scraping tool and classification engine
US11909100B2 (en) 2019-01-31 2024-02-20 Userzoom Technologies, Inc. Systems and methods for the analysis of user experience testing with AI acceleration
US11106525B2 (en) * 2019-02-04 2021-08-31 Servicenow, Inc. Systems and methods for classifying and predicting the cause of information technology incidents using machine learning
JP7211229B2 (ja) * 2019-04-10 2023-01-24 日本電信電話株式会社 入力値設定補助装置、入力値設定補助方法及びプログラム
WO2021030636A1 (en) * 2019-08-15 2021-02-18 Userzoom Technologies, Inc. Systems and methods for the analysis of user experience testing with ai acceleration
US20210056395A1 (en) * 2019-08-22 2021-02-25 TestCraft Technologies LTD. Automatic testing of web pages using an artificial intelligence engine
US20210136059A1 (en) * 2019-11-05 2021-05-06 Salesforce.Com, Inc. Monitoring resource utilization of an online system based on browser attributes collected for a session
US11314576B2 (en) * 2020-03-31 2022-04-26 Accenture Global Solutions Limited System and method for automating fault detection in multi-tenant environments
US20210311860A1 (en) * 2020-04-03 2021-10-07 International Business Machines Corporation Intelligent application scenario testing and error detection
US11308213B2 (en) * 2020-04-14 2022-04-19 Sap Se Dynamic generation of automation tags
US11546277B2 (en) * 2020-09-09 2023-01-03 Snap Inc. Third-party resource coordination
US11789852B2 (en) * 2020-10-26 2023-10-17 Capital One Services, Llc Generating test accounts in a code-testing environment
CN112965897B (zh) * 2021-02-19 2022-07-05 浙江理工大学 一种基于mRMR算法挑选可疑度公式的程序错误定位方法
US11656977B2 (en) * 2021-04-06 2023-05-23 EMC IP Holding Company LLC Automated code checking
JP2023005300A (ja) * 2021-06-28 2023-01-18 日立Astemo株式会社 解析装置、解析方法
WO2023078742A1 (en) * 2021-11-05 2023-05-11 Orange Automated maintenance of an object repository file for automation testing
US20230350654A1 (en) * 2022-04-28 2023-11-02 Bank Of America Corporation Systems and methods for convolutional neural network object detection and code repair
US20230377309A1 (en) * 2022-05-17 2023-11-23 Fmr Llc Methods and systems for automated cross-browser user interface testing
CN116048682A (zh) * 2022-08-02 2023-05-02 荣耀终端有限公司 一种终端系统界面布局对比方法及电子设备

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000112784A (ja) 1998-09-30 2000-04-21 Hitachi Software Eng Co Ltd プログラムテスト支援装置及びプログラムテスト支援プログラムを記録した記録媒体
US20040260678A1 (en) * 2003-06-18 2004-12-23 Microsoft Corporation State based configuration failure detection using checkpoint comparison
US8365147B2 (en) 2008-02-27 2013-01-29 Accenture Global Services Limited Test script transformation architecture
US8943478B2 (en) 2009-07-14 2015-01-27 International Business Machines Corporation Fault detection and localization in dynamic software applications
US8266091B1 (en) * 2009-07-21 2012-09-11 Symantec Corporation Systems and methods for emulating the behavior of a user in a computer-human interaction environment
US20110320228A1 (en) * 2010-06-24 2011-12-29 Bmc Software, Inc. Automated Generation of Markov Chains for Use in Information Technology
US8782606B1 (en) 2010-08-22 2014-07-15 Panaya Ltd. Method and system for identifying non-executable human-readable test scenarios to be updated due to code changes
WO2012088623A1 (en) 2010-12-27 2012-07-05 Yahoo! Inc. Selecting advertisements for placement on related web pages
US9396094B2 (en) 2011-07-21 2016-07-19 International Business Machines Corporation Software test automation systems and methods
US9003234B2 (en) * 2013-03-08 2015-04-07 Infineon Technologies Ag Machine and methods for reassign positions of a software program based on a fail/pass performance
US9424167B2 (en) 2014-05-21 2016-08-23 Cgi Technologies And Solutions Inc. Automated testing of an application system
JP6455010B2 (ja) 2014-07-31 2019-01-23 日本電気株式会社 情報処理装置、情報処理方法、およびプログラム
EP3245588A1 (en) * 2015-01-16 2017-11-22 Entit Software LLC Root cause analysis of non-deterministic tests
US9959199B2 (en) * 2015-06-17 2018-05-01 Oracle International Corporation Diagnosis of test failures in software programs
US9846637B2 (en) 2015-12-02 2017-12-19 Fujitsu Limited Machine learning based software program repair
US9507700B1 (en) * 2015-12-22 2016-11-29 Sap Se Generic method for automated software testing
US10838849B2 (en) * 2016-03-08 2020-11-17 International Business Machines Corporation Analyzing software test failures using natural language processing and machine learning
US9946629B2 (en) * 2016-05-24 2018-04-17 International Business Machines Corporation System, method and apparatus for deriving root cause for software test failure
JP6514244B2 (ja) 2017-01-18 2019-05-15 日本電信電話株式会社 差異検出装置及びプログラム
US10552296B2 (en) * 2017-10-20 2020-02-04 Google Llc Human-readable, language-independent stack trace summary generation
US11599445B2 (en) * 2018-06-15 2023-03-07 Board Of Regents, The University Of Texas System Watcher: precise and fully-automatic on-site failure diagnosis
US11748245B2 (en) * 2018-07-27 2023-09-05 Oracle International Corporation Object-oriented regression-candidate filter
JP7398068B2 (ja) 2018-10-02 2023-12-14 ファンクショナイズ,インコーポレイテッド ソフトウェアテスト

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102614650B1 (ko) * 2022-11-28 2023-12-19 쿠팡 주식회사 전자 장치 및 그의 api 관리 방법
KR102617002B1 (ko) * 2022-11-28 2023-12-27 쿠팡 주식회사 애플리케이션의 성능을 측정하는 장치 및 방법

Also Published As

Publication number Publication date
IL281921A (en) 2021-05-31
WO2020072701A1 (en) 2020-04-09
US20210390011A1 (en) 2021-12-16
EP3861437A4 (en) 2022-09-28
US11645139B2 (en) 2023-05-09
AU2019355933A1 (en) 2021-06-03
AU2019355933B2 (en) 2024-04-18
CN113168339A (zh) 2021-07-23
JP2022514155A (ja) 2022-02-10
EP3861437A1 (en) 2021-08-11
CA3114899A1 (en) 2020-04-09
JP7398068B2 (ja) 2023-12-14

Similar Documents

Publication Publication Date Title
JP7398068B2 (ja) ソフトウェアテスト
US9424167B2 (en) Automated testing of an application system
US10698702B1 (en) Automating interactions with software user interface
Grigera et al. Automatic detection of usability smells in web applications
CA3117333A1 (en) Software test case maintenance
US7426497B2 (en) Method and apparatus for analysis and decomposition of classifier data anomalies
Choudhary et al. WEBDIFF: Automated identification of cross-browser issues in web applications
JP7385740B2 (ja) ユーザ入力を使用したgui要素の取得プロセスの改善
KR101554424B1 (ko) 테스트 케이스 생성 자동화 방법 및 장치
CN107168705B (zh) 图形界面语义描述系统及其建立方法和操作路径生成方法
Bao et al. psc2code: Denoising code extraction from programming screencasts
US11816573B1 (en) Robust systems and methods for training summarizer models
Yang et al. UIS-hunter: Detecting UI design smells in Android apps
Shao et al. Webevo: taming web application evolution via detecting semantic structure changes
CN113032279A (zh) 一种基于语义路径搜索的Web应用测试修复方法
US20220413997A1 (en) Automated locating of gui elements during testing using multidimensional indices
US11816112B1 (en) Systems and methods for automated process discovery
Walsh Automatic Identification of Presentation Failures in Responsive Web Pages
Watanabe et al. Layout Cross-Browser Failure Classification for Mobile Responsive Design Web Applications: Combining Classification Models Using Feature Selection
Xu WebEvo: Taming Web Application Evolution Via Semantic Change Detection
Bajammal Automated visual analysis of non-functional web app properties
Vesikkala Visual regression testing for web applications
Watanabe et al. Towards cross-browser incompatibilities detection: A systematic literature review
Leno Robotic Process Mining: Accelerating the Adoption of Robotic Process Automation
Chen et al. Research on Page Object Generation Approach for Web Application Testing.