2016-02-11 3 views
0

Я выполняю базовое API-тестирование вызовов CRUD в базе данных. В JMeter у меня есть 1 поток с 3 группами нитей в моем плане тестирования, где я настроил Loops and Counters в каждом потоке. Причиной для счетчиков является сохранение результатов в файл, я хочу добавить префикс файла к значению счетчика.JMeter: Сброс значения счета

Проблема заключается в том, что счетчики никогда не сбрасываются. Так, например:

Where Count = 1 for all groups, I would expect: 
Thread Group 1, filename_1.json 
Thread Group 2, filename_2.json 
Thread Group 3, filename_3.xml 

Where Group 1 Count = 3, Group 2 Count = 2, Group 3 Count = 1, I would expect: 
Thread Group 1, filename_1.json, filename_2.json, filename_3.json 
Thread Group 2, filename_4.json and filename_5.json 
Thread Group 3, filename_6.xml 

Вместо где Count = 1 для всех групп я получаю результаты, как:

Thread Group 1, filename_11.json 
Thread Group 2, filename_14.json 
Thread Group 3, filename_18.xml 

После долгих поисков и пытается несколько предложений, я до сих пор не получаю то, что я ожидать. Ниже приведен пример того, как настроен план тестирования.

Любые предложения очень ценятся.

 
Thread Group 1 
    HTTP Header Manager (application/json) 
    Loop Controller 
     Counter (Start=1, Increment=1, Maximum=100, Num Format=null, Ref Name=LoopCounter1) 
     HTTP Request (CREATE) 
     RegEx (RefName=newRequest, Reg Ex = "id":(.+?)\,"displayName", Template=$1$, Match No.=1, Default=NONE) 
      BeanShell Assertion (Name=newRequest, Param=${__setProperty(newRequest,${newRequest},)}) 
      Save Response to file (File prefix=requestResult_${LoopCounter}, Var Name=newRequestFile) 
     Loop Controller 
      HTTP Request (READ) 
      HTTP Request (UPDATE) 
      HTTP Request (DELETE) 

Thread Group 2 
    HTTP Header Manager (application/json) 
    Loop Controller 
     Counter (Start=1, Increment=1, Maximum=100, Num Format=null, Ref Name=LoopCounter2) 
     HTTP Request (CREATE) 
      RegEx (RefName=newContractId, Reg Ex = "id":(.+?)\,"terminationType", Template=$1$, Match No.=1, Default=NONE) 
      BeanShell Assertion (Name=newContractId, Param=${__setProperty(newContractId,${newContractId},)}) 
      Save Response to file (File prefix=contractRecords_${LoopCounter2}, Var Name=newContractFile) 
     Loop Controller 
      HTTP Request (READ) 
      HTTP Request (UPDATE) 
      HTTP Request (DELETE) 

Thread Group 3 
    HTTP Header Manager (application/xml) 
    Loop Controller 
     Counter (Start=1, Increment=1, Maximum=100, Num Format=null, Ref Name=LoopCounter3) 
     HTTP Request (CREATE) 
      RegEx (RefName=newPricingId, Reg Ex = "id":(.+?)\,"terminationType", Template=$1$, Match No.=1, Default=NONE) 
      BeanShell Assertion (Name=newPricingId, Param=${__setProperty(newPricingId,${newPricingId},)}) 
      Save Response to file (File prefix=pricingRecords_${LoopCounter3}, Var Name=newPricingFile) 
     Loop Controller 
      HTTP Request (READ) 
      HTTP Request (UPDATE) 
      HTTP Request (DELETE) 

UPDATE

я ближе к желаемым результатам. Когда включен «Сброс счетчика на каждой группе потоков», я ожидаю, что Count группы 2 будет сброшен на 0. Однако он продолжается из предыдущего потока. Мне нужно сбросить счетчик в каждой группе потоков. Вот почему:

 
Thread Group 2 
    HTTP Header Manager (application/json) 
    Loop Controller 
     Counter (Start=1, Increment=1, Maximum=100, Num Format=null, Ref Name=LoopCounter2) 
     HTTP POST Request (CREATE) 
     ${__FileToString(${payloadArchive}/${__eval(contract_${LoopCounter})}.json,,)} 

Как вы можете видеть, я прохожу в другой файл в тело HTTP-запрос с каждой петлей резьбы Группа 2. Каждый .json файл содержит уникальные элементы, основанные на уникальных ограничениях базы данных , Файлы называются «contract_01.json», «contract_02.json», «contract_03.json» и т. Д. Вот почему я хочу, чтобы Thread Group 2 перезапустил свой счетчик.

+0

Вы говорите «у меня 3 потока» в описании, но ваш код подсказывает, что у вас есть 3 группы нитей. Так вы имели в виду, что у вас есть 3 потока в каждой из трех групп нитей? Или сколько потоков существует в каждой группе нитей? Также проверяется «Track Counter Independently для каждого пользователя»? –

+0

Извините, у меня только 1 нить и 3 группы нитей. (_I исправил это в моих указаниях.).Когда включен «Track Counter Independently ....», я ближе к желаемым результатам. Когда включен «Сброс счетчика на каждой группе потоков», я ожидаю, что Count группы 2 будет сброшен на 0. Однако он продолжается из предыдущего потока. Мне нужно сбросить счетчик каждой группы участников, чтобы начать с 0. – David

ответ

0

решаемые (?)

следующие конфигурации счетчика, кажется, чтобы обеспечить желаемые результаты.

 
Thread Group 1 
    HTTP Header Manager (application/json) 
    Loop Controller 
     Counter 
       Start=null, 
       Increment=null, 
       Maximum=null, 
       Num Format=null, 
       Ref Name=LoopCounter1 
     HTTP POST Request (CREATE) 
Thread Group 2 
    HTTP Header Manager (application/json) 
    Loop Controller 
     Counter 
       Start=1, 
       Increment=null, 
       Maximum=null, 
       Num Format=null, 
       Ref Name=LoopCounter2 
     HTTP POST Request (CREATE) 
    ${__FileToString(${payloadArchive}/${__eval(contract_${LoopCounter})}.json,,)} 

Как вы можете видеть, с каждой петлей резьбы 2-й группы я передаю в другой файл в тело HTTP запроса. (Каждый файл содержит уникальные элементы, основанные на уникальных ограничениях базы данных.) Файлы называются «contract_1.json», «contract_2.json» и т. Д. Следовательно, почему я хотел, чтобы Thread Group 2 перезапустил его счетчик.

Теперь он работает и правильно захватывает правильное содержимое файла с каждым циклом. Тем не менее, я не знаю, почему Старт должен быть нулевой для счетчика 1 и для счетчика 2.

Если кто видит недостаток с этим, я бы знать, почему и как это исправить , Я использую JMeter только 1 неделю без использования Java (или любого программирования).

Смежные вопросы