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

Каква е JMeter HTTP прокси сървър?
- JMeter HTTP прокси сървърът е вграден рекордер, който се намира между браузъра и тествания уебсайт. Той наблюдава и записва потребителската активност, докато приложението се използва нормално, и превръща всяка заснето заявка в HTTP семплер на заявки в рамките на тестовия план. JMeter 3.0 елементът е наречен Записващо устройство за тестови скриптове на HTTP(S), и двете имена описват един и същ компонент.
Рекорд тестване помага на тестера да записва и възпроизвежда активност спрямо тестова цел. Това е вид автоматизирано тестване, но за множество потребители едновременно.
Защо да записваме, вместо да изграждаме сценария на ръка?
Реалистичното потребителско пътешествие в съвременен сайт генерира десетки заявки, всяка със собствени заглавки, бисквитки и параметри на формуляра.ping Ръчното прехвърляне на всичко това в семплерите е бавно и податливо на грешки. Записът улавя точния трафик, който браузърът е изпратил, което дава три предимства:
- Точност: Редът на заглавките, „бисквитките“ и скритите полета на формуляра се записват точно както са били получени от сървъра.
- Скорост: Записването на едно пътешествие от десет страници отнема минути, а писането на ръка - часове.
- Покритие: Фоновите AJAX повиквания, които са невидими в интерфейса, все още се показват в записа.
Записът е по-скоро отправна точка, отколкото завършен тест. Той все още се нуждае от почистване, корелация и параметризиране, преди да е използваем за... тестване на товараРазделите по-долу обхващат пълния път от празен 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 заявки, контролер за запис и самото записващо устройство, вече свързани помежду си. Изграждането на същата структура на ръка изисква следните стъпки.
- Изградете скелета на плана. Добавете група нишки (Thread Group), след което добавете контролер за запис под нея. Това е мястото, където ще се намират заснетите семплери.
- Добавете рекордера към тестовия план. Щракнете с десния бутон на възела „Тестов план“ и изберете Добави > Нетестови елементи > Записващо устройство за тестови скриптове на HTTP(S)Това е брат/сестра на групата нишки, а не дете.
- Задайте порта. По подразбиране е 8888. Всеки свободен порт работи, стига браузърът да е конфигуриран да съответства.
- Избери Target Controller. Изберете контролера за запис, създаден в първа стъпка, така че заявките да бъдат групирани там, където очаквате, а не разпръснати в корена на плана.
- Добави URL модели на изключване. В раздела „Филтриране на заявки“ изключете статичните ресурси с шаблон, например .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)Това премахва по-голямата част от ръчното почистване, описано по-късно.
- Стартирайте рекордера. Кликнете Начало в горната част на панела на рекордера. JMeter пише АпачиJMeterTemporaryRootCA.crt в папката си bin в този момент, което прави възможно HTTPS записването.
- Насочете браузъра към прокси сървъра използвайки localhost и избрания порт, след което навигирайте в приложението по обичайния начин.
- Спри и подреди. Натиснете Stop, изтрийте всички останали повиквания от трети страни и запазете плана.
- Валидирайте преди мащабиране. Щракнете с десния бутон върху групата „Теми“ и изберете ратифицирамТова изпълнява плана веднъж с една нишка, така че грешките се появяват преди да се приложи каквото и да е натоварване.
Още един навик отличава работещия скрипт от надеждния. Използвайте графичния интерфейс само за изграждане и дебъгване, след което изпълнете истинския тест от командния ред с jmeter -n -t plan.jmx -l results.jtl -e -o report, което също генерира HTML табло за управление. Същата команда е в основата на разпределено тестване през няколко генератора на товар. Инсталацията е обхваната в JMeter ръководство за инсталиранеи пълната процедура е документирана на Apache JMeter страница на рекордера.
⚠️ Бележка към версията: Екраните в ръководството по-долу са заснети на по-стара JMeter версия, която все още имаше възела WorkBench. WorkBench беше премахната през JMeter 5.0. Всяка концепция е валидна; променя се само местоположението на записващото устройство, а текущата процедура е дадена по-горе.
Стъпка 1) Настройка на HTTP прокси сървъра
Това е ръководство стъпка по стъпка за настройка на прокси
- Начало JMeter
- Изберете План за тестване на дървото
- Добави Група темиЩракнете с десния бутон върху План за тестване и добавете нова група нишки: Добави > Нишки (потребители) > Група теми
- Добави HTTP заявкаИзберете групата „Теми“; щракнете с десния бутон Добави > Конфигурационен елемент > HTTP заявка по подразбиране
В новия елемент HTTP Request Defaults: В името на сървъра или IP въведете „google.com“. Трябва да оставите останалите полета празни
- Добави Контролер за записЩракнете с десния бутон върху „Група нишки“ и добавете контролер за запис: Добави > Логически контролер > Контролер за запис
- Добави Proxy Server към WorkBench. Щракнете с десния бутон върху Workbench и добавете http прокси: Добави > Нетестови елементи > HTTP прокси сървър, за JMeter 5.x, щракнете с десния бутон върху План за тестване възел вместо това и изберете Записващо устройство за тестови скриптове на HTTP(S).
- комплект Target Регулатор където вашите записани скриптове ще бъдат добавени
- Начало Прокси сървър. Върнете се към HTTP прокси сървър и щракнете върху Начало бутон в долната част. Сега твоя JMeter стартиране на прокси сървър
- Стартирайте своя браузър (използвах Firefox), избирам Инструмент > Опция > Подробно > мрежа > Настройка > Въведете HTTP прокси, както е показано на фигурата по-долу. В текущия Firefox пуска същия диалог, чрез който се достига Настройки > Общи > Настройки на мрежата.
Стъпка 2) Запишете дейността си
- Сега стартирайте http://www.google.com във вашия уеб браузър (JMeter все още отворен)
- Търсят ли дейности по ключова дума „гуру99".
- Обратно към JMeter, щракнете върху HTTP прокси сървър Спиране когато приключи
- След като приключите със записа, ще видите JMeter автоматично създаде нова HTTP заявка, както е показано на фигурата по-долу
JMeter вече е записал потребителска заявка към началната страница of Google уебсайта. http://www.google.com/
Другите HTTP заявки се показват на горната фигура, трябва да ги премахнете. Защото някога JMeter също така записва някои рекламни връзки, докато търсите ключова дума в GoogleТрябва да ги игнорираме в нашия тестов план.
- Щракнете върху Файл > Запазване на вашия тестов план като
- Ще се покаже диалогов прозорец > въведете име на вашия тестов план в полето „Име на файл“ > щракнете върху „Запазване“. Сега вашият тестов план е запазен под името RecordingTestPlan.jmx
Стъпка 3) Изпълнете своя тестов план
- Изберете Група теми > Добавяне > Слушател > Обобщен отчет
- Обобщеният отчет ще покаже някои основни статистики
- Изберете Thread Group, въведете информация като фигурата по-долу
Можете да се обърнете към статията JMeter Тестване на производителността за да научите подробности за конфигурирането на група нишки.
- Преди да започнете теста, изберете „Обобщен отчет“. Когато сте готови да изпълните тест, изберете Изпълнение > Старт (Ctrl+R). JMeter ще възпроизведе активността ви 100 пъти. Докато тестът се изпълнява, статистиката ще се променя, докато тестът не приключи.
Стъпка 4) Запазете резултата от теста
- Кликнете Запазване на таблични данни за да запазите резултата от теста във файл
- Въведете името на резултата от теста и щракнете върху Запиши. Резултат от теста в JMeter се записва във формат *.csv по подразбиране
Изтеглете тестовия план за запис на файл
Изтеглете файловия HTTP прокси сървър
Записване на HTTPS трафик и сертификати
Почти всеки сайт вече предлага HTTPS, което е предшестващо първоначалното ръководство. Прокси сървърът не може да чете криптиран трафик, освен ако браузърът не му се доверява, така че е необходима още една стъпка.
Когато рекордерът стартира, JMeter генерира временен коренен сертификат с име ApacheJMeterTemporaryRootCA.crt в директорията му bin. Импортирайте този файл в браузъра като надежден сертифициращ орган, след което рестартирайте браузъра. JMeter вече може да представи свой собствен сертификат за всеки сайт и да декриптира сесията за запис.
Струва си да знаете три точки:
- Сертификатът изтича след седем дни. Това е умишлено. Изтрий го и остави JMeter регенерирайте нов, вместо да удължите валидността му.
- Премахнете го, когато сте готови. Оставянето на надежден root сертификат, инсталиран на работеща машина, е реален риск за сигурността, а не теоретичен.
- Някои приложения го отказват. Сайтове, използващи закрепване на сертификати или взаимна TLS връзка, изобщо не могат да бъдат записвани чрез прокси сървър и скриптът трябва да бъде създаден ръчно от инструменти за разработчици на браузъри.
Корелация: Как да направим записан сценарий възможен за повторно възпроизвеждане
Записаният скрипт възпроизвежда точно това, което се е случило веднъж, което рядко се случва втория път. Идентификаторите на сесии, токените и генерираните ключове, заснети по време на записа, са невалидни, когато скриптът се възпроизведе отново, а изпълнението му се проваля по начин, който изглежда като грешки в приложението.
Корелацията е решението. A постпроцесор като например регулярния израз Extractor или JSON Extractor улавя новата стойност от отговора за вход, съхранява я в променлива и по-късните заявки препращат към тази променлива, вместо към записания литерал.
Работният процес е кратък:
- Възпроизведете скрипта веднъж с слушател View Results Tree и намерете първата неуспешна заявка.
- Сравнете неуспешната заявка със записа. Всяка стойност, която се различава между две изпълнения, трябва да бъде съпоставена.
- Добавяне на бивш/аtractor към отговора, който е генерирал стойността, след което заменете твърдо кодирания литерал с препратката към променливата.
- Добавете твърдение така че страница, която връща HTTP 200 със съобщение за грешка, все още не преминава теста.
Едва след корелация е безопасно да се мащабира скриптът. Изпълнението на некорелиран запис при сто потребители измерва обработката на грешки, а не... пърформансДопълнителни елементи са обхванати в JMeter уроци.
Отстраняване на проблеми
Ако срещнете проблем, докато изпълнявате горния сценарий, направете следното:
- Проверете дали се свързвате с интернет чрез прокси. Ако да, премахнете проксито.
- Отворете нов екземпляр на JMeter.
- Отворете RecordingTestPlan.jmx в JMeter.
- Щракнете с десния бутон върху Workbench > Merge > Изберете HTTP Proxy Server.jmx. Включено JMeter 5.x, вместо това се слейте с възела Test Plan, тъй като WorkBench вече не съществува.
- Кликнете върху Група теми > Обобщен отчет.
- Изпълнете теста.
Два допълнителни симптома са причината за повечето оставащи неуспехи. Ако браузърът съобщи, че не може да се свърже, рекордерът никога не е бил стартиран или портът, зададен в браузъра, не съвпада с порта, зададен в JMeterАко страниците се зареждат нормално, но нищо не се показва в дървото, трафикът е HTTPS и сертификатът не е импортиран.



















