HTTP прокси сървър в JMeter: Запишете примерен скрипт

⚡ Умно обобщение

JMeter HTTP прокси сървърът записва активността на браузъра в тестов скрипт за многократна употреба. Записващото устройство се намира между браузъра и уебсайта, записва всяка заявка в контролер за запис, а запазеният план се възпроизвежда от много виртуални потребители.

  • 🎬 Основна цел: Проксито наблюдава и записва потребителската активност, докато нормален браузър навигира в тестваното приложение.
  • 🧱 Скелет на плана: Групата нишки, настройките по подразбиране за HTTP заявки и контролерът за запис се създават преди началото на записа.
  • 🎯 Target контролер: Тази настройка определя къде се записват заснетите семплери в дървото на тестовия план.
  • 🌐 Настройка на браузъра: Браузърът трябва да насочи своя HTTP прокси към JMeter порт, 8888 по подразбиране.
  • 🔐 HTTPS запис: Импортиране на ApacheJMeterTemporaryRootCA.crt като доверен орган, след което го премахнете.
  • 🧹 Почистване на скрипта: Заявките за реклама и анализи също се записват и трябва да бъдат изключени или изтрити.
  • 🔗 Корелация преди мащабиране: Заменете записаните токени за сесия с extracпроменливи, или преиграването е неуспешно.
  • ⚠️ Забележка за версията: WorkBench беше премахнат през JMeter 5.0; елементът вече е HTTP(S) Test Script Recorder.

JMeter Скрипт за запис на HTTP прокси сървър

Каква е JMeter HTTP прокси сървър?

- JMeter HTTP прокси сървърът е вграден рекордер, който се намира между браузъра и тествания уебсайт. Той наблюдава и записва потребителската активност, докато приложението се използва нормално, и превръща всяка заснето заявка в HTTP семплер на заявки в рамките на тестовия план. JMeter 3.0 елементът е наречен Записващо устройство за тестови скриптове на HTTP(S), и двете имена описват един и същ компонент.

Рекорд тестване помага на тестера да записва и възпроизвежда активност спрямо тестова цел. Това е вид автоматизирано тестване, но за множество потребители едновременно.

Защо да записваме, вместо да изграждаме сценария на ръка?

Реалистичното потребителско пътешествие в съвременен сайт генерира десетки заявки, всяка със собствени заглавки, бисквитки и параметри на формуляра.ping Ръчното прехвърляне на всичко това в семплерите е бавно и податливо на грешки. Записът улавя точния трафик, който браузърът е изпратил, което дава три предимства:

  • Точност: Редът на заглавките, „бисквитките“ и скритите полета на формуляра се записват точно както са били получени от сървъра.
  • Скорост: Записването на едно пътешествие от десет страници отнема минути, а писането на ръка - часове.
  • Покритие: Фоновите AJAX повиквания, които са невидими в интерфейса, все още се показват в записа.

Записът е по-скоро отправна точка, отколкото завършен тест. Той все още се нуждае от почистване, корелация и параметризиране, преди да е използваем за... тестване на товараРазделите по-долу обхващат пълния път от празен JMeter прозорец към скрипт, който се възпроизвежда надеждно.

Тук е пътна карта от този практически пример

HTTP прокси сървър в JMeter

Как да запишете скрипт в JMeter 5.x

Текущото издание е Apache JMeter 5.6.3, публикуван на 9 януари 2024 г., и той изисква Java 8 или по-късно, с Java 17 препоръчително. Всеки, който следва илюстрираното ръководство по-надолу на тази страница за тази версия, няма да намери възел WorkBench, защото той беше премахнат във версия 5.0. Функционалността не изчезна; тя се премести. Записващото устройство вече е добавено директно към тестовия план и се нарича HTTP(S) Test Script Recorder.

Най-бързият маршрут е пакетният шаблон. Изберете досие > Шаблони > запис намлява JMeter генерира пълен план, съдържащ група нишки, настройки по подразбиране за HTTP заявки, контролер за запис и самото записващо устройство, вече свързани помежду си. Изграждането на същата структура на ръка изисква следните стъпки.

  1. Изградете скелета на плана. Добавете група нишки (Thread Group), след което добавете контролер за запис под нея. Това е мястото, където ще се намират заснетите семплери.
  2. Добавете рекордера към тестовия план. Щракнете с десния бутон на възела „Тестов план“ и изберете Добави > Нетестови елементи > Записващо устройство за тестови скриптове на HTTP(S)Това е брат/сестра на групата нишки, а не дете.
  3. Задайте порта. По подразбиране е 8888. Всеки свободен порт работи, стига браузърът да е конфигуриран да съответства.
  4. Избери Target Controller. Изберете контролера за запис, създаден в първа стъпка, така че заявките да бъдат групирани там, където очаквате, а не разпръснати в корена на плана.
  5. Добави URL модели на изключване. В раздела „Филтриране на заявки“ изключете статичните ресурси с шаблон, например .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)Това премахва по-голямата част от ръчното почистване, описано по-късно.
  6. Стартирайте рекордера. Кликнете Начало в горната част на панела на рекордера. JMeter пише АпачиJMeterTemporaryRootCA.crt в папката си bin в този момент, което прави възможно HTTPS записването.
  7. Насочете браузъра към прокси сървъра използвайки localhost и избрания порт, след което навигирайте в приложението по обичайния начин.
  8. Спри и подреди. Натиснете Stop, изтрийте всички останали повиквания от трети страни и запазете плана.
  9. Валидирайте преди мащабиране. Щракнете с десния бутон върху групата „Теми“ и изберете ратифицирамТова изпълнява плана веднъж с една нишка, така че грешките се появяват преди да се приложи каквото и да е натоварване.

Още един навик отличава работещия скрипт от надеждния. Използвайте графичния интерфейс само за изграждане и дебъгване, след което изпълнете истинския тест от командния ред с jmeter -n -t plan.jmx -l results.jtl -e -o report, което също генерира HTML табло за управление. Същата команда е в основата на разпределено тестване през няколко генератора на товар. Инсталацията е обхваната в JMeter ръководство за инсталиранеи пълната процедура е документирана на Apache JMeter страница на рекордера.

⚠️ Бележка към версията: Екраните в ръководството по-долу са заснети на по-стара JMeter версия, която все още имаше възела WorkBench. WorkBench беше премахната през JMeter 5.0. Всяка концепция е валидна; променя се само местоположението на записващото устройство, а текущата процедура е дадена по-горе.

Стъпка 1) Настройка на HTTP прокси сървъра

Това е ръководство стъпка по стъпка за настройка на прокси

  1. Начало JMeter
  2. Изберете План за тестване на дървото
  3. Добави Група темиЩракнете с десния бутон върху План за тестване и добавете нова група нишки: Добави > Нишки (потребители) > Група теми

Настройка на HTTP прокси сървър

  1. Добави HTTP заявкаИзберете групата „Теми“; щракнете с десния бутон Добави > Конфигурационен елемент > HTTP заявка по подразбиране

Настройка на HTTP прокси сървър

В новия елемент HTTP Request Defaults: В името на сървъра или IP въведете „google.com“. Трябва да оставите останалите полета празни

Настройка на HTTP прокси сървър

  1. Добави Контролер за записЩракнете с десния бутон върху „Група нишки“ и добавете контролер за запис: Добави > Логически контролер > Контролер за запис

Настройка на HTTP прокси сървър

  1. Добави Proxy Server към WorkBench. Щракнете с десния бутон върху Workbench и добавете http прокси: Добави > Нетестови елементи > HTTP прокси сървър, за JMeter 5.x, щракнете с десния бутон върху План за тестване възел вместо това и изберете Записващо устройство за тестови скриптове на HTTP(S).

Настройка на HTTP прокси сървър

  1. комплект Target Регулатор където вашите записани скриптове ще бъдат добавени

Настройка на HTTP прокси сървър

  1. Начало Прокси сървър. Върнете се към HTTP прокси сървър и щракнете върху Начало бутон в долната част. Сега твоя JMeter стартиране на прокси сървър

Настройка на HTTP прокси сървър

  1. Стартирайте своя браузър (използвах Firefox), избирам Инструмент > Опция > Подробно > мрежа > Настройка > Въведете HTTP прокси, както е показано на фигурата по-долу. В текущия Firefox пуска същия диалог, чрез който се достига Настройки > Общи > Настройки на мрежата.

Настройка на HTTP прокси сървър

Стъпка 2) Запишете дейността си

  1. Сега стартирайте http://www.google.com във вашия уеб браузър (JMeter все още отворен)
  2. Търсят ли дейности по ключова дума „гуру99".
  3. Обратно към JMeter, щракнете върху HTTP прокси сървър Спиране когато приключи

Записване на активност

  1. След като приключите със записа, ще видите JMeter автоматично създаде нова HTTP заявка, както е показано на фигурата по-долу

Записване на активност

JMeter вече е записал потребителска заявка към началната страница of Google уебсайта. http://www.google.com/

Другите HTTP заявки се показват на горната фигура, трябва да ги премахнете. Защото някога JMeter също така записва някои рекламни връзки, докато търсите ключова дума в GoogleТрябва да ги игнорираме в нашия тестов план.

  1. Щракнете върху Файл > Запазване на вашия тестов план като

Записване на активност

  1. Ще се покаже диалогов прозорец > въведете име на вашия тестов план в полето „Име на файл“ > щракнете върху „Запазване“. Сега вашият тестов план е запазен под името RecordingTestPlan.jmx

Записване на активност

Стъпка 3) Изпълнете своя тестов план

  1. Изберете Група теми > Добавяне > Слушател > Обобщен отчет

Изпълнете план за тестване

  1. Обобщеният отчет ще покаже някои основни статистики

Изпълнете план за тестване

  1. Изберете Thread Group, въведете информация като фигурата по-долу

Изпълнете план за тестване

Можете да се обърнете към статията JMeter Тестване на производителността за да научите подробности за конфигурирането на група нишки.

  1. Преди да започнете теста, изберете „Обобщен отчет“. Когато сте готови да изпълните тест, изберете Изпълнение > Старт (Ctrl+R). JMeter ще възпроизведе активността ви 100 пъти. Докато тестът се изпълнява, статистиката ще се променя, докато тестът не приключи.

Изпълнете план за тестване

Стъпка 4) Запазете резултата от теста

  1. Кликнете Запазване на таблични данни за да запазите резултата от теста във файл

Запазете резултата от теста

  1. Въведете името на резултата от теста и щракнете върху Запиши. Резултат от теста в JMeter се записва във формат *.csv по подразбиране

Запазете резултата от теста

Изтеглете тестовия план за запис на файл

Изтеглете файловия HTTP прокси сървър

Записване на HTTPS трафик и сертификати

Почти всеки сайт вече предлага HTTPS, което е предшестващо първоначалното ръководство. Прокси сървърът не може да чете криптиран трафик, освен ако браузърът не му се доверява, така че е необходима още една стъпка.

Когато рекордерът стартира, JMeter генерира временен коренен сертификат с име ApacheJMeterTemporaryRootCA.crt в директорията му bin. Импортирайте този файл в браузъра като надежден сертифициращ орган, след което рестартирайте браузъра. JMeter вече може да представи свой собствен сертификат за всеки сайт и да декриптира сесията за запис.

Струва си да знаете три точки:

  • Сертификатът изтича след седем дни. Това е умишлено. Изтрий го и остави JMeter регенерирайте нов, вместо да удължите валидността му.
  • Премахнете го, когато сте готови. Оставянето на надежден root сертификат, инсталиран на работеща машина, е реален риск за сигурността, а не теоретичен.
  • Някои приложения го отказват. Сайтове, използващи закрепване на сертификати или взаимна TLS връзка, изобщо не могат да бъдат записвани чрез прокси сървър и скриптът трябва да бъде създаден ръчно от инструменти за разработчици на браузъри.

Корелация: Как да направим записан сценарий възможен за повторно възпроизвеждане

