KR102075111B1 - Ui 기능 테스트 시스템 및 방법 - Google Patents

Ui 기능 테스트 시스템 및 방법 Download PDF

Info

Publication number
KR102075111B1
KR102075111B1 KR1020180098535A KR20180098535A KR102075111B1 KR 102075111 B1 KR102075111 B1 KR 102075111B1 KR 1020180098535 A KR1020180098535 A KR 1020180098535A KR 20180098535 A KR20180098535 A KR 20180098535A KR 102075111 B1 KR102075111 B1 KR 102075111B1
Authority
KR
South Korea
Prior art keywords
screen
script
current
address
previous
Prior art date
Application number
KR1020180098535A
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 KR1020180098535A priority Critical patent/KR102075111B1/ko
Application granted granted Critical
Publication of KR102075111B1 publication Critical patent/KR102075111B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 발명의 일 실시예에 따른 UI 기능 테스트 시스템은 현재 UI 화면과 상기 현재 UI 화면으로 이동하기 이전 UI 화면 간의 관계로 결정되는 조상 주소와, UI 화면 각각의 원본 이미지로부터 추출된 레이아웃 및 커서를 이용하여 상기 UI 화면 각각의 주소 값을 생성하는 주소 생성부; 상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값, 및 상기 현재 UI 화면과 상기 이전 UI 화면 간의 이동 관계를 나타내는 리모트 컨트롤 키 값을 이용하여 UI 네비게이션 맵을 생성하는 맵 생성부; 및 UI의 종류, 특성, 구성요소 중 적어도 하나를 포함하는 UI 관련 추가 정보를 정의한 추상화 스크립트를 작성하고, 상기 작성된 추상화 스크립트를 이용하여 상기 UI 네비게이션 맵으로부터 상기 UI 관련 추가 정보를 추출하며, 상기 UI 네비게이션 맵에서 제공되는 UI 관련 기본 정보 및 상기 추출된 UI 관련 추가 정보를 이용하여 UI 기능 테스트를 위한 실행 스크립트를 생성하는 추상화 스크립트 관리부를 포함한다.

Description

