目錄:
一、自動化測試與測試自動化
二、什麼是自動化測試框架
三、自動化測試框架架構與元件
四、自動化測試框架的型別
五、測試自動化框架的好處
一、自動化測試與測試自動化
自動化測試是指使用自動化測試工具代替人工的方式來執行測試用例。使用工具的原因一方面是為了代替人工執行那些簡單、重複而枯燥的動作,從而節省人工的時間,讓測試人員投入到真正有價值的探索式測試中;另一方面,像效能測試之類的的壓測場景我們很難使用人海戰術進行測試而只能藉助於工具模擬的方式來進行。
測試自動化是指在軟體測試全生命週期(STLC:Software Testing Lifecycle)過程中每一個環節都儘可能用自動化的方式來解決。所以它不僅僅關注測試執行過程,還包括測試資料準備、測試環境搭建等等都可以通過自動化的方式實現。
今天我們談談自動化測試,當我們在IT部門定義自動化測試時,它意味著通過不同的自動化工具在應用程式上執行測試。這些工具可以是開源的,也可以是商業的。
二、什麼是自動化測試框架
在我們討論自動化測試框架之前,先了解一下什麼是框架。
框架是標準和規則的組合,當遵循這些標準和規則時,企業可以使用它們來獲得最大的收益。同樣自動化測試框架是用於建立自動化指令碼的特定方法,它是一組為自動化提供支援的原則、概念和實踐。
自動化測試框架的特點:
在編寫指令碼時遵循一組嚴格的原則。這些原則主要關注於減少自動化指令碼的維護和提高指令碼的質量。
確保自動化指令碼具有資料可行性,因此它們可以在各種資料集上執行。實現可重用、健壯和高效的自動化指令碼。
三、自動化測試框架架構與元件
在瞭解自動化測試框架元件之前先來了解自動化測試框架架構。下圖列出了一個最基本的自動化測試框架架構:
一個基礎的自動化測試框架體系結構涉及以下主要元件:
1、驅動引擎
控制其他元件或者工具執行的主要程式碼。有些框架和執行引擎在同一個工具裡面,大部分商業工具都如此,比如QTP/UFT和Tosca;有些框架需要藉助外部的測試工具,比如RobotFramework框架整合Selenium或者Appium等。
2、資料管理(資料管理包括三個方面)
1、引數管理:需要對輸入輸出引數進行統一管理,提高指令碼可維護性
2、環境變數:需要對測試環境變數做到可配置管理,提高指令碼的健壯性
3、測試資料:測試資料的輸入,是否能支援多種檔案格式的匯入,甚至是資料庫直接取數的介面等
3、物件儲存庫
儲存物件定義的檔案。
4、異常處理
當指令碼執行出現錯誤的時候,需要有異常處理的機制,是繼續往下執行還是直接退出?這裡需要有處理錯誤或異常的機制。
5、執行機制
執行指令碼的機制。是否批量執行?是否定時執行?是否可分散式執行?
6、測試結果及報告(存在兩個層面的測試報告)
指令碼層面:測試報告是否可以顯示每個指令碼的執行時間、每個步驟的執行時間、每個步驟的執行結果、錯誤日誌和錯誤截圖等;
任務層:每個執行任務到底多少指令碼執行成功、多少指令碼執行失敗、百分比如何等等。
四、自動化測試框架的型別
現在已經理解了什麼是自動化測試框架以及元件,讓我們看看不同型別的框架。自動化測試涵蓋了一系列測試框架。在這裡,我將介紹最常見的型別。
1、線性自動化測試框架
線性自動化測試框架涉及入門級測試。測試人員依次建立測試指令碼並單獨執行它們。不需要編寫自定義程式碼。所以測試人員不必是自動化專家。此外,快速的工作流是線性自動化框架最大的優點。
例如:
SystemUtil.Run "flight4a.exe","","","open"
Dialog("Login").WinEdit("Agent Name:").Set "ChenXiaoCai"
Dialog("Login").WinEdit("Password:").Set "666"
Dialog("Login").WinButton("OK").Click
'Check Flight Reservation Window has loaded after successful log-on
Window("Flight Reservation").Check CheckPoint("Flight Reservation")
好處:
1. 生成指令碼的最快方式
2. 不需要自動化專業知識
3. 瞭解測試工具特性的最簡單方法
壞處:
1. 很少重用指令碼
2. 測試資料硬編碼到指令碼中
3. 維護的噩夢
2、模組測試框架
基於模組的測試框架將測試用例分解為小模組。然後,它遵循非增量和增量的方法。在那裡,首先對模組進行獨立測試,然後對整個應用程式進行測試。這使得每個測試都是獨立的。
此外,一旦測試人員編寫了函式庫,您也可以在其中儲存指令碼。由於您可以輕鬆地在單個指令碼中進行更改,因此不需要調整整個應用程式。因此,測試需要更少的時間和精力。
好處:
1. 該框架引入了高水平的模組化,這使得維護更容易、更經濟。
2. 這個框架是可擴充套件的
3. 如果更改是在應用程式的某個部分中實現的,那麼只需要修復表示該應用程式的那個部分的測試指令碼,以保持所有其他部分不變。
壞處:
在為每個模組分別實現測試指令碼時,我們將測試資料(我們應該使用這些資料執行測試)嵌入到測試指令碼中。因此,無論何時我們需要使用不同的測試資料集進行測試,都需要在測試指令碼中進行操作
3、庫架構測試框架
使用庫架構測試框架,框架識別測試指令碼中具有相似性的任務。之後,測試人員根據功能對類似的任務進行函式封裝。然後,庫儲存所有排序後的函式。因此,它促進了程式碼在不同測試指令碼之間的可重用性。
例如,我們可以把登入作為一個公共的函式
Function Login()
SystemUtil.Run "flight4a.exe","","","open"
Dialog("Login").WinEdit("Agent Name:").Set "ChenXiaoCai"
Dialog("Login").WinEdit("Password:").Set "666"
Dialog("Login").WinButton("OK").Click
End Function
接下來就可以在其他地方呼叫
Call Login()
---------------------------
Other Function calls / Test Steps.
---------------------------
好處:
1. 與“記錄和回放”相比,結構化指令碼實現了更高階別的程式碼重用。
2. 由於更高的程式碼重用,自動化指令碼的開發成本更低
3. 簡單的指令碼維護
壞處:
1. 使用測試庫框架編寫指令碼需要專業的技術知識。
2. 需要更多的時間來計劃和準備測試指令碼。
3. 測試資料硬編碼在指令碼中
4、資料驅動測試框架
資料驅動的測試框架隔離測試指令碼邏輯和測試資料。之後,它在外部儲存資料。這裡,目標是為測試不同的資料集建立可重用的測試指令碼。測試人員可以更改資料以更改測試場景。這確保了程式碼的可重用性。
例如:
1. 首先先在CSV、Excel檔案或者其他資料來源建立測試資料列表
AgentName
Password
Jimmy
Mercury
Tina
MERCURY
Bill
MerCURY
2. 編寫指令碼,登入名和密碼與資料來源匹配
SystemUtil.Run "flight4a.exe","","","open"
Dialog("Login").WinEdit("Agent Name:").Set DataTable("AgentName", dtGlobalSheet)
Dialog("Login").WinEdit("Password:").Set DataTable("Password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
'Check Flight Reservation Window has loaded
Window("Flight Reservation").Check CheckPoint("Flight Reservation")
**Note "dtGlobalSheet" is the default excel sheet provided by QTP.
好處:
1. 對測試指令碼的更改不會影響測試資料
2. 可以使用多個資料集執行測試用例
3. 只要更改外部資料檔案中的測試資料,就可以執行各種測試場景
壞處:
需要更多的時間來計劃和準備測試指令碼和測試資料
5、關鍵字(資料表)驅動測試框架
關鍵字驅動的測試框架將指令碼邏輯從測試資料中分離出來。然後,它在外部儲存資料。之後,它將關鍵字儲存在不同的位置。與動作測試GUI相關的關鍵字是測試指令碼的一部分。關鍵字將自己與物件或操作相關聯。因為測試人員可以在不同的測試指令碼中使用相同的關鍵字,所以它提高了可重用性。( 共享測試資料,可加我QQ:1844835571)
一個關鍵字驅動框架有3個基本元件,即關鍵字、應用程式對映、元件功能。
什麼是關鍵字?
關鍵字是可以在GUI元件上執行的操作。比如:對於GUI元件文字框,一些關鍵字(動作)是InputText, VerifyValue, VerifyProperty等。
什麼是應用程式對映?
應用程式對映為GUI元件提供命名引用。應用程式對映只不過是“物件儲存庫”
什麼是元件函式?
元件函式是那些主動操作或查詢GUI元件的函式。函式的一個例子是,點選web按鈕進行所有錯誤處理,在web編輯中輸入資料進行所有錯誤處理。元件函式可以依賴於應用程式,也可以獨立於應用程式。
例如:
步驟1:建立資料表(不同於在資料驅動框架中建立的測試資料表)。這個資料表包含要在GUI物件上執行的操作和相應的引數(如果有的話)。每一行代表一個測試步驟。
Object
(Application MAP)
Action
(KEYWORDS)
Argument
WinEdit(Agent Name)
Set
ChenXiaoCai
WinEdit(Password)
Set
666
WinButton(OK)
Click
Window(Flight Reservation)
Verify
Exists
步驟2:以元件函式的形式編寫程式碼。
一旦建立了資料表,只需編寫一個程式或一組指令碼,讀取每個步驟,根據包含Action欄位的關鍵字執行步驟,執行錯誤檢查,並記錄所有相關資訊。這個程式或指令碼集將看起來像下面的虛擬碼:
Function main()
{
Call ConnectTable(Name of the Table) { //Calling Function for connecting to the table.
while (Call TableParser() != -1) //Calling function for Parsing and extracting values from the table.
{
Pass values to appropriate COMPONENT functions.Like Set(Object Name, Argument) ex.Set(Agent Name, Guru99).
}
}
Call CloseConnection() //Function for Closing connection after all the operation has been performed.
} //End of main
優點:
1. 提供高的程式碼可重用性
2. 測試工具的獨立
3. 獨立於測試中的應用程式,相同的指令碼適用於AUT(有一些限制)
4. 測試可以使用或不使用AUT進行設計
缺點:
1. 初始投資相當高,只有當應用程式相當大並且測試指令碼要維護好幾年的時候,才能實現這種好處。
2. 建立關鍵字驅動框架需要很高的自動化專業知識。
6、混合測試框架
混合測試框架可以減少不同測試框架的缺陷。它通過組合不同框架的部分來利用這些優勢,從而提供了靈活性。因此,測試的效率也得到了提高。
比如,登入的指令碼如下:
SystemUtil.Run "flight4a.exe","","","open"
Dialog("Login").WinEdit("Agent Name:").Set "ChenXiaocai"
Dialog("Login").WinEdit("Password:").Set "666"
Dialog("Login").WinButton("OK").Click
'End of Script
現在您可以在主指令碼中呼叫這個操作,如下所示:
RunAction ("Login[Argument]", oneIteration)
五、測試自動化框架的好處
為什麼我們有了自動化測試工具之後還必須需要使用自動化測試框架?因為自動化測試框架可以提供很多好處:
1. 優化的資源
測試框架有助於優化資源。它通過根據組織需要促進不同資源的使用來做到這一點。
例如,為了實現既定的目標,測試自動化框架提供了一組過程。這些流程必須將資源與需求匹配起來。採用的靈活性越高,資源優化就會越好。
2. 增加測試量
測試自動化框架增加了測試量。例如,新的移動裝置每隔一天就會出現。不可能對所有物件執行手工測試。即使一家公司成功地做到了這一點,也要花很長時間。但是自動化測試使測試人員能夠同時在數千個移動裝置上執行測試。
3.同時測試
測試自動化框架支援同時測試不同型別的裝置。當測試指令碼被自動化時,所有測試人員需要做的就是在不同的裝置上執行它們。由於引數相同,測試人員可以快速生成比較測試報告。
4. 提高速度和可靠性
編寫和執行測試對於任何軟體公司來說都是非常耗時的。測試自動化框架減少了執行這些活動的時間。假設您正在測試網站的登出功能。如果有多個測試場景,對於每個場景,您都必須手動測試登出功能是否正常工作。但是如果您正在使用一個框架,您可以同時執行所有的場景並在很短的時間內獲得測試結果。此外,由於使用了自動化工具,自動化測試更加可靠。這減少了出錯的機會。
5. 用更少的時間產出更多的產品
測試自動化減少了同步、本地配置、錯誤管理和報告生成方面的挑戰。自動化指令碼最小化了準備和執行測試所花費的時間。隨著效率和速度的提高,企業可以在更短的時間內獲得更多的產出。
6. 在早期階段修復bug
測試自動化框架有助於在早期階段修復bug。你不需要太多的人力來為你執行,這意味著工作時間和費用也減少了。測試自動化工程師可以編寫指令碼並自動化測試。
7. 遠端測試
有了測試自動化框架,就沒有必要每天24小時呆在辦公場所。例如,您可以在離開之前開始執行一個測試。幾小時後你回來時,測試結果就會出來了。此外,你不需要買很多裝置,因為你可以遠端測試。
可重用的自動化程式碼
您可以在不同的應用程式中重用測試自動化指令碼。假設您的組織的測試人員編寫了一些指令碼來測試登入功能。您可以對另一個具有登入功能的應用程式使用相同的指令碼。