Web Performance Test: 如果使用Plugin過濾Dependent Request


前言

由於Visual Studio的Web Performance Test是基於XML腳本的,留給用戶修改測試行為的自由度並不高。因此,Plugin機制就對於實現很多客戶化的配置顯得很重要。

問題描述

當使用Web Performance Test進行測試,發送一個Request並收到Response后,框架會自動幫你解析Dependent Request,比如 -- css,javascript,圖片等,然后再去請求這些資源。你需要做的是把 Parse Dependent Request屬性設置為True:

image

這個功能很好,可以幫助你更真實地模擬實際的壓力,但是由於對Dependent Request的解析是運行時動態解析的,因此從腳本中你是無法指定哪些Dependent Request並不想去請求。而我們不想去請求的原因可能是:

1,有的資源可能放在第三方的服務器上,比如用到了第三方的圖片服務,但是你只想測試自己的服務。

2,有些第三方資源可能訪問有問題,將導致測試用例失敗。比如我遇到的是頁面包含了google提供的jquery腳本,請求有時會拋出socket異常,測試用例就直接失敗了。

3,第三種情況我猜測可能存在--即某些第三方資源對同一IP的訪問有限制,可能導致資源有時請求成功,有時失敗。

 

解決方案

我們通過Plugin來過濾掉我們不喜歡的Dependent Requests,

    public class RequestFilterWebTestPlugin : WebTestPlugin
    {
        public override void PreRequest(object sender, PreRequestEventArgs e)
        {
            int count = e.Request.DependentRequests.Count;
            for (int i = count - 1; i >= 0; i--)
            {
                if (e.Request.DependentRequests[i].Url.ToLower().Contains("****.com"))
                {
                    continue;
                }
                else
                {
                    e.Request.DependentRequests.RemoveAt(i);
                }
            }
        }

        public override void PostRequest(object sender, PostRequestEventArgs e)
        {
            int count = e.Request.DependentRequests.Count;
            for (int i = count - 1; i >= 0; i--)
            {
                if (e.Request.DependentRequests[i].Url.ToLower().Contains("****.com"))
                {
                    continue;
                }
                else
                {
                    e.Request.DependentRequests.RemoveAt(i);
                }
            }
        }
    }

 

以上代碼很簡單,繼承WebTestPlugin, 在PreRequest和PostRequest方法中,移除掉e.Request.DependentRequests中不需要的Request。我們這里很簡單,只是移除掉所有非****.com域的Dependent Requests,讀者也可以自己實現更復雜的功能-- 黑名單、白名單、配置在配置文件中等等。

 

Binhua Liu原創,寫於2013/9/29。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM