您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源功能測(cè)試工具 > Watir
Ruby+Watir測(cè)試自動(dòng)化的新選擇
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/12/7 11:28:08 ] 推薦標(biāo)簽:

 在半年前,我想很多人,包括我自己,都不知道watir是個(gè)什么東東。在國(guó)內(nèi)幾乎沒(méi)有介紹的文章,嘗鮮者聊聊。但半年后,隨著用Ruby+Watir開發(fā)了一個(gè)具有較大規(guī)模的自動(dòng)化測(cè)試框架,再回頭看來(lái),我個(gè)人認(rèn)為,用RAW是做web自動(dòng)化測(cè)試的第一選擇。事實(shí)上,現(xiàn)在網(wǎng)上關(guān)于Watir的介紹和經(jīng)驗(yàn)也多了起來(lái)。

   在用Watir之前,對(duì)于自動(dòng)化測(cè)試工具,我只有一些使用Rational Robot的經(jīng)驗(yàn)。Robot對(duì)于我來(lái)說(shuō)大的問(wèn)題是,從一個(gè)C/C++/java程序員看來(lái),它的scrīpt語(yǔ)言實(shí)在太不敢恭維了。包括語(yǔ)法'丑陋',提供的外部庫(kù)功能匱乏(net, file, remote control, database ....),還有編輯器也非常簡(jiǎn)陋?偟膩(lái)說(shuō),我在寫robot scrīpt的時(shí)候,我都在懷念在eclipse里使用java無(wú)所不能的感覺(jué)。

   Robot并不全是壞的印象。它c(diǎn)ool的地方是Record&Replay。但是,如果是對(duì)某個(gè)不斷進(jìn)化的產(chǎn)品進(jìn)行測(cè)試,而且這個(gè)產(chǎn)品還不是那么簡(jiǎn)單。那么直接RecordReplay是遠(yuǎn)遠(yuǎn)不夠的。套用一句不知道是哪個(gè)專家說(shuō)的“自動(dòng)化測(cè)試程序也是程序”,也需要設(shè)計(jì),也需要架構(gòu),也需要設(shè)計(jì)模式。

   其他商業(yè)的自動(dòng)化測(cè)試工具我還簡(jiǎn)單體驗(yàn)過(guò)Silktest,也是我所在公司曾經(jīng)采用的。但它的scrīpt語(yǔ)言更不討人喜歡,而且據(jù)使用它的同事說(shuō)穩(wěn)定性存在問(wèn)題。更好的工具比如Mercury的QTP,我沒(méi)有使用過(guò)。

   現(xiàn)在看來(lái)Ruby+Watir確實(shí)是一個(gè)正確的選擇,但半年前這并不是顯而易見的。公司原來(lái)的測(cè)試工具是silktest,并在上面開發(fā)了一定量的testcases。不過(guò)由于人力不夠和lisense的問(wèn)題,這個(gè)測(cè)試套件已經(jīng)有很長(zhǎng)一段時(shí)間停步不前了,并沒(méi)有隨著產(chǎn)品的更新而更新。silktest形如雞肋,Robot,QTP...價(jià)格又高不可攀,而對(duì)于一個(gè)做產(chǎn)品的公司來(lái)說(shuō),自動(dòng)化測(cè)試似乎是不可避免的,所以公司招聘了一個(gè)自動(dòng)化測(cè)試Consultant,希望她能帶來(lái)價(jià)廉物美的利器。而這個(gè)consultant此前在用Ruby+Watir做項(xiàng)目。

   Consultant帶來(lái)了Ruby+Watir,并計(jì)劃做一個(gè)SmokeTest suite,集成進(jìn)Nightly build。她希望能在QA組里找一個(gè)助手,因?yàn)槲乙郧白隽艘恍┳詣?dòng)互測(cè)試的工具并在team里使用,所以我也參加了進(jìn)來(lái)。當(dāng)然這個(gè)時(shí)候,我對(duì)Watir一無(wú)所知,而Ruby,雖然曾經(jīng)進(jìn)入了我的視野,但在一年前,我選擇了Python作為我的第一腳本語(yǔ)言。

   2個(gè)人的Team建立了。計(jì)劃是consultant著手搭建框架,我先學(xué)習(xí)Ruby和Watir。隨后的一個(gè)月,我不得不放下放下ruby,而參加更緊迫的產(chǎn)品releas測(cè)試。當(dāng)然我還是抽空翻看了ProgramingRuby 2Ed一書,寫了一些程序來(lái)熱身一下,雖然是蜻蜓點(diǎn)水,但也被ruby的優(yōu)美和強(qiáng)大折服。當(dāng)consultant再次來(lái)到中國(guó),我對(duì)她準(zhǔn)備如何實(shí)現(xiàn)這個(gè)框架還是一無(wú)所知。我也不知道我得職責(zé)到底是什么。

   當(dāng)我提出我得問(wèn)題后,consultant給我看了她已經(jīng)完成的一些東西,我看了感覺(jué)比較失望。因?yàn)閺乃拇a看,她并不想提供一個(gè)框架,只是針對(duì)smoketest提供一些例程。對(duì)這些例程配合不同的輸入數(shù)據(jù),構(gòu)成smoketest的全部。而我此時(shí)已經(jīng)雄心勃勃,希望看到的是一個(gè)精心設(shè)計(jì)的面向?qū)ο罂蚣,?duì)QA所面對(duì)的產(chǎn)品的功能有一個(gè)比較完備的抽象層,-它不僅僅是為了Smoketest

   這個(gè)框架要實(shí)現(xiàn)的目標(biāo)是,在它基礎(chǔ)上應(yīng)該能夠把大部分(>80%)的Manual test比較輕松的翻譯為自動(dòng)化腳步。對(duì)每一個(gè)step都能直接而且方便的翻譯為一句ruby 語(yǔ)句。也是說(shuō)需要達(dá)到一種效果:讀自動(dòng)化腳本像在讀用人類語(yǔ)言描述的testcase。自動(dòng)化腳本完全是在描述測(cè)試邏輯,這真是一個(gè)夠“理想化”的目標(biāo)!


   我提出了我的想法,發(fā)給她一份我對(duì)整個(gè)框架設(shè)計(jì)的構(gòu)思。她顯然并不愿意大動(dòng)干戈。我于是試圖說(shuō)服我們這邊的QA Manager趁此機(jī)會(huì)做一個(gè)全功能的測(cè)試框架,并獲得了成功。consultant只能作出讓步,但要求不能miss smoketest的目標(biāo)。當(dāng)然我同意了。

   接下來(lái)的一個(gè)月consultant休假,她給我了一份list,羅列了要達(dá)到的目標(biāo),然后閃人了。我則全心投入了實(shí)現(xiàn)這個(gè)框架的工作。


   經(jīng)過(guò)幾個(gè)月的開發(fā),重要的是在給同事們使用后并得到了好多反饋。后我覺(jué)得是初步達(dá)到了目標(biāo)。隨后,我會(huì)謝謝在這個(gè)過(guò)程中遇到的問(wèn)題,解決的方法和得到的經(jīng)驗(yàn)。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd