Mobile Testing 與 Appium介紹
Mobile自動化測試
系列的第二篇內容包括Mobile Testing的基本概念
比較業界比較常用,開源的Mobile自動化測試架構
最後介紹Appium這套工具的原理與架構
Mobile App的類型
Mobile App依照架構可分成三種主要類型
- Native App
- Web App
- Hybrid App
Native App
針對特定手機系統並使用系統指定程式語言開發的App
例如在iOS上用Swift或Objective-C, 在Android上用Java或Kotlin所開發的apps
Web App
Web apps不需要像native apps一樣要從app store or market下載後安裝
是由手機上的瀏覽器像是Chrome, Safari或Firefox來開啟, 不會佔用手機上儲存空間
Hybrid App
Hybrid app基本上就是同時具備Native和web app的特性
這類型的app會將Javascript, HTML和CSS執行在embedded webview
外層用Native App wrapper包起來, 執行上跟Native app一樣要從app store下載安裝
Mobile App 測試上的挑戰
測試Mobile App要考量到許多不同因素
這些因素組合起來Mobile環境變得複雜且難以判斷
Mobile OS
各種作業系統與版本間的功能、特性和限制都不同
在某個版本上正常的功能不一定保證在其他作業系統版本就沒問題
Mobile Browser
要測試web application對各種瀏覽器的相容性要花不少時間
Mobile Device
市場上各品牌手機的解析度,輸入,硬體特性,軟體功能都有差異
要覆蓋大部分測試手機, 準備這樣的環境需要花費不少成本
Network Carrier
使用不同電信業者網路讓網路速度,穩定性與執行效能
成為影響用戶體驗很重要的因素
Mobile User Location
來自不同地區,國家的用戶所使用的語言,輸入方式,使用習慣都有很大的不同
這也這增加了測試的範圍和複雜度
Common mobile automation frameworks
這些是目前業界上比較熱門的Mobile自動化測試框架
Calabash
一套基於Cucumber的BDD框架, 可用來執行iOS與Android上的UI Test
KIF
KIF(Keep it functional)是個iOS整合測式架構, 使用XCTest架構來測試iOS app
UIAutomator
Android內建提供給開發者做UI automation的工具
Robotium
一套設計來測試Android native and web app的架構
Espresso
由Google release用來做Android UI test的架構
特色是執行速度快, 確保所有activity都啟動才會開始執行測試,
降低各種等待所造成速度變慢或錯誤的情況
Appium
一個開源, 跨平台的自動化測試架構, 目前在業界的使用率與活躍度最高
Mobile Automation Framework 比較
從這張比較表可以很看出Appium是目前市場上能同時支援跨平台, 多種程式語言和app類型的開發架構
Appium 是什麼? 可以吃嗎?
一個移動端自動化測試開源工具,可以跨平台(iOS or Android)用一套API 來編寫測試案例
Appium 特色與優點
- 一套免費開源的mobile自動化測試工具
- 跨平台, 支援Native, Hybrid和Web app automation
- 不需要了解app內部邏輯或是重新compile app
- 同時支援iOS與Android 作業系統
- 支援幾乎所有熱門程式語言來開發
Appium 主要概念
Client/Server 架構
1. Appium的核心是一個以Rest API溝通的Web Server
2. Server接收從appium client的指令來驅動連接mobie device
3. Appium將執行結果以HTTP response格式顯示
Session 架構
1. 每次執行automation都會建立一條session
2. 每一條session都會指定一個session ID
3. 每個動作都會由送出 POST /session request給Server
Desired Capabilities
一組key/value的組合由client送給Server
告訴Server端要啟動Session需要的所有參數資訊
Appium Server
以Node.js 開發的HTTP Server
Appium Client
支持各種程式語言的API library
讓自動化腳本能依照WebDriver protocol送出request
Appium 原理與架構
1. Client Server架構
2. 以WebDriver JSON Wire Protocol為基礎
3. 與手機作業系統提供的自動化機制作互動式系統
- 簡單運作流程:
Appium client將測試腳本轉化成WebDriver Protocol URL, 通過Appium Server上的Node服務發送 到各平台上的代理工具, 代理工具依照WebDriver 協議解析出要執行的操作, 然後調用個平台上的 原生測式框架驅動UI動作, 再將測試結果依照之前的流程返還給Appium Server顯示在畫面上
iOS/Android詳細運作流程
這張圖更詳細的說明整個iOS和Android上的action flow流程
要注意的昰從iOS10以上版本Apple底層UI instrument framework改用XCUITest
Android從7.0以後底層UI要改用UIAutomator 2
Appium在Android端工作流程
1. Client端將webDriver腳本轉譯為JSONWireProtocol
2. Appium在服務端啟動一個Servr(port 4723), Appium支持標準的WebDriver JSONWireProtocol
在這裡提供了一套REST的端口, Appium Server接收WebDriver client端發出的REST request,
解析request內容, 調用對應的框架來執行操作
3. Appium Server會把request轉發給中介Bootstrap.jar. Bootstrap監聽端口接收appium 命令
最終通過調用UIAutomator來實現
4. 最後Bootstrap將執行的結果返還給Appium Server.
5. Appium Server再將截果返還給appium client
Appium在iOS端工作流程
流程和Android大致相同,
差別在步驟3是由Appium server在手機調用instrument.js啟動
instrument.app, 將bootstrap.js 注入到手機進行UI互動
Appium Server就像斯斯一樣有兩種!
Appium-Desktop
- 圖形化介面
- 參數管理
- 腳本錄製(不夠成熟)
- UI 元件辨識
Appium Console
- 主要版本, 更新最快
- 運行於Node.js
- 以Command Line參數方式來執行
Appium Client Library
支援Python, Java, C#, Ruby, Javascript(Node.js), Objective-C, PHP
Tip of writing good test
- 減少重複的步驟
- 將共用的步驟放到setup, teardown之中
- 不要寫出要仰賴其他test case執行結果的case
- 減少不必要的測試步驟, 用最快的方式抵達想要的Check point
Reference:
- Source: Introduction to Calabash
- Source: KIF iOS Integration Testing Framework
- Source: Appium 工作原理
I'm really enjoyed this article. I hope it is useful for others. Thanking you.
ReplyDeleteAppium Training in Chennai
Best Appium Training institute in Chennai
Mobile Appium Course
JMeter Training Institute in Chennai
JMeter Training in Chennai
core java training in chennai
C C++ Training in Chennai
javascript training in chennai
Your article is worth reading! You are providing a lot of valid information. This'll be really helpful for my reference. Do share more such articles.
ReplyDeleteAWS course in Chennai
AWS Certification in Chennai
Cloud Training in Chennai
DevOps Training
Azure courses in Chennai
VMware course
AWS Training in Chennai
AWS Training in Chennai
This comment has been removed by the author.
ReplyDeleteIt is truly a well-researched content and excellent wording. I got so engaged in this material that I couldn’t wait to read. I am impressed with your work and skill. Thanks. electrical tag testing
ReplyDeleteGreat blog with valuable information.
ReplyDeleteREST API Testing Online Training
REST API Testing Training in Chennai
REST API Testing Training in Bangalore
Caesars Palace Hotel & Casino, Las Vegas - Mapyro
ReplyDeleteThis casino is an 8.5-acre hotel, 경상남도 출장안마 with 충청북도 출장샵 2,000-square-foot, 1,600 강원도 출장샵 slot 전주 출장안마 machines, and 70 table games. The casino is located 구리 출장안마 on a 4-acre lot along the Rating: 4.4 · 32 reviews
mmorpg
ReplyDeleteınstagram takipci satin al
Tiktok jeton hilesi
tiktok jeton hilesi
antalya saç ekimi
INSTAGRAM TAKİPÇİ SATİN AL
İNSTAGRAM TAKİPÇİ SATIN AL
metin2 pvp serverlar
instagram takipçi satın al
Smm panel
ReplyDeleteSmm panel
iş ilanları
instagram takipçi satın al
hirdavatciburada.com
www.beyazesyateknikservisi.com.tr
servis
tiktok jeton hilesi