UI 기능 테스트 시스템 및 방법{UI FUNCTION TEST SYSTEM AND METHOD}
본 발명의 실시예들은 UI 네비게이션 맵을 자동으로 생성함으로써 UI 시나리오 테스트 작성을 기존 방법에 비해 추상적으로 작성할 수 있으며, 이러한 추상화된 테스트 방법 기술을 통해 UI가 중간에 바뀌거나 새로운 UI가 생기더라도 테스트 방법 기술을 수정할 필요가 없으며 수정이 필요하더라도 최소화된 부분만 수정을 하여 UI 기능 테스트의 효율을 향상시킬 수 있는 UI 기능 테스트 시스템 및 방법에 관한 것이다.
일반적으로 스마트폰, IPTV 등과 같은 스마트기기의 소프트웨어뿐만 아니라, 대부분의 소프트웨어의 사용자 인터페이스(UI: User Interface)는 그 대상이 사용자인 사람이므로 그 테스트 역시 사람에 의존할 수밖에 없는 것이 지금까지의 현실이었다.
그러나, 이렇게 사람에 의한 사용자 인터페이스 테스트의 경우에는 사람의 노동력이 오랜 시간 동안 지속적으로 투입되어야 한다는 단점이 있을 뿐만 아니라, 문제가 발견된다고 하더라도 그 문제를 다시 재현시키기 어려운 일이 많은 등과 같이 비효율적이었다.
기존에는 스마트기기를 대상으로 UI 기능 테스트 자동화를 수행하기 위해서는 다음과 단계로 자동화 스크립트를 작성해서 실행을 시켰다. 즉, 테스트 관리자가 UI 분석을 통한 시나리오 테스트 케이스를 작성하고, 테스트 스크립트 개발자는 작성된 시나리오 테스트 케이스를 보고 모든 과정을 스크립트로 작성해서 기능이 정상적으로 작동하는지 확인한다.
이때, UI가 변경되거나 기능이 바뀌면 시나리오 테스트 케이스가 수정되고 그에 따라 테스트 스크립트도 수정되어야 하며, 시나리오 테스트 케이스가 수정되지 않더라도 화면이 변경되거나 UI가 변경되면 테스트 스크립트도 일일이 그에 맞게 수정되어야 한다. 결국, 기존 UI 테스트 자동화 솔루션은 기능이 변경되지 않더라도 화면이 바뀌거나 UI가 변경되면 일일이 다시 스크립트를 수정해야 하는 문제점이 있다.
관련 선행기술로는 대한민국 공개특허공보 제10-2012-0121950호(발명의 명칭: 애플리케이션 그래픽 유저인터페이스 테스트 자동화 시스템 및 그 방법, 공개일자: 2012.11.07)가 있다.
본 발명의 일 실시예는 UI 네비게이션 맵을 자동으로 생성함으로써 UI 시나리오 테스트 작성을 기존 방법에 비해 추상적으로 작성할 수 있으며, 이러한 추상화된 테스트 방법 기술을 통해 UI가 중간에 바뀌거나 새로운 UI가 생기더라도 테스트 방법 기술을 수정할 필요가 없으며 수정이 필요하더라도 최소화된 부분만 수정을 하여 UI 기능 테스트의 효율을 향상시킬 수 있는 UI 기능 테스트 시스템 및 방법을 제공한다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 따른 UI 기능 테스트 시스템은 현재 UI 화면과 상기 현재 UI 화면으로 이동하기 이전 UI 화면 간의 관계로 결정되는 조상 주소와, UI 화면 각각의 원본 이미지로부터 추출된 레이아웃 및 커서를 이용하여 상기 UI 화면 각각의 주소 값을 생성하는 주소 생성부; 상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값, 및 상기 현재 UI 화면과 상기 이전 UI 화면 간의 이동 관계를 나타내는 리모트 컨트롤 키 값을 이용하여 UI 네비게이션 맵을 생성하는 맵 생성부; 및 UI의 종류, 특성, 구성요소 중 적어도 하나를 포함하는 UI 관련 추가 정보를 정의한 추상화 스크립트를 작성하고, 상기 작성된 추상화 스크립트를 이용하여 상기 UI 네비게이션 맵으로부터 상기 UI 관련 추가 정보를 추출하며, 상기 UI 네비게이션 맵에서 제공되는 UI 관련 기본 정보 및 상기 추출된 UI 관련 추가 정보를 이용하여 UI 기능 테스트를 위한 실행 스크립트를 생성하는 추상화 스크립트 관리부를 포함한다.
본 발명의 일 실시예에 따른 UI 기능 테스트 시스템은 UI 화면 각각의 원본 이미지로부터 불필요한 배경을 제거하고, 상기 불필요한 배경이 제거된 원본 이미지로부터 움직이는 영상을 제거하여 UI 구성요소로 이루어진 고정된 이미지를 추출하며, 상기 고정된 이미지로부터 상기 UI 구성요소에 해당하는 오브젝트를 레이아웃 및 커서로 구분하여 추출하는 전처리부를 더 포함할 수 있다.
상기 원본 이미지로부터 불필요한 배경을 제거하기 위해, 상기 전처리부는 상기 원본 이미지를 B, G, R의 3가지 채널 이미지로 분리하는 단계, 상기 분리된 각 이미지 채널에 양방향 필터(bilateral filter)를 적용하고 정사각형 커널(kernel)로 모폴로지 그라디언트 연산을 적용하는 단계, 트라이앵글(triangle) 알고리즘을 사용하여 상기 모폴로지 그라디언트 연산을 적용한 이미지를 자동으로 임계 처리하는 단계, 상기 임계 처리가 끝난 바이너리(binary) 이미지 3가지를 합한 후 전체 합 결과 이미지에 컨투어를 하고, 컨투어된 오브젝트에서 오픈 모폴로지(open morphology)와 클로즈 모폴로지(close morphology)를 사용하여 노이즈를 제거하는 단계, 및 넓이가 일정 이상인 컨투어된 오브젝트들로 불필요한 배경 제거에 사용할 마스크를 생성하고, 상기 생성된 마스크를 상기 원본 이미지에 씌우는 단계를 수행할 수 있다.
상기 고정된 이미지를 추출하기 위해, 상기 전처리부는 첫 번째로 찍은 이미지를 통해 상기 불필요한 배경을 제거한 원본 이미지와 상기 불필요한 배경을 제거한 마스크 이미지를 얻는 단계, 새로운 리모트 컨트롤 키 값을 입력하지 않고, 같은 UI에서 1초에 1장씩 새로운 이미지를 복수개 찍는 단계, 상기 새로운 이미지에 상기 불필요한 배경을 제거한 마스크를 씌워 상기 첫 번째로 찍은 이미지와 일대일로 비교하는 단계, 및 상기 첫 번째로 찍은 이미지와 나중에 찍은 상기 새로운 이미지 간 화소의 값 변화가 일정 이상이 되면, 해당 화소를 상기 움직이는 영상에 해당하는 화소로 판단하고, 상기 움직이는 영상에 해당하는 화소를 상기 불필요한 배경을 제거한 마스크 이미지에서 제거하는 단계를 수행할 수 있다.
상기 전처리부는 상기 고정된 이미지에 컨투어(Contour)를 하여 상기 UI 구성요소 중 같은 커서 이동 가능 영역 내 최상위 개념에 해당하는 오브젝트를 상기 레이아웃으로서 추출할 수 있다.
상기 전처리부는 2가지 이미지와 상기 리모트 컨트롤 키 값을 이용하여 상기 커서를 추출하되, 상기 2가지 이미지로부터 상기 UI 구성요소의 색상을 추출하여 색상이 동일한 UI 구성요소를 선별하고, 상기 색상이 동일한 UI 구성요소 중 모양과 크기가 유사한 오브젝트가 상기 2가지 이미지에 모두 존재하며, 상기 2가지 이미지에서 상기 리모트 컨트롤 키 값에 따른 오브젝트 좌표 관계가 일치하는 경우 해당 오브젝트를 상기 커서로서 추출할 수 있다.
상기 전처리부는 상기 레이아웃으로부터 OCR을 통해 텍스트를 읽어 들이고 상기 읽어 들인 텍스트를 레이아웃 이름으로서 출력하고, 상기 커서로부터 OCR을 통해 텍스트를 읽어 들이고 상기 읽어 들인 텍스트를 커서 이름으로서 출력하며, 상기 주소 생성부는 상기 조상 주소, 상기 레이아웃 이름 및 상기 커서 이름을 이용하여 상기 UI 화면 각각의 주소 값을 생성할 수 있다.
상기 주소 생성부는 상기 현재 UI 화면의 레이아웃 이름과 상기 이전 UI 화면의 커서 이름이 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 자식 관계로 판단하고, 상기 자식 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소 + 이전 UI 화면의 레이아웃 이름'으로 결정할 수 있다.
상기 주소 생성부는 상기 현재 UI 화면의 커서 이름이 상기 이전 UI 화면의 레이아웃 이름과 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 부모 관계로 판단하고, 상기 부모 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소 - 이전 UI 화면의 레이아웃 이름'으로 결정할 수 있다.
상기 주소 생성부는 상기 현재 UI 화면의 레이아웃 이름이 상기 이전 UI 화면의 레이아웃 이름과 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 형제자매 관계로 판단하고, 상기 현재 UI 화면의 레이아웃 이름 및 커서 이름이 상기 이전 UI 화면의 레이아웃 이름 및 커서 이름과 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 동일 관계로 판단하며, 상기 형제자매 관계 또는 상기 동일 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소'로 결정할 수 있다.
상기 주소 생성부는 상기 현재 UI 화면의 레이아웃 이름 및 커서 이름이 상기 이전 UI 화면의 레이아웃 이름 및 커서 이름과 같지 않은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 관련 없는 관계로 판단하며, 상기 관련 없는 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '없음'으로 결정할 수 있다.
상기 맵 생성부는 상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값 및 상기 리모트 컨트롤 키 값에 기반한 너비 우선 탐색을 통해 출발지 주소와 도착지 주소 간의 최단 거리 경로를 추출하고, 상기 최단 거리 경로에 포함된 주소 값 및 리모트 컨트롤 키 값을 이용하여 상기 UI 네비게이션 맵을 생성할 수 있다.
상기 추상화 스크립트 관리부는 상기 작성된 추상화 스크립트를 입력받는 추상화 스크립트 입력부; 상기 입력된 추상화 스크립트의 구문을 분석하는 추상화 스크립트 구문 분석부; 상기 분석된 구문의 실행을 통해 상기 추상화 스크립트를 변환하여 실행 스크립트를 생성하는 구문 실행부; 상기 생성된 실행 스크립트를 출력하는 실행 스크립트 출력부; 상기 실행 스크립트의 출력에 연동하여 상기 맵 생성부와 통신하여 해당 UI 네비게이션 맵을 탐색하는 맵 통신부; 및 기존 작성된 UI 테스트 스크립트와 호환성 유지를 위해 상기 추상화 스크립트를 기존 작성된 UI 테스트 스크립트로 변환하는 기존 스크립트 변환부를 포함할 수 있다.
본 발명의 일 실시예에 따른 UI 기능 테스트 방법은 상기 UI 기능 테스트 시스템의 주소 생성부가 현재 UI 화면과 상기 현재 UI 화면으로 이동하기 이전 UI 화면 간의 관계로 결정되는 조상 주소와, UI 화면 각각의 원본 이미지로부터 추출된 레이아웃 및 커서를 이용하여 상기 UI 화면 각각의 주소 값을 생성하는 단계; 상기 UI 기능 테스트 시스템의 맵 생성부가 상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값, 및 상기 현재 UI 화면과 상기 이전 UI 화면 간의 이동 관계를 나타내는 리모트 컨트롤 키 값을 이용하여 UI 네비게이션 맵을 생성하는 단계; 및 상기 UI 기능 테스트 시스템의 추상화 스크립트 관리부가 UI의 종류, 특성, 구성요소 중 적어도 하나를 포함하는 UI 관련 추가 정보를 정의한 추상화 스크립트를 작성하고, 상기 작성된 추상화 스크립트를 이용하여 상기 UI 네비게이션 맵으로부터 상기 UI 관련 추가 정보를 추출하며, 상기 UI 네비게이션 맵에서 제공되는 UI 관련 기본 정보 및 상기 추출된 UI 관련 추가 정보를 이용하여 UI 기능 테스트를 위한 실행 스크립트를 생성하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 첨부 도면들에 포함되어 있다.
본 발명의 일 실시예에 따르면, UI 네비게이션 맵을 자동으로 생성함으로써 UI 시나리오 테스트 작성을 기존 방법에 비해 추상적으로 작성할 수 있으며, 이러한 추상화된 테스트 방법 기술을 통해 UI가 중간에 바뀌거나 새로운 UI가 생기더라도 테스트 방법 기술을 수정할 필요가 없으며 수정이 필요하더라도 최소화된 부분만 수정을 하여 UI 기능 테스트의 효율을 향상시킬 수 있다.
도 1 및 도 2는 본 발명의 일 실시예에 따른 UI 기능 테스트 시스템을 설명하기 위해 도시한 블록도이다.
도 3은 도 2의 추상화 스크립트 관리부의 상세 구성을 설명하기 위해 도시한 블록도이다.
도 4 내지 도 12는 원본 이미지에서 불필요한 배경을 제거하는 단계를 설명하기 위해 도시한 예시도이다.
도 13은 불필요한 배경이 제거된 원본 이미지로부터 움직이는 영상을 제거하여 고정된 이미지를 추출하는 과정을 설명하기 위해 도시한 예시도이다.
도 14a 및 도 14b는 고정된 이미지로부터 레이아웃을 추출하는 과정을 설명하기 위해 도시한 예시도이다.
도 15 및 도 16은 고정된 이미지로부터 커서를 추출하는 과정을 설명하기 위해 도시한 예시도이다.
도 17 내지 도 20은 UI 네비게이션 맵 생성에 관한 예시 시나리오를 도시한 예시도이다.
도 21은 본 발명의 일 실시예에 따른 UI 기능 테스트 방법을 설명하기 위해 도시한 흐름도이다.
본 발명의 이점 및/또는 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성요소를 지칭한다.
또한, 이하 실시되는 본 발명의 바람직한 실시예는 본 발명을 이루는 기술적 구성요소를 효율적으로 설명하기 위해 각각의 시스템 기능구성에 기 구비되어 있거나, 또는 본 발명이 속하는 기술분야에서 통상적으로 구비되는 시스템 기능 구성은 가능한 생략하고, 본 발명을 위해 추가적으로 구비되어야 하는 기능 구성을 위주로 설명한다. 만약 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면, 하기에 도시하지 않고 생략된 기능 구성 중에서 종래에 기 사용되고 있는 구성요소의 기능을 용이하게 이해할 수 있을 것이며, 또한 상기와 같이 생략된 구성 요소와 본 발명을 위해 추가된 구성 요소 사이의 관계도 명백하게 이해할 수 있을 것이다.
또한, 이하의 설명에 있어서, 신호 또는 정보의 "전송", "통신", "송신", "수신" 기타 이와 유사한 의미의 용어는 일 구성요소에서 다른 구성요소로 신호 또는 정보가 직접 전달되는 것뿐만이 아니라 다른 구성요소를 거쳐 전달되는 것도 포함한다. 특히 신호 또는 정보를 일 구성요소로 "전송" 또는 "송신"한다는 것은 그 신호 또는 정보의 최종 목적지를 지시하는 것이고 직접적인 목적지를 의미하는 것이 아니다. 이는 신호 또는 정보의 "수신"에 있어서도 동일하다.
이하에서는 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 한다.
도 1 및 도 2는 본 발명의 일 실시예에 따른 UI 기능 테스트 시스템을 설명하기 위해 도시한 블록도이다.
도 1 및 도 2를 참조하면, 본 발명의 일 실시예에 따른 UI 기능 테스트 시스템(100)은 전처리부(210), 주소 생성부(220), 맵 생성부(230), 추상화 스크립트 관리부(240), 테스트부(250), 및 제어부(260)를 포함할 수 있다.
상기 전처리부(210)는 UI 화면 각각의 원본 이미지로부터 불필요한 배경을 제거할 수 있다. 불필요한 배경을 제거하는 이유는 다음과 같다. 첫째, 유일성을 가지기 위해서는 의미 있는 오브젝트를 추출해야 한다. 둘째, 의미 있는 오브젝트는 고정된 영상이다. 셋째, 오브젝트가 의미를 가지려면 통으로 연결 되어 있는 것보다 분리되어 있는 게 낫다. 위 3가지 이유에 따라서 상대적으로 의미가 없는 부분인 배경을 제거할 필요가 있다.
상기 전처리부(210)는 셋탑박스(105) 등과 같은 스마트기기로부터 UI 화면 각각의 원본 이미지를 입력 받고, 상기 원본 이미지에서 불필요한 배경을 제거할 수 있는ㄴ데, 이와 같이 상기 불필요한 배경을 제거하면 UI 부분(글자중심)과 출력되는 배경 영상에서 상대적으로 특이한 부분이 남는다.
상기 원본 이미지에서 불필요한 배경을 제거하는 단계는 다음과 같으며, 상기 단계는 상기 전처리부(210)에 의해 순차적으로 수행될 수 있다.
1. 이미지 채널 분리: B, G, R 3가지 채널 이미지로 분리한다.
2. 양방향 필터(bilateral filter) 적용: 분리된 각 이미지 채널에 양방향 필터(bilateral filter)를 적용한다.
3. 모폴로지 그라디언트 연산(morphology gradient): 양방향 필터가 적용된 이미지 채널에 정사각형 커널(kernel)로 모폴로지 그라디언트 연산을 적용한다.
4. 트라이앵글(triangle) 알고리즘을 사용한 이미지 자동 임계처리(Image auto threshold with triangle algorithm): 모폴로지 그라디언트 연산을 적용한 이미지에 트라이앵글 알고리즘을 적용한 자동 임계처리를 적용한다.
5. 이미지 전체 합치기: 임계처리가 끝난 바이너리(binary) 이미지 3가지를 합한다.
6. 컨투어(contour): 전체 합 결과 이미지에 컨투어를 하고, 컨투어된 오브젝트 중 컨투어 넓이가 일정 이하인 컨투어 오브젝트들은 무시한다.
7. 모폴로지 열기 연산, 닫기 연산(morphology open and close) 후 마스크 생성: 컨투어 오브젝트에서 open morphology 와 close morphology를 사용하여 노이즈를 제거한다. 넓이가 일정 이상인 컨투어 오브젝트들로 불필요한 배경 제거에 사용할 마스크를 만든다.
8. 마스크 씌우기: 생성된 마스크를 오리지널(원본) 이미지에 씌운다.
이하에서는 상기의 각 단계(1~8)에 대하여 도 4 내지 도 12를 참조하여 상세히 설명하기로 한다.
1. 이미지 채널 분리
도 4를 참조하여 이미지 채널 분리 단계에 대해 상세히 설명한다.
오리지날 이미지는 각 화소가 <B, G, R> 값으로 표현되어 있다. 이때, 이미지 채널의 수는 B 채널, G 채널, R 채널로 총 3개이다. 이미지에서 채널을 분리하면, B 채널은 B값만을, G 채널은 G값만을, R 채널은 R값만을 표시한다. 각 채널로 분리된 이미지는 흑백 이미지이고 당연히 채널 수는 1개이다.
채널을 분리하는 이유는 컨투어를 계산하기 위함과 동시에 상대적으로 중요한 이미지 값만을 추출하기 위해서이다. 도 4의 예시에 사용한 셋톱박스 UI는 검은 배경에 상대적으로 밝은 값이 오브젝트이다. 상대적으로 밝은 이미지 부분은 오브젝트가 될 가능성이 높다. 따라서 이미지 임계처리를 할 때, 상대적으로 밝은 부분을 추출한다. 만약 UI가 하얀 배경에 상대적으로 어두운 값이 오브젝트였다면, 이미지 임계처리를 할 때 상대적으로 어두운 부분을 추출한다.
2. 양방향 필터(bilateral filter) 적용
도 5를 참조하여 양방향 필터 적용 단계에 대해 상세히 설명한다.
불필요한 배경을 제거하기 위해서는 이미지 화소 값 간 미묘한 경계 차이는 무시할 필요가 있다. 즉, 의미가 있는 오브젝트일지 아닐지를 판단하기 때문에, 같은 오브젝트로 묶을 수 있게, 오브젝트 내 경계선은 노이즈로 간주하고 지워줄 필요가 있다. 단, 서로 다른 오브젝트와 배경 간 경계선은 지워지면 안 된다. 이를 위해서 양방향 필터(bilateral filter)를 사용한다.
상기 양방향 필터는 경계선을 유지하면서 내부는 가우시안 블러(Gaussian Blur)를 처리한다. 원리는 가우시안 필터(Gaussian Filter)를 적용하고, 또 하나의 가우시안 필터를 주변 화소를 고려하여 적용한다. 상기 가우시안 필터의 인수는 d(filtering 시 고려할 주변 pixel 지름), sigma color(숫자가 크면 멀리 있는 pixel도 고려함), sigma space(Color를 고려할 공간, 숫자가 크면 멀리 있는 색도 고려함) 등의 3가지 종류이다.
본 발명의 일 실시예에서는 d 값은 9, sigma color 값과 sigma space 값은 75를 주었다. 양방향 필터가 적용된 후에는 상대적으로 이미지가 흐려짐을 알 수 있다. 하지만 배경과 오브젝트의 경계선 역시 어느 정도 유지됨을 알 수 있다.
3. 모폴로지 그라디언트 연산 (morphology gradient)
도 6 및 도 7을 참조하여 모폴로지 그라디언트 연산 단계에 대해 상세히 설명한다.
모폴로지 그라디언트 연산은 오브젝트의 테두리를 추출하기 위해 사용한다. 여기서, 모폴로지는 수학적 형태학(Math Morphology)을 말한다. 이미지를 간단하고 미리 정의된 모양으로 탐색해서 이 그림에서 모양이 얼마나 맞거나 맞지 않는지를 판단하여 주어진 연산을 한다.
모폴로지 기본 연산에는 침식(erosion), 팽창(dilation), 열기(open), 닫기(close) 등 총 4가지가 있다. 그라디언트 연산은 주어진 이미지에서 팽창 연산 결과 값에서 침식 연산 결과 값을 뺀 형태이다. 이는 이미지의 테두리와 일치한다.
4. triangle 알고리즘을 사용한 이미지 자동 임계처리 (Image Threshold)
도 8을 참조하여 이미지 자동 임계처리 단계에 대해 상세히 설명한다.
이미지 임계처리(image threshold)는 이미지의 각 화소가 임계값(threshold) 이하이거나 이상일 때 해당 화소를 지울 수 있다. 이때, 상기 임계값은 사용자가 입력할 수도 있지만, 이미지 상 화소 값의 히스토그램을 보고 자동으로 가장 적절한 임계값을 추천해주는 알고리즘인 triangle 알고리즘을 사용할 수도 있다.
상기 triangle 알고리즘은 가장 적절한 임계값을 정할 때 제일 수가 많은 임계값과 제일 수가 적은 임계값 사이에 직선을 긋고, 해당 직선에서 수직상 가장 멀리 떨어진 점을 임계값으로 추천한다. 상기 triangle 알고리즘을 사용하여 임계값을 적용한 연산 결과는 도 8에 도시된 바와 같다.
5. 이미지 합치기
도 9를 참조하여 이미지 합치기 단계에 대해 상세히 설명한다.
이미지 임계 처리한 B, G, R 채널을 다시 한 이미지로 합하는데 이때, binary image 3개를 합해서 binary image 1개를 만든다. 따라서 결과물은 이미지 임계 처리한 B, G, R 채널의 합집합과 같다.
6. 컨투어 (contour)
도 10을 참조하여 컨투어 단계에 대해 상세히 설명한다.
B, G, R 채널을 합한 이미지에 컨투어 연산을 하여 가장 바깥쪽 테두리를 찾고, 빈 내부를 채운다. 또한 컨투어 오브젝트의 넓이가 일정 값 이하면 노이즈로 간주하고 무시한다.
7. 모폴로지 열기 연산, 닫기 연산 후에 마스크 생성
도 11을 참조하여 모폴로지 열기 연산, 닫기 연산 후에 마스크 생성 단계에 대해 상세히 설명한다.
모폴로지 열기 연산(morphology open)과 모폴로지 닫기 연산(morphology close)을 이용하여 얇은 선이나, 울퉁불퉁한 오브젝트 테두리를 깔끔하게 정리한다. 닫기 -> 열기 연산이 적용된 최종 이미지는 불필요한 배경이 제거된 마스크 이미지로 쓰인다.
8. 마스크 씌우기
도 12를 참조하면, 마스크 씌우기 단계에서는 상기 마스크 생성 단계에 의해 생성된 마스크(불필요한 배경이 제거된 마스크 이미지)를 오리지널 이미지에 씌운다. 이에 따라 불필요한 배경이 제거된 오리지날 이미지를 얻을 수 있다.
다시 도 1 및 도 2를 참조하면, 상기 전처리부(210)는 상기 불필요한 배경이 제거된 원본 이미지로부터 움직이는 영상을 제거하여 UI 구성요소로 이루어진 고정된 이미지를 추출할 수 있다. 이하에서는 상기 고정된 이미지를 추출하는 과정에 대해 도 13을 참조하여 구체적으로 설명한다.
먼저 첫 번째로 찍은 이미지를 통해 불필요한 배경을 제거한 오리지날 이미지와 불필요한 배경을 제거한 마스크 이미지를 얻는다. 그리고 새로운 리모트 컨트롤 키 값을 입력하지 않고, 같은 UI에서 1초에 1장씩 새로운 이미지를 약 30장 찍는다. 새롭게 얻은 이미지에 불필요한 배경을 제거한 마스크를 씌워 첫 번째로 찍은 이미지와 일대일로 비교할 수 있게 한다.
첫 번째로 찍은 이미지와 나중에 찍은 이미지 간 화소의 값 변화가 일정 이상이 되면, 해당 화소는 움직이는 영상에 해당하는 화소이다. 31장의 이미지를 모두 각자 비교하여 움직이는 영상에 해당하는 화소를 '불필요한 배경 제거한 마스크 이미지'에서 제거한다. 결과적으로 30초간 움직였던 영상이 제거되고 고정된 영상 즉 UI 부분만 남는다. 남은 오브젝트들은 이제 UI 구성요소로 볼 수 있다.
다시 도 1 및 도 2를 참조하면, 상기 전처리부(210)는 상기 고정된 이미지로부터 상기 UI 구성요소에 해당하는 오브젝트를 레이아웃 및 커서로 구분하여 추출할 수 있다. 이때, 상기 전처리부(210)는 상기 고정된 이미지에 컨투어(Contour)를 하여 상기 UI 구성요소 중 같은 커서 이동 가능 영역 내 최상위 개념에 해당하는 오브젝트를 상기 레이아웃으로서 추출할 수 있다.
여기서, 상기 레이아웃은 같은 커서 이동 가능 영역을 가진 집합을 말하며, 도 14a의 예시와 같이 '오늘의 추천', 'olleh tv', '영화/시리즈' 등과 같다. 커서는 서로 다르지만 좌측 상단의 텍스트 이름이 레이아웃이 같음을 가리킨다. 레이아웃 이름은 UI의 유일성을 표현할 때 사용된다.
레이아웃 이름은 움직이는 영상이 제거된 이미지에 컨투어를 하여, 얻은 오브젝트 중 가장 좌측 상단에 가까운 오브젝트를 구한다. 구한 오브젝트는 잘라내어, 도 14b의 예시와 같이 OCR(Optical Character Reader)을 통해 텍스트를 읽어 들인다. 즉, 상기 전처리부(210)는 상기 레이아웃으로부터 OCR을 통해 텍스트를 읽어 들이고 상기 읽어 들인 텍스트를 레이아웃 이름으로서 출력할 수 있다.
상기 전처리부(210)는 2가지 이미지와 상기 리모트 컨트롤 키 값을 이용하여 상기 커서를 추출할 수 있다. 이를 위해, 상기 전처리부(210)는 상기 2가지 이미지로부터 상기 UI 구성요소의 색상을 추출하여 색상이 동일한 UI 구성요소를 선별하고, 상기 색상이 동일한 UI 구성요소 중 모양과 크기가 유사한 오브젝트가 상기 2가지 이미지에 모두 존재하며, 상기 2가지 이미지에서 상기 리모트 컨트롤 키 값에 따른 오브젝트 좌표 관계가 일치하는 경우 해당 오브젝트를 상기 커서로서 추출할 수 있다.
여기서, 상기 커서의 색상을 자동으로 추출하는 과정은 다음과 같다.
커서의 색상을 추출한다 함은 커서가 가지고 있는 B, G, R 값을 추출한다는 뜻이다. 커서 색상을 추출할 때에는 2가지 이미지와, 리모트 컨트롤 값이 필요하다. 커서 색상은 커서 색상에 변화가 있을 때에만 1번씩 추출하면 된다. 따라서 커서 색상 자동 추출 과정은 몇 회 작동하지 않는다.
커서 색상을 추출하는 기본 전제 조건은 두 이미지에 커서는 존재하고, 커서의 색상은 동일하고, 커서의 모양과 크기도 비슷하며, 리모트 컨트롤 키 값('Up', 'Down', 'Right', 'Left')에 비례하여 커서의 위치가 바뀐다는 사실이다.
즉, 이미지 A와 이미지 B가 있고, "이미지 A -> 리모트 컨트롤 키 값 -> 이미지 B" 였을 때, 리모트 컨트롤 키 값에 따른 커서 위치 좌표 값의 변화는 도 15에 도시된 예시와 같다. 따라서 모양과 크기가 비슷한 오브젝트가 양쪽 이미지 모두에 존재하고, 리모트 컨트롤 키 값에 따른 오브젝트 좌표 관계도 일치한다면 해당 오브젝트는 커서로 볼 수 있다. 커서인 오브젝트를 구한다면 해당 오브젝트의 평균 B, G, R 값을 구하여 커서의 색상으로 정의할 수 있다.
상기 전처리부(210)는 상기 커서로부터 OCR을 통해 텍스트를 읽어 들이고 상기 읽어 들인 텍스트를 커서 이름으로서 출력할 수 있다.
구체적으로, 커서 색상 자동 추출 과정에서 구한 커서 색상 B, G, R 값을 기준으로 커서를 추출한 이미지에 임계 처리를 하면, B, G, R 값과 동일한 화소 집합만 남게 된다. 남겨진 오브젝트에 컨투어 연산을 한 뒤, 가장 직사각형에 가깝고, 테두리가 매끄럽고, 가로 세로 비율이 일정 값과 비슷한 오브젝트를 추출한다. 최종적으로 추출된 오브젝트가 커서이다.
커서는 포스터를 가리킬 때는 직사각형 1개 형태이지만, 메뉴를 가리킬 때에는 직사각형 2개의 형태를 가진다. 커서 형태를 통해 현재 커서가 가리키는 오브젝트가 메뉴 텍스트인지 포스터인지 추측할 수 있다. 도 16의 예시와 같이, 추출한 커서 위치로 커서 영역을 잘라내고, 잘라낸 커서 영역에서 OCR로 텍스트를 읽어 들인다. 읽어 들인 텍스트는 커서 이름으로서 상기 레이아웃 이름과 마찬가지로 UI의 유일성을 정할 때 사용된다.
한편, 상기 전처리부(210)는 커서와 레이아웃을 구분하여 추출하지 못하는 상황에서 UI의 유일성을 정하기 위하여 오브젝트를 추출할 수 있다. 오브젝트 추출은 움직이는 영상이 제거된 이미지 결과에서 컨투어를 하여 각 오브젝트를 잘라낸 것이다. 추출된 오브젝트는 커서와 레이아웃을 구할 수 없는 특수한 상황일 때 대신 UI의 유일성을 나타낼 수 있다.
다만, 본 실시예에서는 30초간 움직인 영상만을 제거했기 때문에, TV 프로그램 제목처럼 30초간 고정되어 있는 움직이는 영상들이 노이즈로 들어올 것을 고려하여, 100% 일치가 아닌, 80~90% 일치로 같은 UI 인지 아닌지를 구분하는 것이 바람직하다.
상기 주소 생성부(220)는 현재 UI 화면과 상기 현재 UI 화면으로 이동하기 이전 UI 화면 간의 관계로 결정되는 조상 주소와, 상기 전처리부(210)에 의해 추출된 레이아웃 및 커서를 이용하여 상기 UI 화면 각각의 주소 값을 생성할 수 있다. 구체적으로, 상기 주소 생성부(220)는 상기 조상 주소, 상기 레이아웃 이름 및 상기 커서 이름을 이용하여 상기 UI 화면 각각의 주소 값을 생성할 수 있다.
여기서, 주소는 한 UI를 다른 UI와 구분할 수 있게 유일성을 가진 속성이다. 즉, 데이터베이스의 Key 값 역할과 비슷하다. 한 UI에서 얻을 수 있는 레이아웃 이름과 커서 이름만으로는 유일성을 가질 수도 있고 못 가질 수도 있다. 가령 같은 레이아웃이긴 하지만, 유입된 경로가 다를 수 있기 때문이다.
예를 들어 설정 메뉴에서 오늘의 추천 메뉴로 해서 들어올 수 있고, 우리집 TV에서 오늘의 추천 메뉴로 들어올 수도 있기 때문이다. 둘은 의미가 다르다. 따라서, 어느 경로로 들어왔는지를 알려줄 수 있는 조상 주소가 필요하다. 조상 주소를 얻는 방법은 아래와 같다.
즉, 주소 생성은 "주소 = 조상 주소 + 레이아웃 + 커서"와 같은 방식으로 생성된다. 조상 주소는 이동하기 전 UI와 현재 UI 간 관계로 결정된다. 주소를 생성하기 전에 UI간 관계 종류를 정의한다. 이전 UI A와 현재 UI B 는 아래와 같이 5가지 관계를 형성한다. 참고로, UI 네비게이션 맵은 트리와 같은 형태이다.
1) 자식 관계는 A의 커서 이름이 B의 레이아웃 이름과 같을 때이고, 2) 부모 관계는 B의 커서 이름이 A의 레이아웃 이름과 같을 때이며, 3) 형제 관계는 A의 레이아웃 이름과 B의 레이아웃 이름이 같을 때이고, 4) 관련 없는 관계는 A의 레이아웃 이름, 커서 이름과 B의 레이아웃 이름, 커서 이름이 아무것도 같지 않을 때이며, 5) 동일 관계는 A의 커서 이름과 B의 커서 이름이 같고, A의 레이아웃 이름과 B의 레이아웃 이름이 같을 때이다.
또한, 조상 주소를 정할 때에는 표 1에서와 같이 현재 UI의 레이아웃/커서 이름과 이전 UI의 레이아웃/커서 이름을 가지고 위 5가지 관계 중 하나를 얻어야 한다.
[표 1]
Figure 112018083640206-pat00001
즉, 상기 주소 생성부(220)는 상기 현재 UI 화면의 레이아웃 이름과 상기 이전 UI 화면의 커서 이름이 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 자식 관계로 판단하고, 상기 자식 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소 + 이전 UI 화면의 레이아웃 이름'으로 결정할 수 있다.
상기 주소 생성부(220)는 상기 현재 UI 화면의 커서 이름이 상기 이전 UI 화면의 레이아웃 이름과 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 부모 관계로 판단하고, 상기 부모 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소 - 이전 UI 화면의 레이아웃 이름'으로 결정할 수 있다.
상기 주소 생성부(220)는 상기 현재 UI 화면의 레이아웃 이름이 상기 이전 UI 화면의 레이아웃 이름과 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 형제자매 관계로 판단하고, 상기 형제자매 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소'로 결정할 수 있다. 또한, 상기 주소 생성부(220)는 상기 현재 UI 화면의 레이아웃 이름 및 커서 이름이 상기 이전 UI 화면의 레이아웃 이름 및 커서 이름과 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 동일 관계로 판단하고, 상기 동일 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소'로 결정할 수 있다.
상기 주소 생성부(220)는 상기 현재 UI 화면의 레이아웃 이름 및 커서 이름이 상기 이전 UI 화면의 레이아웃 이름 및 커서 이름과 같지 않은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 관련 없는 관계로 판단하며, 상기 관련 없는 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '없음'으로 결정할 수 있다.
상기 맵 생성부(230)는 도 17 내지 도 20의 예시에서와 같이 상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값, 및 상기 현재 UI 화면과 상기 이전 UI 화면 간의 이동 관계를 나타내는 리모트 컨트롤 키 값(Up, Down, Right, Left 등)을 이용하여 UI 네비게이션 맵을 생성할 수 있다.
상기 UI 네비게이션 맵에 들어가는 자료구조 및 그 내용은 아래의 표 2와 같다.
[표 2]
Figure 112018083640206-pat00002
표 2를 참조하면, 이전 UI 주소가 들어가 있는 자료에서 해당 리모트 컨트롤 키값 속성에 현재 UI 주소를 갱신한다. 또한 해당 리모트 컨트롤 키값 관계 속성에 현재 UI와의 관계를 갱신한다.
현재 UI 주소를 UI 네비게이션 맵에서 검색한다. 만약 현재 UI 주소가 상기 UI 네비게이션 맵에 없으면 다음 값을 상기 UI 네비게이션 맵에 추가한다. 만약 현재 UI 주소가 상기 UI 네비게이션 맵에 있으면 아무런 동작을 하지 않는다.
이후, 새로운 리모트 컨트롤 키 값이 들어오면, 현재 UI는 이전 UI가 되고, 새로운 리모트 컨트롤 키 값에 의해 이동한 곳의 UI는 현재 UI가 된다.
상기 맵 생성부(230)는 상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값 및 상기 리모트 컨트롤 키 값에 기반한 너비 우선 탐색을 통해 출발지 주소와 도착지 주소 간의 최단 거리 경로를 추출하고, 상기 최단 거리 경로에 포함된 주소 값 및 리모트 컨트롤 키 값을 이용하여 상기 UI 네비게이션 맵을 생성할 수 있다.
출발지 주소와 도착지 주소가 주어지면 상기 UI 네비게이션 맵을 탐색해서 출발지 주소에서 도착지 주소까지 이동하는 데 필요한 리모트 컨트롤 키 값의 조합을 출력해준다. 상기 리모트 컨트롤 키 값의 조합을 출력하면 이 조합은 테스트 시나리오를 생성할 때 자동화가 가능하다.
그렇게 하기 위해선 상기 UI 네비게이션 맵 상에서 출발지 주소로부터 도착지 주소까지의 경로를 구할 수 있어야 하는데, 이 문제를 방향성 그래프(directed graph)의 인접 리스트(adjacent list)로 보고 최단 경로를 구하기 위해 너비 우선 탐색(Breadth First Search)을 사용하였다.
먼저 완성된 예시 맵이 아래의 표 3과 같다고 가정한다.
[표 3]
Figure 112018083640206-pat00003
너비 우선 탐색은 큐(Queue)를 사용한다. 그 중 최단거리 경로를 추출한다. 예를 들어, 출발지 주소가 'ollehtv/음악다큐' 이고, 도착지 주소는 'ollehtv/키즈랜드' 라고 할 때, 너비 우선 탐색 결과로 2가지 경로가 나온다.
경로 1: "ollehtv/음악교육다큐 -> ollehtv/애니메이션 -> ollehtv/키즈랜드"
경로 2: "ollehtv/음악교육다큐 -> ollehtv/월정액전용관 -> ollehtv/TVApps -> ollehtv/채널가이드 -> ollehtv/오늘의추천 -> ollehtv/영화시리즈 -> ollehtv/TV다시보기 -> ollehtv/키즈랜드"
이 중 1번 경로가 최단거리이기 때문에 1번 경로를 선택한다. 선택된 1번 경로는 UI 주소의 조합이다. UI의 주소의 조합을 읽어 들여서, 리모트 컨트롤 키 값으로 변환해야 한다. 이를 위해 다시 UI 네비게이션 맵을 사용한다.
먼저 1번 경로에서 "ollehtv/음악교육다큐 -> ollehtv/애니메이션"을 읽어 들이고, 상기 UI 네비게이션 맵에서 "ollehtv/음악교육다큐"의 주소 값을 찾는다.
[표 4]
Figure 112018083640206-pat00004
찾은 값에서 리모트 컨트롤 키 값 속성을 확인하는데, 확인할 때 리모트 컨트롤 키 값 내 주소가 "ollehtv/애니메이션" 과 같은지 비교한다. 같은 값을 찾으면 해당 리모트 컨트롤 키 값을 구한다. 여기선 'Up' 이 해당 리모트 컨트롤 키 값이다.
다음으로 1번 경로에서 "ollehtv/애니메이션 -> ollehtv/키즈랜드" 를 확인한다.
[표 5]
Figure 112018083640206-pat00005
"ollehtv/키즈랜드"는 Up 속성에 있으므로, 리모트 컨트롤 키 값 조합은 "Up -> Up" 이다. 이렇게 자동으로 리모트 컨트롤 키 값 조합이 출력되면, 테스트 시나리오 자동화 및 유연한 적용이 가능하다.
상기 추상화 스크립트 관리부(240)는 UI의 종류, 특성, 구성요소 중 적어도 하나를 포함하는 UI 관련 추가 정보를 정의한 추상화 스크립트를 작성하고, 상기 작성된 추상화 스크립트를 이용하여 상기 UI 네비게이션 맵으로부터 상기 UI 관련 추가 정보를 추출할 수 있다. 상기 추상화 스크립트 관리부(240)는 상기 UI 네비게이션 맵에서 제공되는 UI 관련 기본 정보 및 상기 추출된 UI 관련 추가 정보를 이용하여 UI 기능 테스트를 위한 실행 스크립트를 생성할 수 있다.
상기 추상화 스크립트 관리부(240)는 도 3에 도시된 바와 같이 추상화 스크립트 입력부(241), 추상화 스크립트 구문 분석부(242), 구문 실행부(243), 실행 스크립트 출력부(244), 맵 통신부(245), 기존 스크립트 변환부(246), 및 추상화 스크립트 제어부(247)를 포함할 수 있다.
상기 추상화 스크립트 입력부(241)는 상기 작성된 추상화 스크립트를 입력받고, 상기 추상화 스크립트 구문 분석부(242)는 상기 입력된 추상화 스크립트의 구문을 파싱(parsing)하여 분석할 수 있다. 상기 구문 실행부(243)는 상기 분석된 구문의 실행을 통해 상기 추상화 스크립트를 변환하여 실행 스크립트를 생성할 수 있다. 상기 실행 스크립트 출력부(244)는 상기 생성된 실행 스크립트를 출력할 수 있다.
상기 맵 통신부(2450는 상기 실행 스크립트의 출력에 연동하여 상기 맵 생성부(230)와 통신하여 해당 UI 네비게이션 맵을 탐색할 수 있다. 상기 기존 스크립트 변환부(246)는 기존 작성된 UI 테스트 스크립트와 호환성 유지를 위해 상기 추상화 스크립트를 기존 작성된 UI 테스트 스크립트로 변환할 수 있다. 상기 추상화 스크립트 제어부(247)는 상기 추상화 스크립트 입력부(241), 상기 추상화 스크립트 구문 분석부(242), 상기 구문 실행부(243), 상기 실행 스크립트 출력부(244), 상기 맵 통신부(245), 상기 기존 스크립트 변환부(246) 등의 동작을 전반적으로 제어할 수 있다.
이하에서는 상기 추상화 스크립트에 대해서 예시를 들어 구체적으로 설명한다.
추상화 스크립트는 차후 유지 보수 과정에서 스크립트를 수정할 때, 유연하게 수정하거나 또는 UI가 변경되어도 스크립트 수정 없이 가능하게 하기 위한 기본 도구이다. 또한, 추상화 스크립트로 UI 구성과 UI 종류를 추상적으로 정의하여, UI 네비게이션 맵에서 UI 종류를 구분 가능하다. 추상화 스크립트와 UI 네비게이션 맵을 연동하여 UI 테스트 시스템을 개발할 시 테스트 케이스가 새로 추가되거나 테스트 케이스 내용이 변경될 경우를 제외하고는, UI 위치 변경, UI 커서 색상 변경, UI 주소 변경, UI 업데이트 같은 경우에는 유지 보수 비용이 더 들지 않는다.
상기 추상화 스크립트가 필요한 이유는 다음과 같다.
첫째, UI 네비게이션 맵 기능을 사용함으로써 UI 이동 동작 입력 또는 UI 이동 동작 변경 비용(시간, 개발자의 노동 등)을 줄일 수 있지만, "특정 종류의 UI를 테스트하라", "특정 종류의 UI를 테스트 하되, 어떤 기준에 부합하면 그 UI는 테스트하지 마라" 같은 경우, 기존 샘플링 테스트 방식(특정 종류에 해당하는 UI 중 몇 개만 랜덤하게 뽑아 테스트하는 방식)을 여전히 사용할 수 밖에 없다. 하지만, 추상화 스크립트를 사용한다면, 전수 테스트 방식을 사용할 수 있다. 전수 테스트 방식을 사용하면 UI 테스트 시스템의 정확성을 지금보다 더 높일 수 있다.
둘째, 기존 작성된 UI 테스트 스크립트와 호환성 유지를 위해 추상화 스크립트에서 기존 작성된 UI 테스트 스크립트로 변환이 가능하다. 따라서 호환성이 높다.
셋째, 추상화 스크립트를 사용하면, 스크립트 작성자가 작성하는 스크립트 양이 줄어든다.
넷째, UI 테스트 스크립트를 작성하는 사람이 항상 코드를 잘 알고 이해하는 개발자일 수는 없다. 따라서 '엑셀의 매크로'처럼 일반인도 이해할 수 있고, 간편하게 사용 가능하게 하여 스크립트 작성자에게 편의성을 제공한다. 또한 시간이 지나 스크립트를 보았을 때도 가독성이 높다.
다섯째, UI 네비게이션 맵은 UI에 관한 기본적인 정보만 제공한다. 하지만 추상화 스크립트에서 UI의 종류나 특성이나 구성요소를 정의한다면, 생성된 맵에서 추가적인 정보를 추출할 수 있다.
상기와 같은 추상화 스크립트의 주요 기능을 설명하면 다음과 같다.
1. 정의
가. 특징을 제시하여, 해당 특징에 해당하는 요소나 종류가 있으면 UI 네비게이션 맵 데이터베이스에 정의 내용을 덧붙인다.
나. 동일한 UI에 복수 개의 정의가 존재할 수 있다.
Ex) “콘텐츠” “시놉시스” “단편시놉시스”
다. <문법>
정의 "A"
특징 '가'는 'a'다.
특징 '나'는 'b'이다.
특징 '다'는 'c'가 아니다.
라. <예시>
정의 "콘텐츠"
특징 '커서모양'은 '직사각형'이다.
특징 '커서개수'는 '1'이다.
모든 UI 네비게이션 맵의 주소 중 상기한 정의의 내용에 해당하면, 해당 주소의 데이터베이스 정보에 "콘텐츠" 라는 정의값을 붙인다.
2. 조건
가. 현재 UI에 대해 적혀진 정의의 조건에 해당하는지 판별한다.
나. 조건은 한 가지 또는 여러 가지를 한 줄로 제시한다.
다. <문법>
만약 "A"라면
만약 "B"가 아니면
만약 "A", "B"라면
라. <예시>
만약 "콘텐츠"라면
3. 예외 처리
가. 조건문에 해당하는 UI지만, 제외하고 싶은 정의가 있을 때 사용한다.
나. <문법>
하지만 "C"라면
다. 예시와 사용법은 조건 처리와 일치한다.
4. 기본 명령
가. 조건 처리 문장 밑에 표기한다.
나. <종류>
A. [구성요소 A]가 있는지 확인하라
B. 리모컨키 [A]를 눌러라
C. "정의 A"인지 확인하라
D. [UI 주소 A]로 이동하라 등
다. <예시>
만약 "콘텐츠"라면
리모컨키 [OK]를 눌러라
하지만 "포스터"라면
리모컨키 [Back]를 눌러라
5. 기존 스크립트로 변환
짧은 추상화 스크립트를 기존의 긴 스크립트로 변환한다.
참고로, 추상화 스크립트의 전체 예시(콘텐츠에 포커싱하고 리모트 컨트롤(RC) [OK] 키 입력 시 해당 콘텐츠의 상세시놉으로 이동함 )는 다음과 같다.
가. 정의 "콘텐츠"
특징 '커서모양'이 '직사각형'이다
특징 '커서개수'가 '1'이다
나. 정의 "상세시놉"
특징 '레이아웃위치'가 '(200,400)'이다
다. 만약 "콘텐츠"라면
리모컨키 [A]를 눌러라
"상세시놉"인지 확인하라
한편, 추상화 스크립트와 UI 네비게이션 맵 관련성을 설명하면 다음과 같다.
추상화 스크립트를 사용하기 위해서는 UI 네비게이션 맵이 필요하다. 최종적으로 실행 스크립트를 생성하는 것은 추상화 스크립트이다. 추상화 스크립트는 동일해도 UI 네비게이션 맵이 달라지면, 실제로 실행되는 실행 스크립트는 달라질 수 있다.
다시 도 1 및 도 2를 참조하면, 상기 테스트부(250)는 상기 맵 생성부(230)에 의해 생성된 UI 네비게이션 맵 및 상기 추상화 스크립트 관리부(240)에 의해 생성된 실행 스크립트를 이용하여 UI 기능을 테스트할 수 있다.
상기 제어부(260)는 본 발명의 일 실시예에 따른 UI 기능 테스트 시스템(100), 즉 상기 전처리부(210), 상기 주소 생성부(220), 상기 맵 생성부(230), 상기 추상화 스크립트 관리부(240), 상기 테스트부(250) 등의 동작을 전반적으로 제어할 수 있다.
한편, 스마트폰의 경우, 셋톱박스(105)와 불필요한 배경 제거 방식, 고정된 UI 추출 방식, 주소 생성 방식, UI 네비게이션 맵 생성 방식, UI 네비게이션 맵 탐색 방식은 동일하지만, UI의 '유일성'인 주소를 추출하기 위한 레이아웃 추출 방식, 커서 추출 방식, 오브젝트 추출 방식이 다르다.
1. 레이아웃 추출 방식과 오브젝트 추출 방식
스마트폰 UI에선 레이아웃이 텍스트 형태로 표시되지 않는 경우가 많다. 따라서 레이아웃을 추출할 때, 텍스트가 아닌 화면 구조를 파악하여야 한다. 이 과정에서 오브젝트 추출도 같이 이루어진다. 추출된 레이아웃 구조의 하위 객체가 오브젝트이기 때문이다.
또한, 스마트폰 UI는 스크롤 형태가 존재한다. 스크롤 형태의 경우 위치(좌표) 값이 상대 값으로 변하고, 레이아웃을 추출하기 위해서 전체 화면을 스크롤 캡처하고, 현재 스크롤에 따른 상대적 위치를 지정해줘야 한다.
2. 커서 추출 방식
스마트폰은 커서로 현재 위치를 표시하지 않는 경우가 많다. 또한 좌, 우, 상, 하 정도만 이동 가능하여 이동 경로를 파악할 수 있는 셋톱박스 UI와 달리 스마트폰 UI는 터치 방식이기 때문에, 상, 하, 좌, 우 경로는 의미가 없다.
스마트폰 UI의 커서의 중점은 어떤 위치(좌표) 영역이 커서인지 아닌지를 먼저 파악하는 것이다. 어떤 위치(좌표)를 클릭하여 이벤트가 발생하는지 아닌지를 확인하여 커서 영역을 표시할 수 있는데, 여기서 해당 커서 영역 범위가 커서의 위치가 된다.
커서의 이름은 해당 커서 영역 내 텍스트가 있을 경우엔 OCR로 파악하지만 없을 경우에는 미리 개발자가 정한 분류를 매칭하여 입력한 후, 추후 사용자에게 리네이밍(renaming)을 요구하거나 사용자가 그대로 사용하게 한다.
이상에서 설명된 장치는 하드웨어 구성 요소, 소프트웨어 구성 요소, 및/또는 하드웨어 구성 요소 및 소프트웨어 구성 요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성 요소는, 예를 들어, 프로세서, 컨트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
도 21은 본 발명의 일 실시예에 따른 UI 기능 테스트 방법을 설명하기 위해 도시한 흐름도이다.
여기서 설명하는 UI 기능 테스트 방법은 본 발명의 하나의 실시예에 불과하며, 그 이외에 필요에 따라 다양한 단계들이 부가될 수 있고, 하기의 단계들도 순서를 변경하여 실시될 수 있으므로, 본 발명이 하기에 설명하는 각 단계 및 그 순서에 한정되는 것은 아니다.
도 2 및 도 21을 참조하면, 단계(310)에서 상기 UI 기능 테스트 시스템(100)의 전처리부(210)는 UI 화면 각각의 원본 이미지로부터 불필요한 배경을 제거할 수 있다.
다음으로, 단계(320)에서 상기 전처리부(210)는 상기 불필요한 배경이 제거된 원본 이미지로부터 움직이는 영상을 제거하여 UI 구성요소로 이루어진 고정된 이미지를 추출할 수 있다.
다음으로, 단계(330)에서 상기 전처리부(210)는 상기 고정된 이미지로부터 상기 UI 구성요소에 해당하는 오브젝트를 레이아웃 및 커서로 구분하여 추출할 수 있다.
다음으로, 단계(340)에서 상기 UI 기능 테스트 시스템(100)의 주소 생성부(220)는 현재 UI 화면과 상기 현재 UI 화면으로 이동하기 이전 UI 화면 간의 관계로 결정되는 조상 주소와, 상기 전처리부에 의해 추출된 레이아웃 및 커서를 이용하여 상기 UI 화면 각각의 주소 값을 생성할 수 있다.
다음으로, 단계(350)에서 상기 UI 기능 테스트 시스템(100)의 맵 생성부(230)는 상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값, 및 상기 현재 UI 화면과 상기 이전 UI 화면 간의 이동 관계를 나타내는 리모트 컨트롤 키 값을 이용하여 UI 네비게이션 맵을 생성할 수 있다.
다음으로, 단계(360)에서 상기 UI 기능 테스트 시스템(100)의 추상화 스크립트 관리부(240)는 UI의 종류, 특성, 구성요소 중 적어도 하나를 포함하는 UI 관련 추가 정보를 정의한 추상화 스크립트를 작성할 수 있다.
다음으로, 단계(370)에서 상기 추상화 스크립트 관리부(240)는 상기 작성된 추상화 스크립트를 이용하여 상기 UI 네비게이션 맵으로부터 상기 UI 관련 추가 정보를 추출할 수 있다.
다음으로, 단계(380)에서 상기 추상화 스크립트 관리부(240)는 상기 UI 네비게이션 맵에서 제공되는 UI 관련 기본 정보 및 상기 추출된 UI 관련 추가 정보를 이용하여 UI 기능 테스트를 위한 실행 스크립트를 생성할 수 있다.
다음으로, 단계(390)에서 상기 UI 기능 테스트 시스템(100)의 테스트부(250)는 상기 UI 네비게이션 맵 및 상기 실행 스크립트를 이용하여 UI 기능을 테스트할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CDROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
100: UI 기능 테스트 시스템
105: 셋탑박스
210: 전처리부
220: 주소 생성부
230: 맵 생성부
240: 추상화 스크립트 관리부
250: 테스트부
260: 제어부

