Что такое нагрузочное тестирование?
Всем привет! Поговорим про нагрузочное тестирование.
Давай представим некую абстрактную систему в виде трубопровода, куда подается вода под давлением. Там есть турбины, развязки, какие то технические блоки и т.п. Цель проверить герметичность и то что вода подается под давлением с одного конца и спокойно выходит с другого, все турбины вращаются и блоки работают как надо. Для этого мы берем насосы высокого давления и начинаем нагнетать поток воды. Дальше смотрим есть ли у нас течь в каких то швах или компонентах нашей системы.
С информационными системами происходит примерно тоже самое, только мы подаем не воду, а поток входящих данных. Например, представим что некий интернет магазин решил провести акцию небывалой щедрости - продавать технику со скидкой в 90% и еще запустил огромную рекламную кампанию так чтобы все люди точно узнали про это. В ожидаемом результате мы планируем то что на сайт магазина ринется толпа яростных покупателей которые хотят скупить весь ассортимент.
Магазину требуется удостовериться в том что его система выдержит этот поток и удовлетворит спрос всех желающих приобрести новенький айфон. В этот момент в дело вступает нагрузочное тестирование. Задача сэмулировать миллион пользователей которые одновременно тыкают кнопочки, ищут товары, добавляют в корзину и совершают покупки.
С этим на первый взгляд все просто, с помощью какого нибудь инструмента, например jmeter, мы пишем скрипты эмулирующие все действия пользователей в системе, дальше задаем нужное количество потоков и интенсивность. Но дьявол кроется в мелочах, ведь нужно правильно рассчитать интенсивность и распределить потоки по выполняемым действиям, а это сложная аналитическая работа. Ведь подаваемая нагрузка должна максимально соответствовать тому что предстоит испытать системе в день распродажи. Может оказаться так что операция поиска товара более трудозатратная чем добавление его в корзину. Теперь давай прикинем сколько запросов поиска ты совершаешь при выборе телефона, ноута или телевизора, а добавляешь в корзину только один раз. Таким образом нужно правильно рассчитать профиль нагрузочного тестирования со всеми нюансами, что не так просто.
Так же надо понимать что вся система развернута на каких то серверах и нам нужен тестовый стенд в идеале соответствующий реальному контуру системы. Сейчас не будем в это углубляться, так как расчет ресурсов и обоснование для закупки серверов для стенда тот еще геморрой. Остановимся на том что тестовый контур может в разы отличаться от продуктивного и в этом случае придется как то натягивать полученные результаты тестирования на реальную картину мира, что из себя представляет танец с бубном.
Представим что мы рассчитали профиль тестирования, никак не ограничены в ресурсах серверов и готовы подавать нагрузку. Запускаем шарманку, наши виртуальные пользователи начали совершать все действия по покупке товаров в магазине. Что дальше? А дальше самое сложное, нужно провести анализ всей системы.
Вначале рассказывал про трубопровод, так вот теперь с эндоскопом лазим по всем щелям и проверяем на наличие протеканий. На реальных системах есть куча метриков которые нужно нужно уметь читать и анализировать. Загибаем пальцы: утилизация CPU, оперативной памяти, дисков, сети серверов, тоже самое для отдельных элементов системы которые развернуты на этих серверах, времена выполнения операций наших пользователей, интенсивность, количество активных потоков, количество ошибок, еще до кучи тонна логов, статистика с базы данных и это далеко не все метрики которые придется перерыть… В конце концов все это дело анализируем, делаем заключение и даем рекомендации по оптимизации системы. Чем глубже ты можешь капнуть тем круче ты как специалист. Естественно, я сейчас упрощаю для понимания, но далеко не каждый может установить причинно-следственную связь между утечкой памяти в одном сервисе и тем что в другом сервисе долбит fatal error.
Подводя итоги, чтобы провести нагрузочное тестирование требуется проделать большую подготовительную работу где специалист проявляет аналитические навыки. Провести запись скриптов и настройку инструмента нагрузочного тестирования - здесь необходимы технические навыки и программирование в том числе. После всего накатать портянку отчетности со своими умозаключениями и опять для этого нужны аналитические способности. Специалист по нагрузочному тестированию должен смотреть на систему целиком, видеть единую картину и обладать большим набором компетенций. Я считаю что это разительно отличает его от разработчика или функционального тестировщика. Ведь первый может писать код чисто для своего компонента системы и ему до лампочки как там оно должно работать на другом уровне, а второму не нужно заморачиваться как быстро отрабатывает та или иная функция системы.
Профессия интересная и востребованная.
Подскажите книгу по управлению в тестировании
Посоветуйте книгу по управлению людьми/проектами, людьми и проектами в тестировании или просто достойную книгу про управлении в этой сфере и сфере разработки ПО.
Книга нужна для уже опытного руководителя отделом тестирования.
Всем привет
Дмитрий , 26 лет. Краснодар
Увлекаюсь : техника , музыка (Рок , поп-рок зарубежный), кино (Ужасы , комедии зарубежные) , игры (Action / RPG / Квесты с нелинейным сюжетом)
Интересы: администрирование сайтов, web-технологии , IT безопасность.
Занимаюсь тестированием web-сайтов / приложений на уязвимости , провожу аудиты безопасности.
Ранее участвовал в bug bounty на платформах : hackerone , bugcrowd.
ищу человека по общим интересам.
Telegram: @hack2tools
Как жить-то?
Привет, Пикабу!
Первый пост за 8 лет неактивного чтения, поздравьте меня!
Дано: живу в большом городе России, имею среднюю зп, базовые потребности удовлетворяю, но за границу не езжу, деньги откладываю на черный день, перевалило за 30 лет, нет особых интересов, мучаюсь прокрастинацией.
Проблема: у меня появилась чувство что будущего у меня нет, в работе уперся в потолок, которая не радует, а только напрягает, не чувствую себя счастливым. Навевает депресняком.
День заканчивается, начинается новый. Отработал, пришел домой, отдыхаю.
Дилемма: вроде и работа есть, и зп норм, но система и начальство токсичное. Гнетет чувство тревоги за будущее, лет через 20 окажусь в ситуации когда нужно со слезами на глазах идти на чертову работу или работать в пятерочке. Захотел сменить работу на IT (qa engineer), даже за зп меньше в 2 раза. Изучал сам, проходил несколько собеседований, но не звонили после или сразу прощались, отмечая отсутствие опыта работы и возраст, хотя готов работать за гроши. Изучал теорию, Postman, SQL.
Но ощущение, что лучше воробей в руках, чем журавль в небе тоже не покидает меня.
Как жить и что делать не знаю. Но нужно что-то решать, пока не поздно.
Сможете найти на картинке цифру среди букв?
Справились? Тогда попробуйте пройти нашу новую игру на внимательность. Приз — награда в профиль на Пикабу: https://pikabu.ru/link/-oD8sjtmAi
Как я стал автотестером
Всем привет, одним вечером выпивая светлое с товарищем в ходе разговора выяснилось что к ним в компанию требуется человек который будет писать автотесты, до этого опыта в данной сфере не было вообще, единственное что я плюс минус знал азы безопасности на сайтах и плюс минус имел понимание Java, конечно я согласился на данную авантюру, меня попросили сделать тест регистрации на сайте, буквально за вечер на коленке я разобрался с принципами работы cypress, по сути в больше степени все что требуется это понимать структуру тестирования сайта и азы построения автотеста, знание Английского крайне приветствуется, дальше читаем документацию по автотестам cypress и первый тест готов, записав готовый вариант на видео и отправив его, через неделю меня уже ждали на работу. А дальше два месяца рутины и понимания работы команды за скромные 700 долларов в месяц, самое главное уметь разобраться в системе создания тестов, никого не призываю лезть в автоматизированное тестирование, но точно могу сказать что это не так уж и сложно как выглядит на первый взгляд,