2.3 關鍵字驅動的自動化測試框架
關鍵字驅動(表驅動)是對數據驅動的邏輯擴展,它的核心思想可以概括為三個分離。
1)界面元素名與測試內部對象名的分離 在被測應用程序和錄制生成的測試腳本之間增加一個抽象層,它可以將界面上的所有元素映射成相對應的一個邏輯對象,測試針對這些邏輯對象進行,界面元素的改變只會影響映射表,而不會影響測試。
2)測試描述與具體實現細節的分離把測試描述和測試的具體實現細節分離開來。測試描述只說明軟件測試要做什么以及期待什么樣的結果,而不管怎樣執行測試或怎樣證實結果。這樣做是因為測試的實現細節通常與特定的平臺以及特定的測試執行工具有著密切的聯系。這種分離使得測試描述對于應用實現細節是不敏感的,而且有利于測試在工具和平臺間的移植。
3)腳本與數據的分離 最后,可以把測試執行過程中所需的測試數據從腳本中提取出來,在運行時測試腳本再從數據存放處讀取預先定制好的數據,這樣腳本和數據可以獨立維護。
以上這三個分離各司其職、互相獨立,最大程度地減少相互之間的影響。從關鍵字驅動的思想可以看出,該種測試框架不僅實現了將數據和腳本相分離,而且實現了測試邏輯和數據的分離,大大提高了腳本的復用度和維護性,從而更大限度地實現了測試工具的自動化。
3 用于Linux下桌面應用程序的關鍵字驅動的自動化測試框架
當前Linux下的測試工具主要是針對內核和服務器方面進行測試,對桌面應用程序的測試基本不支持,開發一個支持Linux下桌面應用程序測試的測試框架對于解決Linux下應用程序的發展與成熟具有積極的促進和保障作用。本文根據測試自動化框架開發原則,結合軟件測試的實際需求,提出一個可行的自動化測試框架:LKDT(an automated testing framework of keyword driven for Linux)。
3.1 LKDT總體架構
LKDT主要由測試用例管理、測試計劃、測試腳本編寫、測試執行和測試結果收集等組件構成。
測試用例管理組件采用與測試用例管理工具,如目前常用的test runner管理工具集成的辦法,提供對test runner中已有測試用例的導入、導出功能,從而方便測試人員對于測試用例的統一管理。
測試腳本編寫組件允許采用兩種腳本編寫方式:a)測試人員通過錄制工具產生測試腳本,即測試人員根據測試用例中的步驟,對應用程序進行操作, 錄制工具將這些動作捕獲下來,存成腳本文件;b)測試人員通過關鍵字的方式手動進行編寫,即在該框架中測試人員可以通過拖放關鍵字來進行腳本的編寫。
測試計劃組件的主要作用即允許測試人員對測試用例的執行方式(順序、并行、條件、分支、循環、分布式等)、執行時間、日志級別等進行定制。
測試執行組件是對測試用例或者測試計劃所關聯的測試用例按照要求進行執行,該過程為自動執行過程,無須人工進行干預;如果需要手動控制測試腳本執行,需以debug的方式執行。
測試結果組件收集測試結果信息,包括一個測試結果總結,如測試執行了幾個測試用例、執行時間以及成功、失敗的用例數;還包括一個失敗的測試用例執行的詳細信息,包括失敗的測試腳本所屬的測試計劃、所屬的測試用例、在測試腳本中的位置以及出錯過程中的截圖。
3.2 關鍵字驅動模塊
關鍵字驅動模塊是LKDT的核心模塊,在LKDT框架中起著不可或缺的作用。該模塊主要解決了腳本關鍵字的定義、關鍵字解析等問題。
關鍵字驅動的測試腳本為測試數據關鍵字和測試邏輯關鍵字的有機組合。數據關鍵字相對簡單,與數據驅動技術類似,一個數據關鍵字代表一個測試腳本中的測試數據。在腳本運行時只需通過框架用真實的測試數據對數據關鍵字進行替換。
邏輯關鍵字的定義與測試活動的結構密不可分。在真實的測試活動中,一個測試目標需要有一組測試用例來支持,而每個測試用例又由一系列的測試步驟完成。這是一個三層結構,測試步驟為測試活動中的最小單位,測試目標為最大單位,測試用例居中。邏輯關鍵字基于測試活動的這種結構即可分為高層腳本、中層腳本和底層腳本三層,分別對應于測試中的測試目標、測試用例和測試步驟。高層次腳本由邏輯關鍵字代表的低層次腳本,加上數據關鍵字代表的測試數據組合而成。
原文轉自:http://www.uml.org.cn/Test/201006074.asp