Claims (14)

  1. UI 화면 각각의 원본 이미지로부터 불필요한 배경을 제거하고, 상기 불필요한 배경이 제거된 원본 이미지로부터 움직이는 영상을 제거하여 UI 구성요소로 이루어진 고정된 이미지를 추출하며, 상기 고정된 이미지로부터 상기 UI 구성요소에 해당하는 오브젝트를 레이아웃 및 커서로 구분하여 추출하는 전처리부;
    현재 UI 화면과 상기 현재 UI 화면으로 이동하기 이전 UI 화면 간의 관계로 결정되는 조상 주소와, UI 화면 각각의 원본 이미지로부터 추출된 레이아웃 및 커서를 이용하여 상기 UI 화면 각각의 주소 값을 생성하는 주소 생성부;
    상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값, 및 상기 현재 UI 화면과 상기 이전 UI 화면 간의 이동 관계를 나타내는 리모트 컨트롤 키 값을 이용하여 UI 네비게이션 맵을 생성하는 맵 생성부; 및
    UI의 종류, 특성, 구성요소 중 적어도 하나를 포함하는 UI 관련 추가 정보를 정의한 추상화 스크립트를 작성하고, 상기 작성된 추상화 스크립트를 이용하여 상기 UI 네비게이션 맵으로부터 상기 UI 관련 추가 정보를 추출하며, 상기 UI 네비게이션 맵에서 제공되는 UI 관련 기본 정보 및 상기 추출된 UI 관련 추가 정보를 이용하여 UI 기능 테스트를 위한 실행 스크립트를 생성하는 추상화 스크립트 관리부
    를 포함하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  2. 삭제
  3. 제1항에 있어서,
    상기 원본 이미지로부터 불필요한 배경을 제거하기 위해,
    상기 전처리부는
    상기 원본 이미지를 B, G, R의 3가지 채널 이미지로 분리하는 단계, 상기 분리된 각 이미지 채널에 양방향 필터(bilateral filter)를 적용하고 정사각형 커널(kernel)로 모폴로지 그라디언트 연산을 적용하는 단계, 트라이앵글(triangle) 알고리즘을 사용하여 상기 모폴로지 그라디언트 연산을 적용한 이미지를 자동으로 임계 처리하는 단계, 상기 임계 처리가 끝난 바이너리(binary) 이미지 3가지를 합한 후 전체 합 결과 이미지에 컨투어를 하고, 컨투어된 오브젝트에서 오픈 모폴로지(open morphology)와 클로즈 모폴로지(close morphology)를 사용하여 노이즈를 제거하는 단계, 및 넓이가 일정 이상인 컨투어된 오브젝트들로 불필요한 배경 제거에 사용할 마스크를 생성하고, 상기 생성된 마스크를 상기 원본 이미지에 씌우는 단계를 수행하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  4. 제1항에 있어서,
    상기 고정된 이미지를 추출하기 위해,
    상기 전처리부는
    첫 번째로 찍은 이미지를 통해 상기 불필요한 배경을 제거한 원본 이미지와 상기 불필요한 배경을 제거한 마스크 이미지를 얻는 단계, 새로운 리모트 컨트롤 키 값을 입력하지 않고, 같은 UI에서 1초에 1장씩 새로운 이미지를 복수개 찍는 단계, 상기 새로운 이미지에 상기 불필요한 배경을 제거한 마스크를 씌워 상기 첫 번째로 찍은 이미지와 일대일로 비교하는 단계, 및 상기 첫 번째로 찍은 이미지와 나중에 찍은 상기 새로운 이미지 간 화소의 값 변화가 일정 이상이 되면, 해당 화소를 상기 움직이는 영상에 해당하는 화소로 판단하고, 상기 움직이는 영상에 해당하는 화소를 상기 불필요한 배경을 제거한 마스크 이미지에서 제거하는 단계를 수행하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  5. 제1항에 있어서,
    상기 전처리부는
    상기 고정된 이미지에 컨투어(Contour)를 하여 상기 UI 구성요소 중 같은 커서 이동 가능 영역 내 최상위 개념에 해당하는 오브젝트를 상기 레이아웃으로서 추출하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  6. 제1항에 있어서,
    상기 전처리부는
    2가지 이미지와 상기 리모트 컨트롤 키 값을 이용하여 상기 커서를 추출하되, 상기 2가지 이미지로부터 상기 UI 구성요소의 색상을 추출하여 색상이 동일한 UI 구성요소를 선별하고, 상기 색상이 동일한 UI 구성요소 중 모양과 크기가 유사한 오브젝트가 상기 2가지 이미지에 모두 존재하며, 상기 2가지 이미지에서 상기 리모트 컨트롤 키 값에 따른 오브젝트 좌표 관계가 일치하는 경우 해당 오브젝트를 상기 커서로서 추출하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  7. 제1항에 있어서,
    상기 전처리부는
    상기 레이아웃으로부터 OCR을 통해 텍스트를 읽어 들이고 상기 읽어 들인 텍스트를 레이아웃 이름으로서 출력하고, 상기 커서로부터 OCR을 통해 텍스트를 읽어 들이고 상기 읽어 들인 텍스트를 커서 이름으로서 출력하며,
    상기 주소 생성부는
    상기 조상 주소, 상기 레이아웃 이름 및 상기 커서 이름을 이용하여 상기 UI 화면 각각의 주소 값을 생성하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  8. 제7항에 있어서,
    상기 주소 생성부는
    상기 현재 UI 화면의 레이아웃 이름과 상기 이전 UI 화면의 커서 이름이 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 자식 관계로 판단하고, 상기 자식 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소 + 이전 UI 화면의 레이아웃 이름'으로 결정하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  9. 제7항에 있어서,
    상기 주소 생성부는
    상기 현재 UI 화면의 커서 이름이 상기 이전 UI 화면의 레이아웃 이름과 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 부모 관계로 판단하고, 상기 부모 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소 - 이전 UI 화면의 레이아웃 이름'으로 결정하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  10. 제7항에 있어서,
    상기 주소 생성부는
    상기 현재 UI 화면의 레이아웃 이름이 상기 이전 UI 화면의 레이아웃 이름과 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 형제자매 관계로 판단하고, 상기 현재 UI 화면의 레이아웃 이름 및 커서 이름이 상기 이전 UI 화면의 레이아웃 이름 및 커서 이름과 같은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 동일 관계로 판단하며, 상기 형제자매 관계 또는 상기 동일 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '이전 UI 화면의 조상 주소'로 결정하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  11. 제7항에 있어서,
    상기 주소 생성부는
    상기 현재 UI 화면의 레이아웃 이름 및 커서 이름이 상기 이전 UI 화면의 레이아웃 이름 및 커서 이름과 같지 않은 경우, 상기 현재 UI 화면과 상기 이전 UI 화면 간의 관계를 관련 없는 관계로 판단하며, 상기 관련 없는 관계로 판단됨에 따라 상기 현재 UI 화면의 조상 주소를 '없음'으로 결정하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  12. 현재 UI 화면과 상기 현재 UI 화면으로 이동하기 이전 UI 화면 간의 관계로 결정되는 조상 주소와, UI 화면 각각의 원본 이미지로부터 추출된 레이아웃 및 커서를 이용하여 상기 UI 화면 각각의 주소 값을 생성하는 주소 생성부;
    상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값, 및 상기 현재 UI 화면과 상기 이전 UI 화면 간의 이동 관계를 나타내는 리모트 컨트롤 키 값을 이용하여 UI 네비게이션 맵을 생성하는 맵 생성부; 및
    UI의 종류, 특성, 구성요소 중 적어도 하나를 포함하는 UI 관련 추가 정보를 정의한 추상화 스크립트를 작성하고, 상기 작성된 추상화 스크립트를 이용하여 상기 UI 네비게이션 맵으로부터 상기 UI 관련 추가 정보를 추출하며, 상기 UI 네비게이션 맵에서 제공되는 UI 관련 기본 정보 및 상기 추출된 UI 관련 추가 정보를 이용하여 UI 기능 테스트를 위한 실행 스크립트를 생성하는 추상화 스크립트 관리부
    를 포함하고,
    상기 맵 생성부는
    상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값 및 상기 리모트 컨트롤 키 값에 기반한 너비 우선 탐색을 통해 출발지 주소와 도착지 주소 간의 최단 거리 경로를 추출하고, 상기 최단 거리 경로에 포함된 주소 값 및 리모트 컨트롤 키 값을 이용하여 상기 UI 네비게이션 맵을 생성하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  13. 현재 UI 화면과 상기 현재 UI 화면으로 이동하기 이전 UI 화면 간의 관계로 결정되는 조상 주소와, UI 화면 각각의 원본 이미지로부터 추출된 레이아웃 및 커서를 이용하여 상기 UI 화면 각각의 주소 값을 생성하는 주소 생성부;
    상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값, 및 상기 현재 UI 화면과 상기 이전 UI 화면 간의 이동 관계를 나타내는 리모트 컨트롤 키 값을 이용하여 UI 네비게이션 맵을 생성하는 맵 생성부; 및
    UI의 종류, 특성, 구성요소 중 적어도 하나를 포함하는 UI 관련 추가 정보를 정의한 추상화 스크립트를 작성하고, 상기 작성된 추상화 스크립트를 이용하여 상기 UI 네비게이션 맵으로부터 상기 UI 관련 추가 정보를 추출하며, 상기 UI 네비게이션 맵에서 제공되는 UI 관련 기본 정보 및 상기 추출된 UI 관련 추가 정보를 이용하여 UI 기능 테스트를 위한 실행 스크립트를 생성하는 추상화 스크립트 관리부
    를 포함하고,
    상기 추상화 스크립트 관리부는
    상기 작성된 추상화 스크립트를 입력받는 추상화 스크립트 입력부;
    상기 입력된 추상화 스크립트의 구문을 분석하는 추상화 스크립트 구문 분석부;
    상기 분석된 구문의 실행을 통해 상기 추상화 스크립트를 변환하여 실행 스크립트를 생성하는 구문 실행부;
    상기 생성된 실행 스크립트를 출력하는 실행 스크립트 출력부;
    상기 실행 스크립트의 출력에 연동하여 상기 맵 생성부와 통신하여 해당 UI 네비게이션 맵을 탐색하는 맵 통신부; 및
    기존 작성된 UI 테스트 스크립트와 호환성 유지를 위해 상기 추상화 스크립트를 기존 작성된 UI 테스트 스크립트로 변환하는 기존 스크립트 변환부
    를 포함하는 것을 특징으로 하는 UI 기능 테스트 시스템.
  14. UI 기능 테스트 시스템을 이용한 UI 기능 테스트 방법에 있어서,
    상기 UI 기능 테스트 시스템의 전처리부가 UI 화면 각각의 원본 이미지로부터 불필요한 배경을 제거하고, 상기 불필요한 배경이 제거된 원본 이미지로부터 움직이는 영상을 제거하여 UI 구성요소로 이루어진 고정된 이미지를 추출하며, 상기 고정된 이미지로부터 상기 UI 구성요소에 해당하는 오브젝트를 레이아웃 및 커서로 구분하여 추출하는 단계;
    상기 UI 기능 테스트 시스템의 주소 생성부가 현재 UI 화면과 상기 현재 UI 화면으로 이동하기 이전 UI 화면 간의 관계로 결정되는 조상 주소와, UI 화면 각각의 원본 이미지로부터 추출된 레이아웃 및 커서를 이용하여 상기 UI 화면 각각의 주소 값을 생성하는 단계;
    상기 UI 기능 테스트 시스템의 맵 생성부가 상기 현재 UI 화면의 주소 값, 상기 이전 UI 화면의 주소 값, 및 상기 현재 UI 화면과 상기 이전 UI 화면 간의 이동 관계를 나타내는 리모트 컨트롤 키 값을 이용하여 UI 네비게이션 맵을 생성하는 단계; 및
    상기 UI 기능 테스트 시스템의 추상화 스크립트 관리부가 UI의 종류, 특성, 구성요소 중 적어도 하나를 포함하는 UI 관련 추가 정보를 정의한 추상화 스크립트를 작성하고, 상기 작성된 추상화 스크립트를 이용하여 상기 UI 네비게이션 맵으로부터 상기 UI 관련 추가 정보를 추출하며, 상기 UI 네비게이션 맵에서 제공되는 UI 관련 기본 정보 및 상기 추출된 UI 관련 추가 정보를 이용하여 UI 기능 테스트를 위한 실행 스크립트를 생성하는 단계
    를 포함하는 것을 특징으로 하는 UI 기능 테스트 방법.
