《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 常用軟件測(cè)試自動(dòng)化框架
常用軟件測(cè)試自動(dòng)化框架
摘要: 所謂自動(dòng)化測(cè)試框架,是由一些假設(shè),概念和為自動(dòng)化測(cè)試提供支持的實(shí)踐組成的集合。
Abstract:
Key words :

    所謂自動(dòng)化測(cè)試框架,是由一些假設(shè),概念和為自動(dòng)化測(cè)試提供支持的實(shí)踐組成的集合。接下來將描述一下幾種比較常用的自動(dòng)化測(cè)試框架:

  1.錄制/回放的神話

  每一家自動(dòng)化測(cè)試工具廠商都會(huì)宣傳,他們的工具非常容易使用,沒有技術(shù)背景的測(cè)試人員只要簡(jiǎn)單錄制測(cè)試的操作過程,然后播放錄制好的測(cè)試腳本,就可以輕松自動(dòng)化所有的測(cè)試。這樣的說法是非常不負(fù)責(zé)的。

  現(xiàn)在我們來分析一下自動(dòng)化測(cè)試不能單單只依靠錄制/回放來完成的原因。

  通過錄制建立的腳本,基本上都是用腳本語言以硬編碼的方式編寫的,當(dāng)應(yīng)用程序變動(dòng)時(shí),這些硬編碼也隨之需要更改。因此,維護(hù)這些錄制好的腳本,成本是非常高的,高到幾乎不能接受。

  所有的測(cè)試腳本都必須是在應(yīng)用程序可以正確執(zhí)行時(shí)才能錄制,如果在錄制過程中發(fā)現(xiàn)缺陷.測(cè)試人員必須向缺陷管理機(jī)制報(bào)告,等到該缺陷修正了,整個(gè)錄制腳本的動(dòng)作才能繼續(xù)下去。在這樣的情況下,如果僅僅依靠錄制腳本來進(jìn)行測(cè)試,效率是十分低下的。

  同時(shí),這些錄制好的腳本不是非??煽?,甚至在應(yīng)用程序完全沒有變動(dòng)的情況下直接播放,也可能因?yàn)橐恍┮馔鉅顩r而無法執(zhí)行。如果錄制腳本時(shí)測(cè)試人員使用了錯(cuò)誤的腳本語言,則腳本就必須重新錄制。

  綜上所述,通過錄制的方式來建立自動(dòng)化測(cè)試腳本的方式看似容易,但實(shí)際上會(huì)遇到下列問題:①測(cè)試人員大多不具備技術(shù)背景,難以完全掌握測(cè)試工具;②應(yīng)用程序必須達(dá)到一定的穩(wěn)定性,才能開始錄制測(cè)試腳本;③錄制的測(cè)試腳本與測(cè)試數(shù)據(jù)耦合得太緊密;④維護(hù)自動(dòng)化測(cè)試腳本的成本非常高。

  因此,僅僅依靠錄制/回放來完成自動(dòng)化測(cè)試是遠(yuǎn)遠(yuǎn)不夠的,我們應(yīng)找到一種能解決上述問題并能很好地執(zhí)行自動(dòng)化測(cè)試的方法。

  2.數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試框架

  數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試是針對(duì)上述開發(fā)與測(cè)試之間緊密耦合問題提出的測(cè)試方法。通過建立測(cè)試與開發(fā)定義的軟件元數(shù)據(jù)的關(guān)聯(lián)——元數(shù)據(jù)映射表,在測(cè)試與開發(fā)之間建立松耦合關(guān)系。不論測(cè)試人員修改測(cè)試腳本,還是開發(fā)人員修改軟件,只需要修改元數(shù)據(jù)映射表,既可以滿足測(cè)試與開發(fā)同步進(jìn)行。這樣,可以減少測(cè)試腳本調(diào)試的工作量,更好的實(shí)現(xiàn)自動(dòng)化測(cè)試。

  ●什么是數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試框架

  數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試框架是這樣的一個(gè)框架,從某個(gè)數(shù)據(jù)文件(例如ODBC源文件、Excel文件、Csv文件、ADO對(duì)象文件等)中讀取輸入、輸出的測(cè)試數(shù)據(jù),然后通過變量傳入事先錄制好的或手工編寫的測(cè)試腳本中。其中,這些變量被用作傳遞(輸入/輸出)用來驗(yàn)證應(yīng)用程序的測(cè)試數(shù)據(jù)。在這個(gè)過程中,數(shù)據(jù)文件的讀取、測(cè)試狀態(tài)和所有測(cè)試信息都被編寫進(jìn)測(cè)試腳本里;測(cè)試數(shù)據(jù)只包含在數(shù)據(jù)文件中,而不是腳本里,測(cè)試腳本只是一個(gè)“驅(qū)動(dòng)”,或者說是一個(gè)傳送數(shù)據(jù)的機(jī)制。

  ●數(shù)據(jù)驅(qū)動(dòng)腳本

  數(shù)據(jù)驅(qū)動(dòng)腳本就是那些和應(yīng)用程序相關(guān)聯(lián)的腳本。這些腳本通過錄制或手工編寫寫進(jìn)自動(dòng)化工具私有的語言,然后對(duì)其中的變量賦予合適的數(shù)值,作為測(cè)試數(shù)據(jù)的輸入。這些變量作為一些關(guān)鍵應(yīng)用程序輸入的媒介,使腳本能通過外部的數(shù)據(jù)來驅(qū)動(dòng)應(yīng)用程序。

  1) 可變數(shù)據(jù),硬編碼組件標(biāo)志

  這些數(shù)據(jù)驅(qū)動(dòng)的腳本經(jīng)常包含硬編碼的數(shù)據(jù),有時(shí)是一些窗口組件中非常脆弱的識(shí)別字符串。出現(xiàn)這種情況時(shí),腳本很容易由于程序的更改而失去作用。

  2) 高度技術(shù)化的、重復(fù)的測(cè)試設(shè)計(jì)

  數(shù)據(jù)驅(qū)動(dòng)腳本的另一個(gè)共同特點(diǎn)就是,所有在測(cè)試設(shè)計(jì)上所作的努力最終都體現(xiàn)在自動(dòng)化工具的腳本語言中,或者復(fù)制到手工和自動(dòng)化測(cè)試腳本中。這意味著每個(gè)和自動(dòng)化測(cè)試開發(fā)或執(zhí)行有關(guān)的人必須對(duì)測(cè)試環(huán)境和自動(dòng)化工具的編程語言非常精通。

  ●優(yōu)點(diǎn)與缺點(diǎn)

  1) 優(yōu)點(diǎn): ①在應(yīng)用程序開發(fā)的同時(shí)就可以同步建立測(cè)試腳本,而且當(dāng)應(yīng)用功能變動(dòng)時(shí),只需要修改業(yè)務(wù)功能部分的腳本;②利用模型化的設(shè)計(jì),避免重復(fù)的腳本,減少建立或維護(hù)腳本的成本;③測(cè)試輸入數(shù)據(jù),驗(yàn)證數(shù)據(jù)和預(yù)期的測(cè)試結(jié)果與腳本分開,存放在另外的數(shù)據(jù)文件里,利于測(cè)試人員修改和維護(hù);④透過判斷功能回傳值是“True”或“False”,可作錯(cuò)誤處理,增加了測(cè)試腳本的健壯性;⑤自動(dòng)化測(cè)試開發(fā)人員創(chuàng)建數(shù)據(jù)驅(qū)動(dòng)的測(cè)試過程,測(cè)試員創(chuàng)建測(cè)試數(shù)據(jù);⑥在測(cè)試的過程中收集測(cè)試結(jié)果,并在輸入數(shù)據(jù)的語境中表示測(cè)試結(jié)果,這樣可以簡(jiǎn)化手工結(jié)果分析。

  2) 缺點(diǎn): ①對(duì)自動(dòng)化測(cè)試工具里的腳本語言必須非常精通;②每個(gè)腳本都會(huì)對(duì)應(yīng)多個(gè)數(shù)據(jù)文件,這些數(shù)據(jù)文件需要根據(jù)腳本的功能類別存放在各自的目錄中,增加了使用的復(fù)雜性;③測(cè)試人員除了需要根據(jù)具體測(cè)試數(shù)據(jù)維護(hù)相應(yīng)的測(cè)試計(jì)劃,還要將這些數(shù)據(jù)寫入各個(gè)需求不同的數(shù)據(jù)文件中;④在編輯數(shù)據(jù)文件時(shí),必須注意測(cè)試腳本所要求的傳輸格式,否則會(huì)在處理腳本時(shí)產(chǎn)生錯(cuò)誤。如由專門的技術(shù)人員對(duì)其進(jìn)行維護(hù),依賴于數(shù)據(jù)驅(qū)動(dòng)腳本的自動(dòng)化測(cè)試框架實(shí)現(xiàn)起來更簡(jiǎn)單、快捷。但是,維護(hù)工作困難,而且還需要保持這種數(shù)據(jù)驅(qū)動(dòng)的模式,這樣,即便長(zhǎng)時(shí)間的維持也會(huì)導(dǎo)致失敗。3.關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試

 

  關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試(也稱為表驅(qū)動(dòng)測(cè)試自動(dòng)化),是數(shù)據(jù)驅(qū)動(dòng)自動(dòng)化測(cè)試的變種,可支持由不同序列或多個(gè)不同路徑組成的測(cè)試。它是一種獨(dú)立于應(yīng)用程序的自動(dòng)化框架,在處理自動(dòng)化測(cè)試的同時(shí)也要適合手工測(cè)試。關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試框架建立在數(shù)據(jù)驅(qū)動(dòng)手段之上,表中包含指令(關(guān)鍵詞),而不只是數(shù)據(jù)。這些測(cè)試被開發(fā)成使用關(guān)鍵字的數(shù)據(jù)表,它們獨(dú)立于執(zhí)行測(cè)試的自動(dòng)化工具。關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試是對(duì)數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試的有效改進(jìn)和補(bǔ)充。

  關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試的整個(gè)過程所包含的功能都是由關(guān)鍵字驅(qū)動(dòng)的,關(guān)鍵字控制了整個(gè)測(cè)試過程。下面以“Post a Payment”為例,說明這種自動(dòng)化測(cè)試方法是如何運(yùn)作的(表1)。

  優(yōu)劣分析

  關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試框架是一種截然不同的思想,它把傳統(tǒng)測(cè)試腳本中變化的與不變的東西進(jìn)行了分離,這種分離使得分工更明確,并且避免了它們相互之間的影響。 這種模型的開發(fā)和實(shí)現(xiàn)與傳統(tǒng)的測(cè)試流程相比可能是困難的,最耗時(shí)的,因?yàn)?,我們正在努力地將我們的測(cè)試和自動(dòng)化工具以及應(yīng)用程序本身的變化完全隔離開來。為了實(shí)現(xiàn)這個(gè)目標(biāo),最重要的是要增強(qiáng)自動(dòng)化工具所提供的組件功能,例如,錯(cuò)誤糾正、避免和數(shù)據(jù)同步。但是這樣的投資是一次性的,一旦開發(fā)結(jié)束并投入使用,它給我們帶來的效益是巨大的,是自動(dòng)化測(cè)試框架中最容易維護(hù)和使用的,而且可以反復(fù)運(yùn)用于各種應(yīng)用中,長(zhǎng)期發(fā)揮作用。

  另外,現(xiàn)在已經(jīng)有一些符合需求的商業(yè)化產(chǎn)品可供使用,減少了實(shí)現(xiàn)這種框架的困難。利用關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試框架,測(cè)試人員不需要錄制測(cè)試腳本,而是設(shè)計(jì)測(cè)試腳本。

  4.混合的自動(dòng)化測(cè)試框架

  結(jié)合以上幾種自動(dòng)化測(cè)試框架的比較,目前最為成功的自動(dòng)化測(cè)試框架應(yīng)是綜合使用數(shù)據(jù)驅(qū)動(dòng)和關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試框架:以數(shù)據(jù)驅(qū)動(dòng)的腳本作為輸入,通過關(guān)鍵字驅(qū)動(dòng)框架的處理得到測(cè)試結(jié)果,完成自動(dòng)化測(cè)試過程。這樣可以使數(shù)據(jù)驅(qū)動(dòng)的腳本利用關(guān)鍵字驅(qū)動(dòng)框架通常所提供的庫和工具。這些框架工具可以使數(shù)據(jù)驅(qū)動(dòng)的腳本更為緊湊,而且也不容易失敗。

  關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試框架模型

  下面將介紹一種以關(guān)鍵字驅(qū)動(dòng)自動(dòng)化測(cè)試框架思想為指導(dǎo)的自動(dòng)化測(cè)試實(shí)現(xiàn)方案——關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試模型,它是由SAS Institute的Carl Nagle開發(fā)的。圖2描述了該測(cè)試模型的結(jié)構(gòu)。

  這個(gè)模型主要由核心數(shù)據(jù)驅(qū)動(dòng)引擎、組件函數(shù)、支持庫和應(yīng)用映射表組成。自動(dòng)化測(cè)試首先由初始腳本開始執(zhí)行,這個(gè)腳本把高層測(cè)試表傳遞給高層驅(qū)動(dòng)器,高層驅(qū)動(dòng)器在處理這些表的過程中,遇到中層測(cè)試表后就調(diào)用中層驅(qū)動(dòng)器,中層驅(qū)動(dòng)器處理中層表時(shí)也作類似的處理。當(dāng)?shù)蛯域?qū)動(dòng)器處理低層表時(shí),它嘗試著使應(yīng)用與測(cè)試保持同步。當(dāng)?shù)蛯域?qū)動(dòng)器遇到對(duì)某一個(gè)組件的低層關(guān)鍵字組件時(shí),它判斷這個(gè)組件的類型并調(diào)用相應(yīng)的組件函數(shù)模塊來處理這個(gè)指令操作。所有這些元素都要依靠映射表中的信息,它是自動(dòng)化測(cè)試模型和被測(cè)應(yīng)用程序的橋梁。

  ●應(yīng)用映射表

  應(yīng)用映射表是自動(dòng)化測(cè)試模型中最關(guān)鍵的組件之一。在進(jìn)行測(cè)試設(shè)計(jì)之前,測(cè)試人員首先對(duì)應(yīng)用中的每一個(gè)對(duì)象定義一套命名規(guī)范,并利用映射表把這些名字和自動(dòng)化工具識(shí)別的對(duì)象名聯(lián)系起來,使工具能準(zhǔn)確地定位和操縱對(duì)象。我們的測(cè)試腳本只需進(jìn)行單點(diǎn)維護(hù)。在上面的例子中,如果按鈕的名字或顯示文字發(fā)生了變化,那么腳本中所有涉及這些名字的地方都要進(jìn)行修改。如果我們建立這樣一個(gè)映射,用邏輯對(duì)象SavePushButton表示真實(shí)的確認(rèn)保存的按鈕對(duì)象,那么這個(gè)例子就可以寫成“Click SavePushButton”。當(dāng)按鈕的名字或顯示文字改變時(shí),只需要快速修改一下映射表中對(duì)應(yīng)的識(shí)別方法就可以了,而不用修改腳本(表2)

  ●組件函數(shù)

  組件函數(shù)是實(shí)現(xiàn)用戶對(duì)界面對(duì)象操作指令的函數(shù),一個(gè)組件對(duì)象的類型對(duì)應(yīng)一個(gè)組件函數(shù)庫。例如對(duì)于一個(gè)文本框?qū)ο?,測(cè)試人員可能會(huì)對(duì)它執(zhí)行多種操作:輸入文本、驗(yàn)證文本框的值、驗(yàn)證文本框的某些屬性等,實(shí)現(xiàn)這些操作行為的函數(shù)就被放在文本框的組件函數(shù)庫中。一般的測(cè)試工具都提供了這樣的函數(shù),而我們可以在其中加入額外的代碼來檢測(cè)錯(cuò)誤、糾正錯(cuò)誤和幫助同步,這類代碼是實(shí)現(xiàn)無人職守的自動(dòng)化測(cè)試所必需的。

  組件函數(shù)相當(dāng)于在應(yīng)用和自動(dòng)化工具之間提供了一個(gè)隔離層,如果沒有這個(gè)隔離層,自動(dòng)化工具本身的改變或提高就會(huì)影響已有的腳本,但是有了組件函數(shù),我們可以增加一對(duì)修補(bǔ)代碼來適應(yīng)這些變化,轉(zhuǎn)移對(duì)測(cè)試的破壞。組件函數(shù)關(guān)鍵字和它們的參數(shù)構(gòu)成自動(dòng)化模型最低層的詞庫,了解了低層詞庫和映射表,就可以建立在它們基礎(chǔ)之上的測(cè)試表。

  ●測(cè)試表和核心數(shù)據(jù)驅(qū)動(dòng)引擎

  測(cè)試表分低層、中層和高層。低層測(cè)試表指定了測(cè)試的每一步指令的細(xì)節(jié),這些指令都是直接作用在界面對(duì)象上的,是無法再細(xì)分的指令。中層測(cè)試表把低層測(cè)試表組裝起來執(zhí)行更多有用的任務(wù)。同一個(gè)低層表可以用于多個(gè)中層表,所以我們應(yīng)該開發(fā)盡可能少的低層表,然后把它們按照不同的目的組裝起來,實(shí)現(xiàn)最大的重用性。同樣的,高層測(cè)試表把中層表組裝起來,形成一個(gè)測(cè)試循環(huán),每個(gè)循環(huán)都是完整的,可以定制不同類型和數(shù)量的測(cè)試。

  例如打開網(wǎng)頁、登錄、關(guān)閉網(wǎng)頁這3個(gè)動(dòng)作可以用3個(gè)低層表來表示,每個(gè)表定義了實(shí)現(xiàn)相應(yīng)動(dòng)作的具體步驟,所以低層表又叫做步驟表。低層表中使用了映射表中定義的對(duì)象名,和由組件函數(shù)定義的低層關(guān)鍵字詞庫。表3是一個(gè)實(shí)現(xiàn)登錄動(dòng)作的低層表。而這個(gè)表示“登錄”的低層表關(guān)鍵字很可能會(huì)出現(xiàn)在“驗(yàn)證錯(cuò)誤登錄”、“驗(yàn)證正確登錄”、“驗(yàn)證空白登錄”等中層表中,這些中層表合起來構(gòu)成了“驗(yàn)證權(quán)限”高層表。

  對(duì)應(yīng)于以上這3個(gè)測(cè)試表,核心數(shù)據(jù)驅(qū)動(dòng)引擎相應(yīng)地分成了高層驅(qū)動(dòng)器、中層驅(qū)動(dòng)器和低層驅(qū)動(dòng)器。高層驅(qū)動(dòng)器讀取高層表的每個(gè)記錄,如果遇到中間表關(guān)鍵字,就把這個(gè)表傳遞給中層驅(qū)動(dòng)器,依此類推,直至到達(dá)低層表,低層驅(qū)動(dòng)器調(diào)用關(guān)鍵字詞庫中的低層指令所對(duì)應(yīng)的組件函數(shù)來完成最后的執(zhí)行。最后要說明的是這樣一種層次結(jié)構(gòu)并不是固定不變的,可以根據(jù)實(shí)際應(yīng)用情況進(jìn)行調(diào)整。

  ●支持庫

  支持庫是一些程序和工具,例如文件處理、字符串處理、緩沖處理、數(shù)據(jù)庫訪問、日志記錄工具等,它們?yōu)樽詣?dòng)化模型提供最基礎(chǔ)的支持。

  結(jié) 語

  自動(dòng)化測(cè)試框架無疑是企業(yè)實(shí)施自動(dòng)化測(cè)試的一個(gè)必然的發(fā)展方向,它對(duì)于產(chǎn)生成功的測(cè)試自動(dòng)化的適當(dāng)基礎(chǔ)是重要的。為了選擇一個(gè)合適的自動(dòng)化測(cè)試框架,企業(yè)需要綜合考慮維護(hù)成本、測(cè)試數(shù)據(jù)、可測(cè)試性、測(cè)試人員的技能等諸多因素?;仡欁詣?dòng)化測(cè)試發(fā)展的過程,以往的經(jīng)驗(yàn)告訴我們,無法依靠簡(jiǎn)單的錄制/回放的測(cè)試方法或傳統(tǒng)的測(cè)試腳本工具來完成測(cè)試,因?yàn)殇浿飘a(chǎn)生的腳本維護(hù)困難,而且生存期很短。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。