在我看來,著書立說是神秘而神圣的,非有大才之人不能為之,非胸有丘壑者不敢為之,一直以來對文人寫手心存敬畏,對著作等身的高產(chǎn)大牛們的景仰之情更是如滔滔江水奔流不息。此前,雖然也想過基于某個主題寫本書,然而本人才疏學(xué)淺,對照身邊如云的大牛和謙謙君子們,就不敢隨便造次了,加上沒有適合下手的契機(jī)和主題,寫書就一直停留在夢想階段。直到2015年,我負(fù)責(zé)的產(chǎn)品系統(tǒng)的自動化建設(shè)工作做了里程碑總結(jié),心想,也許可以就我在自動化測試建設(shè)和實施方面的經(jīng)歷和經(jīng)驗,梳理一下做個總結(jié)跟大家分享,為將來可能做這塊工作的后來人提供一些參考和借鑒,如果能切實幫到一些同學(xué),讓他們少走彎路,那自然就更美好了。加上,期間還有二、三好友有意無意的慫恿鼓動,醞釀了一段時間之后,我和Bree就此想法聊了一通,雙方坦誠的交換了意見和立場,達(dá)成了共識,可謂一拍即合。因而斗膽執(zhí)筆,在此后的一年多時間里,從午休到周末,擠各種業(yè)余時間,開始了本書的漫漫編寫之路。
記得最先的自動化測試,是從自學(xué)QTP開始的,那會,QTP在GUI自動化測試的領(lǐng)域里風(fēng)頭正勁大行其道,還記得剛學(xué)習(xí)的時候,下班后就在家鉆研工具寫好測試代碼,上班的時候把研究的成果應(yīng)用到工作中,每次看見系統(tǒng)按照自己的預(yù)期構(gòu)想跑起來的時候,心里充滿了歡樂和滿足。當(dāng)然,就web的GUI自動化測試來說,Selenium等工具崛起有段時間了,QTP自身的弊端越來越明顯且積重難返,多少有些昨日黃花的味道,想想有些可惜。
后來,因公司的業(yè)務(wù)需要,我受命負(fù)責(zé)建設(shè)公司各條產(chǎn)品線、系統(tǒng)的自動化測試體系,剛開始自己摸索,逐個擊破,從無到有,從B/S到C/S,從BPT到TC,從到基于GUI到基于接口,到控制嵌入式機(jī)器的指令集從而實現(xiàn)自動操作的預(yù)期目標(biāo),及至源碼級自動化測試(Junit等),一步一個腳印的積累,漸漸的自動化測試團(tuán)隊的人員也增加起來了,我也有了幫手而不再是單打獨(dú)斗孤軍奮戰(zhàn),再后來,測試工具從標(biāo)準(zhǔn)化工具到內(nèi)部定制的測試平臺都有了,自動化測試系統(tǒng)從1期升級成了2期,并研究應(yīng)用了基于Jenkins的持續(xù)集成平臺,把 svn、被測系統(tǒng)、多個自動化測試系統(tǒng)、測試代碼和數(shù)據(jù)集成到了一起并有計劃的統(tǒng)一調(diào)度,自動化測試演進(jìn)為測試自動化,漸漸的建立起了公司的自動化體系,并形成固定的機(jī)制和良性的循環(huán)。
尼采說一切真理都是彎曲的,事物總向真相的彼岸螺旋式前進(jìn),回想自動化測試建設(shè)的過程亦頗曲折遠(yuǎn)不是一帆風(fēng)順,最有壓力的時候莫過于每周公司例會向領(lǐng)導(dǎo)匯報自動化測試的工作進(jìn)展,領(lǐng)導(dǎo)每次過問進(jìn)展都很難回答,正如大家知道,自動化測試的基礎(chǔ)建設(shè)不是一蹴而就的,需要有至少半年甚至更長的建設(shè)周期才能看到效果,而在開始階段成效出來之前,硬著頭皮跟領(lǐng)導(dǎo)匯報和說明個中原委是很難受的,當(dāng)時真有些如坐針氈時不我待的感覺,巴不得使出渾身解數(shù)盡快推進(jìn)好使成果快點(diǎn)出來——這點(diǎn),相信有過類似經(jīng)歷的同學(xué)多少有些感同身受吧。然而正是這曲折的逆境讓人得到歷練快速成長,在持續(xù)不斷的解決各種疑難雜癥的過程中錘煉了自己,說是鳳凰涅磐脫胎換骨顯然夸張了,然而相比從前的確有了明顯的進(jìn)步。
逐漸的,公司的自動化測試建設(shè)運(yùn)行上了軌道,部分成果開始顯現(xiàn)出來:無人值守使有限的硬件資源和測試時間得到了更充分的利用、回歸測試和對比測試快加高效,等,團(tuán)隊的成就感、士氣和質(zhì)量信息有了明顯的提升。然而,新的問題又來了,隨著時間的推移,測試系統(tǒng)開始面臨新的問題,包括功能和性能方面的問題,比如測試數(shù)據(jù)越來越龐大,測試系統(tǒng)在加載和響應(yīng)方面越來越慢、原來的設(shè)計在兼容和擴(kuò)展方面的局限性帶來的問題,又比如產(chǎn)品本身的變更要求測試系統(tǒng)、工具作相應(yīng)的調(diào)整等。測試系統(tǒng)在應(yīng)用期間的維護(hù)和升級問題,也需要提前考量。
任何事情在推行過程中都不可避免會碰到各種阻力、障礙,在質(zhì)疑的聲音面前,堅定的信念和扎實的執(zhí)行力是最佳的回應(yīng)。比如,定制測試系統(tǒng)在開發(fā)階段時,常常為了一個功能點(diǎn)是否需要實現(xiàn)而和各方爭得面紅耳赤不可開交(當(dāng)然是因為工作上看法不同的爭論),現(xiàn)在回想起來,很感謝、慶幸當(dāng)初的一些堅持,其效果是顯而易見的:到現(xiàn)在,有些極其重要又極其無聊的測試工作完全可以用自動化來替代和實現(xiàn)了,此后這些模塊再也沒有在生產(chǎn)環(huán)境出過問題捅過簍子。保障了質(zhì)量,也減輕了部門兄弟本來就不輕松的測試工作以及心里負(fù)擔(dān)。
內(nèi)容簡介:
本書重點(diǎn)講手機(jī)App應(yīng)用的自動化測試。含自動化測試方法論、資源準(zhǔn)備、測試工具、測試框架及搭建方法、腳本語言、調(diào)試方法和技巧、維護(hù)方法、測試案例、報告分析、問題追溯等。下面將一一道來。
第一章,有人說,2013年是移動互聯(lián)網(wǎng)的元年,如果是這樣,那么到了2015年移動App的應(yīng)用市場早已風(fēng)生水起日臻成熟,手機(jī)應(yīng)用的測試再次成為測試領(lǐng)域不能回避的主旋律。在第1章,扼要的介紹了手機(jī)應(yīng)用App測試的主要場景,但并未展開仔細(xì)講而是點(diǎn)到為止,畢竟本書的重點(diǎn)是講面向App的自動化測試,如果讀者感興趣另請查閱相關(guān)資料。
第二章,資源是有限的,既要達(dá)成自動化建設(shè)目標(biāo),又不能影響現(xiàn)有日常工作的開展,保障輸出的測試質(zhì)量。人力、時間甚至硬件等資源不時出現(xiàn)沖突頻頻受到掣肘,如何在有限的資源下突出重圍完成工作目標(biāo)?在本章節(jié)對此進(jìn)行了剖析,提出解決之道。
第三章,在紛繁蕪雜的各種測試解決方案里頭何去何從,怎么選擇怎么割舍,如何找到適合自己的那一款?腳本語言哪家強(qiáng)?分層的測試設(shè)計的套路是什么、具體怎么實現(xiàn)和應(yīng)用?啥是云測試?這些問題,在本章節(jié)可以找到答案。
第四、五章,引入新生事物并基于此搭建測試環(huán)境是很繁瑣的,這點(diǎn)相信很多人有體會,環(huán)境弄好了,后面的工作就有如水到渠成了。然而,操作系統(tǒng)、工具類型、軟、硬件版本等等這些都是影響環(huán)境最后是否好用的因子,稍有不慎可能就得返工或就此埋下隱患,導(dǎo)致后續(xù)可能出現(xiàn)一些莫名其妙的問題,很浪費(fèi)時間、容易產(chǎn)生挫折感。本書充分考慮了這些細(xì)節(jié),在本章節(jié),就基礎(chǔ)環(huán)境和Appium環(huán)境的搭建、配置進(jìn)行了詳細(xì)的闡述和說明,并做到圖文并茂,使讀者一目了然。
第六、七章,Android自動化測試基礎(chǔ)知識,包括識別原理,組件類型、調(diào)試技巧、識別工具等。
第八~十三章,系統(tǒng)的介紹了Monkey、UiAutomator和Appium的前世今生,它們都是基于手機(jī)App應(yīng)用的自動化測試工具,這些章節(jié)結(jié)合實例系統(tǒng)闡述講解了它們工作原理、對象識別、代碼開發(fā)、測試數(shù)據(jù)設(shè)計及維護(hù)、運(yùn)行及報告等方面的區(qū)別聯(lián)系。
[if !supportLists]n? [endif]Monkey:App隨機(jī)測試的利器,全面的講解了Monkey在參數(shù)分析、異常處理、白名單黑名單方面的設(shè)置和應(yīng)用并以具體的實例中應(yīng)用。
[if !supportLists]n? [endif]UiAutomator:App自動化測試的重器,是App自動化測試的主流平臺之一,章節(jié)詳細(xì)介紹了UiAutomator的API應(yīng)用、調(diào)試技巧、案例分析和報告解析。
[if !supportLists]n? [endif]Appium:Appium是本書的重點(diǎn)章節(jié),是App自動化測試的神器,章節(jié)詳細(xì)介紹了元素定位方法、API實例詳解及應(yīng)用舉例。
[if !supportLists]n? [endif]組合框架:集成了TestNG、Maven、Log2j等工具,以Appium為核心構(gòu)建成的框架,從中可以發(fā)現(xiàn)如何讓框架的功能變得更為強(qiáng)大而全面,使日志生成、報告分析等模塊用起來更加得心應(yīng)手。此章是集大成者,它融會貫通了前面各章的主要內(nèi)容,需重點(diǎn)學(xué)習(xí)。
希望
去年開始執(zhí)筆的時候,市面上定位于App自動化的書不多,到今天已經(jīng)有些問世了,如果要問本書在同類書籍中憑什么脫穎而出,我想,其中比較重要的一點(diǎn),就是書中的每一點(diǎn)體會每個案例,都來源于實際工作的沉淀和感悟,每個案例、每個步驟之間步步為營環(huán)環(huán)相扣,都是執(zhí)筆者親自操作、調(diào)試并截圖記錄,經(jīng)得起推敲,耐得住琢磨。評審階段,本著“No pain, No Gain”的自虐精神,秉承寧缺勿濫的宗旨理念,對有爭議的、容易引起理解分歧的地方反復(fù)推敲不斷精簡修繕,為的是讓書里的內(nèi)容盡可能深入淺出簡單易懂,降低學(xué)習(xí)和應(yīng)用的門檻及成本,為讀者提供切實有效的幫助和參考。
在本書編寫的過程中,是一個自我學(xué)習(xí)和完善的過程,期間對相關(guān)的知識點(diǎn)查漏補(bǔ)缺,對理解不夠深刻的知識點(diǎn)重新整理,力求理解到位。從實踐中總結(jié)和修正了理論,反過來理論指導(dǎo)了工作的開展,在理論和實踐之間來回游刃穿梭。然而肯定還有不少不足之處,還需要繼續(xù)優(yōu)化和完善,衷心的希望讀者能提出寶貴意見給予批評指正。
鳴謝
感謝搭檔Bree,日理萬機(jī)之余仍不忘投入精力到重點(diǎn)章節(jié)的編寫中,本書的誕生離不開你的努力,謹(jǐn)獻(xiàn)上鮮花一枝,聊表我的敬意和謝意。
感謝在我工作期間、在本書編寫期間對我有過指導(dǎo)和幫助的領(lǐng)導(dǎo)、和師長、同事、朋友,在此獻(xiàn)上鮮花若干!