KR1020180098535A 2018-08-23 2018-08-23 Ui 기능 테스트 시스템 및 방법 KR102075111B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180098535A KR102075111B1 (ko) 2018-08-23 2018-08-23 Ui 기능 테스트 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180098535A KR102075111B1 (ko) 2018-08-23 2018-08-23 Ui 기능 테스트 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR102075111B1 true KR102075111B1 (ko) 2020-02-07

Family

ID=69570124

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180098535A KR102075111B1 (ko) 2018-08-23 2018-08-23 Ui 기능 테스트 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102075111B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102320231B1 (ko) * 2020-06-17 2021-11-02 (주)커브 다중 시작점이 설정되는 ui 경로 지도 생성 장치 및 방법
KR20210155896A (ko) * 2020-06-17 2021-12-24 (주)커브 최적 ui 경로 지도 탐색 장치 및 방법
KR102343477B1 (ko) * 2020-12-28 2021-12-28 주식회사 앱테스트에이아이 유저 인터페이스 자율 테스트 시스템 및 방법
CN113918460A (zh) * 2021-10-15 2022-01-11 京东科技信息技术有限公司 页面测试方法、装置、设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6769096B1 (en) * 1998-06-24 2004-07-27 Microsoft Corporation System and method for updating a table of contents in a frameset
KR101009424B1 (ko) * 2010-07-01 2011-01-19 주식회사 큐에이엔씨 Gui 소프트웨어 테스트 자동화 방법 및 자동화 장치
KR20150024972A (ko) * 2013-08-27 2015-03-10 에스케이플래닛 주식회사 애플리케이션 검증 시스템, 검증장치, 단말장치, 애플리케이션 검증 방법 및 컴퓨터로 판독 가능한 기록 매체
KR20160100094A (ko) * 2015-02-13 2016-08-23 어니컴 주식회사 스크립트를 이용한 자동 테스트 방법 및 시스템
KR101774815B1 (ko) * 2017-03-07 2017-09-19 주식회사 한글과컴퓨터 커서 위치 인식 테스트 자동화 시스템 및 이를 이용한 커서 위치 인식 테스트자동화 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6769096B1 (en) * 1998-06-24 2004-07-27 Microsoft Corporation System and method for updating a table of contents in a frameset
KR101009424B1 (ko) * 2010-07-01 2011-01-19 주식회사 큐에이엔씨 Gui 소프트웨어 테스트 자동화 방법 및 자동화 장치
KR20150024972A (ko) * 2013-08-27 2015-03-10 에스케이플래닛 주식회사 애플리케이션 검증 시스템, 검증장치, 단말장치, 애플리케이션 검증 방법 및 컴퓨터로 판독 가능한 기록 매체
KR20160100094A (ko) * 2015-02-13 2016-08-23 어니컴 주식회사 스크립트를 이용한 자동 테스트 방법 및 시스템
KR101774815B1 (ko) * 2017-03-07 2017-09-19 주식회사 한글과컴퓨터 커서 위치 인식 테스트 자동화 시스템 및 이를 이용한 커서 위치 인식 테스트자동화 방법

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102320231B1 (ko) * 2020-06-17 2021-11-02 (주)커브 다중 시작점이 설정되는 ui 경로 지도 생성 장치 및 방법
KR20210155896A (ko) * 2020-06-17 2021-12-24 (주)커브 최적 ui 경로 지도 탐색 장치 및 방법
KR102391032B1 (ko) * 2020-06-17 2022-04-25 (주)커브 최적 ui 경로 지도 탐색 장치 및 방법
KR102343477B1 (ko) * 2020-12-28 2021-12-28 주식회사 앱테스트에이아이 유저 인터페이스 자율 테스트 시스템 및 방법
US11567858B2 (en) 2020-12-28 2023-01-31 Apptest.Ai System and method for user interface autonomous testing
CN113918460A (zh) * 2021-10-15 2022-01-11 京东科技信息技术有限公司 页面测试方法、装置、设备和介质

Similar Documents

Publication Publication Date Title
KR102075111B1 (ko) Ui 기능 테스트 시스템 및 방법
US11635944B2 (en) Methods and systems for programmatic creation of an interactive demonstration presentation for an envisioned software product
US10489126B2 (en) Automated code generation
CN109192054B (zh) 一种地图区域合并的数据处理方法及装置
US9182981B2 (en) Systems and methods for implementing pixel-based reverse engineering of interface structure
KR101423536B1 (ko) 인쇄매체 기반 혼합현실 구현 장치 및 방법
RU2637989C2 (ru) Способ и устройство для идентификации целевого объекта на изображении
US10083050B2 (en) User interface usage simulation generation and presentation
JP6641949B2 (ja) ユーザインタラクションを検出、分類及び可視化する方法、システム及びプログラム
CN109978044B (zh) 训练数据生成方法和装置、以及模型的训练方法和装置
WO2019020061A1 (zh) 视频台词处理方法、客户端、服务器及存储介质
KR102356909B1 (ko) 인공지능 학습용 데이터의 객체를 지정하고 속성을 설정하는 어노테이션 방법 및 이를 실행하기 위하여 기록매체에 기록된 컴퓨터 프로그램
CN111813403A (zh) 大屏数据可视化开发中拖拽组件数据管理的方法和装置
CN101292262A (zh) 认知控制框架中的假设的结构性内容过滤
CN113255377A (zh) 一种翻译方法、装置、电子设备及存储介质
US20180336122A1 (en) Generating application flow entities
US20190018660A1 (en) Converting whiteboard images to personalized wireframes
Chen et al. UI layers merger: merging UI layers via visual learning and boundary prior
CN113515922A (zh) 一种文档处理方法、系统、装置以及交互装置
CN113552977A (zh) 数据处理方法、装置、电子设备及计算机存储介质
JP7206632B2 (ja) 2モードネットワークにおけるサブネットワークパターンの視覚的探索のためのシステム及び方法、プログラム
CN111026395B (zh) 一种基于积木编程的多页面交互方法、装置、终端及存储介质
CN113706209B (zh) 运营数据处理方法及相关装置
CN113095342B (zh) 基于误判样本图片的审核模型优化方法、装置及服务器
CN117472251A (zh) 一种文档查看方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant