[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20140033580A - Method for generating activity based state diagram of android applications - Google Patents

Method for generating activity based state diagram of android applications Download PDF

Info

Publication number
KR20140033580A
KR20140033580A KR1020120098576A KR20120098576A KR20140033580A KR 20140033580 A KR20140033580 A KR 20140033580A KR 1020120098576 A KR1020120098576 A KR 1020120098576A KR 20120098576 A KR20120098576 A KR 20120098576A KR 20140033580 A KR20140033580 A KR 20140033580A
Authority
KR
South Korea
Prior art keywords
activity
state diagram
android
generating
application
Prior art date
Application number
KR1020120098576A
Other languages
Korean (ko)
Other versions
KR101416065B1 (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 KR1020120098576A priority Critical patent/KR101416065B1/en
Publication of KR20140033580A publication Critical patent/KR20140033580A/en
Application granted granted Critical
Publication of KR101416065B1 publication Critical patent/KR101416065B1/en

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing

Landscapes

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

Abstract

The present invention relates to a method for generating an activity based state diagram of android applications which is a preceding step of creating scenarios for GUI testing of android applications. The method comprises the steps of: performing reverse engineering for a source of the applications; generating a state diagram focused on activity for the result of the reverse engineering performed; and adding a life cycle of the activity to the state diagram.

Description

안드로이드 어플리케이션의 액티비티 기반 상태도 생성방법{Method for generating activity based state diagram of android applications}A method for generating an activity-based state of an Android application

본 발명은 안드로이드 어플리케이션을 역공학을 통하여 생성되는 정보에 안드로이드 액티비티(activity) 정보를 고려하여 테스트 케이스를 생성하기 위한 액티비티 기반의 상태도 생성 방법에 관한 것이다. The present invention relates to an activity-based state diagram generation method for generating a test case by taking information on activity generated by reverse engineering an Android application into information.

안드로이드를 기반으로 하는 스마트폰의 보급률이 상승하고 안드로이드 OS 활용범위가 사회 전반으로 넓어지고 있는 추세이다. 다양한 기기에 적용이 되고 이와 함께 다양한 기능을 하는 안드로이드 어플리케이션이 하루가 다르게 출시되고 있다. The penetration rate of smartphones based on Android is rising and the range of application of Android OS is spreading to society as a whole. The Android application that has been applied to various devices and has various functions is being released one day differently.

그러나, 어플리케이션에서 발생한 문제점은 안드로이드 OS에 영향을 줄 수 있으므로 개발자가 개바단계에서 미리 자체 테스트를 통하여 잠재된 문제점을 발견하여 품질 향상을 위해 소프트웨어 테스팅 도구에 대한 연구 개발이 필요하다. 안드로이드 어플리케이션은 기존의 자바 어플리케이션과는 다른 구조를 가지고 있으며, 모바일 디바이스와 같이 제한된 하드웨어 환경에서 동작하도록 최적화되어 있다. However, since the problems that occur in the application may affect the Android OS, it is necessary for the developer to research and develop a software testing tool in order to improve the quality by discovering potential problems through self test in advance. Android applications have a different structure from traditional Java applications and are optimized to work in limited hardware environments such as mobile devices.

안드로이드는 테스팅을 위하여 JUnit[1], Monkey[2], MonkeyRunner[3]의 세가지를 기본적으로 제공하고 있다. 안드로이드의 단위 테스트를 위해서는 JUnit을 지원한다. 다만, 기존 JVM에서 수행하던 JUnit을 수행하는 것은 타겟에서 수행하는 것에 대한 보장을 하지 못하므로, Androiod Test Case Class를 별도로 제공하고 있다. Android provides three basic JUnit [1], Monkey [2], and MonkeyRunner [3] for testing. JUnit is supported for unit testing of Android. However, since JUnit that is executed in existing JVM can not guarantee the target, it provides Androiod Test Case Class separately.

또한, 단순한 API를 테스트하는 것 외에 Instrumentation based testing 기법을 제공하고 있다. 사용자의 행위에 대한 내용을 코드로 표현하여 기능 테스트를 한다. Monkey는 안드로이드의 무작위 이벤트를 타겟에 보내 에러가 발생하는지 또는 어느 정도의 시간을 버티는지를 테스트하는 스트레스 테스트를 할 수 있다. MonkeyRunner는 액션 좌표값과 액션 이벤트를 Jython으로 스크립트 형태의 코드를 제작하여 기능 테스트를 할 수 있는 도구이다. In addition to testing simple APIs, it also provides instrumentation based testing techniques. The function test is performed by expressing the contents of the user's behavior in code. Monkey can send a random event from Android to the target to perform a stress test that tests whether an error occurs or how long it takes. MonkeyRunner is a tool that allows you to create scripted code with Jython for action coordinates and action events.

안드로이드 소프트웨어는 4개의 컴포넌트로 구성되어 있다. 4개의 컴포넌트는 액티비티, 서비스, Broadcast Receiver, Content Provider이다. 안드로이드는 메인함수와 같은 유일한 진입점이 따로 있는 것이 아니며 처음으로 생성되는 인스턴스 생성자가 실질적인 진입점 역할을 한다. 컴포넌트 중 본 발명에서 사용되는 액티비티는 안드로이드 어플리케이션을 구성하는 가장 기본적인 빌딩블록으로 한 화면을 차지하면서 뷰로 구성되는 유저 인터페이스를 화면에 표시하고 사용자의 입력을 처리하는 역할을 수행하고 하나의 어플리케이션은 여러 개의 다른 화면을 구성하는 서로 다른 액티비티로 구성된다. Android software consists of four components. The four components are activities, services, Broadcast Receivers, and Content Providers. Android does not have a unique entry point like the main function, and the first instance constructor is the actual entry point. Among the components, the activity used in the present invention is a basic building block constituting the Android application, displaying a user interface constituted by a view while occupying a screen, processing a user's input, It consists of different activities that constitute different screens.

종래의 연구된 모바일 소프트웨어 테스팅 방법들로는 액티비티라는 특성을 가진 안드로이드 어플리케이션에 대한 테스팅이 할 수 없는 문제가 있었다. Conventional mobile software testing methods have had a problem that can not be tested for an Android application having a property called an activity.

본 발명은 안드로이드용 어플리케이션의 GUI 테스팅하기 위하여 시나리오를 작성하기 이전의 단계로서, 안드로이드 특성의 액티비티 기반으로 상태도를 생성하는 방법을 제안하고자 한다. The present invention proposes a method for generating a state diagram based on an activity characteristic of Android characteristics before a scenario is created for GUI testing of an application for Android.

특히, 기기에 디스플레이되는 화면단위인 액티비티를 기반으로 상태도를 작성하고, 이러한 액티비티의 라이프 사이클을 추가함으로써 추후 작성되는 시나리오에 완벽을 기하고, 어플리케이션의 안정적인 GUI 테스팅이 이루어지도록 하는 것을 목적으로 한다. In particular, the goal is to create a state diagram based on an activity, which is a screen unit displayed on the device, and to add life cycle of such activity to perfect the scenario to be created later, and to perform stable GUI testing of the application.

본 발명은 안드로이드 어플리케이션의 GUI 테스팅을 위한 시나리오를 작성하기 이전의 단계인, 안드로이드 어플리케이션의 액티비티 기반 상태도를 생성하는 방법으로서, 어플리케이션의 소스에 대한 역공학이 수행되는 단계; 상기의 수행된 역공학의 결과에 대해서, 액티비티를 중심으로 상태도를 생성하는 단계; 및 상기의 상태도에 상기 액티비티의 라이프 사이클을 추가하는 단계;를 포함한다. The present invention relates to a method for generating an activity-based state diagram of an Android application, which is a step prior to creating a scenario for GUI testing of an Android application, comprising: performing reverse engineering of an application source; Generating a state diagram based on the activity for the result of the reverse engineering performed as described above; And adding a life cycle of the activity to the state diagram.

또한, 상기 액티비티의 라이프 사이클을 추가하는 단계는, 상기 각각의 액티비티에 대해 피니시(finish) 함수가 존재하는지 여부를 체크하는 단계와, 상기 액티비티에 피니시 함수가 포함되는 경우에는 전전단계(N-2)로 이동하는 이벤트 백을 추가하고, 상기 액티비티에 피니시 함수가 포함되지 않은 경우에는 전단계(N-1)로 이동하는 이벤트 백을 추가하는 단계를 포함한다. The adding of the life cycle of the activity may include checking whether a finish function exists for each of the activities, and if the activity includes a finish function, the previous step (N-2). Adding an event bag moving to), and adding an event bag moving to the previous step (N-1) when the activity function is not included in the activity.

액티비티는 각각의 라이프 사이클을 가지고 있어야 하며, 이벤트 백(백키 이벤트)을 라이프 사이클의 예로 설명하였다. 이와 같은 액티비티 라이프 사이클이 추가된 상태도를 자동으로 생성함으로써, 추후 작성하게 될 시나리오의 완벽을 기할 수 있게 된다. Activities must have their own lifecycles and describe event backs (backyck events) as examples of life cycles. By automatically generating a state diagram to which such an activity life cycle is added, it is possible to complete the scenario to be created later.

도 1은 안드로이드 어플리케이션의 테스트 케이스 생성 절차를 보여주는 도면이다.
도 2는 본 실시예에 따라 어플리케이션의 소스 코드를 역공학을 통하여 도출되는 호출 그래프를 설명하기 위한 도면이다.
도 3은 본 실시예에 따라 도출된 호출 그래프를 액티비티 기반으로 간소화한 상태도를 설명하기 위한 도면이다.
도 4는 본 실시예에 따라 액티비티 라이프 사이클이 추가된 액티비티 기반의 상태도를 설명하기 위한 도면이다.
도 5는 액티비티 라이프 사이클을 설명하기 위한 도면이다.
1 is a diagram showing a test case generation procedure of an Android application.
2 is a diagram for explaining a call graph derived through reverse engineering the source code of an application according to the present embodiment.
FIG. 3 is a diagram for explaining a state diagram in which a call graph derived according to the present embodiment is simplified based on activities.
4 is a view for explaining an activity-based state diagram to which an activity life cycle is added according to the present embodiment.
5 is a diagram for explaining an activity life cycle.

이하에서는, 본 실시예에 대하여 첨부되는 도면을 참조하여 상세하게 살펴보도록 한다. 다만, 본 실시예가 개시하는 사항으로부터 본 실시예가 갖는 발명의 사상의 범위가 정해질 수 있을 것이며, 본 실시예가 갖는 발명의 사상은 제안되는 실시예에 대하여 구성요소의 추가, 삭제, 변경 등의 실시변형을 포함한다고 할 것이다. Hereinafter, the present embodiment will be described in detail with reference to the accompanying drawings. It should be understood, however, that the scope of the inventive concept of the present embodiment can be determined from the matters disclosed in the present embodiment, and the spirit of the present invention possessed by the present embodiment is not limited to the embodiments in which addition, Variations.

도 1은 안드로이드 어플리케이션의 테스트 케이스 생성 절차를 보여주는 도면이고, 도 2는 본 실시예에 따라 어플리케이션의 소스 코드를 역공학을 통하여 도출되는 호출 그래프를 설명하기 위한 도면이고, 도 3은 본 실시예에 따라 도출된 호출 그래프를 액티비티 기반으로 간소화한 상태도를 설명하기 위한 도면이고, 도 4는 본 실시예에 따라 액티비티 라이프 사이클이 추가된 액티비티 기반의 상태도를 설명하기 위한 도면이다. 그리고, 도 5는 액티비티 라이프 사이클을 설명하기 위한 도면이며, 이하에서는, 실시예에 따라 액티비티 기반의 상태도를 생성하는 방법을 도면과 함께 설명하여 본다. FIG. 1 is a diagram illustrating a test case generation procedure of an Android application. FIG. 2 is a diagram illustrating a call graph derived through reverse engineering of an application source code according to an embodiment of the present invention. FIG. 4 is a view for explaining an activity-based state diagram to which an activity life cycle is added according to the present embodiment. 5 is a diagram for explaining an activity life cycle. Hereinafter, a method of generating an activity-based state diagram according to an embodiment will be described with reference to the drawings.

본 실시예에서는 테스트 케이스 생성을 위하여, 정적분석기를 이용하여 역공학(reverse engineering) 기법으로 단위 프로그램(함수, 프로시저, 액티비티 등)들 사이의 호출관계를 나타내는 호출 그래프(call graph)를 생성한다. 상기 호출 그래프의 노드는 단위 프로그램을 나타내고, 간선은 단위 프로그램 사이의 호출을 의미한다. In this embodiment, a call graph representing a call relationship between unit programs (functions, procedures, activities, and the like) is generated by a reverse engineering method using a static analyzer for test case generation . The node of the call graph represents a unit program, and the trunk represents a call between unit programs.

안드로이드 어플리케이션의 테스트 방법으로는 블랙박스 테스트와 화이트박스 테스트가 있으며, 블랙박스 테스트는 중간 내부 사정(예를 들면, 소스 코드)에 관계없이 입력값에 대하여 어떠한 결과값이 나오는지를 확인하는 것이고, 이에 반해 화이트박스 테스트는 어플리케이션의 소스 코드 내부에서 정상적으로 동작하는지 여부를 확인하는 것으로서, 함수 호출관계들이 그 대상이 될 수 있다. There are black box tests and white box tests for testing Android applications, and black box tests are used to check what results are obtained for the input values, regardless of the intermediate internals (for example, source code) White-box testing, on the other hand, is used to check whether the application works properly within the source code, and function call relationships can be targeted.

본 실시예는, 안드로이드 어플리케이션의 화이트박스 테스트에 대한 것으로서, GUI를 테스트하기 위한 방법에 대한 것이다. This embodiment is for a white-box test of an Android application, and a method for testing a GUI.

도 1을 참조하면, 액티비티 기반의 테스트 케이스를 생성하기 위하여, 먼저, 소스 코드로부터 역공학을 통하여 액티비티 기반의 호출 그래프를 생성하고, 호출 그래프와 액티비티 라이프 사이클 정보를 추가하여 액티비티 상태도를 생성한다. Referring to FIG. 1, in order to generate an activity-based test case, an activity-based call graph is first generated through reverse engineering from the source code, and an activity state diagram is generated by adding call graph and activity lifecycle information.

그리고, 액티비티 상태도에서 깊이 우선 탐색으로 테스트 케이스를 생성할 수 있다. 이하에서는 본 발명의 실시예를 설명하기 위하여, 안드로이드 SDK에 포함되어 있는 샘플코드 중에서 메모장 어플리케이션에 대한 GUI 테스트 케이스 생성을 위한 액티비티 기반의 상태도 생성 방법에 대해서 설명하기로 한다. Then, in the activity state diagram, you can create a test case with depth-first search. Hereinafter, a method for generating an activity-based state diagram for generating a GUI test case for a notepad application will be described with reference to an exemplary embodiment of the present invention.

안드로이드 어플리케이션의 GUI 테스트를 위해서는 어플리케이션의 각 화면 단위인 액티비티들에 대한 시나리오를 작성하여야 하는데, 시나리오 작성 이전에 시나리오의 완벽한 작성을 위하여 선행되어야 하는 상태도를 액티비티 기반으로 생성하는 방법을 설명하여 본다. In order to test the GUI of the Android application, we need to create a scenario for each screen unit activity of the application. We will explain how to create a state diagram based on activities that should be preceded in order to complete the scenario creation before the scenario creation.

호출 그래프를 생성하는 방법으로는 다양한 방법들이 이용될 수 있으며, 종래의 방법을 이용하여 안드로이드의 어플리케이션 중 메모장 샘플 소스코드에서 호출 그래프를 생성하면 도 2와 같은 호출 그래프가 생성될 수 있다. Various methods can be used as a method of generating a call graph, and a call graph can be generated as shown in FIG. 2 by generating a call graph from a notepad sample source code of an application of the Android using a conventional method.

도 2를 참조하면, 메모장 어플리케이션의 경우, 액티비티에 해당되는 NoteList(제 1 액티비티, 10), NoteEditor(제 2 액티비티, 20) 및 TitleEditor(제 3 액티비티, 30)를 포함할 수 있으며, 각각의 액티비티에는 적어도 하나 이상의 함수들이 포함된다. Referring to FIG. 2, the notepad application may include a NoteList (a first activity, 10), a NoteEditor (a second activity 20), and a TitleEditor (a third activity 30) corresponding to an activity, Includes at least one or more functions.

예를 들어, 상기 함수로는, 액티비티 내에서 동작하는 함수들(14, 15,16)과, 다른 액티비티를 호출하는 함수들(11,12,13)을 포함할 수 있다. 다른 액티비티를 호출하는 함수들 중에서도, 복수의 액티비티를 호출하는 함수(OnOptionItemselected,11)가 포함되거나, 하나의 다른 액티비티를 호출하는 함수(OnContextItemselected, OnListItemClick)가 포함될 수 있다. For example, the function may include functions (14, 15, 16) that operate in the activity and functions (11, 12, 13) that call other activities. Among the functions that call other activities, a function (OnOptionItemselected, 11) that calls a plurality of activities may be included, or a function (OnContextItemselected, OnListItemClick) that calls a different activity may be included.

한편, OnCreate 함수는 액티비티가 생성될 때 호출되고, 액티비티 초기화 작업을 수행하며, savedInstanceState 메서드에 의해 저장된 상태 정보를 매개 변수로 받을 수 있다. On the other hand, the OnCreate function is called when the activity is created, performs activity initialization, and receives the status information stored by the savedInstanceState method as a parameter.

그리고, OnStart는 액티비티가 나타나기 직전에 호출되며, OnResume은 액티비티가 Foreground 상태가 될 때 호출되고, 액티비티가 Activity Stack의 최상위에 존재한다. 그리고, 사용자의 조작이 가능한 상태로서, 애니메이션, 음악 등의 play시작을 가리킨다. OnStart is called just before the activity appears, and OnResume is called when the activity is in the foreground state, and the activity is at the top of the activity stack. It indicates the start of play of an animation, music, etc. in a state in which the user can operate.

또한, OnPause는 다른 액티비티가 실행되어 현재 액티비티가 Background 상태가 되려고 할 때 호출되고, 프로그램에서 지속적으로 유지해야할 상태 정보를 저장하는 작업을 수행한다. In addition, OnPause is called when another activity is executed and the current activity is going to be in the Background state, and the program stores the state information to be maintained continuously.

OnStop은 액티비티가 백그라운드 상태가 되어 사용자에게 더이상 보이지 않을 때 호출되고, 메모리 부족시 시스템이 OnStop을 호출하지 않고, 프로세스를 종료시킬 수 있다. OnStop is called when the activity is no longer visible to the user in the background state, and when the memory is full, the system can terminate the process without calling OnStop.

OnRestart는 액티비티가 백그라운드에서 Foreground로 상태가 바뀔 때 호출되고, OnDestroy는 액티비티가 종료될 때 호출되며, 메모리 부족시 시스템이 OnDestroy를 호출하지 않고 프로세스를 종료시킬 수 있다. OnRestart is called when the activity changes from background to foreground, OnDestroy is called when the activity ends, and when the memory is full, the system can terminate the process without calling OnDestroy.

그 다음, 도 3을 참조하면, 상기와 같이, 생성된 호출 그래프에서 하나의 액티비티가 다른 액티비티와 연결시키는 노드를 두 액티비티 사이의 간선으로 연결하고, 그 외의 노들들은 해당 액티비티의 사이클 간선으로 연결하여 액티비티 기반의 상태 그래프로 간소화할 수 있다. Next, referring to FIG. 3, as described above, in the generated call graph, a node connecting one activity to another activity is connected to an edge between two activities, and the other nodes are connected to the cycle trunk of the activity Activity-based state graphs can be simplified.

다만, 간소화된 상태도의 그래프는 액티비티의 라이프 사이클 특성이 포함되어 있지 않다. 각각의 액티비티들은 서로 다른 라이프사이클을 가지고 있으며, 이에 따라 이전 액티비티로 이동하는 순서가 달라지게 된다. 이러한 액티비티의 라이프사이클 정보를 추가하면, 시작 액티비티도 라이프사이클이 존재하기 때문에, 이전 상태가 존재하여야 하는 중요한 문제점이 발생하게 된다. However, the graph of the simplified state diagram does not include the lifecycle characteristic of the activity. Each activity has a different lifecycle, so the order in which you move to the previous activity is different. Adding the lifecycle information of these activities leads to an important problem that the previous state must exist because the life cycle of the start activity also exists.

이를 위하여, 도 5와 같은 액티비티의 라이프사이클을 간소화된 상태도에 추가하는 동작이 수행된다. 액티비티 라이프사이클은 안드로이드 OS에서 결정되어 있는 경우가 많으며, 액티비티, 러닝 상태(running), 포즈 상태(pause), 스탑 상태(stop), 및 킬 상태(killed)가 있다. To this end, the operation of adding the lifecycle of the activity as shown in FIG. 5 to the simplified state diagram is performed. The activity life cycle is often determined by the Android OS and includes activity, running, pause, stop, and killed.

이러한 액티비티 라이프사이클을 상태도에 추가하기 위한 동작이 수행되며, 간소화된 상태도(도 3)에서 소스 코드에서 구현되어 있지 않은 back_Key 이벤트에 따른 이전 액티비티로의 이동 간섭을 추가한다(도 5). An operation to add this activity lifecycle to the state diagram is performed (Figure 5), adding the mobile interference from the simplified state diagram (Figure 3) to the previous activity according to the back_Key event not implemented in the source code (Figure 5).

어플리케이션의 첫번째 액티비티 또는 다른 액티비티에서 이전 상태로 이동하는 때에 어플리케이션 실행 이전 상태로 돌아가기 위한 임의의 초기 상태를 추가하여 안드로이드의 특성을 고려한 액티비티 상태도를 완성할 수 있다. You can complete an activity state diagram that takes into account the characteristics of Android by adding an arbitrary initial state to return to the pre-application state when moving from the first activity or other activity of the application to the previous state.

생성된 액티비티 상태도를 선형 그래프로 변환하여 깊이 우선 탐색방법으로 테스트케이스를 생성하여 상태기반 화이트박스 테스트에 활용할 수 있게 된다. The generated activity state diagram is transformed into a linear graph, and a test case can be created by using the depth-first search method and utilized in the state-based white box test.

액티비티 라이프 사이클을 추가한 상태도를 생성하는 방법에 대해서 좀 더 상세히 예를 들어 설명하여 본다. Let's take a more detailed example of how to create a state diagram with an activity life cycle added.

예를 들어, 각 액티비티마다 해당 액티비티의 종료를 가리키는 finish 함수가 있는지 여부를 체크한다. finish는 화면을 가리키는 액티비티의 종료를 가리킨다. 참고로, 역공학을 수행하는 것만으로는, 백키와 같은 액티비티의 라이프 사이클을 알 수 없기 때문에, 이러한 상태도에서 시나리오를 작성할 경우에 결과값을 예측하기가 어렵게 된다. For example, each activity checks whether there is a finish function that indicates the end of the activity. finish indicates the end of the activity pointing to the screen. For reference, since the life cycle of an activity such as a back key is not known only by performing reverse engineering, it is difficult to predict a result value when a scenario is created in this state diagram.

역공학을 통해서 분석되는 해당 어플리케이션의 소스 코드에 대한 함수 리스트들을 액티비티를 중심으로 간소화하고, 간소화된 상태도에 액티비티의 라이프 사이클(예를 들면, 하드웨어 백키)을 추가하는 것이다. 이러한 상태도는 SE(software engineering)에서 쓰이는 표시 형식으로, 콜 그래프를 가공을 해서 간소화된 상태도를 자동으로 생성한다. Simplify the function lists for the source code of the application analyzed through reverse engineering, and add the lifecycle of activities (for example, hardware back key) to the simplified state diagram. This state diagram is a display format used in software engineering (SE) and automatically generates a simplified state diagram by processing a call graph.

한편, 각 액티비티에 finish 함수가 있는지 여부를 체크한 결과, finish 함수가 포함되는 액티비티에 대해서는 전전단계인 (N-2)단계로 가는 이벤트를 추가하고, finish함수가 포함되어 있지 않은 액티비티에 대해서는 전단계(N-1)로 가는 이벤트를 자동으로 추가한다. On the other hand, as a result of checking whether each activity has a finish function, an event to the (N-2) -th stage of the previous step is added to the activity including the finish function, and for the activity not including the finish function, (N-1).

액티비티는 각각의 라이프 사이클을 가지고 있어야 하며, 이벤트 백(백키 이벤트)을 라이프 사이클의 예로 설명하였다. 이와 같은 액티비티 라이프 사이클이 추가된 상태도를 자동으로 생성함으로써, 추후 작성하게 될 시나리오의 완벽을 기할 수 있게 된다. Activities must have their own lifecycles and describe event backs (backyck events) as examples of life cycles. By automatically generating a state diagram to which such an activity life cycle is added, it is possible to complete the scenario to be created later.

Claims (2)

안드로이드 어플리케이션의 GUI 테스팅을 위한 시나리오를 작성하기 이전의 단계인, 안드로이드 어플리케이션의 액티비티 기반 상태도를 생성하는 방법으로서,
어플리케이션의 소스에 대한 역공학이 수행되는 단계;
상기의 수행된 역공학의 결과에 대해서, 액티비티를 중심으로 상태도를 생성하는 단계; 및
상기의 상태도에 상기 액티비티의 라이프 사이클을 추가하는 단계;를 포함하는 안드로이드 어플리케이션의 액티비티 기반 상태도 생성방법.
A method for generating an activity-based state diagram of an Android application, prior to creating a scenario for GUI testing of an Android application,
Performing reverse engineering on the source of the application;
Generating a state diagram based on the activity for the result of the reverse engineering performed as described above; And
And adding a life cycle of the activity to the state diagram.
제 1 항에 있어서,
상기 액티비티의 라이프 사이클을 추가하는 단계는,
상기 각각의 액티비티에 대해 피니시(finish) 함수가 존재하는지 여부를 체크하는 단계와,
상기 액티비티에 피니시 함수가 포함되는 경우에는 전전단계(N-2)로 이동하는 이벤트 백을 추가하고, 상기 액티비티에 피니시 함수가 포함되지 않은 경우에는 전단계(N-1)로 이동하는 이벤트 백을 추가하는 단계를 포함하는 안드로이드 어플리케이션의 액티비티 기반 상태도 생성방법.
The method of claim 1,
Adding a life cycle of the activity,
Checking whether there is a finish function for each of the activities;
If the activity includes a finishing function, an event bag that moves to the previous stage (N-2) is added. If the activity does not include a finishing function, an event bag that moves to the previous stage (N-1) is added And generating an activity-based state diagram of the Android application.
KR1020120098576A 2012-09-06 2012-09-06 Method for generating activity based state diagram of android applications KR101416065B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120098576A KR101416065B1 (en) 2012-09-06 2012-09-06 Method for generating activity based state diagram of android applications

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120098576A KR101416065B1 (en) 2012-09-06 2012-09-06 Method for generating activity based state diagram of android applications

Publications (2)

Publication Number Publication Date
KR20140033580A true KR20140033580A (en) 2014-03-19
KR101416065B1 KR101416065B1 (en) 2014-07-07

Family

ID=50644366

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120098576A KR101416065B1 (en) 2012-09-06 2012-09-06 Method for generating activity based state diagram of android applications

Country Status (1)

Country Link
KR (1) KR101416065B1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101513662B1 (en) * 2014-10-07 2015-04-20 충남대학교산학협력단 Search system and method of executable GUI
CN105468529A (en) * 2015-12-15 2016-04-06 北京奇虎科技有限公司 Accurate traversal method and apparatus for UI controls of android application
CN105589802A (en) * 2014-10-23 2016-05-18 阿里巴巴集团控股有限公司 Software test method and apparatus
CN105653438A (en) * 2014-11-12 2016-06-08 成都鼎桥通信技术有限公司 Method and device for cross-process automated testing of Android device
CN108595281A (en) * 2018-04-26 2018-09-28 Oppo广东移动通信有限公司 Moving object processing method, device, storage medium and terminal

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549144B2 (en) * 2005-02-22 2009-06-16 Microsoft Corporation Custom API modeling for source code static analysis simulator

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101513662B1 (en) * 2014-10-07 2015-04-20 충남대학교산학협력단 Search system and method of executable GUI
CN105589802A (en) * 2014-10-23 2016-05-18 阿里巴巴集团控股有限公司 Software test method and apparatus
CN105653438A (en) * 2014-11-12 2016-06-08 成都鼎桥通信技术有限公司 Method and device for cross-process automated testing of Android device
CN105653438B (en) * 2014-11-12 2018-11-09 成都鼎桥通信技术有限公司 The striding course automated testing method and device of Android device
CN105468529A (en) * 2015-12-15 2016-04-06 北京奇虎科技有限公司 Accurate traversal method and apparatus for UI controls of android application
CN105468529B (en) * 2015-12-15 2018-07-24 北京奇虎科技有限公司 A kind of accurate traversal method of Android application UI controls and device
CN108595281A (en) * 2018-04-26 2018-09-28 Oppo广东移动通信有限公司 Moving object processing method, device, storage medium and terminal

Also Published As

Publication number Publication date
KR101416065B1 (en) 2014-07-07

Similar Documents

Publication Publication Date Title
Amalfitano et al. A gui crawling-based technique for android mobile application testing
Yang et al. Testing for poor responsiveness in Android applications
US10482001B2 (en) Automated dynamic test case generation
EP2642394B1 (en) Test device
KR101416065B1 (en) Method for generating activity based state diagram of android applications
US10353809B2 (en) System and method for executing integration tests in multiuser environment
US20100153780A1 (en) Techniques for generating a reusable test script for a multiple user performance test
US20100153087A1 (en) Techniques for generating a reusable test script for a single user performance test
US20140052433A1 (en) Automatically extracting a model for the behavior of a mobile application
US8645766B2 (en) Serialized error injection into a function under test
Mehlitz et al. Jpf-awt: Model checking gui applications
JP2015146179A (en) Generation for test double
Jošt et al. Using object oriented software metrics for mobile application development
US20150007145A1 (en) Computing system with instrumentation mechanism and capture mechanism and method of operation thereof
Arlt et al. Trends in model-based gui testing
Maâlej et al. A comparative evaluation of state-of-the-art load and stress testing approaches
Arlt et al. Behind the scenes: an approach to incorporate context in GUI test case generation
US9983975B2 (en) Fixing anti-patterns in javascript
JP2016514326A (en) Method and system for analyzing a trace timeline of computer system activity
US20180260306A1 (en) Unexpected Path Debugging
US20030126506A1 (en) Program testing system and method
Acharya et al. Model based test case prioritization for testing component dependency in cbsd using uml sequence diagram
CN117520181A (en) Method and device for debugging business process, electronic equipment and storage medium
KR20100056337A (en) Device for generating a script for menu test, menu test automatic system having the same, and method thereof
Osman et al. Improved monkey tool for random testing in mobile applications

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
LAPS Lapse due to unpaid annual fee