眾所周知,現(xiàn)在市面上的移動(dòng)端操作系統(tǒng)已被Android和IOS占領(lǐng)汗茄,其中Android的份額更是在80%以上。那么面對市面上林林總總的自動(dòng)化測試框架和工具递览,為什么說Appium在自動(dòng)化測試框架的統(tǒng)治級(jí)優(yōu)勢呢瞳腌,下面先看一下各大主流框架的對比及優(yōu)勢。
一儿捧、主流框架對比
下面對比了市面上主流的幾大框架:
二、各大框架優(yōu)缺點(diǎn)說明
1颓影、Monkey是Android SDK自帶的測試工具亿汞,在測試過程中會(huì)向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流,如按鍵輸入疗我、觸摸屏輸入南捂、手勢輸入等),實(shí)現(xiàn)對正在開發(fā)的應(yīng)用程序進(jìn)行壓力測試麦牺,也有日志輸出鞭缭。實(shí)際上該工具只能做程序做一些壓力測試,由于測試事件和數(shù)據(jù)都是隨機(jī)的岭辣,不能自定義沦童,所以有很大的局限性。
2偷遗、MonkeyRunner也是Android SDK提供的測試工具。嚴(yán)格意義上來說MonkeyRunner其實(shí)是一個(gè)Api工具包喉酌,比Monkey強(qiáng)大泵喘,可以編寫測試腳本來自定義數(shù)據(jù)、事件涣旨。缺點(diǎn)是腳本用Python來寫,對測試人員來說要求較高霹陡,有比較大的學(xué)習(xí)成本止状。
3攒霹、Espresso是Google的開源自動(dòng)化測試框架。相對于Robotium和UIAutomator集峦,它的特點(diǎn)是規(guī)模更小抠刺、更簡潔,API更加精確高蜂,編寫測試代碼簡單罕容,容易快速上手。因?yàn)槭腔贗nstrumentation的锦秒,所以不能跨App。
4惭笑、UiAutomator也是Android提供的自動(dòng)化測試框架砌左,基本上支持所有的Android事件操作,對比Instrumentation它不需要測試人員了解代碼實(shí)現(xiàn)細(xì)節(jié)(可以用UiAutomatorviewer抓去App頁面上的控件屬性而不看源碼)屁擅〔基于Java,測試代碼結(jié)構(gòu)簡單痰哨、編寫容易、學(xué)習(xí)成本早抠,一次編譯撬讽,所有設(shè)備或模擬器都能運(yùn)行測試悬垃,能跨App(比如:很多App有選擇相冊甘苍、打開相機(jī)拍照,這就是跨App測試)看彼。缺點(diǎn)是只支持SDK 16(Android 4.1)及以上囚聚,不支持Hybird App、WebApp靡挥。
5、Instrumentation是早期Google提供的Android自動(dòng)化測試工具類,雖然在那時(shí)候JUnit也可以對Android進(jìn)行測試毒返,但是Instrumentation允許你對應(yīng)用程序做更為復(fù)雜的測試舷手,甚至是框架層面的。通過Instrumentation你可以模擬按鍵按下男窟、抬起歉眷、屏幕點(diǎn)擊、滾動(dòng)等事件汗捡。Instrumentation是通過將主程序和測試程序運(yùn)行在同一個(gè)進(jìn)程來實(shí)現(xiàn)這些功能,你可以把Instrumentation看成一個(gè)類似Activity或者Service并且不帶界面的組件春缕,在程序運(yùn)行期間監(jiān)控你的主程序艘蹋。缺點(diǎn)是對測試人員來說編寫代碼能力要求較高,需要對Android相關(guān)知識(shí)有一定了解宅荤,還需要配置AndroidManifest.xml文件,不能跨多個(gè)App膘侮。
6、Athrun是淘寶出的一個(gè)移動(dòng)測試框架/平臺(tái)逻锐,同時(shí)支持iOS和Android雕薪。Android部分也是基于Instrumentation,在Android原有的ActivityInstrumentationTestCase2類基礎(chǔ)上進(jìn)行了擴(kuò)展盏档,提供一整套面向?qū)ο蟮腁PI燥爷。
7、Robotium也是基于Instrumentation的測試框架稚配,目前國內(nèi)外用的比較多港华,資料比較多,社區(qū)也比較活躍立宜。缺點(diǎn)是對測試人員來說要有一定的Java基礎(chǔ),了解Android基本組件橙数,不能跨App。
8奠旺、Selendroid:也是基于Instrumentation的測試框架施流,可以測試Native App、Hybird App瞪醋、Web App银受,但是網(wǎng)上資料較少鸦采,社區(qū)活躍度也不大咕幻。
9、Appium是最近比較熱門的框架锣吼,社區(qū)也很活躍蓝厌。這個(gè)框架應(yīng)該是是功能最強(qiáng)大的:
如果對軟件測試、接口測試拓提、自動(dòng)化測試、性能測試寺惫、LR腳本開發(fā)蹦疑、面試經(jīng)驗(yàn)交流。感興趣可以175317069,群內(nèi)會(huì)有不定期的發(fā)放免費(fèi)的資料鏈接判莉,這些資料都是從各個(gè)技術(shù)網(wǎng)站搜集育谬、整理出來的,如果你有好的學(xué)習(xí)資料可以私聊發(fā)我膛檀,我會(huì)注明出處之后分享給大家。
a.它的優(yōu)點(diǎn):
開源泳炉;
支持Native App嚎杨、Hybird App、Web App刨肃;
支持Android、iOS黄痪、Firefox OS盔然;
Server也是跨平臺(tái)的,你可以使用Mac OS X轻纪、Windows或者Linux刻帚;
b.它的哲理是:
用Appium自動(dòng)化測試不需要重新編譯App;
支持很多語言來編寫測試腳本崇众,Java顷歌、Javascript、PHP眯漩、Python、C#舱卡、Ruby等主流語言队萤;
不需要為了自動(dòng)化測試來重造輪子,因?yàn)閿U(kuò)展了WebDriver舍杜。(WebDriver是測試WebApps的一種簡單赵辕、快速的自動(dòng)化測試框架,所以有Web自動(dòng)化測試經(jīng)驗(yàn)的測試人員可以直接上手)熬词;
移動(dòng)端自動(dòng)化測試應(yīng)該是開源的;
如果對軟件測試歪今、接口測試颜矿、自動(dòng)化測試、性能測試骑疆、LR腳本開發(fā)箍铭、面試經(jīng)驗(yàn)交流。感興趣可以175317069诈火,群內(nèi)會(huì)有不定期的發(fā)放免費(fèi)的資料鏈接冷守,這些資料都是從各個(gè)技術(shù)網(wǎng)站搜集、整理出來的拍摇,如果你有好的學(xué)習(xí)資料可以私聊發(fā)我充活,我會(huì)注明出處之后分享給大家。
c.它的設(shè)計(jì)理念:
Client/Server架構(gòu)混卵,運(yùn)行的時(shí)候Server端會(huì)監(jiān)聽Client端發(fā)過來的命令淮菠,翻譯這些命令發(fā)送給移動(dòng)設(shè)備或模擬器荤堪,然后移動(dòng)設(shè)備或模擬器做出響應(yīng)的反應(yīng)。正是因?yàn)檫@種架構(gòu)拥知,所以Client可以使用Appium client libraries多種語言的測試腳本碎赢,而且Server端完全可以部署在服務(wù)器上,甚至云服務(wù)器襟齿。
Session,每個(gè)Client連接到Server以后都會(huì)有一個(gè)Session ID猜欺,而且Client發(fā)送命令到Server端都需要這個(gè)Session ID开皿,因?yàn)檫@個(gè)seesion id代表了你所打開的瀏覽器或者是移動(dòng)設(shè)備的模擬器。所以你甚至可以打開N個(gè)Session赋荆,同時(shí)測試不同的設(shè)備或模擬器窄潭。
Desired Capabilities,其實(shí)就是一個(gè)鍵值對狈孔,設(shè)置一些測試的相關(guān)信息來告訴Server端均抽,我們需要測試iOS、還是Android油挥,或者換是WebApp等信息。
Appium Server是Node.js寫的深寥,所以可以直接用NPM來進(jìn)行安裝。
Appium Clients则酝,Mac OS和Win下提供GUI闰集,不需要裝Node.js,方便測試人員操作爽雄。
d.相關(guān)限制:
如果你在Windows使用Appium沐鼠,你沒法使用預(yù)編譯專用于OS X的.app文件叹谁,因?yàn)锳ppium依賴OS X專用的庫來支持iOS測試焰檩,所以在Windows平臺(tái)你不能測試iOS Apps侧漓。這意味著你只能通過在Mac上來運(yùn)行iOS測試。
三藤违、總結(jié)
從方面的對比和優(yōu)缺點(diǎn)分析不難看出纵揍。對于需要支持跨平臺(tái)和需要支持WebView的應(yīng)用,Appium的優(yōu)勢就比較明顯了璧榄,因?yàn)锳ppium擁有了以上幾大框架的所有優(yōu)點(diǎn):跨App吧雹,支持Native App、Hybird App搓蚪、Web App丁鹉,還支持N種語言來編寫你的測試腳本。如果是只針對Android平臺(tái)的應(yīng)用雳灾,我還是比較推薦UiAutomator冯凹,特別是后面推出的UiAutomator2.0,此外团驱,這兩年空凸,Google又推出了Espresso呀洲,它也應(yīng)該是一個(gè)很優(yōu)秀的框架,但是個(gè)人認(rèn)為適合編程基礎(chǔ)一般或剛?cè)腴T同學(xué)(反正我是有點(diǎn)用不太習(xí)慣)道逗。