Что такое разработка через тестирование: руководство для новичков

Опубликовано: 2018-03-12

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

Оглавление

Что такое разработка через тестирование?

ТДД круг жизни
Test-Driven Development была создана как часть методологии Extreme Programming (XP) и получила название концепции «Test-First» . Разработка через тестирование позволяет тщательно протестировать код, а также быстро и легко повторно протестировать код, поскольку он автоматизирован. По сути, прежде чем писать какой-либо фрагмент кода, программист сначала создает модульный тест. Затем программист создает ровно столько кода, сколько необходимо для выполнения модульного теста. После прохождения теста и рефакторинга кода программист может приступить к дальнейшим улучшениям. Разработка через тестирование гарантирует, что код тщательно протестирован, что приводит к модульному, расширяемому и гибкому коду.
Каждый раз, когда необходимо добавить новую функцию, она должна пройти так называемый «жизненный цикл» TDD. Давайте поговорим подробнее об этом жизненном цикле.
Как стать полноценным разработчиком

Жизненный цикл разработки через тестирование

Жизненный цикл разработки через тестирование охватывает все, от написания начального модульного теста до переработки кода.
Разработка через тестирование

    • Добавьте тест: каждая новая функция должна пройти тест перед ее внедрением. Важным требованием для написания теста является четкое понимание всех требований. Это достигается с помощью вариантов использования и пользовательских историй.

    • Запустите все тесты и проверьте сетевой тест: это делается для того, чтобы убедиться, что наш тест работает корректно. По сути, этот этап направлен на проверку того, что тест не пройден каким-либо кодом, который не соответствует требованиям. Таким образом, этот шаг исключает возможность наличия ошибочного теста под рукой.

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

    • Запустите тесты: написав код, теперь пришло время посмотреть, проходит ли код тест или нет. Если ваш код проходит тесты, это означает, что ваш код соответствует требованиям — до сих пор.

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

  • Повтор: этот цикл теперь повторяется с новым тестом, чтобы добавить больше функций. Каждая функциональность проходит один и тот же цикл. По существу, размер шагов не должен превышать 1-10 правок между каждым запуском теста. Если код не проходит тест быстро, разработчик должен вернуться и не отлаживать слишком много.
Почему компании ищут разработчиков полного стека

Плюсы и минусы разработки через тестирование

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

Давайте подробно рассмотрим преимущества TDD:

    • Написание небольших тестов обеспечивает модульность вашего кода. Практика TDD поможет вам понять основные принципы хорошего модульного проектирования.

    • TDD обеспечивает ясность во время реализации вашего кода, что обеспечивает подстраховку на этапе рефакторинга.

    • С TDD совместная работа намного проще, так как теперь люди могут уверенно редактировать код, потому что тест сообщит им, если их изменения не соответствуют тесту.

    • Основа TDD — юнит-тесты. Из-за этого рефакторинг становится намного проще и быстрее. Рефакторинг старого кода — это боль, но если код поддерживается модульными тестами, это становится намного проще.

    • Это помогает прояснить все требования, прежде чем вы начнете кодировать часть. Таким образом, можно избежать многих неясностей, которые могут возникнуть позже.

    • Разработка через тестирование фокусируется на тестировании во время написания. Это заставляет программиста делать свои интерфейсы достаточно чистыми, чтобы пройти тест. Трудно понять это преимущество, пока вы не поработаете над фрагментом кода, который не подвергался TDD.

  • Глупые ошибки обнаруживаются почти сразу. Это помогает в устранении тех ошибок, на которые ушло бы много времени, если бы они были обнаружены в QA.

Теперь давайте посмотрим, каковы ограничения разработки через тестирование:

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

    • Тесты сложно писать, особенно после этапа модульного тестирования.

    • TDD действительно замедляет темп разработки, по крайней мере, на начальном этапе.

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

    • Трудно применить этот подход к вашему устаревшему (существующему) коду.

    • TDD требует, чтобы вы выполняли рутинную работу по дому. Необходимо доработать тесты, чтобы они выполнялись быстрее.

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

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

В заключение…
Разработка через тестирование — это путь вперед в будущем разработки приложений. Существует ряд сред автоматизированного тестирования, таких как PHPUnit, Serenity, Robot, RedWoodHQ и многие другие. Выберите тот, который соответствует вашим потребностям, и приступайте к созданию более удобных в сопровождении приложений в кратчайшие сроки!

Запишитесь на курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Станьте разработчиком полного стека

Диплом PG UpGrad и IIIT-Bangalore в области разработки программного обеспечения
Программа Executive PG по разработке программного обеспечения от IITB