深入解讀Ruby自動(dòng)化測(cè)試作用
一個(gè)好的自動(dòng)化測(cè)試方式對(duì)于測(cè)試員來(lái)說(shuō)是相當(dāng)重要的。下面我們向大家介紹的是關(guān)于Ruby自動(dòng)化測(cè)試的一些方法介紹,希望對(duì)大家有所幫助。#t#
自從我開(kāi)始著手研究 Watir,就慢慢對(duì)自動(dòng)化測(cè)試有了新的認(rèn)識(shí),這些認(rèn)識(shí)也促使著我的研究越來(lái)越深入。12 年之前,Brian Marick 曾告訴過(guò)我開(kāi)源的開(kāi)發(fā)人員應(yīng)該將自己的認(rèn)識(shí)和觀點(diǎn)分享給他人,這樣也能讓社區(qū)更清楚他們工作的目的。那我也來(lái)分享一下我的認(rèn)識(shí)吧。
自動(dòng)化測(cè)試系統(tǒng)存在三個(gè)關(guān)鍵因素:語(yǔ)言、驅(qū)動(dòng)程序和測(cè)試工具。您編寫(xiě)測(cè)試用例及擴(kuò)展測(cè)試系統(tǒng)時(shí)都需用用到語(yǔ)言,所以編程語(yǔ)言曾一度令我著迷,如 Perl、Python 和 Ruby。而且我還發(fā)現(xiàn)測(cè)試人員往往更能將各種編程語(yǔ)言運(yùn)用得得心應(yīng)手。盡管我有充分的理由偏愛(ài)Ruby自動(dòng)化測(cè)試,但是其他一些較好的自動(dòng)化測(cè)試系統(tǒng)卻使用的是其他的編程語(yǔ)言。事實(shí)上在過(guò)去的幾年里,我用過(guò) Perl、Python 和 VB 建立測(cè)試框架,因?yàn)檫@些通常是客戶端已使用的語(yǔ)言。另外,相比商用測(cè)試工具套件常使用的私有語(yǔ)言,我更側(cè)重使用全功能的編程語(yǔ)言,可能因?yàn)槲覍?duì)私有語(yǔ)言已失去了耐心。
選擇語(yǔ)言的范圍很廣,但是尋找一個(gè)合適的驅(qū)動(dòng)程序就相對(duì)困難很多。驅(qū)動(dòng)程序是用于您應(yīng)用程序驅(qū)動(dòng)的,就像 Watir 是一款瀏覽器的驅(qū)動(dòng)程序,適用于網(wǎng)絡(luò)應(yīng)用程序的驅(qū)動(dòng)。驅(qū)動(dòng)程序可以對(duì)語(yǔ)言的選擇起到?jīng)Q定性作用。幾年前,我針對(duì)命令行應(yīng)用程序使用的驅(qū)動(dòng)是 Expert,其相對(duì)應(yīng)的語(yǔ)言是 TCL,所以對(duì)應(yīng)的工具套用的也是 TCL 語(yǔ)言。我開(kāi)發(fā) Watir,是因?yàn)槲蚁胗?Ruby 的瀏覽器驅(qū)動(dòng)程序。使用 Ruby 的 Watir 是我們針對(duì)網(wǎng)絡(luò)應(yīng)用程序測(cè)試的解決方案。
測(cè)試系統(tǒng)的第三個(gè)關(guān)鍵因素即測(cè)試工具,它主要負(fù)責(zé)執(zhí)行測(cè)試用例,以及收集、報(bào)告結(jié)果。在我們開(kāi)發(fā)初期,我們都是用 Test::Unit,這是一個(gè)基于Ruby自動(dòng)化測(cè)試的測(cè)試工具,可用于單元測(cè)試,同時(shí)也可用于功能測(cè)試。近期,也有些 Watir 用戶開(kāi)始使用 Rspec 或 Cucumber,但是也有些人不喜歡使用現(xiàn)有的測(cè)試工具,而更喜歡自己構(gòu)建。
我是在開(kāi)發(fā)商用測(cè)試工具套件(如 SilkTest 和 WinRunner)時(shí)有的這些認(rèn)識(shí)。盡管這些套件包經(jīng)常被認(rèn)定為工具,但我發(fā)現(xiàn)他們實(shí)際上是壓縮了一系列的集成工具。它們的使用預(yù)期往往不能滿足測(cè)試人員的實(shí)際需求。就像數(shù)據(jù)驅(qū)動(dòng)測(cè)試期間,我們需要打散原有的套件,然后按一種更加合理的配置重新組裝。所以我需要測(cè)試人員對(duì)測(cè)試系統(tǒng)內(nèi)每個(gè)單獨(dú)的工具都能清楚地了解。
許多新的 Watir 使用者在區(qū)分 Watir(驅(qū)動(dòng)程序)結(jié)點(diǎn)和 Ruby(語(yǔ)言)起點(diǎn)時(shí)會(huì)有困難,這是因?yàn)樗麄儗?duì)這兩者的功能未能清楚地理解。我得知一些教 Java 的老師不喜歡學(xué)生去使用 IDE(如 Eclipse 或 Netbeans),而更希望他們能學(xué)習(xí)使用一些需要的工具,如編輯工具和壓縮工具,以了解它們的功能。同樣的,我也希望測(cè)試人員能更清楚地了解測(cè)試系統(tǒng)內(nèi)不同工具和部件的功能。
一些新的 Watir 使用者經(jīng)常會(huì)來(lái)問(wèn)一些問(wèn)題,而這些問(wèn)題的答案很明顯是我們已經(jīng)獲知的。Watir 是否可以讀 CSV 文件?Watir 是否可以進(jìn)行日期運(yùn)算?Watir 是否可以從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)?對(duì)于這些問(wèn)題的答案都是否定的,Watir 不能做到這些,但是 Ruby自動(dòng)化測(cè)試卻能做到。任何瀏覽器驅(qū)動(dòng)程序都不能完成這些操作(就像您的壓縮軟件不支持搜索和替換),但是任何全功能的編程語(yǔ)言卻能做到。
因?yàn)闇y(cè)試人員習(xí)慣使用的是商用工具套件,這些套件所包含的系統(tǒng)是封閉的,所以他們?cè)谑褂?Watir 初期可能會(huì)提出這樣的問(wèn)題。但實(shí)際上您無(wú)需擔(dān)心 Watir 是否缺少某些功能,您只需具備的使用這些功能的能力,一旦供應(yīng)商將這些功能加入套件包內(nèi),即能馬上熟練運(yùn)用。Watir 是一個(gè)開(kāi)發(fā)式系統(tǒng)的一部分,經(jīng)常會(huì)有非 Watir 社區(qū)的人員對(duì)現(xiàn)有的庫(kù)進(jìn)行完善,他們可以說(shuō)是屬于一個(gè)更大的 Ruby 社區(qū)的人員。