小白必讀-所有測試大咖都知道的自動化知識

  • 2020 年 6 月 11 日
  • 筆記

目錄:
一、自動化測試與測試自動化
二、什麼是自動化測試框架
三、自動化測試框架架構與組件
四、自動化測試框架的類型
五、測試自動化框架的好處
一、自動化測試與測試自動化
自動化測試是指使用自動化測試工具代替人工的方式來執行測試用例。使用工具的原因一方面是為了代替人工執行那些簡單、重複而枯燥的動作,從而節省人工的時間,讓測試人員投入到真正有價值的探索式測試中;另一方面,像性能測試之類的的壓測場景我們很難使用人海戰術進行測試而只能藉助於工具模擬的方式來進行。

測試自動化是指在軟體測試全生命周期(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小時呆在辦公場所。例如,您可以在離開之前開始運行一個測試。幾小時後你回來時,測試結果就會出來了。此外,你不需要買很多設備,因為你可以遠程測試。

可重用的自動化程式碼

您可以在不同的應用程式中重用測試自動化腳本。假設您的組織的測試人員編寫了一些腳本來測試登錄功能。您可以對另一個具有登錄功能的應用程式使用相同的腳本。