Записаният скрипт възпроизвежда точно това, което се е случило веднъж, което рядко се случва втория път. Идентификаторите на сесии, токените и генерираните ключове, заснети по време на записа, са невалидни, когато скриптът се възпроизведе отново, а изпълнението му се проваля по начин, който изглежда като грешки в приложението.

Корелацията е решението. A постпроцесор като например регулярния израз Extractor или JSON Extractor улавя новата стойност от отговора за вход, съхранява я в променлива и по-късните заявки препращат към тази променлива, вместо към записания литерал.

Работният процес е кратък:

  1. Възпроизведете скрипта веднъж с слушател View Results Tree и намерете първата неуспешна заявка.
  2. Сравнете неуспешната заявка със записа. Всяка стойност, която се различава между две изпълнения, трябва да бъде съпоставена.
  3. Добавяне на бивш/аtractor към отговора, който е генерирал стойността, след което заменете твърдо кодирания литерал с препратката към променливата.
  4. Добавете твърдение така че страница, която връща HTTP 200 със съобщение за грешка, все още не преминава теста.

Едва след корелация е безопасно да се мащабира скриптът. Изпълнението на некорелиран запис при сто потребители измерва обработката на грешки, а не... пърформансДопълнителни елементи са обхванати в JMeter уроци.

Отстраняване на проблеми

Ако срещнете проблем, докато изпълнявате горния сценарий, направете следното:

  1. Проверете дали се свързвате с интернет чрез прокси. Ако да, премахнете проксито.
  2. Отворете нов екземпляр на JMeter.
  3. Отворете RecordingTestPlan.jmx в JMeter.
  4. Щракнете с десния бутон върху Workbench > Merge > Изберете HTTP Proxy Server.jmx. Включено JMeter 5.x, вместо това се слейте с възела Test Plan, тъй като WorkBench вече не съществува.
  5. Кликнете върху Група теми > Обобщен отчет.
  6. Изпълнете теста.

Два допълнителни симптома са причината за повечето оставащи неуспехи. Ако браузърът съобщи, че не може да се свърже, рекордерът никога не е бил стартиран или портът, зададен в браузъра, не съвпада с порта, зададен в JMeterАко страниците се зареждат нормално, но нищо не се показва в дървото, трафикът е HTTPS и сертификатът не е импортиран.

Въпроси и Отговори

Беше премахнато през JMeter 5.0. Нетестови елементи, като например HTTP(S) Test Script Recorder, вече се добавят директно под възела Test Plan.

Добави URL шаблони за изключване в раздела „Филтриране на заявки“ на записващото устройство. Шаблон, обхващащ често срещани статични файлови разширения, премахва по-голямата част от шума, преди да достигне до скрипта.

Изкуственият интелект класифицира записаните семплери в бизнес стъпки и шум от трети страни, след което предлага кои да бъдат изтрити и кои стойности трябва да бъдат корелирани, превръщайки суровия запис в използваем скрипт по-бързо.

Да. Като се има предвид тялото на отговора и стойността за улавяне, изкуственият интелект изготвя регулярен израз или гранична двойка. Проверете го в „Преглед на дървото на резултатите“, тъй като даден шаблон може да съвпада в един отговор, а не в друг.

Браузърът не се доверява на JMeter прокси. Импортиране на ApacheJMeterTemporaryRootCA.crt от JMeter папката bin като доверен орган, рестартирайте браузъра и запишете отново.

Да. Задайте Wi-Fi прокси сървъра на устройството на IP адреса и порта на записващото устройство, след което инсталирайте JMeter сертификат на устройството. Приложенията, които използват закрепване на сертификати, все още не могат да бъдат записани.

Не. Графичният интерфейс е за изграждане и отстраняване на грешки. Изпълнете действителния тест в режим на команден ред, който използва много по-малко памет и накрая генерира HTML отчет.

Тестовите планове се запазват като .jmx, XML формат, който работи добре при контрол на версиите. Резултатите се записват като .jtl, който по подразбиране е CSV и може да се съхранява и като XML.

Обобщете тази публикация с: