自動化測試——回顧與展望

0 評論 10601 瀏覽 27 收藏 10 分鐘

2013年已經(jīng)過去,在這篇文章里,我希望和大家一起來整理一下2013年自動化測試領域一些比較值得關注的變化,也展望一下2014年可能發(fā)生的變化,希望讀者可以從中可以發(fā)現(xiàn)一些線索,進而做相關延伸閱讀。

在過去的2013年里面,自動化測試領域發(fā)生了幾大變化:

  • 自動化測試的重要性不斷提升隨著敏捷的熱度不斷提升,持續(xù)集成、持續(xù)交付作為敏捷的核心實踐之一,越來越受到重視。然而大家很快發(fā)現(xiàn),自動化測試是持續(xù)集成、持續(xù)交付的靈魂,沒有有效的自動化測試保證,持續(xù)集成和持續(xù)交付就僅僅是一個無用的軀殼了。
  • 分層測試觀念受到進一步重視自動化測試是一個老大難問題了,這里面一個非常重要的思路就是分層自動化測試(或測試金字塔),有興趣可以參見Martin Fowler的這個博客:http://martinfowler.com/bliki/TestPyramid.html。

    在2013年里,我們高興地看到從分層自動化測試方面,出現(xiàn)了一部力作——@公公直直-黃利 翻譯的《Google如何測試軟件》,這本書對分層自動化測試給出了非常具體的解析,個人認為此書是2013年度最值得閱讀的自動化測試書籍,強烈推薦。我自己也建立了一個“分層自動化測試”QQ群:20442181,也成為了一個有800成員的大群了,歡迎大家加入分享討論。

  • 商用工具昨日黃花,開源工具如日中天自動化測試工具方面幾年前一直是商用工具的天下,這幾年以Selenium為首的一系列開源工具不斷攻城掠地,不但國內(nèi)的互聯(lián)網(wǎng)公司,國內(nèi)的大型行業(yè)客戶(如金融行業(yè),交通行業(yè))也紛紛擁抱開源自動化測試工具。Selenium的WebDriver測試接口協(xié)議也成為了W3C規(guī)范草案(http://www.w3.org/TR/webdriver/),被各大瀏覽器廠商認可,這說明了Selenium的江湖地位已經(jīng)牢不可破了。坦率地來講,在Web界面自動化測試領域,已經(jīng)沒有任何理由采用商用工具了。從下面兩張趨勢圖可以看出,在世界范圍內(nèi),QTP2009年就已經(jīng)開始走下坡路;而在國內(nèi),Selenium的絕地反擊是在2012、2013年開始的。如果大家對這方面的內(nèi)容感興趣,可以考慮參加QCon 2014北京大會的技術訓練營:http://www.qconbeijing.com/node/468。

接下來說說我對2014年的展望吧:

  • 移動測試成為熱點隨著移動互聯(lián)網(wǎng)的爆發(fā),移動測試自動化很快地被提到議事日程上面來了。這方面今年會有幾本國內(nèi)作者原創(chuàng)的圖書出版:@厚臉皮-羋峮的《iOS測試實踐》,@Monkey陳曄曄-陳曄的《大話測試——移動互聯(lián)網(wǎng)Andoird、iOS應用測試》。
  • 從工具方面,很高興地看到這方面的開源工具風起云涌,如Robotium、Frank等等,但是,從目前趨勢來看,我個人非常看好Appium:一種支持WebDriver W3C協(xié)議,同時支持Android,iOS 的開源測試工具(參見Appium支持測試原生、混合及Web Android應用:http://www.infoq.com/cn/news/2013/05/appium-android)。
  • REST接口測試成為Web自動化測試的補充:隨著前端MVC框架的大范圍應用,REST接口應用范圍也越來越廣,基于REST接口的自動化測試成為一種投入產(chǎn)出比很理想的測試方式,相對于Web界面自動化,REST接口相對而言更加穩(wěn)定,測試案例也更容易維護。REST接口測試可以成為Web自動化測試的有益補充:REST接口測試可以關注于服務器邏輯驗證,而Web自動化測試可以關注于頁面展示邏輯及界面前端與服務器集成驗證。REST接口測試框架有許多種不同的實現(xiàn)方式,我個人會推薦使用開源工具Robot Framework加上Requests庫來進行REST接口測試。(感興趣的讀者可以參見下面的文章,其中有對Robot Framework的介紹: 功能測試工具研討會:http://www.infoq.com/cn/news/2009/09/functional-test-tools/,Robot Framework作者建議如何選擇自動化測試框架 ,http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest?)
  • 用例輔助生成技術初露端倪:用例錄制回放技術一直是許多測試人員(領導)心中的一個夢想,但是,我要殘酷地告訴大家,這是一個白日夢,所有宣稱能夠通過錄制回訪技術來全自動獲取可維護測試腳本的個人和廠商無疑都是騙子。測試腳本也是程序,也需要經(jīng)過仔細設計,應用若干設計模式,才能達到簡潔、易讀、易維護的目標。(有興趣的讀者可以參考:Martin Fowler對將page對象用于Web測試的基本經(jīng)驗法則?http://www.infoq.com/cn/articles/martin-fowler-basic-rule-of-thumbon-for-Web-testing,以及GUI功能測試自動化模式:http://www.infoq.com/cn/articles/gui-automation-patterns)。

    但是,我們不能否認,確實可以利用錄制技術,在特定工具的幫助下,自動捕獲一些信息,再自動應用一些設計模式來輔助案例的編寫工作,尤其在接口測試方面,可行性非常大,這一塊會是本人今年的一個研究重點。對這方面有興趣的讀者,可以參見這兩個工具vcr(https://github.com/vcr/vcr)和BetaMax(http://freeside.co/betamax/)。

  • Mock系統(tǒng)技術逐步普及:在自動化測試過程中,構建穩(wěn)定的測試環(huán)境至關重要,其中一個重要手段就是將外部系統(tǒng)或不穩(wěn)定的系統(tǒng)Mock起來。這方面去年@dreamhead-鄭曄已經(jīng)開源了一個支持HTTP協(xié)議的Moco框架(感興趣的讀者可以參見:鄭曄談Moco框架的開發(fā):寫一個好的內(nèi)部DSL,寫一個表達性好的程序,http://www.infoq.com/cn/news/2013/07/zhengye-on-moco),@橫刀天笑-余昭輝也分享過他們在去哪兒網(wǎng)的實踐 (參見:為功能測試構建通用mock server系統(tǒng),http://www.infoq.com/cn/articles/auto-test-mock-server)。

    誠然由于環(huán)境的復雜性,上述工具未必可以完全解決大家在各自測試中的各種系統(tǒng)隔離需求,但是我相信他們解決這些問題的思路,應對會讓大家深受啟發(fā)。

  • 測試DSL, 實例化需求走向前臺:《實例化需求》一書是2012年Jolt圖書大獎的獲得者,當年就引進中國。實例化需求的思想其實和驗收測試驅動(Acceptance Test Driven Development)類似,限于篇幅這里就不詳細展開解釋了。但是兩者都需要測試案例具備很高的抽象層次,可以被業(yè)務人員和開發(fā)人員很容易地讀懂,這就需要實現(xiàn)測試DSL(Domain Specific Language),也就是說需要在一個特定領域之內(nèi),將特定測試能力封裝成一門易于業(yè)務、測試、開發(fā)理解溝通的專用測試語言,然后用這門DSL來編寫實際測試案例。Robot Framework作為一個關鍵詞驅動框架,可以很好地支持測試DSL的定義。下面就是我們團隊在一個客戶出實現(xiàn)的測試DSL,供大家參考:

我本人認為,作為一名測試人員,不應該區(qū)分手工測試人員和自動化測試人員,自動化測試技術是每個測試人員都必須掌握的技能,希望在2014年所有InfoQ的測試行業(yè)讀者都能在自動化測試技術方面更上一層樓。

來源:吳穹—資深敏捷專家,Agilean聯(lián)合創(chuàng)始人

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!