qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          軟件自動(dòng)化測(cè)試

           軟件自動(dòng)化測(cè)試,作為手工測(cè)試的替代,越來(lái)越受到關(guān)注。Pekka Klärck,作為Robot Framework的創(chuàng)建者和核心開發(fā)者,按照系統(tǒng)級(jí)別,介紹了幾種不同的自動(dòng)化測(cè)試方法的區(qū)別。

            一、記錄回放的方式流行于商業(yè)工具之中,無(wú)需編程技能即可快速上手。然而這種方法相對(duì)脆弱,一旦UI變化測(cè)試就會(huì)受到影響,分散的腳本不可重用且難以維護(hù),而且系統(tǒng)在測(cè)試前必須可用(也就意味著無(wú)法使用A-TDD方法)。因此這種方法并不適合大型自動(dòng)化測(cè)試。

            二、線性腳本允許使用各種語(yǔ)言來(lái)編寫非結(jié)構(gòu)化腳本,腳本直接與被測(cè)系統(tǒng)交互。能夠快速上手,靈活性強(qiáng)。但是編寫腳本需要編程技能,系統(tǒng)中一個(gè)改動(dòng)會(huì)影響所有腳本,沒有經(jīng)過模塊化或重用的大量腳本難以維護(hù)。因此這種方法適合簡(jiǎn)單任務(wù),不適合大型自動(dòng)化。

            三、模塊化腳本由兩部分組成:驅(qū)動(dòng)腳本執(zhí)行測(cè)試,測(cè)試庫(kù)函數(shù)完成與被測(cè)系統(tǒng)交互。驅(qū)動(dòng)腳本編寫起來(lái)非常簡(jiǎn)單,這樣可以更快地建立新測(cè)試,容易維護(hù)。然而需要花時(shí)間和編程技能建立測(cè)試庫(kù),并將測(cè)試數(shù)據(jù)嵌入腳本,建立新測(cè)試就需要新的測(cè)試腳本。因此,只要擁有編程技能,這種方法還是適合大型項(xiàng)目,但不適合非編程人員。

            四、數(shù)據(jù)驅(qū)動(dòng)方法,將數(shù)據(jù)與測(cè)試腳本分離,基于模塊化的測(cè)試庫(kù),一個(gè)驅(qū)動(dòng)腳本可以執(zhí)行多個(gè)相似測(cè)試,這樣非常容易建立新測(cè)試。維護(hù)工作可以分離,測(cè)試人員負(fù)責(zé)數(shù)據(jù),程序員負(fù)責(zé)寫測(cè)試庫(kù)。然而,不同類型測(cè)試仍需要新的驅(qū)動(dòng)腳本,初始建立數(shù)據(jù)解析器和重用組件需要花人力。這種方法適合大型項(xiàng)目,只需要較少的編程技能。

            五、關(guān)鍵字驅(qū)動(dòng),將數(shù)據(jù)與關(guān)鍵字結(jié)合來(lái)描述如何使用數(shù)據(jù)執(zhí)行測(cè)試。這種方法具備數(shù)據(jù)驅(qū)動(dòng)的優(yōu)勢(shì),同時(shí)非編程人員也能建立新類型測(cè)試。所有測(cè)試由同一個(gè)框架來(lái)執(zhí)行,無(wú)需不同的驅(qū)動(dòng)腳本。然而初始成本很大,但是可以使用開源方案!因此非常適合大型項(xiàng)目。

            Pekka對(duì)以上五種方法的介紹其實(shí)也是對(duì)自動(dòng)化測(cè)試發(fā)展史的介紹,同時(shí)也體現(xiàn)了RobotFramework背后的設(shè)計(jì)思想。

            除了測(cè)試框架的選擇,要想做好自動(dòng)化測(cè)試,還要關(guān)注其他方面。

            自動(dòng)化測(cè)試需要關(guān)注可測(cè)性。自動(dòng)化最難的部分是與被測(cè)系統(tǒng)交互,特別是GUI層。確保系統(tǒng)容易被測(cè)試,比如給GUI元素增加標(biāo)識(shí)、輸出易于解析的文本、提供自動(dòng)化接口等。

            系統(tǒng)一般可以分為GUI層以及GUI之下的業(yè)務(wù)層。GUI層測(cè)試需要調(diào)用與普通用戶同樣的接口,但是某些GUI技術(shù)缺乏好的工具支持,會(huì)使測(cè)試變得脆弱,而且執(zhí)行相對(duì)較慢。從業(yè)務(wù)層開始測(cè)試相對(duì)容易,執(zhí)行快。但GUI層仍然需要被測(cè)試,以保證GUI正確連接到了業(yè)務(wù)層,甚至有時(shí)GUI層也具有業(yè)務(wù)功能。Pekka建議考慮對(duì)業(yè)務(wù)層進(jìn)行完全測(cè)試,而部分地對(duì)GUI層實(shí)行端到端測(cè)試。 不是所有系統(tǒng)都具有GUI層,卻可能具有API、數(shù)據(jù)庫(kù)、服務(wù)器、命令行等。自動(dòng)化測(cè)試框架可以調(diào)用不同驅(qū)動(dòng)來(lái)進(jìn)行測(cè)試。這些非GUI層相對(duì)容易測(cè)試,只要把測(cè)試用例看作另一個(gè)客戶端而已。

            那么自動(dòng)化測(cè)試應(yīng)該在什么階段進(jìn)行?如果開發(fā)完成后單獨(dú)做自動(dòng)化,這是典型的瀑布式過程,不同團(tuán)隊(duì)之間存在溝通障礙,反饋周期慢,產(chǎn)品在后期難以獲得可測(cè)性,從而導(dǎo)致復(fù)雜和脆弱的測(cè)試方案。相反,典型敏捷式過程中,程序員和測(cè)試人員協(xié)同完成自動(dòng)化。把自動(dòng)化看作團(tuán)隊(duì)開發(fā)的一部分,可測(cè)性不再是問題,團(tuán)隊(duì)做技術(shù)決定時(shí)就可以考慮可測(cè)性和工具選擇,程序員可以提前加入提供可測(cè)性的鉤子特性。

            自動(dòng)化測(cè)試需要版本控制和持續(xù)集成來(lái)支持。將測(cè)試和代碼放在一起,像管理代碼一樣管理測(cè)試腳本,那么多可用工具,SVN、GIT、Mercurial,沒道理不用。持續(xù)集成是全方位自動(dòng)化的關(guān)鍵,當(dāng)測(cè)試或代碼有所改動(dòng)立即執(zhí)行測(cè)試。如果測(cè)試運(yùn)行時(shí)間比較長(zhǎng),也可以定期運(yùn)行。使用Jenkins、Hudson、Cruise Control、 BuildBot吧,自己寫定時(shí)腳本或Cron Job可以休矣。

            選擇商業(yè)自動(dòng)化工具還是開源工具?好東西肯定貴,但是貴的不見得好,再便宜的許可證也會(huì)阻止整個(gè)團(tuán)隊(duì)的協(xié)作。而且商業(yè)化工具難以和其他自動(dòng)化工具(特別是其他廠商的)或版本控制、持續(xù)集成進(jìn)行整合和定制化。另外,產(chǎn)品終止或公司關(guān)門是潛在的風(fēng)險(xiǎn)。開源工具可供選擇余地很大,當(dāng)然也是良莠不齊。開源工具通常容易與其他工具整合,關(guān)鍵是免費(fèi),誰(shuí)都可以隨意使用和定制化,還永遠(yuǎn)不會(huì)消失。至于免費(fèi)軟件,越來(lái)越少了,很多自由軟件都已經(jīng)開源。免費(fèi)軟件同樣不能定制化,且存在中止的風(fēng)險(xiǎn)。

            做自動(dòng)化需要哪些技能?一般來(lái)說(shuō),包括Python、Ruby、Perl、JavaScript、正則表達(dá)式、XPath和CSS定位、SQL語(yǔ)句、版本控制等。

            有了自動(dòng)化,手工測(cè)試還需要嗎?當(dāng)然需要!!不過,要避免手工執(zhí)行腳本來(lái)測(cè)試,還是將其完全自動(dòng)化吧,測(cè)試人員可以更多關(guān)注于探索性測(cè)試。 記住,機(jī)器擅長(zhǎng)回歸測(cè)試,人類善于尋找Bug

          posted on 2012-08-29 09:42 順其自然EVO 閱讀(175) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2012年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 扎兰屯市| 舒城县| 北安市| 正阳县| 新沂市| 鹤山市| 湖北省| 同仁县| 额尔古纳市| 永寿县| 巴马| 赤城县| 高清| 达日县| 丽江市| 双柏县| 新郑市| 夏邑县| 项城市| 万载县| 额尔古纳市| 屏边| 贞丰县| 揭东县| 高碑店市| 澄江县| 芜湖县| 台南市| 菏泽市| 玛纳斯县| 开平市| 泽库县| 闽清县| 璧山县| 阿拉善右旗| 边坝县| 裕民县| 景东| 司法| 都安| 芷江|