Рубрики
Uncategorized

Улица Smarts: тестирование пирамиды

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

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

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

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

Тестирующая пирамида

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

Ширина слоев является признаком того, сколько танцев необходимо написать (не в масштабе). Агрегаты могут варьироваться от сотен до десятков тысяч, в то время как сквозные (E2E) тесты, вероятно, должны покончить с 1-5% от вашего контрольного теста.

Высота имеет четыре разных метрики, которые я считаю:

  • Ценность: Если тест проходит , насколько мы уверены, мы должны быть в развертывании клиентам? Высокий лучше, чем низкий … Очевидно.
  • Глубина: Если тест не удается , насколько близко к «поверхности» испытаний является неисправность, возможно, находится? Мелкой легче отлаживать, чем глубоко.
  • Скорость: Как быстро Эти тесты бегут? Что еще более важно, как быстро вы получаете отзыв? Быстрее обратная связь лучше.
  • Расходы: Насколько дорогими являются эти тесты для создания и обслуживания? Дешевле лучше.

Давайте сломаем слои и обсудим их с этими 4 показателями метрик.

Агрегатные тесты

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

  • Значение: Низкий. Прочный тестовый люкс мог легко иметь сотни или тысячи модульных испытаний до достижения превосходного уровня доверия.
  • Глубина: Мелкий. Ошибка обычно выделяется с одним методом или файлом.
  • Скорость: Быстрее. На некоторых языках некоторые тестовые бегуны могут сжечь через более 1000 блок тестов в секунду. Один проект ELIXIR, который я внес вклад в размещение 20 000+ узлов, работающих чуть менее 8 секунд.
  • Расходы: Дешевый. Минус некоторая котельная, тест на единицу часто является одной строкой.

Тесты интеграции

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

  • Значение: Середина. Значение знания внутренних элементов правильно проводятся вместе, так же важно, как отдельные элементы, работающие в изоляции.
  • Глубина: Середина. Неспособность должна быть изолирована внутренне на проект или репо.
  • Скорость: Быстрый. Разница в скорости обычно происходит от установки. Если вы когда-либо использовали Java и Spring вместе, вызовы установки и разрыва могут добавить дополнительную секунду в каждый тестовый файл.
  • Расходы: Вроде дешево. Опять же, настройка для теста интеграции обычно является немного более обширной. Изменение требования может привести к восстановлению нескольких тестовых файлов.

Функциональные тесты

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

  • Значение: Высокий. Трудно спорить с хорошо написанным функциональным люком. Имитируя, как внешняя сила будет взаимодействовать, учитывая правильные условия, имеет высокую ценность уверенности.
  • Глубина: Высокий. К сожалению, сбой может прийти почти в любом месте вашего приложения. Это делает расследование сбоев, займет гораздо дольше, чем тесты на нижний уровень.
  • Скорость: Медленный. Эти тесты часто опираются на взаимодействия браузеров, CDNS и поворота кэширования, чтобы быть определенным. Добавьте в тестирование по перекрестным браузере, и вы можете значительно продлить время до завершения. В зависимости от того, сколько у вас функциональных тестов, это может занять от 30 минут до нескольких часов, легко уменьшая цикл обратной связи на один раз в день.
  • Расходы: Средней высоты. Функциональный люкс может быстро выйти из-под контроля. Небольшое изменение в элемент UI может заставить много изменений. С плохо сформированным функциональным набором (люкс с множеством ложных позитивов или ложных негативов) команды могут потерять веру и создать устойчивость к поддержанию или расширению его.

Конец до конца (E2E)

Тест E2E немного отличается от функционала, добавляя сторонние службы в смеси. На данный момент ничего не издевается. Все живут и Emdash; без удерживаний запрещено, бочка на голых костях на самом лучшем.

  • Значение: Очень высоко. Это так же реально, как и в автоматическом смысле. Вы не только можете доверять поведению вашей заявки, но и соединениями с внешними актерами.
  • Глубина: Очень высоко. Сбои могут быть полностью за пределами вашего контроля. Это может добавить много времени на расследование, особенно если сторонние услуги менее надежны.
  • Скорость: Медленный — самый медленный. При добавлении третьей стороны в смесь, часто возникают ограничения на то, как часто или когда тестовый набор NE2E может работать. Это может заставить один раз в неделю или один раз выпустить цикл запуска, резко уменьшая обратную связь.
  • Расходы: Высокий. Так же, как функционал.

Руководство

Ручное тестирование — это необходимое зло. Значение высокое, потому что, ну, вы буквально попробовали! Однако это очень ограничено. Стоимость измеряется по инженерной заработной плате, а процедура может дико отличаться между людьми. Плюс, это полностью руководство!

  • Значение: Очень высоко. Пока не увижу, не поверю.
  • Глубина: Очень высоко. Так же, как E2E. Неудачи могут быть где угодно.
  • Скорость: Руководство. Контура обратной связи относительно быстрая для одного теста, но тестер заблокирован в процессе в течение длительности.
  • Расходы: Наибольший. Монажерно, инженер стоит несколько раз больше часа, чем кластер EC2. Предсказуемость сильно зависит от документации по хорошей процедуре и хорошей дисциплине.

Прохладный! … Ну и что?

Тестирующая пирамида — это больше ориентировочного указания, чем фактическая карта. Он не диктует число или соотношение тестов, описывают, как их писать, или делать больше всего. Это умственная модель того, как может выглядеть надежный набор тестов, с балансом ценности, глубины, скорости и расходами.

Мне нравится думать, что это может помочь вам ответить на несколько вопросов:

  • У меня нет тестов, что мне делать?
    • Как и любая хорошая структура, начните с фундамента.
  • Все, что у меня есть единичные тесты, сейчас?
    • Начните строить несколько испытаний с более высоким значением.
  • Я провожу весь день вручную тестирование, Halp!?
    • Ты слишком тяжелый! Автоматизировать эти ручные задачи.

Вы получаете картину.

Вывод

Тестирование является частью разработчика Craft, который я хотел бы, чтобы я научился гораздо раньше в моей карьере. Будет ли это спас меня от моей первой большой бланки? Возможно нет. Было много других факторов, которые способствовали этому. Это могло бы значительно изменить, как я получил отзывы во время развития, что было бы хорошо. Я надеюсь, что это объяснение действительно помогает всем остальным при запуске пирамиды тестирования, когда я его вижу.

Оригинал: «https://dev.to/logdna/street-smarts-the-testing-pyramid-ah5»