KR20210036167A - 어플리케이션의 테스트 자동화 - Google Patents

어플리케이션의 테스트 자동화 Download PDF

Info

Publication number
KR20210036167A
KR20210036167A KR1020190118287A KR20190118287A KR20210036167A KR 20210036167 A KR20210036167 A KR 20210036167A KR 1020190118287 A KR1020190118287 A KR 1020190118287A KR 20190118287 A KR20190118287 A KR 20190118287A KR 20210036167 A KR20210036167 A KR 20210036167A
Authority
KR
South Korea
Prior art keywords
user
generating
path
sequence
paths
Prior art date
Application number
KR1020190118287A
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 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
Priority to KR1020190118287A priority Critical patent/KR20210036167A/ko
Priority to PCT/US2020/020045 priority patent/WO2021061185A1/en
Publication of KR20210036167A publication Critical patent/KR20210036167A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • 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/3604Software analysis for verifying properties of programs
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Abstract

어플리케이션의 테스트 자동화 시스템이 개시된다. 본 발명의 실시예에 따른 시스템은 어플리케이션을 이용한 제1 사용자의 행동 정보를 기초로 사용자 행동에 의한 어플리케이션 상태들 간의 전환을 나타내는 제1 경로들을 생성하고, 어플리케이션에서 크롤링된 화면 정보를 기초로 임의의 어플리케이션 상태들 간의 전환을 나타내는 제2 경로들을 생성한 후, 제1 경로들 및 제2 경로들을 이용하여, 적어도 하나의 경로가 순차적으로 연결된 테스트 시나리오를 생성할 수 있다.

Description

어플리케이션의 테스트 자동화{TEST AUTOMATION OF APPLICATION}
일반적으로 어플리케이션이 개발되면, 개발된 어플리케이션의 동작에 이상이 있는지 검사하기 위한 테스트가 필요하다.
그러나, 사용자가 일일이 어플리케이션의 다양한 동작을 테스트하는 것은 많은 테스트 시간을 요구할 뿐만 아니라, 많은 비용을 발생시킨다. 따라서, 셀레늄(selenium) 등과 같이 스크립트(Script)를 이용하여 자동으로 어플리케이션을 테스트하는 자동화 기술이 이용되고 있다.
이 도면들은 본 발명의 예시적인 실시예를 설명하는데 참조하기 위함이므로, 본 발명의 기술적 사상을 첨부한 도면에 한정해서 해석하여서는 안된다.
도 1은 본 발명의 한 실시예에 따른 테스트 자동화 시스템의 블록도이다.
도 2는 본 발명의 한 실시예에 따른 디폴트 경로(Full-path) 시퀀스를 생성하는 구성을 나타낸다.
도 3은 본 발명의 한 실시예에 따른 XML(Extensible Markup Language) 형태로 수집한 화면 정보로부터 엘리먼트 추출을 설명하는 도면이다.
도 4는 본 발명의 한 실시예에 따른 경로 생성의 예시이다.
도 5는 본 발명의 한 실시예에 따른 경로 시퀀스 생성의 예시이다.
도 6은 본 발명의 한 실시예에 따른 경로 그래프의 예시이다.
도 7은 본 발명의 한 실시예에 따른 사용자 경로(Human-generated path) 시퀀스를 생성하는 구성을 나타낸다.
도 8은 본 발명의 한 실시예에 따른 테스트 시퀀스를 생성하는 구성을 나타낸다.
도 9는 본 발명의 한 실시예에 따른 경로 시퀀스 최적화의 예시이다.
도 10은 본 발명의 한 실시예에 따른 경로 생성에 기초가 되는 로그 데이터의 예시이다.
도 11은 본 발명의 한 실시예에 따른 어플리케이션의 테스트 시나리오 생성 예시이다.
도 12는 본 발명의 한 실시예에 따른 테스트 시나리오를 사용하여 테스트를 수행하는 구성을 나타낸다.
도 13은 본 발명의 실시예에 따른 디폴트 경로 시퀀스 생성 과정을 나타낸 순서도이다.
도 14는 본 발명의 한 실시예에 따른 사용자 경로 시퀀스 생성 과정을 나타낸 순서도이다.
도 15는 본 발명의 다른 실시예에 따른 사용자 경로 시퀀스 생성 과정을 나타낸 순서도이다.
도 16은 본 발명의 다른 실시예에 따른 테스트 자동화 시스템의 블록도이다.
도 17은 본 발명의 한 실시예에 따른 테스트 시퀀스의 확장 과정을 나타낸 순서도이다.
도 18은 본 발명의 한 실시예에 따른 가이드 정보를 제공하는 과정을 나타낸 흐름도이다.
도 19는 본 발명의 한 실시예에 따른 개인화 메뉴 제공 방법을 예시적으로 설명하는 도면이다.
도 20은 본 발명의 다른 실시예에 따른 개인화 메뉴 제공 방법을 예시적으로 설명하는 도면이다.
도 21은 본 발명의 한 실시예에 따른 개인화 워크플로우 제공 방법을 예시적으로 설명하는 도면이다.
도 22는 본 발명의 한 실시예에 따른 튜토리얼 콘텐츠를 생성하는 과정을 예시적으로 설명하는 도면이다.
도 23은 본 발명의 다른 실시예에 따른 어플리케이션 사용자에게 가이드 정보를 제공하는 방법을 예시적으로 설명하는 도면이다.
도 24는 본 발명의 한 실시예에 따른 컴퓨팅 장치의 하드웨어 구성도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "…부", "…기", "…모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 발명에서 설명하는 장치들은 적어도 하나의 프로세서, 메모리 장치, 통신 장치 등을 포함하는 하드웨어로 구성되고, 지정된 장소에 하드웨어와 결합되어 실행되는 프로그램이 저장된다. 하드웨어는 본 발명의 방법을 실행할 수 있는 구성과 성능을 가진다. 프로그램은 도면들을 참고로 설명한 본 발명의 동작 방법을 구현한 명령어(instructions)를 포함하고, 프로세서와 메모리 장치 등의 하드웨어와 결합하여 본 발명을 실행한다.
본 명세서에서 "전송 또는 제공" 은 직접적인 전송 또는 제공하는 것뿐만 아니라 다른 장치를 통해 또는 우회 경로를 이용하여 간접적으로 전송 또는 제공도 포함할 수 있다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
본 명세서에서 도면에 관계없이 동일한 도면번호는 동일한 구성요소를 지칭하며, "및/또는" 은 언급된 구성 요소들의 각각 및 하나 이상의 모든 조합을 포함한다.
어플리케이션의 테스트 자동화 기술은 개발자의 개입을 배제한 상황에서 테스트 경로를 파악하고 학습해서 테스트 시나리오를 생성할 수 있다. 크롤링된 화면 정보로부터 기계적으로 모든 가능한 테스트 시나리오를 생성하는 경우, 테스트 시나리오가 너무 방대해지고, 테스트 자동화 시간이 길어지는 문제가 있다.
또한, 개발자 개입 없이 생성되는 테스트 시나리오는 개발자의 의도를 파악하지 못하므로, 정교한 검증이 이루어지지 못한다. 게다가 모든 가능한 시나리오를 다루므로, 사용자들이 많이 쓰는 직관적인 기능 위주의 시나리오에 특화된 검증이 이루어지지 못한다. 예외적인 사항의 검증이 이루어질 수 없다.
한편, 개발자에 의한 수동 테스트는 테스트 시나리오의 커버리지가 협소하므로, 어플리케이션의 검증 수준이 낮다. 또한, 개발자에 의한 수동 테스트는 사용자의 의도치 않은 방식에 의해, 검증되지 않은 경로가 테스트에 사용되는 문제가 발생할 수 있다.
본 발명의 일 실시예에 의하면, 사용자 행동 정보를 이용하여, 추론된 사용자 의도가 반영된 테스트 시나리오를 생성하고, 이를 어플리케이션 테스트에 사용하는 테스트 자동화 시스템 및 방법을 제공할 수 있다.
본 발명의 한 실시예는 전형적인 테스트 활동(Typical test activity) 중 하나일 수 있다. 이러한 전형적인 테스트 활동은 기능 테스트(Functional test), 성능 테스트(Performance test), 사용성 테스트(UI & usability test), 호환성 테스트(Compatibility test), API(Application Programming Interface) 통합 테스트(integration test), 데이터 테스트(Data test) 등을 포함할 수 있다. 이 중에서, 사용성 테스트(UI & usability test)는 운영 승인(Operational acceptance) 테스트, 설계 테스트(Design acceptance) 테스트, 데이터 테스트를 포함할 수 있다. 운영 승인 테스트는 UI 테스트를 포함할 수 있다. 설계 테스트는 Visual 테스트, Usability 테스트를 포함할 수 있다. 데이터 테스트는 'Image/text content test'와 같은 데이터의 접속 URL(Uniform Resource Locator)을 테스트할 수 있다.
테스트 대상은 GUI(Graphic User Interface)를 제공하는 어플리케이션으로서, 전용 어플리케이션이나 브라우저에서 표시되는 웹(Web) 페이지를 포함할 수 있다.
GUI는 복수의 페이지들로 구성될 수 있다. 각 페이지는 복수의 엘리먼트들(elements)을 포함할 수 있다. 각 엘리먼트는 페이지를 구성하는 시각적인 단위(visual unit)로서, 사용자와 인터랙션하도록 설정될 수 있다. 엘리먼트는 텍스트 정보 및/또는 시각 정보를 포함할 수 있다. 예를들어, 시각 정보는 버튼(button), 체크박스(check-box) 등을 포함할 수 있다.
엘리먼트에 지정된 사용자 액션(예를들면, 클릭)이 입력되면, 현재 페이지에서 다음 페이지로 전환(swithing)되거나, 현재 상태에서 다음 상태로 전환될 수 있다. 예를들어, 'A' 페이지에서 버튼1이 클릭되면, 'B' 페이지로 전환될 수 있다.
어플리케이션은 적어도 하나의 테스트 시나리오에 의해 테스트된다. 테스트 시나리오는 어떤 목적을 가진 시퀀스일 수 있다. 예를들어, 프린터에 설치된 어플리케이션을 테스트한다고 가정할 때, 팩스 송신을 위한 테스트 시나리오는 시작 상태에서 팩스 송신 상태까지 도달하기 위해 순차적으로 지나야 하는 엘리먼트들이 연결된 시퀀스일 수 있다.
설명에서, 경로 시퀀스는 순차적으로 연결된 경로들(Paths)로 구성될 수 있다. 설명에서, 하나의 경로는 현재 상태(state)에서 행동(action)을 입력으로 하여 도출된 동작(Activity)으로 정의될 수 있다. 예를들어, 경로는 'A page : ID=button2 : click → B page'로 기술될 수 있다. 여기서, 'A page'는 현 상태를 나타낸다. 'ID=button2 '는 엘리먼트를 나타낸다. 'click'은 액션을 나타낸다. '→ B page'는 동작을 나타낸다. 즉, 'A page가 표시된 현 상태에서 버튼2가 클릭되면 B page로 전환'을 경로라 정의하였다. A 페이지에서 D 페이지까지 도달하는 경로 시퀀스는 예를들면, 표 1과 같이 3개의 경로들로 구성될 수 있다.
인덱스 경로
A page : ID=button2 : click → B page
B page : ID=button1 : click → C page
C page : ID=button1 : click → D page
이하에서는 본 발명의 실시예에 의한 어플리케이션의 테스트 자동화에 대하여 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 한 실시예에 따른 테스트 자동화 시스템의 블록도이고, 도 2는 본 발명의 한 실시예에 따른 디폴트 경로(Full-path) 시퀀스를 생성하는 구성을 나타내고, 도 3은 본 발명의 한 실시예에 따른 XML(Extensible Markup Language) 형태로 수집한 화면 정보로부터 엘리먼트 추출을 설명하는 도면이고, 도 4는 본 발명의 한 실시예에 따른 경로 생성의 예시이고, 도 5는 본 발명의 한 실시예에 따른 경로 시퀀스 생성의 예시이고, 도 6은 본 발명의 한 실시예에 따른 경로 그래프의 예시이고, 도 7은 본 발명의 한 실시예에 따른 사용자 경로(Human-generated path) 시퀀스를 생성하는 구성을 나타내고, 도 8은 본 발명의 한 실시예에 따른 테스트 시퀀스를 생성하는 구성을 나타내고, 도 9는 본 발명의 한 실시예에 따른 경로 시퀀스 최적화의 예시이고, 도 10은 본 발명의 한 실시예에 따른 경로 생성에 기초가 되는 로그 데이터의 예시이고, 도 11은 본 발명의 한 실시예에 따른 어플리케이션의 테스트 시나리오 생성 예시이고, 도 12는 본 발명의 한 실시예에 따른 테스트 시나리오를 사용하여 테스트를 수행하는 구성을 나타낸다.
먼저, 도 1을 참조하면, 테스트 자동화 시스템(1)은 사용자 장치(100)와 테스트 서버(200)를 포함할 수 있다. 사용자 장치(100)와 테스트 서버(200)는 메모리 및 적어도 하나의 프로세서를 포함하는 컴퓨팅 장치이다. 프로세서는 메모리에 로드된 프로그램의 명령을 실행한다. 사용자 장치(100)는 복수일 수 있으나, 설명에서는 간편하게 하나의 사용자 장치를 예로 들어 설명한다.
사용자 장치(100)는 테스트 대상인 어플리케이션을 탑재하고, 테스트 서버(200)가 제공하는 테스트 시나리오(테스트 케이스)를 이용하여 어플리케이션을 테스트하는 디바이스를 말한다. 디바이스의 종류는 모바일 단말, 랩탑, 태블릿 디바이스 등 다양할 수 있다. 여기서, 어플리케이션은 공중 배포 전에 정상 동작을 확인하기 위해 개발자에 의해 테스트된다고 가정한다. 당연히, 어플리케이션은 일반 사용자에게 공중 배포되고, 배포된 이후에도 필요에 따라 테스트 대상이 될 수 있다.
테스트 서버(200)는 사용자 장치(100)로부터 수집한 정보를 기초로 테스트 시나리오를 생성하고, 지속적으로 확장하거나 수정하는 업데이트를 할 수 있다. 그리고, 테스트 서버(200)에서 생성된 테스트 시나리오는 어플리케이션의 테스트에 사용될 수 있다.
사용자 장치(100)는 어플리케이션(101), 화면 크롤링 엔진(103), 사용자 행동 콜렉터(105) 및 테스트 에이전트(107)를 포함할 수 있다.
테스트 서버(200)는 UI(User Interface) 러닝(learning) 모듈(201), 디폴트 경로 시퀀스 제너레이터(203), 디폴트 경로 리스트 DB(205), 사용자 경로 시퀀스 제너레이터(207), 사용자 경로 리스트 DB(209), 테스트 시퀀스 제너레이터(211), 테스트 시퀀스 DB(213), 테스팅 엔진(testing engine)(215)을 포함할 수 있다.
어플리케이션(101)은 테스트 대상이다. 어플리케이션(101)은 사용자 장치(100)에 상주하는 앱(app)이거나 또는 인터넷 상에 접속한 상태에서 다운로드되어 실행되는 웹(web) 어플리케이션일 수 있다.
화면 크롤링 엔진(103)은 어플리케이션(101)이 실행되는 동안의 GUI 이미지(또는 스크린샷)를 페이지 단위로 수집할 수 있다.
한 실시예에 따르면, 어플리케이션(101)이 안드로이드 앱일 경우, 화면 크롤링 엔진(103)은 'UI automator'와 모바일 OS에서 제공하는 테스트 프레임워크를 사용하여 수집할 수 있다.
다른 실시예에 따르면, 어플리케이션(101)이 웹일 경우, 화면 크롤링 엔진(103)은 '웹 드라이버(web driver)'와 '셀레니움(selenium)'을 사용하여 수집할 수 있다.
화면 크롤링 엔진(103)은 수집한 화면 정보를 UI 러닝 모듈(201)로 전송할 수 있다.
이때, 어플리케이션(101)은 랜덤 명령(command)에 따라 화면에 표현된 GUI 이미지 상에 모든 엘리먼트를 실행(또는 클릭)할 수 있다. 그리고 엘리먼트의 실행에 따른 어플리케이션의 GUI 이미지와 페이지 정보를 화면 크롤링 엔진(103)이 수집하여 UI 러닝 모듈(201)로 전송할 수 있다.
화면 크롤링 엔진(103)은 임의로 아무 엘리먼트나 클릭할 수도 있지만, 사용자가 사전에 설정한 엘리먼트를 선별하여 클릭할 수 있다.
도 2를 참조하면, UI 러닝 모듈(201)은 화면 정보(Screenshots), 가이드 정보(Human-guided input), 사용자 행동 추론 정보(Developer behavior input & intention labels)를 입력받는다.
UI 러닝 모듈(201)은 화면 크롤링 엔진(103)으로부터 GUI 이미지와 페이지 정보(이하, '화면 정보'로 통칭하여 기재함)를 수집할 수 있다.
UI 러닝 모듈(201)은 어플리케이션(101)의 실행될 때의 화면 정보를 실시간 수집할 수 있다. 예컨대, 어플리케이션(101)이 실행되는 사용자 디바이스(100)의 AppView 프레임워크를 이용하여 화면 정보를 수집할 수 있다.
UI 러닝 모듈(201)은 가이드 정보를 외부에서 가이드 정보를 입력받을 수 있다. 일반적이지 않은 특수 입력의 경우, 무작위 랜덤 테스트에 많은 시간 지연을 발생 시킨다. 이런 경우를 대비하기 위한 가이드 정보는 개발자가 미리 테스트 할 때 생성한 테스트 입력 값 또는 수동으로 설정한 값을 의미할 수 있다.
UI 러닝 모듈(201)은 사용자 행동 추론 정보를 외부에서 입력받을 수 있다. 이는 사용자가 특정 행동에 대해 라벨링한 정보를 의미할 수 있다.
UI 러닝 모듈(201)은 입력받은 정보를 기초로, 머신러닝에 사용할 데이터를 세팅(machine learning dataset)할 수 있다. UI 러닝 모듈(201)은 화면 크롤링 엔진(103)으로 크롤링 대상의 화면을 실행하도록 랜덤 요청하는 테스트(random test runner)를 수행할 수 있다.
UI 러닝 모듈(201)이 수집하는 화면 정보는 소스코드(Extensible Markup Language, XML)일 수 있다. 예를들면, UI 러닝 모듈(201)이 앱 페이지에서 수집하는 화면 정보는 표 2와 같을 수 있다.
[screen_label':'search', 'elements':'button, textbox, image']
['textbox':'enter_text', 'button':'tap', ...]
UI 러닝 모듈(201)은 화면 정보로부터 엘리먼트들을 추출(visual recognition)할 수 있다. UI 러닝 모듈(201)은 추출한 엘리먼트들을 학습(UI learning)할 수 있다. 이때, UI 러닝 모듈(201)이 학습에 사용하는 엘리먼트들은 다음 표 3과 같을 수 있다.
구분 설명
text - 유형 분류가 가능한 의미있는 텍스트
- 예) email address, password, authorize 등
Resource-id - UI element의 유형 파악을 위해 개발자가 정의
- 예) Login, password 등
Class 의 element 타입 - 예) android.widget.EditText, android.widget.Button, 등
UI element 특성 - Clickable, enabled, focusable 등
UI 러닝 모듈(201)이 엘리먼트들을 추출하는 과정의 예시가 도 3에 있다.
도 3을 참조하면, 화면 크롤링 엔진(103)이 크롤링한 로그인 페이지(10)는 'Email Address 입력란'(P11), 'Password 입력란'(P13), 'Authorize 버튼'(P15)을 포함할 수 있다. 이때, 각 항목(P11, P13, P15)을 표현하는 소스코드가 표시되어 있다.
UI 러닝 모듈(201)은 이 소스코드로부터 엘리먼트들을 추출할 수 있다. 예를 들어, UI 러닝 모듈(201)은 'Email Address 입력란'(P11)을 표현하는 소스코드로부터 'Email Address', 'clickable', 'enabled', 'focusable'과 같은 엘리먼트들을 추출할 수 있다. UI 러닝 모듈(201)은 'Password 입력란'(P13)을 표현하는 소스코드로부터 'resource-id', 'password', 'android.widget.EditText', 'clickable'와 같은 엘리먼트들을 추출할 수 있다. UI 러닝 모듈(201)은 'Authorize 버튼'(P15)을 표현하는 소스코드로부터 'Authorize', 'resource-id','android.widget.Button', 'clickable', 'focusable'과 같은 엘리먼트들을 추출할 수 있다.
UI 러닝 모듈(201)은 GUI 이미지 및 GUI 이미지를 나타내는 소스코드로부터 엘리먼트의 유형 및 형태를 추출할 수 있다. 또한, UI 러닝 모듈(201)은 사전에 알고 있는 엘리먼트의 좌표값을 토대로 엘리먼트 비트맵 이미지를 추출할 수 있다. 엘리먼트 이미지의 의미 파악을 위해 CNN(Convolutional Neural Network) 방식을 지원하는 딥러닝 라이브러리인 Keras, tensorflow를 사용할 수 있다. 엘리먼트 이미지에서 추출한 텍스트 정보의 분류는 nltk와 scikit-learn의 random forest 알고리즘을 활용될 수 있다.
UI 러닝 모듈(201)은 추출한 엘리먼트들을 머신러닝 모델의 훈련 데이터로 사용할 수 있다. UI 러닝 모듈(201)은 추출한 엘리먼트들을 학습하여 화면 정보가 나타내는 의도를 추론(auto labeling)할 수 있다. 예를 들어, 추출한 엘리먼트들이 'login', 'password', 'authorize' 등이라면, 이 엘리먼트들의 의미 및 용도를 도출할 수 있다. 엘리먼트들의 의미 및 용도를 기초로, 이 엘리먼트들이 표시된 화면의 의도는 로그인 페이지로 추론될 수 있다.
UI 러닝 모듈(201)은 어플리케이션을 구성하는 복수의 화면 정보들로부터 각 화면 정보들을 구성하는 복수의 엘리먼트들을 추출할 수 있다. 추출한 엘리먼트들을 학습할 수 있다.
UI 러닝 모듈(201)은 추출한 엘리먼트의 속성(text attribute) 및 목적(Object)을 확인하여 추출한 엘리먼트의 의미를 추론하고, 추론 결과를 기초로 라벨을 부여할 수 있다. 예를들어, 쇼핑 카트 모양의 비트맵에 대해 '쇼핑 카트'라는 라벨을 부여할 수 있다. 이때, 속성 및 목적으로 의미를 추론할 수 없는 엘리먼트에 대해서는 머신러닝을 이용하여 의미를 추론할 수 있다.
이처럼, 수집한 화면 정보에 포함되는 엘리먼트들의 의미를 추론하고 라벨링하는 과정이 UI 러닝이다. UI 러닝 모듈(201)은 엘리먼트들의 학습 결과 및 추론된 의도, 즉, UI 러닝 결과를 디폴트 경로 시퀀스 제너레이터(203)디폴트 경로 시퀀스 제너레이터(203)로 출력할 수 있다.
디폴트 경로 시퀀스 제너레이터(203)는 UI 러닝 모듈(201)로부터 수신한 UI 러닝 결과를 이용하여 엘리먼트들이 순차적으로 연결된 경로 시퀀스를 생성할 수 있다. 이때, 경로 시퀀스는 어플리케이션을 구성하는 모든 페이지를 대상으로 생성되므로, 디폴트 경로 시퀀스라 할 수 있다. 디폴트 경로 시퀀스는 사용자의 액션없이 프로그램에 의해 자동으로 생성되므로, 디폴트라고 사용하였다.
디폴트 경로 시퀀스 제너레이터(203)는 엘리먼트들을 이용해서 메뉴 구조를 탐색하고, 이를 기초로 시퀀스를 생성할 수 있다. 여기서, 경로 시퀀스는 GUI 페이지 안에 있는 엘리먼트 중에서 클릭되었을 때 다른 GUI 페이지로 이동하는 경로들이 연속적으로 연결된다.
도 4를 참조하면, 현 상태의 GUI 페이지인 'A' 페이지 내 3개의 버튼이 있다. 'A' 페이지에서 사용자가 버튼1을 클릭하면, 'A' 페이지가 유지된다. 즉, 다른 페이지로 전환이 일어나지 않는다.
'A' 페이지에서 사용자가 버튼2를 클릭하면, 'B' 페이지로 전환된다.
'A' 페이지에서 사용자가 버튼3을 클릭하면, 'F' 페이지로 전환된다.
여기서, 페이지로 기재하였으나, 페이지는 상태로 표현될 수도 있다.
페이지 또는 상태를 노드라 할 때, 동일 노드에서의 전환 또는 두 개의 노드 간의 이동을 상태 천이라 정의하면, 상태 천이는 경로를 나타낸다.
이때, 페이지 안에 있는 엘리먼트를 클릭 했을 때 다른 페이지로 이동하는 경로를 '트래버스 경로(traverse path)'라고 할 수 있으나, 이하, '경로'로 통칭한다.
이와 같은 개별 경로를 순차적으로 연결하면 경로 시퀀스가 된다. 경로 시퀀스에 대해 설명하면, 도 5와 같다.
도 5를 참조하면, 현 상태의 GUI 페이지인 'A' 페이지 내 3개의 버튼이 있다. 'A' 페이지에서 사용자가 버튼2를 클릭하면, 'B' 페이지로 전환(①)된다. 'B' 페이지에서 사용자가 버튼1을 클릭하면, 'C' 페이지로 전환(②)된다. 'C' 페이지에서 사용자가 텍스트(AB_)를 편집하면 'C' 페이지가 유지(③)된다. 'C' 페이지에서 사용자가 버튼1을 클릭하면, 'D' 페이지로 전환(④)된다. 'D' 페이지에는 메시지(Congratulation)가 표시되고 세개의 버튼이 마련되어 있다. 이때, 'D' 페이지에서 각 버튼을 클릭하면, 도 4에서 설명한 바와 같이, 그 버튼에 해당하는 다음 페이지로 전환되거나 현재 페이지가 유지된다.
이 각각의 동작을 경로라 하고, 이들을 순차적으로 연결하면 경로 시퀀스가 된다. 즉, 'A' 페이지를 초기 페이지라 하고, 'D' 페이지가 목적지 페이지라 하면, 임의의 메뉴 기능 실행을 위한 경로 시퀀스는 '①→②→③→④'와 같다.
디폴트 경로 시퀀스 제너레이터(203)는 엘리먼트들을 이용해서 가능한 모든 시퀀스를 생성할 수 있다. 디폴트 경로 시퀀스 제너레이터(203)는 'Tree search algorithm', 'Model-based testing' 방식으로 경로 시퀀스를 생성할 수 있다.
디폴트 경로 시퀀스 제너레이터(203)는 도 4에서 설명한 대로 각 상태 또는 페이지에서의 상태 천이와, 서로 다른 상태 또는 페이지 간의 상태 천이를 연결하여 도 6의 (A)와 같이 경로 시퀀스를 생성할 수 있다. 그리고 생성한 경로 시퀀스를 디폴트 경로 리스트 DB(205)에 저장할 수 있다.
이러한 경로 시퀀스를 모두 연결하면 도 6의 (B)와 같이 경로 그래프가 생성된다. 경로 그래프는 경로들이 연속적으로 연결된 시퀀스들의 집합이라 할 수 있다.
경로 그래프는 디폴트 경로 시퀀스와 사용자 경로 시퀀스로 구분할 수 있다. 이와 같은 방식으로, 디폴트 경로 시퀀스 제너레이터(203)는 어플리케이션(101)에서 가능한 모든 경로들을 생성하고, 이들을 연속적으로 연결한 시퀀스들을 생성할 수 있다. 이때, 생성되는 경로 시퀀스들은 어플리케이션(101)에서 크롤링된 화면 정보를 기초로 생성되며, 디폴트 시퀀스라 정의할 수 있다.
이처럼, 디폴트 경로 시퀀스들로 구성된 경로 그래프는 사용자 경로 시퀀스들의 추가에 의해 확장될 수 있다. 따라서, 자동으로 생성된 디폴트 경로 시퀀스들뿐만 아니라 사용자의 직관적인 UI(User Interface) 조작에 의해 생성된 사용자 경로 시퀀스들이 추가되므로, 테스트 검증성의 정확도가 개선될 수 있다.
한편, 사용자 경로 시퀀스는 사용자 경로 시퀀스 제너레이터(207)에 의해 생성되며, 이에 대한 설명하면, 다음과 같다.
사용자 장치(100)의 사용자 행동 콜렉터(105)는 어플리케이션(101)의 실행 정보를 수집하고, 이를 사용자 경로 시퀀스 제너레이터(207)로 전송할 수 있다. 사용자 행동 콜렉터(105)는 사용자 장치(100)의 운영체제하에서 백그라운드(background)로 동작할 수 있다.
한 실시예에 따르면, 어플리케이션(101)이 앱일 경우, 사용자 행동 콜렉터(105)는 안드로이드 에이전트를 통해서 실행 정보를 실시간 수집할 수 있다.
다른 실시예에 따르면, 어플리케이션(101)이 웹일 경우, 사용자 행동 콜렉터(105)는 자바스크립트(JavaScript) 등을 통해서 GUI action recording 결과를 수집할 수 있다.
사용자 경로 시퀀스 제너레이터(207)는 사용자 행동 콜렉터(105)로부터 사용자 행동 정보를 수집(Developer/User behavior collecting)하고, 사용자 경로 시퀀스를 생성하여 사용자 의도를 추론(Behavior sequence factoring)할 수 있다.
사용자 경로 시퀀스 제너레이터(207)는 사용자 행동 콜렉터(105)로부터 수집한 사용자 행동 정보로부터 사용자 경로 시퀀스를 생성할 수 있다. 사용자 경로 시퀀스는 'A 페이지에서 버튼1 클릭후 B 페이지에서 텍스트 입력 및 버튼3 클릭하여 C 페이지로 이동'과 같을 수 있다.
한 실시예에 따르면, 음성, 문자열 등의 순차 정보가 담긴 실행 정보에는 RNN(Recurrent Neural Network) 알고리즘이 적합하기 때문에, 사용자 경로 시퀀스 제너레이터(207)는 Keras, Tensorflow 등을 사용하여 사용자 경로 시퀀스를 추출할 수 있다.
다른 실시예에 따르면, 사용자 경로 시퀀스 제너레이터(207)는 가벼운 액션 시퀀스 정보 분석에는 Scikit-learn에서 지원하는 Decision tree를 사용하여 사용자 경로 시퀀스를 추출할 수 있다.
사용자 경로 시퀀스 제너레이터(207)는 사용자 경로 시퀀스들을 ML(Machine Learning) 알고리즘을 이용해서 클러스터링할 수 있다. 그리고 클러스터링에 대응되는 사용자 의도를 라벨링할 수 있다. 예를 들어, 업로드, 다운로드, 저장 등의 행동에 따른 사용자 경로 시퀀스일 경우, 파일 선택으로 라벨링된다.
사용자 경로 시퀀스 제너레이터(207)는 사용자 경로 시퀀스를 사용자 경로 리스트 DB(209)에 저장할 수 있다. 그리고 테스트 시퀀스 제너레이터(211)로 출력할 수 있다.
테스트 시퀀스 제너레이터(211)는 디폴트 경로 시퀀스 및 사용자 경로 시퀀스를 입력받아, 경로 최적화(Path Optimize)를 할 수 있다.
테스트 시퀀스 제너레이터(211)는 입력받은 디폴트 경로 시퀀스 및 사용자 경로 시퀀스를 연결하여 도 6과 같은 경로 그래프를 생성할 수 있다.
테스트 시퀀스 제너레이터(211)는 경로 그래프에 등록된 시퀀스들 중에서 시작 상태에서 종료 상태에 이르는 경로들로 구성된 시퀀스들을 추출할 수 있다. 그리고 추출한 경로 시퀀스들을 대상으로 최적화를 수행할 수 있다. 최적화를 통해 테스트에 필요한 경로만을 선별하여 시퀀스로 생성함으로써, 테스트에 소요되는 시간을 단축시킬 수 있다. 이처럼, 테스트에 사용되는 경로 시퀀스를 테스트 시퀀스라 할 수 있다. 테스트 시퀀스는 테스트 시나리오로 사용된다.
이러한 최적화 과정에 대해 설명한 것이 도 9와 같다. 도 9를 참조하면, 원은 페이지(또는 상태)를 나타낸다. 테스트 시퀀스 제너레이터(211)는 도 9의 (A)에 나타난 모든 경로 시퀀스들 중에서 도 9의 (B)와 같이 중복되는 경로(음영 표시)를 제거하여 도 9의 (C)와 같이 필수적인 경로로 구성된 시퀀스를 추출할 수 있다.
테스트 시퀀스 제너레이터(211)는 지정된 조건을 만족하는 시퀀스들을 선택하는 최적화를 수행할 수 있다. 여기서, 최적화를 위한 지정된 조건은 엘리먼트의 개수, 그리고 경로의 개수로 이루어진 조합들 중에서 임계 조건을 만족하는 개수들의 조합으로 생성된 시퀀스를 선택하도록 설정된다. 조건은 최소 한 번 이상 전환에 사용되는 엘리먼트의 개수가 임계 조건으로 설정될 수 있다. 조건은 중복된 경로의 제거 및 최단 경로 탐색을 위한 경로의 개수가 임계 조건으로 설정될 수 있다. 여기서, 경로는 도 10과 같은 로그 데이터 형태이다. 도 10을 참조하면, 경로는 생성된 순서를 나타내는 인덱스, 현재 상태(또는 페이지), UI 구분 ID, 액션 및 다음 상태(또는 페이지)로 구성될 수 있다.
예를 들어, 사용자가 A page 에서 button2를 click 하면 B page로 이동하는 행동을 나타내는 경로는 도 10의 인덱스 2에 해당할 수 있다.
이와 같은 경로들을 순차적으로 연결하여 경로 시퀀스를 생성하는데, 도 11에 나타내었다.
테스트 시퀀스 제너레이터(211)는 도 11의 (A)와 같이, 도 10의 경로들을 순서대로 나열할 수 있다. 그리고 경로 최적화를 통해 도 11의 (B)와 같이 시나리오 1에 해당하는 테스트 시퀀스를 생성할 수 있다. 이렇게 생성된 테스트 시퀀스는 테스트 시퀀스 DB(213)에 저장된다. 여기서, 테스트 시퀀스 DB(213)에 저장된 시나리오 별 테스트 시퀀스가 어플리케이션 테스트에 사용되는 테스트 시나리오에 해당한다.
앱의 정확한 목적은 머신러닝이 파악하기 힘들다. 개발자 또는 사용자의 요구사항에 대해서 어떤 메시지가 나오면 테스트 성공인지 여부가 사전에 세팅될 수 있다. 또한, 테스트 시퀀스 제너레이터(211)는 테스트 시퀀스의 애뮬레이팅(Web/App Emulator)을 사전에 수행할 수 있다.
테스트 시퀀스 제너레이터(211)는 테스트 시퀀스 생성 로그(Screen shot Test log)를 기록할 수 있다.
테스트 시퀀스 제너레이터(211)는 사용자 경로 시퀀스를 테스트에 사용할지 여부를 질의하는 쿼리를 생성하여 사용자에게 제공(Test case selection page)하고,사용자의 적용 수락 응답이 있으면, 사용자 경로 시퀀스를 테스트 시퀀스 DB(213)에 등록할 수 있다.
테스트 시퀀스 DB(213)는 개발자 시퀀스(Developer/user behavior biased test sequence)와 임의의 시퀀스(Unbiased general test sequence)를 저장할 수 있다. 개발자 시퀀스는 개발자가 사용자가 반복적으로 입력하는 테스트 시퀀스를 간추려 놓은 것이다. 임의의 시퀀스는 발생 횟수와 관련성 없이, 머신러닝에 의해 조합된 테스트 시퀀스 목록이다.
테스트 시퀀스 제너레이터(211)는 사용자 경로 시퀀스가 테스트 시퀀스 DB(213)에 등록되었는지 판단할 수 있다. 포함되지 않으면, 사용자 경로 시퀀스를 추가할 수 있다. 이때, 사용자 경로 시퀀스는 어플리케이션이 일반인에게 배포되기 전에 수집된 사용자 행동 정보를 기초로 생성된다. 예를 들어, 개발자 행동 정보를 기초로 할 경우, 개발자 테스트 시퀀스라 할 수도 있다.
도 12를 참조하면, 테스팅 엔진(215)은 테스트 시퀀스 DB(213)에 등록된 테스트 시퀀스, 즉, 테스트 시나리오를 실행(Test sequence execution)하도록 테스트 에이전트(105)에게 요청하여 어플리케이션(101)의 테스트를 수행할 수 있다. 이때, 테스팅 엔진(215)은 전송 전에 에뮬레이팅(Web/App Emulator)를 실행할 수 있다.
테스팅 엔진(215)은 selenium, Appium 같은 test framework 등을 사용하여 테스트 시퀀스를 테스트 에이전트(105)에게 전송할 수 있다.
테스팅 엔진(215)은 테스트 에이전트(105)로부터 테스트 결과(Screen shot Test results)를 수신하여 테스트 동작 수행 여부를 확인하고, 테스트 과정 중 발생하는 오류 메시지를 수집해서 테스트 결과를 확인할 수 있다. 이와 같이, 주 테스팅 엔진(215)은 주기적으로 또는 기 설정된 시점에 테스트 시퀀스 DB(213)에 등록된 테스트 시퀀스들을 기초로 테스트를 하므로, 이 과정에서 사용자 경로 시퀀스가 테스트에 반영된다.
이상 기재한 본 발명의 테스트 자동화 시스템의 동작을 실시예 별로 설명하면, 다음과 같다.
먼저, 도 13은 실시예에 따른 디폴트 경로 시퀀스 생성 과정을 나타낸 순서도이다.
도 13을 참조하면, 디폴트 경로 시퀀스 제너레이터(203)는 배포 대상 어플리케이션에서 크롤링된 화면 정보를 수집할 수 있다(S101).
디폴트 경로 시퀀스 제너레이터(203)는 수집한 화면 정보로부터 복수의 엘리먼트들을 추출할 수 있다(S103).
디폴트 경로 시퀀스 제너레이터(203)는 추출한 엘리먼트들의 속성 정보 또는 머신러닝 알고리즘을 통한 학습 결과를 이용하여 각 엘리먼트들이 나타내는 의미를 라벨링할 수 있다(S105).
디폴트 경로 시퀀스 제너레이터(203)는 라벨링 정보를 기초로, 유의미한 엘리먼트들의 연결 구조를 생성하고 이 연결 구조로부터 디폴트 경로 시퀀스들을 생성할 수 있다(S107). 연결 구조는 엘리먼트들에 의해 전환되는 상태의 트리 구조 또는 상태 다이어 그램의 형태일 수 있다. 이때, S107 단계에서 생성되는 경로 시퀀스들은 도 6에서 설명한 경로 그래프를 구성할 수 있다.
S107 단계에서 생성한 경로 시퀀스들 중에서 시작 상태와 종료 상태에 이르기까지 연결된 경로 시퀀스들이 적어도 하나의 테스트 시퀀스로 생성될 수 있다.
도 14는 본 발명의 한실시예에 따른 사용자 경로 시퀀스 생성 과정을 나타낸 순서도이다.
도 14를 참조하면, 사용자 경로 시퀀스 제너레이터(207)는 배포 대상 어플리케이션을 이용한 사용자의 행동 정보를 수집할 수 있다(S201).
사용자 경로 시퀀스 제너레이터(207)는 수집한 사용자의 행동 정보로부터 유의미한 사용자 경로 시퀀스를 추출할 수 있다(S203).
사용자 경로 시퀀스 제너레이터(207)는 추출한 사용자 경로 시퀀스를 머신러닝을 이용하여 클러스터링하고, 클러스터에 대응되는 분류 정보를 라벨링할 수 있다(S205). 분류 정보는 사용자 경로 시퀀스의 의도 또는 목적을 의미할 수 있다.
도 15는 본 발명의 다른 실시예에 사용자 경로 시퀀스 생성 과정을 나타낸 순서도이다.
도 15를 참조하면, 사용자 경로 시퀀스 제너레이터(207)는 배포 전 어플리케이션을 이용한 사용자들(예를 들면, 개발자들)의 행동 정보들을 서로 다른 시점에 수집할 수 있다(S301). 사용자 경로 시퀀스 제너레이터(207)는 수집한 행동 정보들로부터 반복적으로 생성된 사용자 경로들이 순차적으로 연결된 사용자 경로 시퀀스를 생성할 수 있다(S303).
사용자 경로 시퀀스 제너레이터(207)는 생성(S303)한 사용자 경로 시퀀스에 대응하는 사용자 의도를 나타내는 라벨링 정보를 등록할 수 있다(S305). 이때, 라벨링 정보는 외부로부터 입력된다.
사용자 경로 시퀀스 제너레이터(207)는 라벨링 정보를 이용하여 특정 사용자 의도에 대응하는 사용자 경로 시퀀스를 테스트 시퀀스로 생성할 수 있다(S307).
도 16은 본 발명의 다른 실시예에 따른 테스트 자동화 시스템의 블록도이다.
이때, 도 16은 본 발명의 다른 실시예를 설명하기 위한 구성만을 도시하였으나, 도 1에서 설명한 구성의 다른 실시예로서, 도 1의 구성에 추가될 수 있다. 즉, 도 1의 구성을 표시하지 않았지만, 도 1의 구성을 포함할 수 있다. 이때, 도 1과 동일한 구성은 동일한 도면 부호를 사용하였다.
도 16을 참조하면, 사용자 장치(100')는 배포된 어플리케이션(101)이 탑재된 디바이스이다. 사용자 행동 콜렉터(105)는 어플리케이션(101)으로부터 수집한 사용자 행동 정보를 사용자 경로 시퀀스 제너레이터(207)로 전송할 수 있다.
사용자 경로 시퀀스 제너레이터(207)는 도 1부터 도 15에서 설명한 바와 같은 방식으로, 사용자 행동 정보로부터 사용자 경로 시퀀스를 생성할 수 있다. 그리고 사용자 경로 시퀀스를 퍼스널라이저(217)로 출력할 수 있다.
퍼스널라이저(217)는 사용자 경로 시퀀스를 기초로, 사용자의 패턴을 학습해서 사용자에게 적합한 경로 시퀀스를 제안할 수 있다.
퍼스널라이저(217)는 사용자를 위한 가이드 정보를 어플리케이션(101)으로 제공할 수 있다. 가이드 정보는 어플리케이션(101)에서 특정 기능을 실행시키는 바람직한 시퀀스를 제안하는 것일 수 있다. 이를 통해, 잘못된 시퀀스로 인하여 무한 루프에 빠지는 등의 오동작을 방지할 수 있다.
퍼스널라이저(217)는 안드로이드 에이전트와 연동하거나 또는 자바 스크립트와 연동하여, 가이드 정보를 제공할 수 있다.
도 17은 본 발명의 한 실시예에 따른 어플리케이션의 배포후 테스트 시퀀스의 확장 과정을 나타낸 순서도이다.
도 17을 참조하면, 퍼스널라이저(217)는 사용자 경로 시퀀스 제너레이터(207)로부터 수신된 사용자 경로 시퀀스들을 테스트 시퀀스 DB(213)에 등록된 검증된 테스트 시퀀스와 비교(S401)하여 불일치 여부를 판단할 수 있다(S403).
일치하면, 단계를 종료할 수 있다. 불일치하면, 퍼스널라이저(217)는 사용자 경로 시퀀스들을 검증 대상으로 테스트 시퀀스 DB(213)에 등록할 수 있다(S405). 검증 대상으로 등록된 사용자 경로 시퀀스들은 개발자와 같은 사용자에게 제공된다. 그리고 개발자가 테스트 대상으로 허용하면, 테스트에 사용될 수 있다.
도 18은 본 발명의 한 실시예에 따른 가이드 정보를 제공하는 과정을 나타낸 흐름도이다.
도 18을 참조하면, 사용자 경로 시퀀스 제너레이터(207)는 사용자 행동 콜렉터(105)로부터 일반 사용자들의 행동 정보들을 수집할 수 있다(S501).
사용자 경로 시퀀스 제너레이터(207)는 일반 사용자들의 행동 정보들로부터 유의미한 사용자 경로 시퀀스들을 추출할 수 있다(S503).
사용자 경로 시퀀스 제너레이터(207)는는 머신러닝을 이용하여 추출한 사용자 경로 시퀀스를 클러스터링하고, 클러스터에 대응되는 분류를 라벨링할 수 있다(S505). 예를 들어, 사용자 경로 시퀀스가 '줌인 → 스캔 → 줌인 → 스캔'이면, 사용자가 해상도를 높이려는 의도가 라벨링된다.
퍼스널라이저(217)는 사용자 경로 시퀀스와 테스트 시퀀스 DB(213)에 등록된 테스트 시퀀스의 메타데이터 간의 유사성을 체크할 수 있다(S507).
퍼스널라이저(217)는 시퀀스를 구성하는 경로들에 포함된 엘리먼트 간의 연관성을 토대로 가장 관련성이 높은 테스트 시퀀스를 가이드 경로로 추출할 수 있다(S509). 관련성 여부는 엘리먼트의 속성과 같은 메타 데이터를 기초로 결정된다. 이때, 추출되는 가이드 경로 시퀀스는 'Setting > Scan > Option > Resolution'일 수 있다.
퍼스널라이저(217)는 추출한 가이드 경로 시퀀스와 함께 '해상도를 높이시면 고해상도 이미지 스캔이 가능합니다.'와 같은 메시지를 포함한 가이드 메시지를 사용자에게 제공할 수 있다(S511)
도 19는 본 발명의 한 실시예에 따른 개인화 메뉴 제공 방법을 예시적으로 설명하는 도면이고, 도 20은 본 발명의 다른 실시예에 따른 개인화 메뉴 제공 방법을 예시적으로 설명하는 도면이다.
도 19를 참조하면, 퍼스널라이저(217)는 사용자의 고유한 패턴을 학습해서 사용자에게 적합한 메뉴 구조를 옵션으로 선택하도록 제공할 수 있다. 즉, 퍼스널라이저(217)는 사용자의 액션 시퀀스 분석에 따라 추천 메뉴를 제공할 수 있다.
도 19의 (A)는 디폴트 메뉴를 나타낸다. 도 19의 (B)는 최상위에 표시되는 메뉴를 나타낸 것으로서, 사용자의 액션 시퀀스 분석에 따라 반복 사용된 메뉴를 가장 최우선으로 표시할 수 있다.
또한, 퍼스널라이저(217)는 도 20과 같이, 사용자의 액션 시퀀스 분석에 따라 사용 빈도수가 높은 순서대로 메뉴를 배열할 수 있다.
이와 같이, 퍼스널라이저(217)는 사용 빈도에 따라서 자주 사용하는 메뉴 트리를 옵션으로 고를 수 있도록 제공할 수 있다. 즉, 사용자 메뉴얼을 사용자 의도에 맞게 제공할 수 있다. 종래에는 사용자 가이드는 사전에 생성되어 배포되고, 에디터가 직접 수정하기 전까지는 변경 상태를 반영하지 못할 수 있다. 하지만, 본 발명의 실시예에서는 사용자 행동 정보로부터 유추한 사용자 특성에 맞는 메뉴 구성과 그에 정확하게 일치하는 사용자 가이드를 매번 변경 시점에서 실시간 생성하고 배포할 수 있다.
또한, 초기 메뉴로 돌아가고 싶으면 메뉴 초기화로 복원할 수 있다.
도 21은 본 발명의 한 실시예에 따른 개인화 워크플로우 제공 방법을 예시적으로 설명하는 도면이다.
도 21의 (A)를 참조하면, 복수의 블록(A, B, C, D, E, F, G, H, I)이 화면에 배치되어 있다. 이 블록은 앱, 소프트웨어 콤포넌트, 기능(Function) 등 중에서 적어도 하나를 포함할 수 있다.
퍼스널라이저(217)는 사용자 경로 시퀀스 제너레이터(207)로부터 제공된 사용자 경로 시퀀스를 기초로, 사용자의 패턴을 학습하여 사용자의 워크플로우를 추출할 수 있다. 워크플로우는 도 21의 (B)와 같이, 사용자가 이용한 복수의 블록을 순차적으로 나열한 것을 의미할 수 있다.
퍼스널라이저(217)는 도 16의 (B)와 같이 사용된 블록들의 조합들을 발생 빈도가 높은 순서대로 나열할 수 있다.
예를 들어, 워크플로우1(WP #1)은 발생빈도가 102회로 가장 높은 조합이다. 워크플로우2(WP #2)은 발생빈도가 72회이고, 워크플로우3(WP #3)은 발생빈도가 56회이다. 따라서, 퍼스널라이저(217)는 워크플로우(WP #1) → 워크플로우 (WP #2) → 워크플로우 (WP #3)의 순서대로 나열할 수 있다.
퍼스널라이저(217)는 도 21의 (C)와 같이, 워크플로우 들을 나열하여 사용자에게 가이드 정보로 제공하면서 선택을 요구할 수 있다. 이후, 선택된 워크플로우를 배포할 수 있다.
블록들간의 조합으로 이루어진 워크플로우는그 수가 많아 사전 검증이 거의 불가능하다. 그러나, 이러한 과정을 통해 사용자 패턴에 최적화된 워크플로우를 성하고, 테스트를 통해 검증한 후 제공할 수 있다.
따라서, 사용자가 자주 사용용하는 기능이 개발자에 의해 배치되어 있더라도 사용자의 사용 쓰임새가 많은 구성으로 재편성 될 수 있다.
또한, 사용자가 자주 사용하는 시퀀스를 하나의 워크플로우로 제안하고, 사용자가 선택시 분산되어 있는 블록(콤포넌트, 기능, 앱 등)을 유기적으로 연결하여 사용할 수 있게 된다
또한, 객체지향형 언어나 개발환경에서 흔히 사용하는 객체 형태를 유기적으로 묶어주어 집적도 높은 워크플로우 서비스 제공도 가능해진다.
도 22는 본 발명의 한 실시예에 따른 튜토리얼 콘텐츠를 생성하는 과정을 예시적으로 설명하는 도면이다.
도 22를 참조하면, 퍼스널라이저(217)는 도 22의 (A)와 같이, 테스트 시퀀스 DB(213)로부터 수집한 테스트 시퀀스를 기초로, 도 22의 (B)와 같이 튜토리얼 콘텐츠(Tutorial contents) 또는 가이드라인을 생성할 수 있다.
퍼스널라이저(217)는 테스트 시퀀스 DB(213)에 등록된 테스트 시퀀스를 기초로 어플리케이션(101)을 실행시키고, 실행 화면을 캡쳐할 수 있다. 그리고 캡쳐 화면에 동작 과정 캡션을 첨부할 수 있다. 동작 과정 캡션은 엘리먼트 또는 GUI에 부여한 라벨이 사용된다. 퍼스널라이저(217)는 단어 및 캡쳐 화면이 일련의 순서로 나열된 페이지를 생성하고, 생성한 페이지를 메뉴 구조에 맞게 배열한 튜토리얼 콘텐츠를 생성할 수 있다. 따라서, 개발자가 별도의 가이드라인 제작을 하지 않더라도 테스트 시나리오를 기초로, 가이드 서비스를 제공할 수 있다.
도 23은 본 발명의 다른 실시예에 따른 어플리케이션 사용자에게 가이드 정보를 제공하는 방법을 예시적으로 설명하는 도면이다.
도 23을 참조하면, 테스트 서버(200")는 도 1, 도 15에 포함되는 구성이나, 그 동작이 다른 실시예를 나타낸다. 이때, 도 23의 실시예 설명에 필요한 구성만을 간략히 포함시켰다.
카메라는 사용자가 GUI를 사용하는 기계장치를 조작할 때, 그 화면을 촬영하고, 촬영한 UI 조작 화면 캡쳐 이미지를 UI 러닝 모듈(201)로 전송할 수 있다. UI 러닝 모듈(201)은 앞서 도 1 ~ 도 15에서 설명한 바와 동일한 방식으로 UI 러닝을 수행할 수 있다. 사용자 경로 시퀀스 제너레이터(207)는 UI 러닝 모듈(201)의 UI 러닝 결과를 기초로, 앞서 도 1 ~ 도 15에서 설명한 바와 동일한 방식으로 사용자의 UI 조작에 따른 사용자 경로 시퀀스를 생성할 수 있다.
테스트 시퀀스 DB(213)에는 개발자가 기계장치의 동작 방식 및 과정을 머신러닝에 학습시킨 결과로 생성된 경로 시퀀스를 테스트 시나리오로 저장할 수 있다.
퍼스널라이저(217)는 사용자의 UI 조작에 따른 사용자 경로 시퀀스와 사전에 저장된 테스트 케이스를 비교하여, 사용자 경로 시퀀스가 테스트 케이스를 벗어난 행동인지 모니터링할 수 있다. 학습된 테스트 케이스를 벗어나는 경우, 경고 알람 등을 울리고 예외사항에 대한 기록을 저장할 수 있다. 경고 알람은 경고 메시지(예, 사용자가 안전장치를 메뉴얼 모드로 세팅한 상태에서 동작 시키고 있습니다. 정상적인 동작 방식에서 벗어나므로 위험 합니다.)의 화면 팝업, 경고음 발생 등일 수 있다.
또한, 개발자가 예외사항에 대한 기록을 열람하고, 케이스별로 위험/안전 여부를 재학습시킬 수 있다. 경로 시퀀스의 로그 기록은 열람이 가능하도록 제공될 수 있다.
도 24는 본 발명의 한 실시예에 따른 컴퓨팅 장치의 하드웨어 구성도이다.
도 24를 참고하면, 사용자 장치(100) 및 테스트 서버(200)는 적어도 하나의 프로세서에 의해 동작하는 컴퓨팅 장치(300)에서, 본 발명의 동작을 실행하도록 기술된 명령들(instructions)이 포함된 프로그램을 실행할 수 있다.
컴퓨팅 장치(300)의 하드웨어는 적어도 하나의 프로세서(301), 메모리(303), 스토리지(305), 통신 인터페이스(307)을 포함할 수 있고, 버스를 통해 연결될 수 있다. 이외에도 입력 장치 및 출력 장치 등의 하드웨어가 포함될 수 있다. 컴퓨팅 장치(300)는 프로그램을 구동할 수 있는 운영 체제를 비롯한 각종 소프트웨어가 탑재될 수 있다.
프로세서(301)는 컴퓨팅 장치(300)의 동작을 제어하는 장치로서, 프로그램에 포함된 명령들을 처리하는 다양한 형태의 프로세서일 수 있고, 예를들면, CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 등 일 수 있다. 메모리(303)는 본 발명의 동작을 실행하도록 기술된 명령들이 프로세서(301)에 의해 처리되도록 해당 프로그램을 로드할 수 있다. 메모리(303)는 예를 들면, ROM(read only memory), RAM(random access memory) 등 일 수 있다. 스토리지(305)는 본 발명의 동작을 실행하는데 요구되는 각종 데이터, 프로그램 등을 저장할 수 있다. 통신 인터페이스(307)는 유/무선 통신 모듈일 수 있다.
이상의 실시예에 따르면, 개발자의 사용자 시나리오 및 의도를 파악하여 테스트 시나리오의 커버리지를 지속적으로 넓힐 수 있다. 따라서, 기존에 불가능했던 개인화된 영역에서의 테스트 검증이 제품 출시 후에도 가능해진다.
또한, 사용자의 예외적인 동작을 감지하고, 사용자에게 올바른 동작 방식을 가이드할 수 있다.
또한, 사용자에게 개인화된 메뉴, 개인화된 Workflow 디자인 및 테스트가 가능하다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (15)

  1. 컴퓨팅 장치로서,
    메모리, 그리고
    상기 메모리에 로드된 프로그램의 명령들(Instructions)을 실행하는 적어도 하나의 프로세서를 포함하고,
    상기 프로그램은,
    테스트 대상인 어플리케이션에서 수집한 상기 어플리케이션을 이용한 사용자의 행동 정보를 기초로 사용자 행동에 의해 전환되는 어플리케이션 상태 천이 정보를 나타내는 제1 경로들을 생성하는 단계,
    상기 어플리케이션에서 크롤링된 화면 정보를 구성하는 복수의 엘리먼트들을 추출하고, 상기 복수의 엘리먼트들 각각에 의해 전환되는 어플리케이션 상태 천이 정보를 나타내는 제2 경로들을 생성하는 단계, 그리고
    상기 제1 경로들 및 상기 제2 경로들을 이용하여, 복수의 경로들이 순차적으로 연결된 적어도 하나의 테스트 시나리오를 생성하는 단계
    를 실행하도록 기술된 명령들을 포함하는, 컴퓨팅 장치.
  2. 제1항에서,
    상기 제1 경로들을 생성하는 단계는,
    상기 행동 정보로부터 사용자 행동이 발생한 엘리먼트들을 추출하는 단계,
    추출한 엘리먼트들의 속성 정보 또는 머신러닝 알고리즘을 이용하여 상기 추출한 엘리먼트들이 나타내는 각각의 의미를 라벨링하는 단계, 그리고
    상기 라벨링된 의미를 기초로, 엘리먼트들의 연결 구조를 생성하고 상기 연결 구조로부터 상기 제1 경로들을 생성하는 단계
    를 포함하는, 컴퓨팅 장치.
  3. 제1항에서,
    상기 제2 경로들을 생성하는 단계는,
    상기 복수의 엘리먼트들 중에서 사용자와 인터랙션하도록 설정된 엘리먼트들을 추출하는 단계,
    추출한 엘리먼트들을 딥러닝 모델로 학습시켜 복수의 클러스터로 분류하는 단계,
    엘리먼트들의 속성 정보 또는 머신러닝 알고리즘을 이용하여 상기 분류된 복수의 클러스터 각각에 대응하는 엘리먼트가 나타내는 의미를 라벨링하는 단계, 그리고
    상기 라벨링된 의미를 기초로, 엘리먼트들의 연결 구조를 생성하고 상기 연결 구조로부터 상기 제2 경로들을 생성하는 단계
    를 포함하는, 컴퓨팅 장치.
  4. 제1항에서,
    상기 테스트 시나리오를 생성하는 단계는,
    수집된 행동 정보에서 반복적으로 발생한 반복 경로 시퀀스를 추출하고,
    상기 반복 경로 시퀀스의 목적을 라벨링하고,
    상기 목적이 라벨링된 상기 반복 경로 시퀀스를 테스트 시나리오로 생성하는, 컴퓨팅 장치.
  5. 제1항에서,
    상기 테스트 시나리오를 생성하는 단계는,
    상기 제1 경로들 및 상기 제2 경로들이 순차적으로 연결된 시퀀스들의 집합을 나타낸 경로 그래프를 생성하는 단계, 그리고
    상기 경로 그래프를 기초로, 적어도 하나의 시작 상태에서 적어도 하나의 종료 상태까지 연결된 경로 시퀀스들을 적어도 하나의 테스트 시나리오로 생성하는 단계
    를 포함하는, 컴퓨팅 장치.
  6. 제5항에서,
    상기 경로 그래프를 생성하는 단계는,
    상기 제1 경로들 및 상기 제2 경로들의 순차적 연결을 최적화하여 상기 경로 그래프를 생성하는, 컴퓨팅 장치.
  7. 제5항에서,
    상기 프로그램은,
    배포된 상기 어플리케이션을 탑재한 적어도 하나의 단말로부터 일반 사용자 행동 정보를 수집하는 단계,
    상기 일반 사용자 행동 정보를 기초로 어플리케이션 상태 천이 정보를 나타내는 제3 경로들을 생성하는 단계,
    상기 제3 경로들이 순차적으로 연결된 일반 사용자 경로 시퀀스가 상기 경로 그래프에 포함되는지 판단하는 단계, 그리고
    상기 경로 그래프에 포함되지 않으면, 상기 일반 사용자 경로 시퀀스를 검증 대상으로 등록하는 단계
    를 더 실행하도록 기술된 명령들을 포함하는, 컴퓨팅 장치.
  8. 제7항에서,
    상기 프로그램은,
    상기 일반 사용자 경로 시퀀스에 대해 등록된 라벨링 정보를 기초로 상기 일반 사용자 경로 시퀀스의 의도를 추론하는 단계, 그리고
    추론한 의도를 달성하기 위한 추천 경로 시퀀스를 가이드 정보로 생성하여 일반 사용자에게 제공하는 단계
    를 더 실행하도록 기술된 명령들을 포함하는, 컴퓨팅 장치
  9. 제8항에서,
    상기 제공하는 단계는,
    상기 어플리케이션을 구성하는 페이지에 적어도 하나 포함되어 상기 어플리케이션 상태들 간의 전환을 발생시키는 단위인 복수의 엘리먼트들 중에서 각 엘리먼트의 속성이 상기 추론한 의도와 관련이 있는 적어도 하나의 엘리먼트를 선택하는 단계, 그리고
    상기 선택한 적어도 하나의 엘리먼트를 기초로 생성한 적어도 하나의 경로 시퀀스를 상기 가이드 정보로 생성하여 제공하는 단계
    를 포함하는, 컴퓨팅 장치.
  10. 제1항에서,
    상기 프로그램은,
    사용자의 액션이 발생한 복수의 엘리먼트들을 이용 순서를 기초로 연결한 복수의 워크플로우를 생성하는 단계,
    상기 복수의 워크플로우 별로 각각의 발생 빈도를 산출하는 단계,
    상기 복수의 워크플로우를 발생 빈도가 높은 순서대로 나열하여 사용자에게 가이드 정보로 제공하는 단계, 그리고
    상기 복수의 워크플로우 중에서 사용자가 선택한 적어도 하나의 워크플로우를 개인화된 메뉴로 배포하는 단계
    를 실행하도록 기술된 명령들을 포함하는, 컴퓨팅 장치.
  11. 제1항에서,
    상기 프로그램은,
    사용자 행동 정보로부터 추론한 사용자 패턴을 기초로, 사용자 매뉴얼을 구성하여 배포하는 단계를 더 실행하도록 기술된 명령들을 포함하고,
    상기 사용자 매뉴얼은,
    사용자 행동 정보를 기초로, 업데이트되는, 컴퓨팅 장치.
  12. 적어도 하나의 프로세서에 의해 동작하는 컴퓨팅 장치의 동작 방법으로서,
    테스트 대상인 어플리케이션에서 상기 어플리케이션을 이용한 사용자의 행동 정보를 수집하는 단계,
    상기 행동 정보로부터 사용자 행동이 발생한 엘리먼트들을 학습하여 각 엘리먼트가 나타내는 의미를 라벨링하는 단계,
    상기 라벨링된 의미를 기초로, 엘리먼트들의 연결 구조를 생성하고 상기 연결 구조로부터 상기 사용자 행동이 발생한 엘리먼트들에 의해 순차적으로 전환된 어플리케이션 상태 천이 정보를 나타내는 사용자 경로들을 생성하는 단계,
    상기 사용자 경로들이 순차적으로 연결된 사용자 경로 시퀀스들을 생성하는 단계, 그리고
    상기 사용자 경로 시퀀스들을 이용하여 상기 어플리케이션을 테스트할 테스트 시나리오를 생성하는 단계
    를 포함하는, 동작 방법.
  13. 제12항에서,
    상기 테스트 시나리오를 생성하는 단계는,
    머신러닝 알고리즘을 이용하여 상기 사용자 경로 시퀀스들을 학습하여 각각의 사용자 경로 시퀀스에 대응하는 의미를 추론하는 단계,
    추론한 의미를 상기 각각의 사용자 경로 시퀀스에 라벨링하는 단계, 그리고
    라벨링된 의미를 기초로, 상기 각각의 사용자 경로 시퀀스 중에서 상기 어플리케이션을 테스트할 테스트 시나리오를 생성하는 단계
    를 포함하는, 동작 방법.
  14. 제13항에서,
    상기 사용자 경로 시퀀스는,
    수집된 행동 정보에서 반복적으로 발생한 반복 경로 시퀀스이고,
    상기 테스트 시나리오를 생성하는 단계는,
    상기 반복 경로 시퀀스의 목적을 라벨링하고, 상기 목적이 라벨링된 상기 반복 경로 시퀀스를 테스트 시나리오로 생성하는, 동작 방법.
  15. 제12항에서,
    상기 테스트 시나리오를 생성하는 단계는,
    상기 어플리케이션에서 크롤링된 화면 정보로부터 추출한 복수의 엘리먼트들 각각에 의해 전환되는 어플리케이션 상태 천이 정보를 나타내는 디폴트 경로들을 생성하는 단계,
    상기 디폴트 경로들이 순차적으로 연결된 디폴트 경로 시퀀스를 생성하는 단계,
    상기 디폴트 경로 시퀀스들과 상기 사용자 경로 시퀀스의 집합을 나타낸 경로 그래프를 생성하는 단계, 그리고
    상기 경로 그래프를 기초로, 적어도 하나의 시작 상태에서 적어도 하나의 종료 상태까지 연결된 경로 시퀀스들을 적어도 하나의 테스트 시나리오로 생성하는 단계
    를 포함하는, 동작 방법.
KR1020190118287A 2019-09-25 2019-09-25 어플리케이션의 테스트 자동화 KR20210036167A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190118287A KR20210036167A (ko) 2019-09-25 2019-09-25 어플리케이션의 테스트 자동화
PCT/US2020/020045 WO2021061185A1 (en) 2019-09-25 2020-02-27 Test automation of application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190118287A KR20210036167A (ko) 2019-09-25 2019-09-25 어플리케이션의 테스트 자동화

Publications (1)

Publication Number Publication Date
KR20210036167A true KR20210036167A (ko) 2021-04-02

Family

ID=75164960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190118287A KR20210036167A (ko) 2019-09-25 2019-09-25 어플리케이션의 테스트 자동화

Country Status (2)

Country Link
KR (1) KR20210036167A (ko)
WO (1) WO2021061185A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102451099B1 (ko) * 2021-06-29 2022-10-07 주식회사 소프트자이온 인공지능 기반의 사용자 니즈 추론을 통한 구매 유도 시스템 및 방법
KR102456354B1 (ko) * 2022-05-31 2022-10-21 부경대학교 산학협력단 아두이노 기반 스마트 순환여과양식 실습 시스템

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220171510A1 (en) * 2020-11-10 2022-06-02 T-Mobile Usa, Inc. Automated testing of mobile devices using behavioral learning

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050054381A1 (en) * 2003-09-05 2005-03-10 Samsung Electronics Co., Ltd. Proactive user interface
US8903690B2 (en) * 2012-11-01 2014-12-02 International Business Machines Corporation Linking graphical user interface testing tools and human performance modeling to enable usability assessment
US10671283B2 (en) * 2018-01-31 2020-06-02 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing intelligently suggested keyboard shortcuts for web console applications

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102451099B1 (ko) * 2021-06-29 2022-10-07 주식회사 소프트자이온 인공지능 기반의 사용자 니즈 추론을 통한 구매 유도 시스템 및 방법
KR102456354B1 (ko) * 2022-05-31 2022-10-21 부경대학교 산학협력단 아두이노 기반 스마트 순환여과양식 실습 시스템

Also Published As

Publication number Publication date
WO2021061185A1 (en) 2021-04-01

Similar Documents

Publication Publication Date Title
JP7398068B2 (ja) ソフトウェアテスト
US20220100647A1 (en) System and Method for Automated Software Testing
US7810070B2 (en) System and method for software testing
US20240037020A1 (en) System and Method for Automated Software Testing
US20170052824A1 (en) Method and system for process automation in computing
US8370808B2 (en) Apparatus and a method for generating a test case
JP4395761B2 (ja) プログラムテスト支援装置およびその方法
CN109739855B (zh) 实现数据表拼接及自动训练机器学习模型的方法和系统
KR20210040321A (ko) 지도 서비스 테스트 방법 및 장치
KR20210036167A (ko) 어플리케이션의 테스트 자동화
EP2705441B1 (en) Automatic classification adjustment of recorded actions for automation script
CN110928763A (zh) 测试方法、装置、存储介质及计算机设备
KR102298395B1 (ko) 사용자 행위 분석 시스템 및 방법과, 이를 위한 이벤트 수집 에이전트
CN113505082B (zh) 应用程序测试方法及装置
CN109634570A (zh) 前后端集成开发方法、装置、设备及计算机可读存储介质
CN106484389B (zh) 动作流分段管理
US9678856B2 (en) Annotated test interfaces
CN113590454A (zh) 测试方法、装置、计算机设备和存储介质
Zhao et al. Avgust: Automating usage-based test generation from videos of app executions
US10042638B2 (en) Evaluating documentation coverage
CN111679976A (zh) 一种页面对象的查找方法及装置
CN114297057A (zh) 一种自动化测试用例的设计及使用方法
US10545858B2 (en) Method for testing a graphical interface and corresponding test system
CN113220307B (zh) 一种代码覆盖分析的优化方法、装置及电子设备
KR102624044B1 (ko) 템플릿 기반 애플리케이션 생성 방법 및 이를 구현하는 서버