CTO Vetmanager, PHP Developer, Ironman 70.3

ЭФКО Митап про тестирование

Посетил интересный митап про тестирование от ЭФКО. На митапе было 2 доклада, один из них был про тестирование in general от Александра Макарова. Поскольку, недавно я сам выступал с подобной темой, не могу не отметить гениальности и простоты формулировок.

efko-meetup-slides

Вот так просто сформулировано то, на что я потратил минут 10 своего предыдущего доклада. Тесты нужны тогда - когда они экономят деньги.

Поднимались вопросы, которые мы активно обсуждаем у себя в команде.

  1. 1 тест метод = 1 assert, уж точно для Unit тестов

Вопрос дискуссионный в интернетах, но я тоже придерживаюсь именно такого мнения.

Что это дает?

  • Простоту чтения результатов теста
  • Возможность эффективно параллелить тесты
  • Снижение хрупкости тестов
  • Стремление писать более простой код

Например: у вас в корзине товаров есть объект айтем, у которого есть стоимость и размер скидки и объект, который применяет скидочные правила к айтемам. Рассчитывает новую стоимость со скидкой и записывает размер скидки в объект.

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

$this->assertEquals($item->amount, 550);
$this->assertEquals($item->discount, 10)

Не делайте так. Напишите 2 теста.

  1. Важность Continius Integration

Команды часто надеются на дисциплину и верят, что тесты будут запускаться руками избегая настраивать CI. Это огромная ошибка. Такого не будет(горьки многолетний опыт).

Докладчик сказал, что лучше написать 1 тест и настроить пайплайн чем 100 и надеяться не продалбывать ручной запуск этих тестов.

Поднимались в докладе и другие темы, например - можно ли жить без тестов и насколько бесчеловечно тестировать софт руками операторов, которые с ним работают.

Второй доклад был про нагрузочное тестирование при помощи Apache Jmeter. Я когда-то пытался запуститьэто все на нашем проекте. Не прижилось, это достаточно дорогая история. Кроме написания тестовых сценариев и настройки ci - тесты должны запускаться на полном зеркале вашей боевой инфраструктуры. Для Ветменеджер это безумно дорого.

Еще у нас есть проблема огромного количества критически важных сценариев в программе и проблемы производительности редко попадают дважды в одну и ту же воронку.

Для проектов, которые могут резко привлекать достаточно много рекламного трафика - это то, что очень нужно. Сначала нужно договориться с заказчиками с требованиями по нагрузке и потом приступать к JMeter.