Обмен технологиями

Приложение-инструмент: используйте JMeter для тестирования производительности Phpwind!

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Введение эксперимента

В предыдущем исследовании мы использовали JMeter для завершения теста интерфейса на уровне протокола для системы Agileone. Мы также знаем, что суть технологии тестирования производительности заключается в использовании многопоточной технологии для отправки запросов протокола для завершения моделирования большого количества пользователей, обращающихся к системе. Первоначальное предназначение JMeter заключалось в тестировании производительности. Например, первым шагом при создании плана тестирования является создание группы потоков. Этот эксперимент объяснит, как использовать JMeter для выполнения теста производительности входа и публикации Phpwind.

Цель

(1) Освойте использование поиска ассоциаций в JMeter.

(2) Овладейте дизайном и использованием потоков в JMeter.

(3) Освоить использование отчетов об испытаниях в JMeter.

процесс эксперимента

  1. Внедрить образец входа в систему Phpwind

Мы создали в общей сложности 100 пользователей для Phpwind от testuser_1 до testuser_100, поэтому в процессе тестирования производительности нам следует реализовать произвольный вход пользователей, чтобы лучше моделировать реальные сценарии.

(1) Создайте образец «HTTP-запроса», назовите его «DoLogin» и заполните соответствующие параметры запроса POST для входа в систему.

(2) Создайте «утверждение ответа» и «просмотр дерева результатов» для семплера, и то же самое применимо к последующим запросам.

(3) Создайте «препроцессор» для сэмплера и реализуйте случайное число от 1 до 100.

(4) Окончательный реализованный тестовый запрос выглядит следующим образом:

2. Используйте регулярные выражения для связывания кодов проверки.

Поскольку при публикации в Phpwind необходимо указать поле «verify», значение которого является случайным числом, то мы должны использовать регулярные выражения для связывания соответствующего значения в ответе. Эта часть была освоена в процессе реализации тестирования интерфейса. Здесь мы в основном рассмотрим, как ее реализовать в JMeter:

(1) Добавьте сэмплер «HTTP-запрос» и отправьте запрос GET на «/phpwind/post.php?fid=2», чтобы получить ответ.

(2) Добавьте в сэмплер постпроцессор, установите для него значение «Извлечение регулярных выражений» и выполните следующие настройки:

(3) Краткое объяснение вышеуказанных полей ввода:

а) Имя ссылки: имя параметра, на который будет ссылаться следующий запрос. Если вы заполните код проверки, вы можете использовать ${verifycode} для ссылки на него.

б) Регулярное выражение: круглые скобки содержат содержимое, которое необходимо извлечь, и это то, что мы умеем применять.

в) Шаблон: заключен в кавычки $-$. Если установленное нами регулярное выражение находит несколько значений, порядковый номер указывает, какое значение обрабатывать.

г) Соответствующие числа: 0 представляет случайное значение, 1 представляет все значения, обычно просто введите 0.

e) Значение по умолчанию: если параметр не получает значения, то ему присваивается значение по умолчанию.

3. Добавьте запрос на публикацию

(1) Установите пользовательский параметр для сэмплера и используйте помощник по функциям, чтобы сгенерировать случайное число для заголовка и содержания сообщения.

(2) Используйте код проверки, полученный на предыдущем шаге, в качестве значения поля проверки в теле запроса POST.

(3) Окончательный сгенерированный тестовый запрос выглядит следующим образом:

4. Убедитесь, что все ресурсы загружаются при каждом запросе.

По умолчанию JMeter, как и тест интерфейса, отвечает только за загрузку текущей запрошенной страницы и не будет загружать другие дополнительные ресурсы страницы. Это явно не соответствует реальной ситуации. Итак, нам нужно загрузить все ресурсы страницы. На вкладке «Дополнительно» в HTTP-семплере установите флажок «Получить все включенные ресурсы из HTML-файлов».

5. Разработайте параллельные сценарии

Для этого выполнения мы по-прежнему следуем той же схеме сценария, что и предыдущий сценарий Java: 50 пользователей, 5 одновременных пользователей каждые 10 секунд, и каждый пользователь запускается 100 раз. Конкретные настройки следующие:

Установка параметра «Период нарастания (в секундах)» в приведенных выше настройках на 100 секунд означает добавление потока каждые две секунды. Хотя частота не может быть определена произвольно, как настраиваемый поток, такая настройка соответствует каждые 10 секунд. Существенной разницы в эффекте от 5 одновременных пользователей нет.

Помимо установки количества запусков, мы также можем установить общее время выполнения процесса тестирования производительности. В нижней части рисунка выше отметьте «Планировщик» и установите продолжительность. Если нам нужно непрерывно работать в течение одного часа, нам нужно всего лишь установить его значение 3600 секунд.

6. Установите время на обдумывание каждого шага

Время обдумывания — это настройка, необходимая для моделирования реальных пользовательских сценариев. Компонент «таймер», предоставляемый JMeter, используется для имитации времени размышления пользователя. JMeter поставляется со многими типами таймеров. Мы используем более часто используемый «гауссовский случайный таймер». Чтобы создать таймер в JMeter, выполните следующие действия. Сэмплер устанавливает время обдумывания:

(1) Щелкните правой кнопкой мыши сэмплер, например, мы нажимаем «DoLogin», чтобы создать новый «гауссовский случайный таймер».

(2) Установите смещение на 2000 миллисекунд и фиксированное смещение задержки на 4000 миллисекунд. Его функция — генерировать случайное число в диапазоне 4 секунд плюс-минус 2 секунды, то есть случайное время паузы составляет от 2 до 6 секунд.

Подробнее об использовании таймера JMeter

7. Назначьте места встречи

Концепция точки встречи была впервые предложена инструментом тестирования производительности LoadRunner. Его функция заключается в том, что после того, как группа потоков отправила запрос, все собираются вместе, пока все потоки не синхронизируются к определенному моменту времени, а затем отправляют запрос вместе. Он используется для имитации более строгого параллельного тестирования. Хотя использование точек встречи не соответствует реальным сценариям, оно может оказать большую мгновенную нагрузку на сервер. В основном оно используется для параллельного тестирования сервера.

В JMeter мы можем использовать таймер «Синхронизирующий таймер» для завершения обработки точек встречи. Например, на следующем рисунке показано, как реализовать стратегию параллельного тестирования для семплера «DoPost»:

(1) Число имитируемых пользователей для группировки: это значение соответствует количеству потоков в точке встречи. Здесь мы устанавливаем его равным 50, что означает, что коллекции необходимо дождаться 50 потоков, прежде чем отправлять следующий запрос вместе. Если здесь установлено значение 0, это означает использование набора всех потоков, заданных группой потоков.

(2) Таймаут в миллисекундах: установите здесь значение 10000, что означает, что таймаут точки встречи составляет 10 секунд, то есть, если все потоки не ждали 10 секунд, они больше не будут ждать. Поток, завершивший сбор, напрямую отправляет следующий запрос.

Фактически, при разработке собственных потоков Java мы также можем использовать два метода синхронизации «wait()» и «notifyAll()» для завершения моделирования точки встречи.

8. Просмотр результатов теста производительности

JMeter также имеет множество встроенных компонентов для просмотра отчетов о тестировании, но наиболее часто используемым является «агрегационный отчет», созданный для определенной группы потоков. Например, ниже показаны результаты текущего теста производительности Phpwind:

На рисунке выше мы видим количество выполнений каждого сэмплера, различную математическую статистику времени ответа (среднее, медианное, 90% значение, минимальное значение, максимальное значение), частоту ошибок транзакций, пропускную способность сети, пропускную способность, общий размер ответа, общее количество размер запроса и другие данные. Помимо мониторинга показателей производительности на стороне сервера, этих показателей нам в принципе достаточно для анализа основных данных для теста производительности.

Мысленное упражнение

(1) Ознакомьтесь с использованием других компонентов JMeter.

(2) Используйте JMeter для завершения теста производительности проекта и решения возникающих проблем одна за другой.

(3) Сравните тест производительности в JMeter с тестом производительности, который мы разработали самостоятельно с использованием встроенной Java, чтобы увидеть сходства и различия.

Наконец, я хотел бы поблагодарить всех, кто внимательно прочитал мою статью. Глядя на рост числа поклонников и внимания, всегда есть некоторая вежливость. Хотя это не очень ценная вещь, если вы умеете ею пользоваться, вы можете взять ее напрямую! 

Документ для собеседования по тестированию программного обеспечения

Мы должны учиться, чтобы найти высокооплачиваемую работу. Следующие вопросы для интервью взяты из последних материалов интервью от таких интернет-компаний первого уровня, как Alibaba, Tencent, Byte и т. д., и некоторые руководители Byte дали авторитетные ответы после этого. set Я считаю, что каждый может найти удовлетворительную работу, основываясь на информации, полученной на собеседовании.

Вставьте сюда описание изображения