앱 실행하기 #
다음 튜토리얼에서는 스마트폰에 설치된 YouTube 앱을 실행하는 세 가지 방법을 실습합니다.
- 바탕화면의 아이콘을 클릭해서 실행하기
- 앱 이름을 검색해서 실행하기
- 앱 고유 아이디값(‘Package Name’ 혹은 ‘Bundle ID’)을 이용하여 바로 실행하기
1. 바탕화면의 아이콘 클릭해서 실행하기 #
Step1. 새로운 스텝을 생성합니다.
참고) 새 스텝을 생성할 때 기본 액션은 'Touch'로 자동 설정됩니다.
Step2. 화면 분석 후 분석 도구로 “OD”를 선택합니다.
Step3. 화면에서 “Youtube”를 선택한 다음 드래그&드롭으로 선택해서 스텝의 UIObject로 추가합니다.
Step4. 작성한 스텝을 실행합니다.
2. 앱 이름을 검색하여 실행하기 #
앱 이름을 검색하기 위해서는 먼저 검색 창으로 이동해야 합니다.
Step1. 새 스텝을 만들고 “Scroll” 액션을 선택합니다.
Step2. 화면 분석 후 분석 도구로 “Full Screen”을 선택합니다.
Step3. 선택된 “Full Screen”을 드래그&드롭 하여 스텝의 UIObject로 추가합니다.
Step4. 새로운 스텝을 만들고 액션은 “Touch”로 선택, 디바이스 화면 분석 도구로 OCR을 선택한 다음 화면에서 “Search”를 드래그&드롭하여 UIObject로 추가합니다.
Step5. 새로운 스텝을 만들고 액션은 “Input”을 선택, 디바이스 화면 분석 도구로 Full Screen을 선택한 다음 전체화면을 드래그&드롭 하여 UIObject로 설정합니다.
그 후 value 값에 “Youtube”를 입력합니다.
Step6. 새로운 스텝을 만들고 액션은 “Touch”를 선택, 디바이스 화면 분석에서 Crop image를 선택한 다음 앱의 아이콘 부분을 마우스로 드래그하여 선택한 후, 드래그&드롭 하여 UIObject로 추가합니다.
3. 앱 고유 아이디값을 이용해 바로 실행하기 #
Step1. 새 스텝을 만들고 “Launch”액션을 선택합니다.
Step2. 실행하고자 하는 앱(Youtube)의 App ID를 입력합니다. 테스트 할 기기가 Android일 경우 화면 하단 Attributes의 Package Name에, iOS일 경우 Bundle ID에 입력합니다.
Step3. 작성한 스텝을 실행합니다.
스크롤해서 아이템 찾기 #
재생해야 할 동영상이 긴 목록의 중간 쯤에 위치해 있을 경우 원하는 동영상이 나올때까지 스크롤하는 시나리오를 작성해 보겠습니다.
💡 Youtube에서 "apptest ai"를 검색하여 "Introducing...Apptest AI" 영상을 재생하는 시나리오를 작성해보겠습니다.
Step1. Youtube를 실행하고 apptest ai를 검색한 후에 원하는 동영상을 찾습니다.
Step2. 새 스텝을 만들고 액션으로 “Loop UIObject”를 선택합니다.
Step3. 화면 분석 후 분석 도구로 “OCR”을 선택합니다.
Step4. 화면에서 “Fully Automated”를 선택한 다음 드래그&드롭하여 UIObject로 추가합니다.
Step5. 위 스텝을 마우스 오른쪽 버튼으로 클릭 후 “Insert Child” 버튼을 클릭하여 자식 스텝을 만듭니다.
액션으로 “Scroll”을 설정하고, 화면 분석 후 “Full Screen”을 선택한 뒤 전체화면을 드래그&드롭하여 자식 스텝의 UIObject로 추가합니다.
Step6. Loop UIObject 스텝을 클릭해서 Attributes 패널을 활성화합니다.
화면상에 찾는 영상이 없으면 화면을 스크롤해야 하므로 comparator를 NOT EXISTS 로 변경합니다.
Step7. Stego에 연결된 디바이스의 화면을 초기 화면으로 바꾸고 작성한 스텝을 실행합니다
특정 위치 단어 확인 #
💡 바탕화면에 있는 스마트폰 모델명을 읽어서 검색창에서 검색하기
Step1. 새 스텝을 만들고 “Store Content”액션을 선택합니다.
Step2. 화면 분석 후 분석 도구로 “OCR”을 선택합니다.
Step3. 화면에서 “Model”을 선택한 다음, 화면 분석 도구에서 “Relative”를 선택하고 Model 옆에 있는 모델명 부분을 드래그&드롭으로 선택 후 스텝의 UIObject로 추가합니다.
Step4. Stego에 연결된 디바이스 바탕화면의 검색 창을 클릭하는 스텝을 만들고, input 스텝을 만든 다음 input 액션 Attributes의 value에 “${device_model}” 입력합니다.
최종 결과. 디바이스를 초기 화면으로 바꾸고 시나리오를 실행하여 검색어 입력란에 Store Content 스텝에서 설정한 값이 입력된 것을 확인합니다.
구글 맵 확대하기 #
💡 구글 맵에서 원하는 장소를 찾은 다음 지도를 확대하는 시나리오를 작성해 보겠습니다.
첫번째로 구글 맵에서 Los Angeles 를 검색합니다.
Step1. 구글 맵을 실행한 뒤 새 스텝을 만들고 “Touch”액션을 선택합니다.
Step2. 화면 분석 후 분석 도구로 “OCR”을 선택합니다.
Step3. 화면에서 “Search”를 선택한 다음 드래그&드롭하여 스텝의 UIObject로 추가합니다.
Step4. 새로운 스텝을 만들고 액션은 “Input”으로 선택 후, 디바이스 화면 분석 도구로 Full Screen을 선택한 다음 전체화면을 드래그&드롭하여 스텝에 UIObject로 추가합니다. 그 후 Attributes의 value 값에 Los Angeles를 입력합니다.
Step5. 새로운 스텝을 만들고 액션은 “Touch”로 선택 후, 디바이스 화면 분석에서 OCR을 선택한 다음 화면의 “Angeles”를 드래그&드롭하여 스텝에 UIObject로 추가합니다.
(UIObject 속성패널)
Step6. “Angeles”가 한 화면에 여러개 있기 때문에 UIObject 속성값에서 Selector값을 수정해야 합니다. 이번 예제는 두번째 “Angeles”가 터치 되도록 Selector 값을 2로 수정해야 합니다. UIObject 속성패널을 띄우기 위해서는 스텝의 UIObject Field를 클릭하면 됩니다.
Step7. 새로운 스텝을 만들고 액션은 “Pinch”로 선택 후, 하단 Attributes에서 direction을 “OUT”으로 변경합니다. 그 후 디바이스 화면 분석 도구로 Custom Box를 선택하고 화면 중앙 부분을 드래그로 선택합니다. 선택된 중앙 부분을 드래그&드롭하여 스텝에 UIObject로 추가합니다.
Step8. 구글맵의 검색창에 글씨가 입력되지 않은 상태로 바꾸고 시나리오를 실행합니다.
조건문 액션 사용하기 #
💡 Store Content 액션과 If Value 액션을 이용해 play store의 현재 1위 게임의 카테고리가 Role Playing이 아닐 경우 Category를 Role Playing으로 변경하는 시나리오를 작성해 보겠습니다.
이 예제를 통해서 화면 분석 도구 중 Relative의 사용법과 화면 특정 지점의 문장을 저장해서 사용하는 방법, 그리고 조건에 따라 동작하는 시나리오를 작성하는 방법을 익힐 수 있습니다.
Step1. Play store를 켜고 하단의 메뉴 중 게임 메뉴로 이동합니다. 그 후 Top charts 화면에서 현재 1위인 App의 Category를 읽어서 저장합니다. 1위 앱의 Category는 화면 분석 도구 중 Relative를 사용해서 읽어 올 수 있습니다.
Step2. 새 스텝을 만들고 Store Content 액션을 선택한 다음 1위 앱의 카테고리 부분을 UIObject로 추가합니다.
Step3. 위에서 만든 스텝을 클릭하여 Attributes 패널을 활성화 한 다음, Attributes의 key 입력란에 first_category를 입력합니다.
(If Value 액션의 Attributes)
Step4. 새 스텝을 만들고 If Value액션을 선택한 뒤, 스텝을 클릭해서 Attributes 패널을 활성화 한 다음, Attributes의 key 입력란에 first_category를 입력합니다. comparator는 “!=”를 선택하고, value에는 Role Playing을 입력합니다.
위와 같이 입력할 경우 first_category 라는 key에 저장된 value가 Role Playing이라는 글자와 일치하지 않으면 (first_category != Role Playing) 자식스텝을 실행합니다.
Step5. If Value 스텝의 자식 스텝으로 Categories를 터치하는 스텝과 Categories 선택창에서 Role Playing을 터치하는 스텝을 만듭니다.
(시나리오 실행을 마친 화면)
Step6. Stego에 연결된 기기에서 play store 상단의 Categories를 클릭하여 All categories를 클릭한 뒤 작성한 스텝을 처음부터 실행합니다.
재생중인 동영상 정지하기 #
이 시나리오는 YouTube 플레이어에서 동영상이 재생 중일 때 화면 변화를 감지하고, 더블 터치를 통해 재생을 정지하는 방식입니다.
이를 통해 화면 분석 도구 중 ‘Custom Box’로 영역을 지정하고, ‘If Changed’ 액션을 통해 동작을 제어하는 방법을 학습할 수 있습니다.
① 새로운 스텝에서 ‘If Changed’ 액션을 선택합니다.
② 화면 분석 도구에서 ‘Custom Box’를 선택한 후, 화면 분석을 수행합니다.
③ 디바이스 화면에서 동영상 재생 영역을 드래그하여 선택한 후, 이를 스텝의 UIObject로 ‘Drag and Drop’하여 추가합니다.
④ ‘If Changed’ 스텝에서 마우스 오른쪽 버튼을 클릭한 후 ‘Insert child’를 선택하여 자식 스텝을 생성합니다.
⑤ 자식 스텝에서 ‘Touch’ 액션을 생성합니다.
⑥ type은 동영상 재생을 위해 ‘Double’을 지정하여 두 번 터치하는 동작을 설정합니다.
⑦ 첫 번째 스텝에서 생성한 UIObject를 재사용할 수 있으므로, 해당 이미지를 선택 후 Drag and Drop으로 가져옵니다.
참고) 동영상이 재생되는 영역을 화면 분석 도구 중 Custom Box로 선택하여 자식 스텝의 UIObject로 추가할 수 있지만, 첫 번째 스텝에서 이미 동일한 과정을 통해 UIObject를 생성했기 때문에 이를 재사용할 수 있습니다. 재사용 방법은, 기존 스텝에 등록된 UIObject 중 사용하려는 UIObject를 선택하여 해당 스텝으로 Drag & Drop하여 적용하면 됩니다.
알람 시간 설정하기 #
이 시나리오는 안드로이드 시계 앱에서 사용자가 원하는 알람 시간을 설정하는 예제 입니다.
이번 액션에서는 ‘Loop Content’와 ‘If Content’ 제어 구조를 사용하여 알람 시간을 조정하는 방법을 학습할 수 있습니다.
① 새로운 스텝을 추가합니다.
② ‘Touch’액션을 선택합니다.
③ 디바이스 화면 분석 도구에서 ‘OD’를 선택합니다.
④-⑤ ‘+’ 버튼을 UIObject로 ‘Drag and Drop’하여 추가합니다.
① 새로운 스텝에서 ‘Loop UIObject’액션을 선택합니다.
② 화면 분석 도구에서 ‘OCR’를 선택합니다.
③ 숫자 ‘9’를 스텝의 UIObject로 ‘Drag and Drop’하여 추가합니다.
④ Attributes 탭에서 comparator를 NOT EXISTS로 변경합니다.
⑤ 시간은 1부터 12까지 존재하므로, 자식 스텝이 12번 반복되도록 limit
값을 12로 설정합니다.
① 자식 스텝을 추가합니다.
② ‘Scroll’ 액션을 선택합니다.
③ 디바이스 화면에 ‘9’보다 작은 숫자가 화면에 보이도록 조작한 상태로 화면 분석 도구에서 ‘Custom Box’를 선택합니다.
④ 숫자 ‘6’을 드래그로 영역 지정 후 스텝의 UIObject로 ‘Drag and Drop’하여 추가합니다.
예외 처리) 특정 조건에서, 8시와 10시의 경우 9시가 화면에 표시될 수 있습니다. 이를 해결하기 위해서는 다음과 같은 동작이 필요합니다.
– 현재 설정된 시간이 8시인 경우, 알람을 9시로 조정하려면 ‘시’ 영역의 값을 1칸 아래로 내려야 합니다.
– 설정된 시간이 10시인 경우, ‘시’ 영역의 값을 1칸 올려야 합니다.
① 새로운 스텝에서 ‘If UIObject’ 액션을 추가합니다.
② 화면 분석 도구에서 ‘OCR’를 선택합니다.
③ 숫자 ‘7’ 스텝의 UIObject로 ‘Drag and Drop’하여 추가합니다.
① 새로운 스텝에서 ‘If UIObject’ 액션을 추가합니다.
② 화면 분석 도구에서 ‘OCR’를 선택합니다.
③ 숫자 ’11’ 스텝의 UIObject로 ‘Drag and Drop’하여 추가합니다.
① 자식 스텝을 추가합니다.
② ‘Scroll’ 액션을 선택합니다.
③ 화면 분석 도구에서 ‘Custom Box’를 선택합니다.
④ 숫자 ’10’을 드래그로 영역 지정 후 스텝의 UIObject로 ‘Drag and Drop’하여 추가합니다.
⑤ Attributes 탭에서 direction을 DOWN으로 선택합니다.
참고) Scroll 액션의 속성 중 'direction'은 디바이스를 터치하여 스크롤할 때 손가락이 움직이는 방향을 나타냅니다.
예를 들어, 10시에서 9시로 시간을 설정하기 위해 10을 터치한 후 손가락을 아래로 움직여야 9가 화면 중앙에 위치하게 됩니다.
이 상황의 경우 숫자 10을 손가락으로 터치하여 손가락을 내려야 숫자 9가 시간 영역 중앙에 위치하기 때문에 'direction'을'DOWN'으로 설정합니다.
① 새로운 스텝에서 ‘Touch’ 액션을 추가합니다.
② 화면 분석 도구에서 ‘OCR’를 선택합니다.
③ 화면의 ‘Save’ 문구를 UIObject로 ‘Drag and Drop’하여 추가합니다.
사라지는 UI 확인하기 #
짧은 시간 출력 되었다가 자동으로 사라지는 UI(ex. 토스트 팝업)를 테스트하는 예제 입니다.
Youtube 앱의 동영상 옵션에서 “Save to Watch later”을 클릭 했을 때 옵션 메뉴가 제대로 사라졌는지 확인하는 테스트를 진행합니다.
이 예제를 통해서 Assert Message액션의 사용법을 익힐 수 있습니다.
시나리오 사전준비
– Stego에 디바이스를 연결하고, 디바이스에서 Youtube를 실행합니다. “apptest ai”를 검색하고, apptest의 첫번째 영상이 상단에 보이도록 스크롤을 내립니다.
Step 1. + 버튼을 클릭해서 새 스텝을 만듭니다.
Step 2. 디바이스 패널의 툴바에서 화면 분석 버튼을 클릭합니다.
Step 3. 화면 분석 결과에서 동영상 옵션 버튼을 드래그&드롭으로 새로 만든 스텝에 옮겨 줍니다.
Step 4. 아이콘이 한 화면에 여러개 있기 때문에 UIObject 속성값 중 Selector값을 수정해야 합니다. 이번 예제는 동영상의 옵션을 활성화해야 하기 때문에 두 번째 아이콘이 터치 되도록 Selector 값을 2로 수정해야 합니다. UIObject 속성 패널을 띄우기 위해서는 스텝의 UIObject Field를 클릭하면 됩니다.
Step 5. 작성한 스텝을 실행합니다.
Step 6. 새로운 스텝을 만들고 “Touch” 액션 선택, 디바이스 화면 분석 도구 중 OCR을 선택한 다음 화면의 “Save to Watch later”를 드래그&드롭하여 스텝의 UIObject로 추가합니다.
참고) OCR로 분석할 경우 단어별로 잘려서 인식이 될 수 있는데, 한 문장을 선택하고 싶을 때는 OCR 결과에서 한 문장을 드래그&드롭으로 선택하면 한 문장으로 인식합니다.
Step 7. 새 스텝을 만들고 Assert Message 액션 선택 후, 토스트 팝업 메시지 내용을 확인하여 value에 입력합니다. 토스트 팝업 메시지의 전체 문구는 “Saved to Watch later See list”이지만, 앞부분인 “Saved to Watch later”을 입력하고 comparator를 *=로 변경합니다.
(전체 문구를 입력했을 경우, comparator를 =로 설정합니다.)
참고) Assert Message는 같은 행에 있는 문구를 하나로 인식합니다. comparator을 *=로 설정하면 팝업 메시지의 일부만 입력해도 확인이 가능합니다.
Step 8. 테스트 실행 후 Output 패널의 결과를 클릭 합니다.
Step 9. 스텝 결과 창에서 테스트 결과를 확인합니다. 아래 결과 창은 “Save to Watch later” 메시지를 확인했다는 내용입니다.
바탕화면 아이콘 검사하기 #
💡 바탕화면에 Play Store 앱아이콘이 있는지 검사하는 예제입니다.
만약 바탕화면에 Play Store 앱 아이콘이 없다면 테스트 결과로 “Play Store 앱 아이콘이 바탕화면에 없습니다.”라는 에러 문구를 출력하게 됩니다.
Step1. 새 스텝을 만들고, 액션으로 “Assert UIObject”를 선택합니다.
Step2. 디바이스 패널에서 “AI” 버튼을 클릭합니다.
Step3. 화면 분석 도구 중 “OD”를 선택(기본값)하고 Play Store 앱 아이콘 화면 요소를 스텝의 UIObject Field 영역으로 드래그&드롭 합니다.
Step4. Assert UIObject의 Attributes 에서 comparator는 “EXISTS”로, custom message는 “Play Store 앱 아이콘이 바탕화면에 없습니다.”로 입력합니다.
주의) comparator 조건이 거짓인 경우 custom message가 출력됩니다.
Step5. 디바이스에서 Play Store 앱 아이콘을 삭제한 상태에서 작성한 시나리오를 실행하면 다음과 같은 결과값이 출력됩니다.
공통 시나리오란? #
반복되는 작업을 하나의 시나리오로 작성한 후, 다른 시나리오에서 호출하여 사용할 수 있습니다.
이러한 방식으로 다른 시나리오에서 재사용 가능한 시나리오를 “공통 시나리오”라고 합니다.
예를 들어, 로그인이 필요한 앱인 경우 로그인 과정을 하나의 시나리오로 작성하여 공통 시나리오로 설정하면, 다른 시나리오 작성 시 로그인 부분을 다시 구현할 필요 없이 해당 공통 시나리오를 활용하여 사용 가능합니다.
주의) 공통 시나리오는 동일한 Workspace 내에서만 사용할 수 있습니다.
또한, 공통 시나리오를 포함하고 있는 일반 시나리오를 공통 시나리오로 변경하는 것은 불가능합니다.
공통 시나리오 만들기 #
이 시나리오는 앱 실행 방법 중 ‘Package Name'(Android) 또는 ‘Bundle ID'(iOS)를 사용하여 앱을 실행하는 방식을 다루는 예제입니다.
① 새로운 스텝을 생성합니다.
② ‘Launch’ 액션을 선택합니다.
③ 수행하려는 앱의 ‘Package Name'(Android) 또는 ‘Bundle ID'(iOS)를 정확하게 입력합니다.
팁! Package Name과 Bundle ID는 Device Tab 모드일 때, 활성화 중인 앱의 이름을 복사하여 확인할 수 있습니다.
④ 시나리오 목록 패널에서 작성한 시나리오를 마우스 우클릭한 후, ‘Move to Common Scenario’ 버튼을 클릭합니다.
⑤ 시나리오 목록 패널에서 해당 시나리오가 사라지고, 아래에 위치한 공통 시나리오 목록 패널에 추가된 것을 확인할 수 있습니다.
공통 시나리오 사용하기 #
① 새로운 시나리오를 추가합니다.
② 추가한 시나리오 안에 새로운 스텝을 생성합니다.
③ 새로운 스텝에서 ‘Common Scenario’ 액션을 선택합니다.
④ Attributes 탭의 공통 시나리오 선택합니다.
⑤-⑥ 공통 시나리오 목록에서 이전에 생성한 시나리오를 선택합니다.
선택한 공통 시나리오가 정상적으로 추가되면, 해당 공통 시나리오는 수정할 수 없으므로 비 활성화된 상태로 표시됩니다.