1. 程式人生 > >Jmeter Thread Group中如果存在HTTP request執行失敗,就對整個Thread Group重新執行,限定最大執行次數N次 由於在對WEB系統進行自動化測試的過程中,經常會由於

Jmeter Thread Group中如果存在HTTP request執行失敗,就對整個Thread Group重新執行,限定最大執行次數N次 由於在對WEB系統進行自動化測試的過程中,經常會由於

Jmeter Thread Group中如果存在HTTP request執行失敗,就對整個Thread Group重新執行,限定最大執行次數N次

由於在對WEB系統進行自動化測試的過程中,經常會由於握手連線斷開等原因導致HTTP請求傳送失敗,如果重新執行一次,會是成功的。在每天的自動化冒煙測試過程中,生成在測試報告存在誤報,嚴重浪費了測試人員確認的時間,因此希望在HTTP請求失敗的情況下,重新執行,設定一個重新執行的最大次數,如果嘗試了多次都是失敗的才認為是真的失敗了。

一開始,我只是對單個HTTP request通過While Controller做了失敗後重新執行這樣的處理,但是要讓一個thread group裡面所有的HTTP request都這樣處理該怎麼辦呢?由於對每個HTTP request都新增一段那樣的程式碼不太現實,最後,我是這樣處理的,將一個thread group裡面所有的指令碼都放在一個While Controller裡面,如果有任意一個HTTP request失敗了,就重複執行整個thread group,而且最後一次執行無論成功與否,其前面的幾次執行都強行設定成是成功的,這樣如果前N-1次執行失敗了,第N次執行成功了,出來的測試報告不會有這個HTTP request失敗的資訊,測試人員就不需要花時間去重新確認了。

1  初始化變數

+ View Code

2  控制迴圈

1 ${__BeanShell((Boolean)vars.getObject( "ISCONTINUE" ))}

3  對HTTP sample的結果sampleresult進行判斷,如果有任何一個失敗了,就將標誌位ANYSAMPLEFAIL設定為true,以便據此判斷整個thread group是否需要重新執行

備註:此BeanShell Assertion將作用於While Controller內每一個HTTP Sampler

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.assertions.AssertionResult;   SampleResult prev_result=ctx.getPreviousResult();   Integer increment = (Integer)vars.getObject( "INCREMENT" ); Integer maxloop = (Integer)vars.getObject( "MAXLOOP" );   if  (prev_result  !=   null   && !prev_result.isSuccessful()) {                vars.putObject( "ANYSAMPLEFAIL" true );                if  (increment.intValue() < (maxloop.intValue() - 1))                                  prev_result.setSuccessful( true );                }      }

4  對迴圈次數進行計數,對是否繼續重複執行進行判斷,對是否存在任何一個samper失敗的標誌位ANYSAMPLEFAIL進行重置

備註:此BeanShell Samper只在每次的While Controller的最後執行一次

1 2 3 4 5 6 7 8 9 Integer increment = (Integer)vars.getObject( "INCREMENT" ); increment++; Boolean requestResult = (Boolean)vars.getObject( "ANYSAMPLEFAIL" ); Integer maxloop = (Integer)vars.getObject( "MAXLOOP" ); boolean iscontinue = (increment < maxloop) && requestResult.booleanValue() ;   vars.putObject( "ISCONTINUE" , iscontinue); vars.putObject( "ANYSAMPLEFAIL" false ); vars.putObject( "INCREMENT" , increment );

這樣處理之後,如果最大迴圈三次,三次都失敗了,前兩次也不會被標記為失敗的,請看結果樹:

在上圖中,前兩次失敗的HTTP request雖然其下的斷言標記為失敗的,但是HTTP request並沒有標記為失敗的。

如果希望前兩次失敗的HTTP request連其下的斷言都標記為成功的,那麼需要這樣處理:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.assertions.AssertionResult;   SampleResult prev_result=ctx.getPreviousResult(); if  (prev_result !=   null   && !prev_result.isSuccessful()) {       AssertionResult [] results=prev_result.getAssertionResults();       int  size = results.length;       for  ( int  i=0; i< size; i++)      {

相關推薦

Jmeter Thread Group如果存在HTTP request執行失敗整個Thread Group重新執行限定執行次數N 由於WEB系統進行自動化測試過程經常由於

Jmeter Thread Group中如果存在HTTP request執行失敗,就對整個Thread Group重新執行,限定最大執行次數N次 由於在對WEB系統進行自動化測試的過程中,經常會由於握手連線斷開等原因導致HTTP請求傳送失敗,如果重新執行一次,會是成功的。在每天的自動

jmeter命令列執行與生成報告 Jmeter Thread Group如果存在HTTP request執行失敗整個Thread Group重新執行限定執行次數N

轉自:http://www.cnblogs.com/kongzhongqijing/p/7216693.html 一、     使用命令列方式執行Jmeter 1.1 為什麼 使用GUI方式啟動jmeter,執行執行緒較多的測試時,會造成記憶

Python自動化測試過程出錯解決方案:retrying

最近發現的新的解決方案:retrying retrying是一個 Python的重試包,可以用來自動重試一些可能執行失敗的程式段。retrying提供一個裝飾器函式retry,被裝飾的函式就會在執行失敗的條件下重新執行,預設只要一直報錯就會不斷重試。 import random from retr

WebUI自動化測試過程遇到的問題總結

寫自動化程式碼過程中遇到的問題: 1、系統使用了Google統計,頁面反應會非常慢,導致頁面開啟之前測試先失敗了,我本想將開啟頁面的時間延長,主席告訴我一個更方便簡單的方法,修改hosts檔案,將這個Google統計轉到本地,這樣就不會有以上的問題了。 hosts檔案修改

21條自動化測試過程遭遇的問題及解決思路

記錄自動化中遇到的一些錯誤及解決思路,會持續更新(根據個人情況不同,錯誤解決方法不同)1、找不到元素,指令碼報“NoSuchElementException:Unable to find element”,或者"定位到了,不能操作,點選無效"  1) 首先檢視自己的“屬性值”

如何找到自動化測試的思路和理解自動化測試過程的問題

    要找到自動化測試的思路,首先得明確自動化測試的本質。對自動化測試的本質的理解不同,導致了在進行自動化測試過程中對於組建團隊、制定目標計劃等的不同,決定了最終自動化測試的實施和效果的不同。所以必須先把自動化測試的本質說明白。     談本質的問題,每個人的理解是不盡相

【Selenium】使用selenium進行自動化測試

1.元素定位與操作 查詢元素方法: driver.findElement(By arg0); 其中寫用來定位的API,常見用來定位的API有六種,接下來一一介紹: 1.1 By.id 根據id來獲取元素,返回單個元素,因為id值一般是唯一的。 //獲得id

整合C#測試框架和Selenium對於Web系統實現自動化測試

系統環境: 軟體需求: Visual C# 2010,Mozilla Firefox,Selenium 硬體需求: Pentium III 450以上的CPU處理器,64MB以上的記憶體,200MB的自由硬碟空間 內容簡介: 1. 利用Spy++進行W

測試過程常用的linux命令之【查看文件指定行的內容】

sed head tail 在開展測試工作的過程中,通常要接觸到服務器,對於linux服務器,總結一些常用的命令。 準備工作為了能直觀展示命令結果,使用腳本創建一個文件,在顯示文件內容的同時,也直觀的顯示行號。#!/bin/bash FileName=TestFile.log touch ./$

測試過程常用的linux命令之【查找指定的文件內容】

vi grep 之前遇到過這種情況,在查看日誌定位問題時,會將log 傳輸到本地,然後用本地的文本編輯工具打開文件,然後查找關鍵字,再進行分析。 這樣做無疑會降低效率。整理了幾個常用的命令,可以進行快速的查找。測試文件:文件名稱為execution.log, 文件內容如下:[error] Timed o

軟件測試過程有哪些風險?

dia bsp HR 人力 選擇 用例 com 重寫 size 那麽到底都有哪些風險要註意呢?如何解決呢?另外這些風險如何在計劃中寫明呢,不會寫“張三可能要離職”,“開發提交代碼可能會延期”吧? 設計方面: 風險:(1)沒有詳細設計說明書; 解決方案:測試人員要在開發階

壓力測試過程MySQL服務CPU占用率過高的問題排查思路

建立索引 效果 mysql服務器 還要 數據庫服務 如果 頻率 water vpd 〇、經驗總結: 在關註業務接口的TPS時,也要關註數據庫服務器的QPS。如果一個業務流程裏包含多條查詢,那麽業務接口TPS的上升對數據庫服務器QPS的放大效應會很明顯。 如果查詢結果集不大

效能測試過程oracle資料庫報ORA-27301 ORA-27302錯

最近在效能測試過程中發現,發現虛擬使用者數上不去,載入到一定的數量應用端就報錯,提示連線資料庫出錯。在測試的過程中檢視web容器的執行緒池 資料來源的連線池 都還有空閒,同時檢視oracle的v$session檢視 發現session數到了一定數量就上不去了。檢視資料庫引數 process 設定的是1000

hyperledger-composer書寫鏈程式碼單元測試過程的問題總結

1、如果遇到 TypeError: Cannot read property 'should' of undefined TypeError: Cannot read property 'canRepeat' of undefined 類似的錯誤,那麼應該就是ES6 語法中缺少了aw

JMeter測試過程的響應斷言以及斷言結果

JMeter 在測試過程中的響應斷言以及斷言結果,記錄下來主要是為了方便自己以後不斷的系統性的鞏固 響應斷言 :對伺服器的響應進行斷言校驗 (1)應用範圍: main sample and sub sample, main sample only , sub-sample o

yolo的訓練和測試過程踩過的坑

1.執行main.py,報錯:SyntaxError: Missing parentheses in call to 'print' 錯誤原因:因為安裝的是python3的版本 但是這個程式是2.

python獲取tcp連線數新增連線數繪圖(用於效能測試過程監控)

本指令碼可以用於有效能測試監控需求的人使用,用於tcp連線數的監控# -*- coding: UTF-8 -*- # author=baird_xiang import os import sys import time import re import copy new_

談談測試過程常見的幾個問題

相信大家在測試工作過程中一定遇到許許多多的問題,而且每個人的問題都不太一樣。今天總結小編在測試過程中經常遇到的幾個方面與大家分享一下。 1.測試執行方面 測試過程中,我們常常會擔心測試不夠全面,覆蓋不全。因為我們知道測試不足(沒有覆蓋到足夠的度)極有可能帶來嚴重的後果,但過多的測試就能夠在解決這個問

自己測試過程總結的易忽略的測試點和經驗--持續更新

1.app多語言測試中,彈窗一般會出現居中問題。德語和法語容易在按鈕和固定大小的控制元件上超出長度 2.web測試中,對各個輸入框的報錯提示可能會有重疊情況。 3.自動化測試中,頁面如果重新整理了,控制元件就得重新定位。所以定位的程式碼放在哪很重要

測試過程如何高質量回歸bug

在作者多年的測試過程中,總結出了一套流程高質量的迴歸Bug的流程,這裡跟大家分享下:I、bug的描述執行(必測)複製bug的描述(如沒有,就複製概述),備註執行情況  (不明白的地方需要找bug提交人確