程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Rational >> 在 Rational Performance Tester 中創建一個高級上傳文件測試案例

在 Rational Performance Tester 中創建一個高級上傳文件測試案例

編輯:Rational

關於本文

許多 Web 應用程序都提供了上傳功能,允許用戶以二進制內容的形式發布或存儲文件。 盡管 IBM? Rational? Performance Tester 提供了在測試記錄中操作二進制內容的功能,但有時您可能需要 進行更深入的自定義。本文中的示例將展示如何使用 Rational Performance Tester 中基本的文件替換功能 ,以及如何使用多個文件和多個平台創建更復雜的測試。

記錄上傳事務

上傳事務可以常規方式 記錄。下面的示例給出了針對一個使用 HTTP 的基於 Web 的應用程序的步驟,但這些概念也適用於其他網絡 協議。

啟動 Rational Performance Tester HTTP 記錄器,創建一個 Test From New Recording,如圖 1 所示。

圖 1. 創建新測試的設置

記錄器中指定的 Web 浏覽器 (Windows > Preferences > RPT HTTP Recording) 將啟動,您可以使用它執行上傳事務。

技巧 :

 確保在執行上傳操作之前,使用 Rational Performance Tester 工具欄插入了一個注釋或一個 事務,以便您能夠在後面的測試中輕松地識別它。

圖 2. Recorder Test Annotation 工具欄

測試將 在停止記錄器並關閉浏覽器後自動生成。

Rational Performance Tester 根據與變量 MimeFileContent 的關聯而自動檢測二進制內容應,如圖 3 所示。

圖 3. 生成測試

基本文件替換

在大多數測試場景中,您將會對不同的並發用戶執行同一個事務多次。這也適用於上 傳事務。為了創造一種更加逼真的測試場景,您可能希望用戶上傳不同的文件,而不只是上傳記錄中使用的文 件。

在使用 Rational Performance Tester 時,您可以使用它所包含的功能,通過一些步驟實現此目 的:

創建一個目錄(例如 C:\Datapool),添加您希望在測試中使用的所有文件。

使用該目錄的內容創建一個 CSV 文件,指定每個文件的完整路徑。您可以運行以下命令:

C:\>dir /b /s c:\Datapool > datapool.csv

創建一個包含 1 列的新數據池,如圖 4 所示:

圖 4. 數據池示例

取消選擇兩個 Options 復選框,如圖 5 所示:

第 1 行包含變量名和可選的建議類型

第 1 列包含等效的類名和可選的行號

圖 5. 數據池示例 2,New Datapool 向導

數據池應類似於圖 6。

圖 6. 數據池示例 3

雙擊列名稱並指定以下值:

Name:Path

Type:unManageFile

圖 7. 數據池示例 4,將 Path 變量設置為 unManagedFile

選擇與測試數據中的二進制內容有關的變量,單擊 Substitute(參見圖 8)。

圖 8. 數據替換 1

單擊 Select Data Source。

圖 9. Select Data Source

從 Select Data Source 對話框窗口中選擇 Datapool。

圖 10. 數據替換 2

在 “Select datapool column” 對話框窗口(圖 11)中,選擇您希望包含在測試中的數據池和列。

圖 11. 數據替換 3,選擇數據池和列

選擇您希望在測試中使用的訪問模式(在本例中,Shared (per machine 用於 Open 模式,Random 用於  Access 模式)。請參閱 Rational Performance Tester 幫助或信息中心),了解不同的選項。

圖 12 中的設置將在每次迭代開始時隨機選擇不同的文件。當到達數據池的最後一行時,它會從第一行重 新開始。

圖 12. 訪問模式的數據池設置

選擇您希望與測試變量 (Path) 有關聯的數據池列

圖 13. 數據替換 4

如果正確執行了所有以前的步驟, 您會在 Test Data 中看到如圖 14 所示的替換結果。

圖 14. 數據替換 5

您現在能夠使用多個 用戶執行測試了。每個用戶將在每次迭代中從數據池挑選一個隨機文件,替換上傳 HTTP 請求中的二進制內容 。

此自定義適用於大多數情況,但有時您可能還需要替換其他變量,才能讓腳本生效。例如,可以在 不同的變量中指定文件名,或者還需要指定文件擴展名。其中一些場景將在下一節中介紹。

高級測試 案例

這一節介紹兩個高級測試案例的示例,它們改進了上一節中介紹的基本場景。

在不同平台 上運行測試

文件替換的一個要求是在數據池中指定文件的完整路徑。這意味著該文件必須位於測試代 理的某個具體位置上。例如,如果已經創建了 Microsoft Windows 代理的腳本,那麼只需將數據池文件夾復 制到測試機器上的相同位置,就可以從任何 Windows 機器運行該腳本。但是,這不適用於 Linux 平台。如果 測試環境中既有 Windows 代理,也有 Linux 代理,那麼惟一的解決辦法就是在應用了所有數據關聯之後復制 測試,並將副本編輯為 Linux 版本。

要創建 Linux 版本,只需執行上一段中列出的步驟來創建一個 Linux 數據池,然後將二進制內容變量替 換為 Linux 數據池的列。

圖 15. 數據替換,Linux

在測試開始處添加一個自定義代碼,以便獲取將運行測試的機器的操作系統。

圖 16. 添加自定義代碼

修改自定義代碼的執行方法,如清單 1 所示。

清單 1. 修改 test.GetOs 自定義代碼的執行方法

public String exec

(ITestExecutionServices tes, String[] args) {
    String os = System.getProperty("os.name");
    if (!os.startsWith("Windows")){
           return "Linux";
    }else{
           return "Windows";
  }
  }

將所有事務和頁面插入到自定義代碼中一個 If 條件語句下,指定以下測試控制和條件參數(如 圖 17 所示):

First operand: custom code: test.GetOS

Operator:Equals

Second operand:Linux

圖 17. If - 條件參數

注意:

以相同方式修改 Windows 腳本,但指定 “Windows” 作為 If 條件的第二個操作數。

現在可以創建一個測試計劃,依次添加上 傳測試的兩個版本。在運行時,將會根據運行腳本的代理的 OS 平台執行一個版本,並跳過另一個版本。

圖 18. 上傳計劃模板

關聯其他參數

基本文件替換 功能適用於大部分情況,但有時您可能需要在上傳請求中關聯其他參數,才能使它正確運行。這些操作可能包 括:

使用不同的文件名

使用特定的文件擴展名

使用特定的 MIME 類型

在下面的示例中,不僅會設置文件內容的參數,還會根據從數據池挑選的文件類型,生成一個包含正確 的擴展名的隨機文件名。如果查看 圖 8,您就會注意到 HTTP 請求中的一個名為 file 的參數,它表示文件 名。它被設置為在記錄期間上傳的文件的名稱 (Desert.jpg)。在基本文件數據池中(圖 6),您擁有不同的 文件類型(.bmp、.doc、.zip 等)。如果沒有關聯此值,當 Rational Performance Tester 在運行時替換文 件內容時,該文件將上傳在記錄期間設置的文件名。為了避免這種情況,需要將此參數替換為一段自定義代碼 ,這段代碼生成一個隨機文件名,並附加上將推送到 HTTP 請求中的文件的擴展名。

您可以通過許多 方式生成一個隨機名稱。最簡單的方法是在文件名末尾附加一個時間戳(這是一個 Rational Performance Tester 變量)。要創建更加逼真的文件名,下面的示例將使用 4 個文字數據池 (Words),從其中挑選隨機數 量的文字來創建隨機的文件名。此外,它將基於從數據池挑選的文件來附加擴展名。

可采用與用於 Files 數據池的過程類似的過程,根據一個包含文字的 CSV 文件創建 Words 數據池。請 確保所有文字中都沒有特殊字符。

結果應類似於圖 19 中所示的 Words 數據池。

圖 19. Words 數據池

將該數據池克隆 4 次,為每個實例提供一個不同的名稱(例如 Filenames_part1)。可以使用不同的名 稱保存該數據池 4 次 (Files > Save As)。

在測試開始處插入一段自定義代碼。清單 2 給出了自定義代碼的 exec 方法。

清單 2. 自定義代碼的 exec 方法

public String exec(ITestExecutionServices tes, 

String[] args) {
     Random randomGenerator = new Random(); 
     int random = randomGenerator.nextInt(100) + 1;
    
     String filename=args[0];
    
     if (random>25)filename=filename+" "+args[1];
     if (random>50)filename=filename+" "+args[2];
     if (random>75)filename=filename+" "+args[3];
     String extension=args[4].substring(args[4].lastIndexOf(".")+1,args[4].length());
     filename=filename+"."+extension;
    
     return filename;
}

添加數據池變量作為自定義代碼的參數。您需要按照以下順序添加它們:

Filenames_part1.string

Filenames_part2.string

Filenames_part3.string

Filenames_part4.string

TestFiles.Path

要添加變量,只需單擊 Arguments 窗格中的 Add 按鈕。可使用導入 TestFile 數據池時使用的相同步 驟和設置。

最後,自定義代碼的 Arguments 窗格將類似於圖 20。

圖 20. Generate Filename 自定義代碼

然後使用與替換文件內容相同的步驟,將 file 變量替換為剛創建的自定義代碼。

現在,您的請求應該類似於圖 21。

圖 21. 將文件名替換為自定義代碼

替換多個文件名

如果該文件名在請求中出現過多次,只需對所有實例重復上述步驟即可。也可以使用 Rational Performance Tester 中的 Find 功能。執行以下步驟:

雙擊 Test Data 視圖中的 file 變量(參見圖 21),轉到 HTTP 請求的實例。

右鍵單擊突出顯示的文本(圖 22),從下拉菜單選擇 Find more and substitute (圖 23)。

圖 22. 替換文件名的更多實例 1

圖 23. 替換文件名的更多實例 2

在 “Substitute multiple items” 視圖中,浏覽該文件名每次出現在請求中的情況的列表,選擇您希 望替換的所有實例。

圖 24. 替換文件名的更多實例 3

單擊 Substitute checked,直到所有實例都已替換。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved