Нажимай и получи 2025 год ₴ на обучение

Тестирование производительности приложений. Часть 2

Тестирование производительности приложений. Часть 2

  • 11 февраля, 2020
  • читать 6 мин
Сергей Семёнов
Сергей Семёнов Software Engineer в PrivatBank, Преподаватель Компьютерной школы Hillel.

Предлагаем вначале прочесть первую часть статьи в блоге.

Рекомендуем публикацию по теме

Что значит быстро?

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

Проводя эксперименты с реакцией пользователя, оценивая задержки восприятия на различные активности: нажатие на клавишу мышки, перелистывание страницы, просмотр страницы и другие действия, ученые выделили несколько групп восприятия человеком времени.

  • до 0.1 секунды — мгновенно;
  • до 1 секунды — быстро;
  • до 2 секунд — достаточно быстро;
  • 2 - 4 секунды — приемлемо;
  • 4 - 15 секунд — медленно;
  • больше 15 секунд — очень долго.

Что тестировать?

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

Можно и нужно оценивать производительность отдельных частей системы, а иногда и целых алгоритмов. Для того, чтобы оценить, какой вклад они вносят в систему, и для того, чтобы их можно было отладить. Например, взяли и измерили производительность какого-нибудь алгоритма, внесли изменения для улучшения, измерили повторно и оценили результат.

В связи со сложностью эмулирования поведения системы со стороны конечного пользователя, мы можем провести экспертизу, указать в отчете реально полученные результаты поведения системы и учесть все предположения, и уточнения в конечном отчете, для дальнейшей оценки и изучения.

Рекомендуем курс по теме

Классификация проблем

Какого типа проблема может быть выявлена во время проведения тестирования производительности:

  • Медленная подсистема/функция

Отдельная подсистема или функция, которая работает медленно; какая-нибудь страница, которая загружается дольше всех; скрипт, который потребляет много ресурсов.

  • Узкое место (bottleneck)

Достижение предела любой из частей системы, например, предел пропускной способности сетевого соединения.

  • Точка насыщения

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

  • Функциональный дефект

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

После обнаружения любой из перечисленных проблем нам необходимо передать информацию разработчику и дальше уже изучать пути оптимизации работы системы.

Цели тестирования

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

  • Менеджера или разработчика может интересовать, стала ли новая версия приложения работать быстрее. Но заказчика не интересует скорость отклика или потребление ресурсов, его интересует демонстрация оценки производительности на популярном языке, а не техническими терминами. И интерпретация результатов — это будет задача либо аналитика, либо тестировщика.
  • Что именно замедляет работу: софт или железо? Эта информация необходима для того, чтобы решить, покупать ли новое серверное оборудование или же оптимизировать программу. Благодаря оценке возможности к распараллеливанию, оценке запаса мощности и времени отклика, мы можем сделать вывод, на какой из сторон существует недостаток.
  • Почему пользователи не завершают заказы?Может, пользователи не завершают заказы потому, что не могут дождаться завершения операции? Или существует переполнение очереди обработки заказов и система отдает ошибки.
  • Выдержит ли сервер грядущие распродажи? Например, после запуска рекламы или в популярные дни распродаж по всему миру, мы должны быть уверены, что наша система сможет обеспечить корректное функционирование.
  • Нередко заказчики могут задать вопрос: как ведет себя система в целом, все ли хорошо?Этот вопрос типичен не только для тестирования производительности, но и для других видов тестирования. Нет ли каких-нибудь проблем? В том числе и с производительностью. И на этот вопрос так же необходимо уметь отвечать, переводя на технические термины, где мы сможем оценить состояние приложения и на популярном языке сказать о состоянии приложения.

Исходя из вышеперечисленных возможных вопросов от заказчиков, можно сформулировать список целей для проведения тестирования производительности:

  • cравнить две версии приложения;
  • найти причину проблемы с производительностью;
  • оценить потенциальные возможности;
  • получить подтверждение, что с системой все хорошо.

Зная о потребностях и целях тестирования производительности, мы можем в дальнейшем выстроить план проектирования тестов.

Мы рассматриваем тестирование производительности, а также другие виды тестирования на курсах тестирования ПО.

Рекомендуем курс по теме

Рекомендуем публикацию по теме

Нажимай и получи 2025 год ₴ на обучение