Покопался на Форуме, но не нашел подобного обсуждения. Тем не менее для меня (и я думаю, такое у многих бывает) встал вопрос: надо стандартизовать автоматизированное (нагрузочное и стресс) тестирование для всех проектов. Все для того, что бы при каждом новом релизе прогонять их при тех же условиях и сравнивать результаты.
Наверняка у многих вставали подобные задачи. Предлагаю обсудить то, как решить их. Какие, как и где собирать исходные данные для выявления параметров тестирования (нагрузочного и стрессового), да и какие параметры-то важно получить?
Я предложу свой взгляд на эту проблему и буду всем очень благодарен за критику и/или встречные точки зрения.
Повторюсь с постановкой задачи:
нужно создать стандарт на нагрузочное и стресс тестирования для проекта, дабы в дальнейшем для каждого нового релиза сравнивать результаты и оценивать, что изменилось.
Какие параметры нужно получить для сценария тестирования? Я полагаю, что:
1. число юзеров
2. время работы сценария
3. время задержки (think times)
4. время запуска (день, ночь...)
(предполагается, что сам скрипт для теста уже есть)
Что нужно знать для получения выше описанных параметров:
1. сколько в среднем ожидается пользователей у работающей системы
2. пропускная способность канала от машины с генератором юзеров до машины с тестируемым приложением (дабы не задать такую активность юзеров, чтоб получать не производительность приложения, а пропускную способность сети)
Какие источники можно использовать для получения исходных данных: заказчик, тест план, разработчики, сисадмин.
И наконец, как из исходных данных получить параметры тестирования?
Начнем по порядку, со сбора данных для нагрузочного теста. Количество пользователей мы можем получить как от разработчиков, так и от заказчика (напрямую или из требований). Пропускная способность канала может быть получена от сисадмина, это понятно.
Теперь надо из полученных данных определить параметры для теста. Число юзеров, как я понимаю, должно быть связано с think times, ибо невозможно иногда смоделировать работу 200 пользователей напрямую (ограничено число виртуальных юзеров). Как связать эти параметры? При отсутствии дефицита виртуальных юзеров, например, ставим think time 15-20 сек. Если же у нас ожидается 200 пользователей в системе, а смоделировать можем всего лишь 25, то нам надо think time в 200/25=8 раз сокращать? То есть, ставить 2-3 сек задержки? И это все при условии, что суммарный трафик, который создадут такие юзеры, не превысит пропускной способности канала. Иначе, надо сокращать трафик. Но до какого уровня? Процентов на 30 сократить?
Время работы сценария. Наверное, надо ставить по возможности большое (8-12 часов), чтоб смоделировать хотя бы 1 рабочий день под нагрузкой.
Время запуска теста лучше выбирать, когда нет помех в сети, то есть ночью. Таким образом, например, с 22.00 до 8.00, 10 часов.
Для стресс теста, я полагаю, надо изменить число юзеров и think time. То есть максимально увеличить первое и убрать вообще второе. Но не превысить ширину канала! Время можно сократить до 2-4 часов, стресс вроде больше не должен длиться. Время запуска так же ночью...
Вот примерные соображения на описанную тему. Буду очень рад новым взглядам, мнениям и опыту!
Заранее спасибо всем принявшим участие!
