什麼是bsf, Bean Scripting Framework(BSF)是一個支持在Java應用程序內調用腳本語言 (Script),而且支持腳本語言直接訪問Java對象和方法的一個開源項目。 jmeter 使用bsf處理器, 無非就是能夠編寫本身的script腳本代碼, 來實現更強大的測試腳本。javascript
下面這個例子告訴你,何時必須使用jmeter的bsf處理器, 何時使用正則表達式提取器就足夠了。(如下例子均爲假設,並不真實存在)html
須要使用bsf的例子 | 使用正則表達式提取器便可的例子 |
2. 返回了一個json(協議)字符串 其中包含了一個key爲java passwd, 他的值爲mypasswd. 正則表達式
|
2. 返回了一個html頁面包含以下一個連接json
咱們想找到 http://blog.whoistester.com 這個字符串測試 並賦予到變量${url} 加密
|
3. 將mypasswd 這個值抓取到,並賦給${mypasswd}url
|
3. 直接利用徵則表達提取器提取到xml 字符串並賦予給${url}變量htm |
4. 對${mypasswd}的值進行md5加密, 並md5加密後的字符串賦到 ${md5mypasswd} |
|
5. 而後使用${md5mypasswd}進行下一步的操做 | 如何使用正則表達式提取,請瀏覽 |
經過例子對比, bsf能夠經過編寫咱們本身的腳本,進行更復雜的邏輯處理。 一般jmeter本身提供的方法沒法知足咱們的需求時,咱們則須要用bsf本身編寫腳本,來實現本身的複雜處理邏輯.
bsf 有前置與後置處理器。後置處理器,經過 prev.getResponseDataAsString()能夠得到該sample請求的返回數據。 咱們將返回的數據獲得咱們想要的數據,而後能夠進行邏輯運算處理。
而後經過 vars.put("key", value); 放入到jmeter的變量裏。
這樣咱們在後面的sample或者其餘類型的處理器裏,就可使用$key 這個變量了。
額外說的是, 儘可能不要使用javascript的正則表達式去解析html,xml。 這是痛苦的一件事情,但若是你須要獲取少許的數據, 固然你可使用正則表達式的方法。 一個最好的辦法是, 服務端儘可能返回json格式。