[個人筆記] Visual Studio Web測試外掛程式與全域變數

[個人筆記] Visual Studio Web測試外掛程式與全域變數

由於WebTest時,可能會針對測試的目標網站位址會有變動(例如測不一樣環境同樣網站的情境),單純參數化Web伺服器雖可簡單解決,但是當WebTest多時,每個Test都要做修改也是相當費工夫的,所以在開發上考量時,希望可以將參數全域化,就像是Config一樣的設定是最方便的,本文用Web測試外掛程式 + XML實現這個想法。


首先簡單快速說明一下Web測試外掛程式的建立準備工作:

image

1. 建立類別庫專案

2. 加入參考

  • 若要擴充 WebTestPlugin 及 WebTestRequestPlugin,需參考:Microsoft.VisualStudio.QualityTools.WebTestFramework
  • 若要擴充 LoadTestPlugin,需參考:Microsoft.VisualStudio.QualityTools.LoadTestFramework
  • 注意測試專案中使用的DLL版本,此處參考的DLL版本需與測試專案中的一致,筆者就有9.0.0.0與10.0.0.0兩個版本,版本不同會出現類似下面畫面的錯誤,將外掛程式的參考DLL版本設定正確即可。

image

3. 建立一個PlugIn類別,並using Microsoft.VisualStudio.TestTools.WebTesting與繼承WebTestPlugin

4. 覆寫PreWebTest:因為我們要做的是全域參數,在這邊我們就要覆寫PreWebTest,使每次要執行WebTest前就先執行這個方法。

以上完成就可以初步建立一個Web測試外掛程式,其它要做的程式工作接下來後面會再說明,另可參考HOW TO:建立 Web 效能測試外掛程式


接著在剛剛建立的類別庫專案中,建立一個讀取參數用的類別,內部程式碼如下:


public class WebTestSettings
{
    public string ApiURI { get; set; }

    internal void ReadConfig(string pConfigFilePath)
    {

        StreamReader tReader = new StreamReader(pConfigFilePath);
        XmlSerializer tSerializer = new XmlSerializer(typeof(WebTestSettings));
        WebTestSettings tReadSettings = (WebTestSettings)tSerializer.Deserialize(tReader);
        this.SqlConnectionString = tReadSettings.SqlConnectionString;
        this.ApiURI = tReadSettings.ApiURI;
        tReader.Close();
    }
}

然後建立一個設定檔XML,未來只要修改這個設定檔的值就可以改變測試目標的URL:


<WebTestSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="WebTestSettings.xsd">
  <ApiURI>待測網址</ApiURI>
</WebTestSettings>

再來回到PlugIn類別,增加參數並覆寫PreWebTest方法:


private const string tSettingsFile = "設定檔.xml";

public override void PreWebTest(object sender, PreWebTestEventArgs e)
{
    tSettings.ReadConfig(tSettingsFile);
    e.WebTest.Context.Add("ApiURI", tSettings.ApiURI);
    base.PreWebTest(sender, e);
}


再幾個步驟才能完成將外掛程式與設定檔融入至測試專案的工作:

1.將剛剛建立的類別庫加入到測試專案的參考中。

2.將設定檔XML放入測試專案,並將其檔案屬性設定有更新時才複製到輸出目錄:

image

3.設定部署項目,這樣在執行測試時才會把設定檔一起部署到資料夾中,否則會抓不到設定檔造成測試錯誤,這個工作比較複雜:

  • 打開測試檢視

image

  • 設定部署項目

 

image

4.在WebTest的根節點上按右鍵,加入Web測試外掛程式,並選擇剛剛的外掛程式類別庫。

image

5.最後不要忘了把測試URL改成用{{}}包住的參數{{ApiURI}},並確認測試外掛顯示在下方,這樣子未來進行WebTest時,系統就會自動將設定檔中的ApiURI代入每次WebTest。

image

 

以上,歡迎大家指教與討論,謝謝各位。

參考資料:Creating URL configurable Visual Studio Web Tests