Рубрики
Uncategorized

Рассуждения о медленных тестах

Введение Пол Меррилл задал очень интересный вопрос в Твиттере на прошлой неделе …. Tagged с тестированием, DevOps.

Вступление

Пол Меррилл На прошлой неделе спросил очень интересный вопрос в Твиттере.

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

Об этом…

Павел говорит это в одном из своих ответов.

А потом мы вступаем в целую дискуссию о бизнес -приоритетах.

Но почему важно, чтобы тесты были (как) быстрыми, насколько они могут (реально)?

  • Весь процесс разработки не замедляется, ожидая завершения тестов.
  • Запуск тестов не пропускается, потому что они слишком медленные.
  • Разработчики не испытывают искушения к контексту переключаться на другие задачи, пока они ждут, поэтому они должны быть в состоянии получить отзыв о том, в порядке ли это в течение 5 минут. (Полный набор тестов интеграции регрессии может занять больше времени.)

Отвечая на вопрос в первый раз

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

Затем я понял, что я делал, и сделал шаг назад.

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

Сэм Коннелли

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

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

Давайте начнем.

Что медленно?

Применяется ли это только к функциональным тестам или к нефункциональным тестам?

Сколько тестовых случаев? Это один? Это их стопка? Это все они?

Применяется ли это к презентационному уровню, сервису, интеграции, единице?

Слишком много тестов? Все ли они должны запускать, когда они запускаются?

Является ли это тестами, которые медленные, или они медленные, потому что код медленная или имеет проблемы с тестированием?

Это также может быть конфигурация, например, тестовое приспособление или машина (тестовая среда).

Как вы определяете медленно?

Есть ли эта контрольный эталон для скорости тестов?

Какова цель тестов? Они тесты на дым? Они регрессионные тесты?

Насколько медленнее, чем эталон?

Как вы узнаете, что тестовый пример медленно?

Есть ли исторические данные из предыдущих прогонов теста?

Легко ли сортируется по времени, проведенному за тест?

Какие инструменты профилирования кода доступны?

Как вы узнаете, почему тестовый пример медленно?

Просматривая код для тестов, код, который он тестирует, среду, в которой он работает, и различные настройки и сценарии конфигурации.

Если есть несколько тестовых случаев, которые являются медленными, что у них общего? У них есть что -то интересное?

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

Все тесты

Созданы ли тестовые данные умно? Как он создан и очищен? Это очищено? Есть условия гонки? Существуют ли не атомизированные тесты? Вы можете найти тесты на производительность быстрее, чем они должны быть, если вы используете уже созданные данные.

Тесты пользовательского интерфейса

  1. Если ваши тесты E2E используют xPaths, когда они могут использовать ID, имя или даже селекторы CSS, это медленные тесты. Я считаю, что использование идентификаторов доступности, которые вряд ли изменят, с большей вероятностью сделают тестовый код пользовательского интерфейса в последнее время без ложных негативов с течением времени.

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

  3. Являются ли тесты с использованием общих операторов ожидания, где они могут использовать условное ожидание? Есть ли ненужные ожидания в тестах?

  4. Вы используете свой пользовательский интерфейс для создания состояния? Быть быстрее попасть в DB и API.

  5. Занимается ли конкретное действие/событие больше, чем эталон для загрузки?

ДБ тесты

  1. Есть ли длительные запросы? Есть ли неэффективные запросы?

Когда медленные тесты не являются проблемой

С моей в настоящее время ограниченной точки зрения, когда общее время теста по -прежнему составляет менее 2 минут для тестов на дым. Это, конечно, не распространяется на программное обеспечение для жизни, такое как медицинский администратор, медицинские устройства или AI транспортного средства.

С точки зрения бизнеса, они не проблема, если это еще не вызывает блоки для инженерной команды.

Как исправить медленные тесты?

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

Это действительно зависит от бизнес -приоритетов, бюджетных ограничений и ресурсов.

Сколько времени потребуется для рефакторов или отладки?

Это значительно дольше, чем коллективное время, которое будет потрачено на ожидание тестов?

Если нет, есть ли образовательная выгода?

Является ли раздражение со стороны клиентов от медленной загрузки или недоступного программного обеспечения, возможно, станет репутационной/доходом?

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

Идея состоит в том, что тесты в целом достаточно быстро, чтобы помочь удовлетворить бизнес -требования и достичь удовлетворяющего пользовательского опыта.

Когда мы можем решить медленные тесты

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

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

Оригинал: «https://dev.to/ashleygraf_/reasoning-about-slow-tests-3p1i»