Что касается тестов, их можно разделить на две основные категории:
- Деструктивное тестирование – когда воспроизводится сценарий оказывающий негативное воздействие на объект тестирования. т.е. тест умышленно и подконтрольно подразумевающий сбой и дестабилизацию системы.
- Регрессионное тестирование – преследует в основном две цели:
- проверить, что привнесенные изменения не повлияли на функционал который не менялся.
- проверка функционирования системы в течение продолжительного времени.
Все тесты соответственно будут выполняться под нагрузкой.
Про регресс особо сказать нечего, обычно это 12 – 24 ч., везде немного, по разному. Всё, что мы настроили должно не развалиться на дистанции и не показать тенденций и признаков деградации системы. Обычно, самое явное, что тут можно найти это утечки памяти или тенденции стремления к ним.
Деградация системы - это:
- изменение времен отклика сервиса
- увеличение % ошибок транзакций
- повышение утилизации аппаратных ресурсов(CPU, RAM, HDD и т.д)
В каждой системе уровень допустимой деградации свой.
С деструктами всё намного интересней. Начнем с тестов отказов. Тут следует взять схему объекта тестирования, которую нарисовали и понеслось.
- Если стенд в 2N резерве, отлично, не просто так, значит отказ до 1N.
- CRUD? БД обязательно откажет.
- МКУ? О, да, они любят падать.
- Кафка? Обязательно надо отключить.
В общем,
делим слона на кусочки и начинаем есть. Конечно же походы в сторонние системы, заменяем на заглушки, роняем их и заставляем оооооочень медленно отвечать. Но
во всём должно быть семя рациональности. И помним закон Мёрфи:
«Если, что-то может произойти, то оно обязательно когда-нибудь произойдет».
Если для сервиса это первый раз, то ломать надо полностью. Все остальные разы, если доработка не привнесла изменений в эту область, то можно это не трогать. Например, доработка влияет только на CRUD, который кладет в кафку сообщение, которое вычитывает другой приклад, что-то там делает и кладёт в другую кафку. У нас есть в зоне риска доработки взаимодействие круда с БД и с кафкой. Всё остальное ломать деструктами не нужно, если нет явной необходимости или острого желания на то лиц принимающих решение о НТ.
Еще один вид деструкта о котором можно говорить отдельно это «поиск максимума» или «поиск максимальной производительности». Т.е. мы берем какую-то нагрузку, которую точно система держит, например 25% от профиля нагрузки. Выходим на оптимальные показатели и далее ступенями постепенно начинаем повышать нагрузку. Ступень обычно 15 – 30%. Эталонная длительность ступени час, но обычно на деле 15-30 минут. Всё зависит от хорошего понимания тестируемой системы, и опыт сын ошибок трудных.
Когда встретили деградацию системы (это называется пиковая производительность), то берем предпоследнюю ступень как максимальную производительность системы и переходим к второй части тестирования «подтверждение максимума». Берем максимум и выходим на нем постоять какое-то продолжительное время, с целью подтвердить, что система способна функционировать в штатном режиме на этих показателях.
Благодаря деструктам подберутся определенные конфигурации приложения, которые позволят пережить все запланированные страдания. С этими конфигурациями и надо переходить к тесту надежности. Потому, что по хорошему любое изменение настроек требует ретеста на этих настройках. Если выполнили первым тест надежности, а после на отказах не хватило ресурсов для восстановления. То добавляются ресурсы и проводится ретест и теста надежности в том числе, что тратит нервы и человекочасы.
У меня всегда есть мысль в голове, точнее принцип, вот когда ляжет ПРОМ и деньги потекут рекой, но не к нам, а от нас. Тогда будет заведен инцидент, комиссия, расследование. Обязательно откроют отчет и будут детально изучать. Не приведет ли этот отчет в ходе следственных мероприятий ко мне? Шучу, конечно же, такое вряд ли случится, но мне кажется мысль эта хорошая для самодисциплины. На практике были случаи, когда отчет НТ явно давал понять, что в данном случае к команде НТ вопросов нет.
Что же касается тестов, их есть много и разных. Всякие там стресс-тесты, объемное, конфигурационное тестирование и я думаю о многих я даже никогда не слышал. Но с тем, что вам будет необходимо знать и уметь, вы познакомитесь на месте и даже если коллеги будут молчать как партизаны, то у вас будет под рукой поисковик.