KR20180058579A - 액티비티 스택에 기반한 테스트 시나리오 생성 방법 - Google Patents

액티비티 스택에 기반한 테스트 시나리오 생성 방법 Download PDF

Info

Publication number
KR20180058579A
KR20180058579A KR1020160157739A KR20160157739A KR20180058579A KR 20180058579 A KR20180058579 A KR 20180058579A KR 1020160157739 A KR1020160157739 A KR 1020160157739A KR 20160157739 A KR20160157739 A KR 20160157739A KR 20180058579 A KR20180058579 A KR 20180058579A
Authority
KR
South Korea
Prior art keywords
activity
application
component
test scenario
intent
Prior art date
Application number
KR1020160157739A
Other languages
English (en)
Other versions
KR101957552B1 (ko
Inventor
이우진
백태산
Original Assignee
경북대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 경북대학교 산학협력단 filed Critical 경북대학교 산학협력단
Priority to KR1020160157739A priority Critical patent/KR101957552B1/ko
Publication of KR20180058579A publication Critical patent/KR20180058579A/ko
Application granted granted Critical
Publication of KR101957552B1 publication Critical patent/KR101957552B1/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/3684Test management for test design, e.g. generating new test cases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

발명의 실시예에 따른 액티비티 스택에 기반한 테스트 시나리오 생성 방법은 순방향 테스트 시나리오를 생성하여 액티비티 스택을 형성하는 단계; 순방향 테스트 시나리오에 대해 액티비티의 태스크에 대응하여 액티비티 스택을 재구성하는 단계; 및 재구성된 액티비티 스택에 대해 역방향의 테스트 시나리오를 형성하는 단계를 포함한다.

Description

액티비티 스택에 기반한 테스트 시나리오 생성 방법{Method for generating a test senario based on activity stack}
본 발명은 액티비티 스택에 기반한 테스트 시나리오 생성 방법에 관한 것으로, 보다 자세하게는 연동되어 동작하는 어플리케이션간에 생성된 테스트 시나리오에 포함되어 있는 경로 중, 실제 실행되지 않는 경로를 검출하고 이를 제거하여 신뢰성이 향상된 액티비티 스택에 기반한 테스트 시나리오 생성 방법에 관한 것이다.
안드로이드 어플리케이션은 기존의 C언어나 Java언어로 구현된 데스크탑 소프트웨어와 달리 main()과 같이 유일한 진입점이 아니라 4개의 컴포넌트가 모두 어플리케이션의 진입점으로 사용된다. 4개의 컴포넌트는 어플리케이션의 GUI의 기본 단위로 사용되는 액티비티, 플랫폼 백그라운드에서 동작되는 서비스, 시스템 또는 다른 어플리케이션에서 발생되는 브로드캐스트 메시지를 수신하는 브로드캐스트 리시버, 특정 폴더내의 데이터 또는 데이터베이스에 접근할 때 사용되는 컨텐츠 프로바이더가 있다.
기존의 어플리케이션간 상호작용 테스팅 기법인 apkCombiner는 어플리케이션 설치 패키지 파일인 apk파일들을 하나의 apk로 병합하고 병합된 소스코드에서 하나의 CFG를 생성한다. 생성된 CFG를 통해 연동되어 동작하는 어플리케이션들의 내부를 분석할 수 있다. 그러나 apk Combiner는 어플리케이션들의 상호작용 부분을 분석하여 연동되는 부분을 추출하고 이를 서로 연결하기 때문에 연동되는 어플리케이션의 수와 각 어플리케이션내의 컴포넌트의 수에 비례하여 처리 시간과 필요한 메모리의 용량이 늘어나게 되는 문제점이 발생된다. 이는 연동되어 동작되는 어플리케이션을 하나로 병합하기 위한 분석 동작 때문으로, 상호작용 분석전 사전처리과정에 더 많은 비용이 소모되는 문제점으로 이어진다.
한국 등록특허 10-1434094
발명의 실시예에 따른 액티비티 스택에 기반한 테스트 시나리오 생성 방법은 연동되어 동작하는 각 어플리케이션에서 컴포넌트 기반의 모델을 생성하고 인텐트 정보를 고려하여 병합된 하나의 모델을 생성하고 생성된 모델로부터 테스트 시나리오를 생성한 후, 이 중 실제로 실행되지 않는 경로를 제외하고 액티비티 스택을 고려한 실제 테스트 시나리오가 실행될 때의 액티비티 스택으로 구성된 테스트 시나리오를 생성하는 것을 목적으로 한다.
발명의 실시예에 따른 액티비티 스택에 기반한 테스트 시나리오 생성 방법은 순방향 테스트 시나리오를 생성하여 액티비티 스택을 형성하는 단계; 순방향 테스트 시나리오에 대해 액티비티의 태스크에 대응하여 액티비티 스택을 재구성하는 단계; 및 재구성된 액티비티 스택에 대해 역방향의 테스트 시나리오를 형성하는 단계를 포함한다.
발명의 실시예에 따른 액티비티 스택에 기반한 테스트 시나리오 생성 방법은 액티비티 스택정보를 함께 고려하여 잘못된 경로가 제거된 테스트 시나리오를 생성함으로써 테스트 시나리오가 어플리케이션에서 실제 실행되는 비율이 약 60% 이상 향상되어 실행 커버리지가 개선될 수 있다.
도 1은 일반적인 안드로이드 환경에서의 어플리케이션의 컴포넌트를 개략적으로 도시하는 개념도이다.
도 2는 발명의 실시예에 따른 어플리케이션의 컴포넌트 기반 모델을 도시한 도면이다.
도 3은 도 2의 어플리케이션의 병합된 순방향 테스트 시나리오를 나타내는 도면이다.
도 4는 발명의 실시예에 따른 어플리케이션의 태스크 정보 목록을 나타내는 도면이다.
도 5는 발명의 실시예에 따른 순방향 테스트 시나리오에 대한 액티비티 스택 정보를 도시한 도면이다.
도 6은 발명의 실시예에 따른 역방향 테스트 시나리오를 나타내는 도면이다.
도 7은 발명의 실시예에 따른 어플리케이션간 상호작용 테스팅을 위한 인텐트 기반의 테스트 시나리오 생성 방법을 나타내는 도면이다.
도 8은 발명의 실시예에 따른 액티비티 스택에 기반한 테스트 시나리오 생성 방법을 나타내는 도면이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서, "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들, 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1은 일반적인 안드로이드 환경에서의 어플리케이션의 컴포넌트를 개략적으로 도시하는 개념도이다. 안드로이드 환경에서의 어플리케이션(100)의 구조에 대해 설명한다. 어플리케이션(100)의 컴포넌트는 크게 사용자의 눈에 보이며 사용자와 상호작용을 하는 컴포넌트와 사용자의 눈에 보이지 않고 백그라운드에서 실행되는 컴포넌트로 나눌 수 있다.
눈에 보이는 컴포넌트에는 액티비티(Activity)(110)가 있고, 눈에 보이지 않는 컴포넌트, 즉 백그라운드에서 실행되는 컴포넌트에는 컨텐트 프로바이더(Content provider)(120), 서비스(Service)(130), 브로드캐스트 리시버(Broadcast receiver)(140)가 있다.
어플리케이션(100)은 이들 컴포넌트로 구성되며, 구성요소 즉 각각의 컴포넌트를 사용하기 위해서는 각 컴포넌트를 호출해야 하는데, 이를 위해 인텐트(Intent)를 사용한다.
각 컴포넌트 내에 존재하는 인텐트 필터(Intent-Filter)는 각 컴포넌트가 호출될 수 있는 조건을 담고 있다. 각각의 컴포넌트에 대해 살펴보면, 액티비티(Activity)(110)는 사용자가 착수할 수 있는 하나의 포커스된 시도에 대한 비주얼 사용자 인터페이스를 나타낸다. 즉, 어플리케이션의 "한 화면"을 뜻한다. 전화번호부 어플리케이션을 예로 들자면 전화번호부를 조회하는 화면, 전화번호를 새로 추가하는 화면, 입력된 데이터를 수정하는 화면 등이 하나의 액티비티가 된다.
액티비티(110)는 어플리케이션(100)의 컴포넌트에서 사용자의 입력을 받고 사용자에게 그 결과를 보여주는 등 실질적으로 사용자와 상호작용을 하는 역할을 맡고 있다. 하나의 어플리케이션은 하나의 액티비티로 구성할 수도 있고, 여러 개의 액티비티를 포함할 수도 있다.
서비스(130)는 앞에서 설명한 바와 같이, 화면에 표시되며 사용자와 직접 상호작용을 하는 액티비티(110)와는 달리, 화면에 표시되지 않고 백그라운드에서 실행되는 컴포넌트로서, 미디어 플레이어 액티비티가 그 예이다. 미디어 플레이어 액티비티가 스크린에서 사라지면, 이와 동시에 미디어 플레이어 액티비티는 더 이상 사용자와 상호작용을 하지 못하므로 비활성화 상태(Inactive)가 되므로 음악 재생이 중지된다.
그러나, 음악을 재생하는 어플리케이션은 해당 어플리케이션이 화면에 표시되고 있지 않을 때, 즉 사용자와 상호작용을 하지 않고 있더라도 백그라운드에서 계속 음악을 재생할 수 있어야 한다. 따라서, 일반적으로 음악 재생 어플리케이션에서 음악을 재생하는 부분은 서비스(130)에 의해 구현되어 사용자와 상호작용이 중단되더라도 지속적으로 음악을 재생할 수 있게 된다.
컨텐트 프로바이더(Content Provider)(120)는 어플리케이션(100) 내의 데이터 예컨대 전화번호부, 메모를 다른 어플리케이션과 공유할 수 있도록 한다.
어플리케이션 내의 데이터들은 기본적으로 해당 어플리케이션에서만 접근할 수 있고, 다른 어플리케이션은 접근할 수 없다. 따라서, 특정 어플리케이션 내의 데이터를 다른 어플리케이션에서도 접근할 수 있게 하기 위해 컨텐트 프로바이더(120)를 정의하여 다른 어플리케이션에서 해당 데이터에 접근할 수 있는 범위, 방식 등을 정의해주어야 한다. 즉, 컨텐트 프로바이더(120)는 어플리케이션의 데이터에 접근하는 통로가 된다.
일반적으로 컨텐트 프로바이더(120)를 이용하여 데이터를 공유할 어플리케이션에서 공유하고 싶은 데이터만을 선택하여 지정하는데, 이 과정에서 해당 컨텐트 프로바이더로 접근할 수 있는 고유의 주소를 정의하게 되며, 컨텐트 리졸버(Content Resolver)에 이 주소를 넘겨서 공유된 데이터에 접근할 수 있게 한다.
안드로이드 어플리케이션은 인텐트를 이용하여 다른 어플리케이션의 컴포넌트를 호출하여 실행시킬 수 있으며, 안드로이드에서 '인텐트'라 하면 일반적으로 인텐트 객체를 뜻한다. 인텐트 객체는 안드로이드 어플리케이션 내의 컴포넌트를 호출하기 위한 여러 정보들을 담고 있다. 또한, 어플리케이션 호출 외에도 호출된 액티비티가 자신을 호출한 액티비티에게 결과값 등을 전달할 때에도 인텐트 객체에 데이터를 담아 전달한다.
호출 대상 컴포넌트의 이름이 명시되어 있는 인텐트, 즉 어떤 것을 호출해야 할지 명시되어 있는 인텐트를 명시적 인텐트(Explicit Intent)라 하고, 호출 대상 컴포넌트가 정확히 정해진 것이 아니라 호출 대상 컴포넌트의 특성만 나열되어 있는 인텐트를 암시적 인텐트(Implicit Intent)라 한다.
명시적 인텐트인 경우, 인텐트 객체 생성자의 첫번째 인자는 호출하는 컴포넌트의 컨텍스트 객체를 의미하며, getApplicationContext() 메소드를 통해 어플리케이션의 컨텍스트를 넘겨주는 것도 가능하다. 인텐트를 생성한 후, startActivity() 혹은 startService() 등의 메소드를 호출하여 해당 컴포넌트를 호출할 수 있다.
암시적 인텐트는 호출할 컴포넌트를 정확히 아는 것이 아니라 인텐트 객체 내에 호출 대상 컴포넌트를 찾을 수 있는 정보들만 포함한다. 인텐트 객체 내의 이러한 정보들은 호출 대상 컴포넌트가 "어떤 작업을 처리할 수 있는지", "어떤 유형의 데이터를 처리할 수 있는지", "처리할 데이터가 있는 주소"를 포함한다. 암시적 인텐트(Implicit Intent)를 처리하려면 인텐트 객체에 들어 있는 여러 정보를 바탕으로 가장 적절한 컴포넌트를 찾는 인텐트 해석(Intent Resolving)과정을 거쳐야 한다.
이 과정에서 인텐트 객체의 정보와 각 컴포넌트의 정보를 비교하게 되며, 이를 위해 각 컴포넌트는 자신이 받을 수 있는 인텐트의 종류를 메니페스트 파일인 AndroidManfest.xml 파일의 각 컴포넌트 태그 내에 정의해 두어야 한다. 이를 인텐트 필터(Intent Filter)라 한다.
인텐트 필터는 인텐트 객체 내의 정보들을 바탕으로 인텐트를 필터링하기 위해 인텐트 객체 내의 정보들을 바탕으로 자신이 받을 수 있는 정보들을 정의하고, 필터링된 인텐트는 해당 컴포넌트가 수용한다. 이하에서는 인텐트를 기반으로 어플리케이션간의 상호작용 테스트를 위한 시나리오 생성 방법에 관해 설명한다.
도 2는 발명의 실시예에 따른 어플리케이션의 컴포넌트 기반 모델을 도시한 도면이고, 도 3은 도 2의 어플리케이션의 병합된 순방향 테스트 시나리오를 나타내는 도면이다.
도 2에 도시된 바와 같이 연동되어 동작하는 어플리케이션 A 및 어플리케이션 B에 대한 모델은 상호작용 테스트 시나리오 생성 기법을 이용하여 생성하고, 모델로부터 도 3과 같은 순방향 테스트 시나리오가 생성된다.
도시된 바와 같이, 테스트 시나리오마다 상이한 액티비티가 사용된다. 순방향 테스트 시나리오가 진행되는 순서대로 액티비티가 액티비티 스택에 적재된다.
순방향은 액티비티의 번호로 기준이 정해지는 것으로, 어플리케이션 A의 액티비티가 번호 순서대로 생성되고, 이후 어플리케이션 B의 액티비티가 번호 순서대로 생성되어 적재된다.
도 4는 발명의 실시예에 따른 어플리케이션의 태스크 정보 목록을 나타내는 도면이다. 액티비티가 적재될 때 소스코드내의 인텐트 플래그 정보와 안드로이드 매니패스트 파일의 launchMode 정보(standard, singlTop, singleInstance, singleTask)와 같은 태스크 정보에 따라 적재 순서가 변화하게 된다.
도 4에 도시된 바와 같이, 액티비티 A2, A4 및 B3은 런치 모드에서는 스탠다드(standard)로 동작하나, 라이프사이클(lifecycle)에서는 종료(finish)된다.
또한, 액티비티 B4는 런치 모드에서는 싱글 테스크(single task)로 동작하나, 라이프사이클(lifecycle)에서는 종료(finish)된다. 또한, 액티비티 B5는 런치 모드에서는 싱글 인스탠스(single instance)로 동작하나, 라이프사이클(lifecycle)에서는 종료(finish)된다. 이는 어플리케이션들의 태스크(Task) 정보 목록의 일예를 나타낸 것으로 이에 대해 한정하는 것은 아니다.
도 5는 발명의 실시예에 따른 순방향 테스트 시나리오에 대한 액티비티 스택 정보를 도시한 도면이고, 도 6은 발명의 실시예에 따른 역방향 테스트 시나리오를 나타내는 도면이다.
순방향 테스트 시나리오에 대한 액티비티 스택을 태스크 정보를 고려하였을때와 고려하지 않았을 때의 상태는 도 5와 같다. 도 5의 각 테스트 시나리오에서 점선의 왼쪽은 액티비티 스택을 고려하지 않았을 때의 예상되는 액티비티 스택, 점선의 오른쪽은 액티비티 스택을 고려한, 실제 테스트 시나리오가 실행될때의 액티비티 스택의 상태를 도시한다.
구체적으로, 테스트 시나리오(Test Sinario: TS) 1에서는 아래에서부터 액티비티 A1, A2, A3 및 A5의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, A2는 라이프 사이클에서 종료되고, A3는 싱글 인스탠스이므로 단일 층으로 적재되어 다른 액티비티와 구별된다. 따라서 A5가 A1 위에 적재되고, A3가 단일 층으로 적재된다.
또한, TS 2에서는 액티비티 A1, A2, A3 및 A4의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, A2는 라이프 사이클에서 종료되고, A3는 싱글 인스탠스이므로 단일 층으로 적재되어 다른 액티비티와 구별된다. 따라서 A4가 A1 위에 적재되고, A3가 단일 층으로 적재된다.
또한, TS 4에서는 액티비티 A3 및 A5의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, A3는 싱글 인스탠스이므로 단일 층으로 적재되고, A5는 싱글 탑(single top)이므로 A3가 단일 층으로 적재되고, A5가 옆에 적재된다.
또한, TS 5에서는 액티비티 A3 및 A5의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, A3는 싱글 인스탠스이므로 단일 층으로 적재되고, A5는 싱글 탑(single top)이므로 A3가 단일 층으로 적재되고, A5가 옆에 적재된다.
또한, TS 7에서는 아래에서부터 액티비티 B1, B2 및 B3의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, B2는 런치 모드에서 싱글 탑이고, B3는 스탠다드이므로 순서대로 적재된다.
또한, TS 9에서는 아래에서부터 액티비티 B1, B2 및 B5의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, B5는 런치 모드에서 싱글 인스탠스이므로 B1 및 B2 층 옆에 단일 층으로 적재된다.
또한, TS 3-1에서는 아래에서부터 액티비티 A1, A2, A3, B2 및 B3의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, A2는 라이프 사이클에서 종료되고, A3는 싱글 인스탠스이므로 단일 층으로 적재되어 다른 액티비티와 구별된다. 따라서 A1, B2 및 B3 순으로 적재되고, 그 옆에 A3가 단일 층으로 적재된다.
또한, TS 3-3에서는 아래에서부터 액티비티 A1, A2, A3, B2 및 B5의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, A2는 라이프 사이클에서 종료되고, A3 및 B5는 싱글 인스탠스이므로 단일 층으로 적재되어 다른 액티비티와 구별된다. 따라서 A1, B2 순으로 적재되고, 그 옆에 A3과 B5가 각각 단일 층으로 적재된다.
또한, TS 6-1에서는 아래에서부터 액티비티 A2, B2 및 B3의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, A3은 싱글 인스탠스이므로 단일 층으로 적재되어 다른 액티비티와 구별된다. 따라서 A3 단일층 및 그 옆에 적층된 B2 및 B3가 위치한다.
또한, TS 6-2에서는 아래에서부터 액티비티 A3, B2 및 B4의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, A3은 싱글 인스탠스이므로 단일 층으로 적재되어 다른 액티비티와 구별된다. 따라서 A3 단일층 및 그 옆에 적층된 B2 및 B4가 위치한다.
또한, TS 6-3에서는 아래에서부터 액티비티 A3, B2 및 B5의 순으로 적재된다. 도 4의 어플리케이션의 태스크 정보 목록을 참고하면, A3 및 B5은 싱글 인스탠스이므로 단일 층으로 적재되어 다른 액티비티와 구별된다. 따라서 A3 단일층, B2 단일층 및 B5 단일층이 위치한다.
상기에서 검토한 액티비티 스택 정보와 관련된 테스트 시나리오에 대한 역방향 테스트 시나리오를 생성하면 도 6과 같다. 생성된 순방향 테스트 시나리오와 역방향 테스트 시나리오를 병합하여 하나의 통합 상호작용 테스트 시나리오를 생성 할 수 있다.
처음으로, 어플리케이션의 컴포넌트 정보와 인텐트 목록을 추출한다(S100).
이를 위해, 각 어플리케이션의 설치파일인 APK(Android application PacKage) 파일에서 Java 바이트 코드 분석 도구인 soot을 이용하여 Dalvik 바이트 코드를 역컴파일 변환하고 Java 바이트 코드를 생성하여 어플리케이션의 컴포넌트 정보와 인텐트 목록을 추출한다.
APK 파일은 어플리케이션에 대한 정보 및 실행권한 등의 정보를 담고 있는 AndroidManifest.xml 파일과 Dalvik 가상머신에서 동작하는 바이트코드인 classes.dex 파일 등으로 구성되어 있는데, 바이트코드 분석 도구인 soot API를 활용하여 apk내의 androidManifest.xml 파일과 classes.dex 파일을 분석 가능한 자바 바이트 코드로 변환한다.
다음으로, 추출한 컴포넌트 정보와 인텐트 목록을 이용하여 각 어플리케이션의 컴포넌트 다이어그램을 생성한다(S200). 즉, 변환된 자바 바이트 코드로부터 컴포넌트들 간의 호출 정보를 추출하여 안드로이드 컴포넌트 기반의 다이어그램을 생성한다.
다음으로, 인텐트 목록에서 어플리케이션 외부의 컴포넌트를 호출하는 인텐트 정보를 고려하여 각각의 컴포넌트 다이어그램에서 병합된 하나의 컴포넌트 다이어그램을 생성한다(S300). 다음으로, 병합하여 생성된 컴포넌트 다이어그램에서 어플리케이션 상호작용 테스팅을 위한 테스트 시나리오를 추출한다(S400).
도 8은 발명의 실시예에 따른 액티비티 스택에 기반한 테스트 시나리오 생성 방법을 나타내는 도면이다.
처음으로, 액티비티 스택을 고려하지 않고 순방향 태스트 시나리오를 생성하여 액티비티 스택을 형성한다(S500). 이는 상기 도 7의 과정을 참조하여 형성될 수 있다.
다음으로, 순방향 태스트 시나리오에 대해 액티비티의 태스크를 고려하여 액티비티 스택을 재구성한다. 다음으로 상기 액티비티에 대해 역방향의 테스트 시나리오를 형성한다.
기존의 상호작용 테스트 시나리오 생성 기법에서 고려하지 않았던 액티비티 스택정보를 함께 고려하여 잘못된 경로가 제거된 테스트 시나리오를 생성함으로써, 생성된 테스트 시나리오가 어플리케이션에서 실제 실행되는 비율이 약 60% 이상 향상됨을 확인할 수 있다.
상술한 실시예에 설명된 특징, 구조, 효과 등은 본 발명의 적어도 하나의 실시예에 포함되며, 반드시 하나의 실시예에만 한정되는 것은 아니다. 나아가, 각 실시예에서 예시된 특징, 구조, 효과 등은 실시예들이 속하는 분야의 통상의 지식을 가지는 자에 의하여 다른 실시예들에 대해서도 조합 또는 변형되어 실시 가능하다.
따라서 이러한 조합과 변형에 관계된 내용들은 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다. 또한, 이상에서 실시예들을 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시예들에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부한 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
110: 액티비티
120: 컨텐트 프로바이더
130: 서비스
140: 브로드캐스트 리시버

Claims (5)

  1. 순방향 태스트 시나리오를 생성하여 액티비티 스택을 형성하는 단계;
    상기 순방향 태스트 시나리오에 대해 액티비티의 태스크를 고려하여 액티비티 스택을 재구성하는 단계; 및
    상기 재구성된 액티비티 스택에 대해 역방향의 테스트 시나리오를 형성하는 단계를 포함하는 것을 특징으로 하는 액티비티 스택에 기반한 테스트 시나리오 생성 방법.
  2. 제1항에 있어서,
    상기 순방향 테스트 시나리오를 생성하는 단계는,
    어플리케이션의 컴포넌트 정보와 인텐트 목록을 추출하는 단계;
    상기 추출한 컴포넌트 정보와 인텐트 목록을 이용하여 각 어플리케이션의 컴포넌트 다이어그램을 생성하는 단계; 및
    상기 컴포넌트 다이어그램에서 외부의 컴포넌트를 호출하는 인텐트 정보를 고려하여 병합된 컴포넌트 다이어그램을 생성하는 단계를 포함하는 것을 특징으로 하는 액티비티 스택에 기반한 테스트 시나리오 생성 방법.
  3. 제1항에 있어서,
    상기 액티비티 스택을 재구성하는 단계는,
    상기 액티비티의 런치모드와 라이프사이클에 대응하여 재구성 하는 것을 특징으로 하는 액티비티 스택에 기반한 테스트 시나리오 생성 방법.
  4. 제3항에 있어서,
    상기 런치모드가 싱글 인스탠스인 경우, 해당 액티비티는 단일 층으로 스택을 구성하는 단계를 포함하는 것을 특징으로 하는 액티비티 스택에 기반한 테스트 시나리오 생성 방법.
  5. 제3항에 있어서,
    제1 액티비티의 라이프사이클이 종료이고, 제1 액티비티 이후에 후속하는 제2 액티비티가 존재하는 경우, 상기 제1 액티비티를 삭제하는 단계를 포함하는 것을 특징으로 하는 액티비티 스택에 기반한 테스트 시나리오 생성 방법.

KR1020160157739A 2016-11-24 2016-11-24 액티비티 스택에 기반한 테스트 시나리오 생성 방법 KR101957552B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160157739A KR101957552B1 (ko) 2016-11-24 2016-11-24 액티비티 스택에 기반한 테스트 시나리오 생성 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160157739A KR101957552B1 (ko) 2016-11-24 2016-11-24 액티비티 스택에 기반한 테스트 시나리오 생성 방법

Publications (2)

Publication Number Publication Date
KR20180058579A true KR20180058579A (ko) 2018-06-01
KR101957552B1 KR101957552B1 (ko) 2019-03-12

Family

ID=62634851

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160157739A KR101957552B1 (ko) 2016-11-24 2016-11-24 액티비티 스택에 기반한 테스트 시나리오 생성 방법

Country Status (1)

Country Link
KR (1) KR101957552B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10680970B1 (en) * 2017-04-27 2020-06-09 EMC IP Holding Company LLC Stack-based resource management system and method for a distributed computing environment
CN113220307A (zh) * 2021-06-08 2021-08-06 中航机载系统共性技术有限公司 一种代码覆盖分析的优化方法、装置及电子设备
KR102343477B1 (ko) * 2020-12-28 2021-12-28 주식회사 앱테스트에이아이 유저 인터페이스 자율 테스트 시스템 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101162426A (zh) * 2007-11-15 2008-04-16 中兴通讯股份有限公司 基于数据驱动的测试用例设计测试方法及自动测试平台
KR20120107193A (ko) * 2011-03-21 2012-10-02 엔에이치엔비즈니스플랫폼 주식회사 키워드에 기반하여 웹 서비스의 테스트를 자동적으로 수행하는 시스템 및 방법
KR101434094B1 (ko) 2013-03-18 2014-08-26 한양대학교 에리카산학협력단 안드로이드 플랫폼에서 인텐트 모니터링을 통한 유해 어플리케이션 차단 방법
KR20140145259A (ko) * 2013-06-12 2014-12-23 한국전자통신연구원 컴포넌트 기반 시스템의 이상 상태 분석 장치 및 그 방법
KR20150069455A (ko) * 2013-12-13 2015-06-23 경북대학교 산학협력단 테스트 시나리오 생성 장치, 그를 포함하는 애플리케이션 테스트 시스템, 테스트 시나리오 생성 방법, 및 그 기록매체

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101162426A (zh) * 2007-11-15 2008-04-16 中兴通讯股份有限公司 基于数据驱动的测试用例设计测试方法及自动测试平台
KR20120107193A (ko) * 2011-03-21 2012-10-02 엔에이치엔비즈니스플랫폼 주식회사 키워드에 기반하여 웹 서비스의 테스트를 자동적으로 수행하는 시스템 및 방법
KR101434094B1 (ko) 2013-03-18 2014-08-26 한양대학교 에리카산학협력단 안드로이드 플랫폼에서 인텐트 모니터링을 통한 유해 어플리케이션 차단 방법
KR20140145259A (ko) * 2013-06-12 2014-12-23 한국전자통신연구원 컴포넌트 기반 시스템의 이상 상태 분석 장치 및 그 방법
KR20150069455A (ko) * 2013-12-13 2015-06-23 경북대학교 산학협력단 테스트 시나리오 생성 장치, 그를 포함하는 애플리케이션 테스트 시스템, 테스트 시나리오 생성 방법, 및 그 기록매체

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10680970B1 (en) * 2017-04-27 2020-06-09 EMC IP Holding Company LLC Stack-based resource management system and method for a distributed computing environment
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
CN113220307A (zh) * 2021-06-08 2021-08-06 中航机载系统共性技术有限公司 一种代码覆盖分析的优化方法、装置及电子设备
CN113220307B (zh) * 2021-06-08 2022-02-22 中航机载系统共性技术有限公司 一种代码覆盖分析的优化方法、装置及电子设备

Also Published As

Publication number Publication date
KR101957552B1 (ko) 2019-03-12

Similar Documents

Publication Publication Date Title
Balasubramanian et al. System programming in rust: Beyond safety
US8954929B2 (en) Automatically redirecting method calls for unit testing
US8245186B2 (en) Techniques for offering and applying code modifications
Davis et al. I-arm-droid: A rewriting framework for in-app reference monitors for android applications
JP4950454B2 (ja) テスト自動化のスタック階層化
US8615750B1 (en) Optimizing application compiling
US8572591B2 (en) Dynamic adaptive programming
US20030191559A1 (en) System and method for generating a set of robot commands based on user entry events in a user interface
US10209968B2 (en) Application compiling
US9524175B2 (en) Target typing of overloaded method and constructor arguments
US8429648B2 (en) Method and apparatus to service a software generated trap received by a virtual machine monitor
US8768682B2 (en) ISA bridging including support for call to overidding virtual functions
US10042658B1 (en) Automatically adding bytecode to a software application to determine network communication information
US9075601B1 (en) Providing a scripting interface to existing code
KR101957552B1 (ko) 액티비티 스택에 기반한 테스트 시나리오 생성 방법
KR101691063B1 (ko) 콜백을 이용하는 isa 브리징
US8479177B2 (en) Attribute based method redirection
CN107766252A (zh) 测试脚本自动化执行方法、装置、设备以及存储介质
US20240143739A1 (en) Intelligent obfuscation of mobile applications
CN104699547A (zh) JavaEE应用类加载冲突分析方法和装置
US7877640B2 (en) Method and system for providing enhanced exception messages for exceptions thrown by virtual machines
US20090249021A1 (en) Method And Systems For Invoking An Advice Operation Associated With A Joinpoint
US20100058305A1 (en) Automatic Generation of Language Bindings for Libraries Using Data from Compiler Generated Debug Information
KR101768428B1 (ko) 어플리케이션간 상호작용 테스팅을 위한 인텐트 기반의 테스트 시나리오 생성 방법
CN113168320A (zh) 用类选择性替换遗留加载模块程序以在java虚拟机中执行

Legal Events

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