<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 軟件測試自動(dòng)化框架簡(jiǎn)介

軟件測試自動(dòng)化框架簡(jiǎn)介

作者: 時(shí)間:2012-05-06 來(lái)源:網(wǎng)絡(luò ) 收藏

3.關(guān)鍵字驅動(dòng)的自動(dòng)化測試

本文引用地址:http://dyxdggzs.com/article/193936.htm

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

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

  優(yōu)劣分析

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

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

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

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

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

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

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

  ●應用映射表

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

  ●組件函數

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

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

  ●測試表和核心數據驅動(dòng)引擎

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

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

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

  ●支持庫

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

  結 語(yǔ)

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


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>