<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > 常用軟件測試自動化框架

          常用軟件測試自動化框架

          作者: 時間:2011-04-25 來源:網(wǎng)絡 收藏
          3.關鍵字驅動的自動化測試

          本文引用地址:http://www.ex-cimer.com/article/194981.htm

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

            關鍵字驅動的自動化測試的整個過程所包含的功能都是由關鍵字驅動的,關鍵字控制了整個測試過程。下面以“Post a Payment”為例,說明這種自動化測試方法是如何運作的(表1)。

            優(yōu)劣分析

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

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

            4.混合的自動化測試框架

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

            關鍵字驅動的自動化測試框架模型

            下面將介紹一種以關鍵字驅動自動化測試框架思想為指導的自動化測試實現(xiàn)方案——關鍵字驅動的自動化測試模型,它是由SAS Institute的Carl Nagle開發(fā)的。圖2描述了該測試模型的結構。

            這個模型主要由核心數(shù)據(jù)驅動引擎、組件函數(shù)、支持庫和應用映射表組成。自動化測試首先由初始腳本開始執(zhí)行,這個腳本把高層測試表傳遞給高層驅動器,高層驅動器在處理這些表的過程中,遇到中層測試表后就調用中層驅動器,中層驅動器處理中層表時也作類似的處理。當?shù)蛯域寗悠魈幚淼蛯颖頃r,它嘗試著使應用與測試保持同步。當?shù)蛯域寗悠饔龅綄δ骋粋€組件的低層關鍵字組件時,它判斷這個組件的類型并調用相應的組件函數(shù)模塊來處理這個指令操作。所有這些元素都要依靠映射表中的信息,它是自動化測試模型和被測應用程序的橋梁。

            ●應用映射表

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

            ●組件函數(shù)

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

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

            ●測試表和核心數(shù)據(jù)驅動引擎

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

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

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

            ●支持庫

            支持庫是一些程序和工具,例如文件處理、字符串處理、緩沖處理、數(shù)據(jù)庫訪問、日志記錄工具等,它們?yōu)樽詣踊P吞峁┳罨A的支持。

            結 語

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


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();