Всем привет! Тема тестирования много раз поднималась в статьях на этом канале, но никогда подробно не освещалась. Что ж, я думаю, пора сделать это. В этой статье я хочу поговорить о том, что такое тестирование, рассказать про пирамиду тестирования и рассказать о видах тестирования.
Меня зовут Антон. Я занимаюсь front-end разработкой и сейчас я расскажу вам о тестировании.
Что такое тестирование и зачем оно нужно?
Разработка програмного обеспечения - это очень сложный, долгий и трудоемкий процесс, который требует больших ресурсных затрат. В процессе разработки что-то может пойти не так, или программист может допустить ошибку из-за которой программа будет работать некорректно или вообще выйдет из строя. Да уж, поставлять такой продукт конечному потребителю явно не хочется. Но что тогда делать? В этом случае, нам на помощь приходит тестирование.
Тестирование программного обеспечения (Software Testing) - проверка соответствия между реальным и ожидаемым поведением программы. Благодаря тестированию программист может в нужный момент заметить некорректную работу программы, найти ошибку и вовремя ее исправить. Тестирование играет важную роль в обеспечении качества продукта.
Но не все тесты одинаковые. Бывают различные виды тестирования. Разберем их на примере пирамиды тестирования
Пирамида делится на три уровня:
- Unit-тесты (модульные тесты)
- Интеграционные тесты
- E2E-тесты
Давайте конкретно поговорим про каждый из них.
Unit-тест или модульный тест, — это программа, которая проверяет работу небольшой части кода. Разработчики регулярно обновляют сайты и приложения, добавляют фичи, рефакторят код и вносят правки, а затем проверяют, как всё работает.
Тестировать систему целиком после каждого обновления — довольно муторно и неэффективно. Поэтому обновлённые или исправленные части кода прогоняют через юнит-тесты.
Модульные тесты:
- Всегда автоматизируются.
- Модульных тестов всегда больше, чем тестов с другим уровнем.
- Юнит тесты выполняются быстрее всех и требуют меньше всего ресурсов.
- Практически всегда компонентные тесты не зависят от других модулей и UI системы.
Интеграционные тесты - это тесты, при которых программные модули объединяются логически и тестируются как группа. Как правило, программный продукт состоит из нескольких программных модулей, написанных разными программистами. Если unit-тест тестирует только один модуль, то интеграционное тестирование затрагивает взаимодействие этих модулей между собой.
Целью нашего тестирования является выявление багов при взаимодействии между этими программными модулями и, в первую очередь, направлен на проверку обмена данными между этими самыми модулями.
Способы проведения интеграционного тестирования:
- Big Bang Integration
Суть данного способа заключается в том, что собираются все реализованные модули всех уровней, интегрируются в систему и тестируются. Если что-то не работает или программисты недоработали, то устраняется причина ошибки и исправляется. - Bottom Up Integration:
Все мелкие части модуля собираются в один модуль и тестируются. Далее собираются следующие мелкие модули в один большой и тестируется с предыдущим и т.д.
Например, функция публикации фото в соц. профиле состоит из 2 модулей: загрузчик и публикатор. Загрузчик, в свою очередь, состоит из модуля компрессии и отправки на сервер. Публикатор состоит из верификатора (проверяет подлинность) и управления доступом к фотографии. В интеграционном тестировании соберем модули загрузчика и проверим, потом соберем модули публикатора, проверим и протестируем взаимодействие загрузчика и публикатор. - Top Down Integration
Сначала проверяем работу крупных модулей, спускаясь ниже, добавляем модули уровнем ниже. На этапе проверки уровней выше, данные, необходимые от уровней ниже, симулируются.
Например, проверяем работу загрузчика и публикатора. Руками (создаем функцию-заглушку) передаем от загрузчика публикатору фото, которое якобы было обработано компрессором.
E2E-тестирование - это процесс тестирования, при котором происходит подробная эмуляция пользовательской среды. То есть, при данном тестировании имитируют взаимодействие пользователя с программой (щелчки мыши, ввод данных, нажатие на кнопку и т.д.)
Суть этого тестирования — посмотреть, так ли работает программа для конечного клиента, как рассчитывалось изначально? При этом нужно учитывать, что пользователю все равно, функционирует ли программа «как надо», ему главное, чтобы программа функционировала и оправдывала ожидания, поэтому основной упор делается на корректное функционирование. Важно помнить, что E2E тесты автоматизируются сложнее, дольше, стоят дороже, сложнее поддерживаются и труднее выполняются при регрессе.
Но почему тесты располагаются в пирамиде именно в таком порядке? Можно ли их поменять места, спросите вы? Нет - скажу я вам!
Пирамида имеется именно такой вид не просто так. Чем выше тест в пирамиде, тем:
- сложней в реализации, и соответственно, дороже;
- реже тесты встречаются в проекте;
- важнее для бизнеса и критичней для пользователей;
- замедляют скорость прохождения тестовых наборов, например, регресса.
#it #web #proweb #frontend #code #top #код #программирование