自動(dòng)化測(cè)試——回顧與展望
![](http://image.woshipm.com/wp-files/img/91.jpg)
2013年已經(jīng)過(guò)去,在這篇文章里,我希望和大家一起來(lái)整理一下2013年自動(dòng)化測(cè)試領(lǐng)域一些比較值得關(guān)注的變化,也展望一下2014年可能發(fā)生的變化,希望讀者可以從中可以發(fā)現(xiàn)一些線索,進(jìn)而做相關(guān)延伸閱讀。
在過(guò)去的2013年里面,自動(dòng)化測(cè)試領(lǐng)域發(fā)生了幾大變化:
- 自動(dòng)化測(cè)試的重要性不斷提升隨著敏捷的熱度不斷提升,持續(xù)集成、持續(xù)交付作為敏捷的核心實(shí)踐之一,越來(lái)越受到重視。然而大家很快發(fā)現(xiàn),自動(dòng)化測(cè)試是持續(xù)集成、持續(xù)交付的靈魂,沒(méi)有有效的自動(dòng)化測(cè)試保證,持續(xù)集成和持續(xù)交付就僅僅是一個(gè)無(wú)用的軀殼了。
- 分層測(cè)試觀念受到進(jìn)一步重視自動(dòng)化測(cè)試是一個(gè)老大難問(wèn)題了,這里面一個(gè)非常重要的思路就是分層自動(dòng)化測(cè)試(或測(cè)試金字塔),有興趣可以參見(jiàn)Martin Fowler的這個(gè)博客:http://martinfowler.com/bliki/TestPyramid.html。
在2013年里,我們高興地看到從分層自動(dòng)化測(cè)試方面,出現(xiàn)了一部力作——@公公直直-黃利 翻譯的《Google如何測(cè)試軟件》,這本書(shū)對(duì)分層自動(dòng)化測(cè)試給出了非常具體的解析,個(gè)人認(rèn)為此書(shū)是2013年度最值得閱讀的自動(dòng)化測(cè)試書(shū)籍,強(qiáng)烈推薦。我自己也建立了一個(gè)“分層自動(dòng)化測(cè)試”QQ群:20442181,也成為了一個(gè)有800成員的大群了,歡迎大家加入分享討論。
- 商用工具昨日黃花,開(kāi)源工具如日中天自動(dòng)化測(cè)試工具方面幾年前一直是商用工具的天下,這幾年以Selenium為首的一系列開(kāi)源工具不斷攻城掠地,不但國(guó)內(nèi)的互聯(lián)網(wǎng)公司,國(guó)內(nèi)的大型行業(yè)客戶(hù)(如金融行業(yè),交通行業(yè))也紛紛擁抱開(kāi)源自動(dòng)化測(cè)試工具。Selenium的WebDriver測(cè)試接口協(xié)議也成為了W3C規(guī)范草案(http://www.w3.org/TR/webdriver/),被各大瀏覽器廠商認(rèn)可,這說(shuō)明了Selenium的江湖地位已經(jīng)牢不可破了。坦率地來(lái)講,在Web界面自動(dòng)化測(cè)試領(lǐng)域,已經(jīng)沒(méi)有任何理由采用商用工具了。從下面兩張趨勢(shì)圖可以看出,在世界范圍內(nèi),QTP2009年就已經(jīng)開(kāi)始走下坡路;而在國(guó)內(nèi),Selenium的絕地反擊是在2012、2013年開(kāi)始的。如果大家對(duì)這方面的內(nèi)容感興趣,可以考慮參加QCon 2014北京大會(huì)的技術(shù)訓(xùn)練營(yíng):http://www.qconbeijing.com/node/468。
接下來(lái)說(shuō)說(shuō)我對(duì)2014年的展望吧:
- 移動(dòng)測(cè)試成為熱點(diǎn)隨著移動(dòng)互聯(lián)網(wǎng)的爆發(fā),移動(dòng)測(cè)試自動(dòng)化很快地被提到議事日程上面來(lái)了。這方面今年會(huì)有幾本國(guó)內(nèi)作者原創(chuàng)的圖書(shū)出版:@厚臉皮-羋峮的《iOS測(cè)試實(shí)踐》,@Monkey陳曄曄-陳曄的《大話測(cè)試——移動(dòng)互聯(lián)網(wǎng)Andoird、iOS應(yīng)用測(cè)試》。
- 從工具方面,很高興地看到這方面的開(kāi)源工具風(fēng)起云涌,如Robotium、Frank等等,但是,從目前趨勢(shì)來(lái)看,我個(gè)人非??春肁ppium:一種支持WebDriver W3C協(xié)議,同時(shí)支持Android,iOS 的開(kāi)源測(cè)試工具(參見(jiàn)Appium支持測(cè)試原生、混合及Web Android應(yīng)用:http://www.infoq.com/cn/news/2013/05/appium-android)。
- REST接口測(cè)試成為Web自動(dòng)化測(cè)試的補(bǔ)充:隨著前端MVC框架的大范圍應(yīng)用,REST接口應(yīng)用范圍也越來(lái)越廣,基于REST接口的自動(dòng)化測(cè)試成為一種投入產(chǎn)出比很理想的測(cè)試方式,相對(duì)于Web界面自動(dòng)化,REST接口相對(duì)而言更加穩(wěn)定,測(cè)試案例也更容易維護(hù)。REST接口測(cè)試可以成為Web自動(dòng)化測(cè)試的有益補(bǔ)充:REST接口測(cè)試可以關(guān)注于服務(wù)器邏輯驗(yàn)證,而Web自動(dòng)化測(cè)試可以關(guān)注于頁(yè)面展示邏輯及界面前端與服務(wù)器集成驗(yàn)證。REST接口測(cè)試框架有許多種不同的實(shí)現(xiàn)方式,我個(gè)人會(huì)推薦使用開(kāi)源工具Robot Framework加上Requests庫(kù)來(lái)進(jìn)行REST接口測(cè)試。(感興趣的讀者可以參見(jiàn)下面的文章,其中有對(duì)Robot Framework的介紹: 功能測(cè)試工具研討會(huì):http://www.infoq.com/cn/news/2009/09/functional-test-tools/,Robot Framework作者建議如何選擇自動(dòng)化測(cè)試框架 ,http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest?)
- 用例輔助生成技術(shù)初露端倪:用例錄制回放技術(shù)一直是許多測(cè)試人員(領(lǐng)導(dǎo))心中的一個(gè)夢(mèng)想,但是,我要?dú)埧岬馗嬖V大家,這是一個(gè)白日夢(mèng),所有宣稱(chēng)能夠通過(guò)錄制回訪技術(shù)來(lái)全自動(dòng)獲取可維護(hù)測(cè)試腳本的個(gè)人和廠商無(wú)疑都是騙子。測(cè)試腳本也是程序,也需要經(jīng)過(guò)仔細(xì)設(shè)計(jì),應(yīng)用若干設(shè)計(jì)模式,才能達(dá)到簡(jiǎn)潔、易讀、易維護(hù)的目標(biāo)。(有興趣的讀者可以參考:Martin Fowler對(duì)將page對(duì)象用于Web測(cè)試的基本經(jīng)驗(yàn)法則?http://www.infoq.com/cn/articles/martin-fowler-basic-rule-of-thumbon-for-Web-testing,以及GUI功能測(cè)試自動(dòng)化模式:http://www.infoq.com/cn/articles/gui-automation-patterns)。
但是,我們不能否認(rèn),確實(shí)可以利用錄制技術(shù),在特定工具的幫助下,自動(dòng)捕獲一些信息,再自動(dòng)應(yīng)用一些設(shè)計(jì)模式來(lái)輔助案例的編寫(xiě)工作,尤其在接口測(cè)試方面,可行性非常大,這一塊會(huì)是本人今年的一個(gè)研究重點(diǎn)。對(duì)這方面有興趣的讀者,可以參見(jiàn)這兩個(gè)工具vcr(https://github.com/vcr/vcr)和BetaMax(http://freeside.co/betamax/)。
- Mock系統(tǒng)技術(shù)逐步普及:在自動(dòng)化測(cè)試過(guò)程中,構(gòu)建穩(wěn)定的測(cè)試環(huán)境至關(guān)重要,其中一個(gè)重要手段就是將外部系統(tǒng)或不穩(wěn)定的系統(tǒng)Mock起來(lái)。這方面去年@dreamhead-鄭曄已經(jīng)開(kāi)源了一個(gè)支持HTTP協(xié)議的Moco框架(感興趣的讀者可以參見(jiàn):鄭曄談Moco框架的開(kāi)發(fā):寫(xiě)一個(gè)好的內(nèi)部DSL,寫(xiě)一個(gè)表達(dá)性好的程序,http://www.infoq.com/cn/news/2013/07/zhengye-on-moco),@橫刀天笑-余昭輝也分享過(guò)他們?cè)谌ツ膬壕W(wǎng)的實(shí)踐 (參見(jiàn):為功能測(cè)試構(gòu)建通用mock server系統(tǒng),http://www.infoq.com/cn/articles/auto-test-mock-server)。
誠(chéng)然由于環(huán)境的復(fù)雜性,上述工具未必可以完全解決大家在各自測(cè)試中的各種系統(tǒng)隔離需求,但是我相信他們解決這些問(wèn)題的思路,應(yīng)對(duì)會(huì)讓大家深受啟發(fā)。
- 測(cè)試DSL, 實(shí)例化需求走向前臺(tái):《實(shí)例化需求》一書(shū)是2012年Jolt圖書(shū)大獎(jiǎng)的獲得者,當(dāng)年就引進(jìn)中國(guó)。實(shí)例化需求的思想其實(shí)和驗(yàn)收測(cè)試驅(qū)動(dòng)(Acceptance Test Driven Development)類(lèi)似,限于篇幅這里就不詳細(xì)展開(kāi)解釋了。但是兩者都需要測(cè)試案例具備很高的抽象層次,可以被業(yè)務(wù)人員和開(kāi)發(fā)人員很容易地讀懂,這就需要實(shí)現(xiàn)測(cè)試DSL(Domain Specific Language),也就是說(shuō)需要在一個(gè)特定領(lǐng)域之內(nèi),將特定測(cè)試能力封裝成一門(mén)易于業(yè)務(wù)、測(cè)試、開(kāi)發(fā)理解溝通的專(zhuān)用測(cè)試語(yǔ)言,然后用這門(mén)DSL來(lái)編寫(xiě)實(shí)際測(cè)試案例。Robot Framework作為一個(gè)關(guān)鍵詞驅(qū)動(dòng)框架,可以很好地支持測(cè)試DSL的定義。下面就是我們團(tuán)隊(duì)在一個(gè)客戶(hù)出實(shí)現(xiàn)的測(cè)試DSL,供大家參考:
我本人認(rèn)為,作為一名測(cè)試人員,不應(yīng)該區(qū)分手工測(cè)試人員和自動(dòng)化測(cè)試人員,自動(dòng)化測(cè)試技術(shù)是每個(gè)測(cè)試人員都必須掌握的技能,希望在2014年所有InfoQ的測(cè)試行業(yè)讀者都能在自動(dòng)化測(cè)試技術(shù)方面更上一層樓。
來(lái)源:吳穹—資深敏捷專(zhuān)家,Agilean聯(lián)合創(chuàng)始人
- 目前還沒(méi)評(píng)論,等你發(fā)揮!