Приложение: тестирование и отладка
Приложение: тестирование и отладка
Отладка похожа на работу детектива в криминальном фильме, где убийца — вы сами. — Филипе Фортес
Автоматизированное тестирование помогает повышать качество кода и сокращать время на исправление ошибок. Разработка через тестирование (TDD) — это методология, при которой модульные тесты создаются одновременно с программным обеспечением. Как правило, каждый тест пишется до реализации соответствующей функции.
По мере разработки вы многократно запускаете весь набор автоматизированных тестов для проверки программы. Это принципиально отличается от подхода, при котором сначала пишут программу, а тесты добавляют позднее. В TDD написание кода, тестирование и рефакторинг тесно связаны.
Основная идея описана в книге Кента Бека «Разработка через тестирование на примере»: 1. Добавьте один модульный тест. Он описывает новую функцию, которую вы хотите добавить в приложение. Сформулируйте требования к ней на основе запросов команды или пользователей.
2. Запустите тест. Он должен завершиться неудачей, поскольку новая функция еще не реализована. Одновременно это подтверждает, что сам тест действительно способен обнаружить отсутствие функции и не проходит автоматически. 3. Напишите простейший код, который проходит новый тест. Реализуйте ровно столько логики, сколько необходимо. На этом этапе код не обязан быть чистым: допустимы неидеальная структура, жестко заданные магические числа и другие временные решения, если тест проходит. 4. Убедитесь, что проходят все тесты. Запустите полный набор автоматизированных тестов. Все прежние модульные тесты должны завершиться успешно, а новый код должен соответствовать как новым, так и существующим требованиям. Если это не так, изменяйте новый код — и только его — пока не пройдут все тесты. 5. Выполните рефакторинг. Вернитесь к новому коду, приведите его в порядок и убедитесь, что он соответствует руководству по стилю. Организуйте код логично: держите связанные классы и методы рядом, удаляйте дублирование и переименовывайте идентификаторы так, чтобы комментарии требовались как можно реже. Разделяйте чрезмерно длинные методы и классы. После каждого этапа рефакторинга запускайте набор автоматизированных тестов. 6. Повторяйте. Проходите этот цикл при добавлении каждой функции. Каждый шаг должен быть небольшим постепенным изменением. Часто создавайте коммиты в системе контроля версий. Тогда при отладке каждого модульного теста придется анализировать лишь небольшой объем нового кода. Если ничего не помогает, вернитесь к предыдущему коммиту и начните заново. В этом суть подхода. Разработка по TDD естественным образом подталкивает к принципу KISS: добавляйте по одной функции, сразу тестируйте ее и непрерывно выполняйте рефакторинг, чтобы очистка кода стала постоянной практикой. Как и большинство принципов чистого кода, TDD требует дополнительных усилий в краткосрочной перспективе, но обычно улучшает долгосрочное сопровождение и читаемость.
Unity Test Framework Unity Test Framework (UTF), ранее называвшийся Unity Test Runner, предоставляет разработчикам Unity стандартный фреймворк тестирования. UTF использует NUnit — библиотеку тестирования с открытым исходным кодом для языков .NET. Unity Test Framework выполняет модульные тесты в Editor — в Edit Mode или Play Mode — и на целевых платформах, включая Standalone, Android и iOS. Установите UTF через Package Manager. Начать работу поможет документация.
Общий рабочий процесс Unity Test Framework выглядит следующим образом: — Создайте новый набор тестов — тестовую сборку (Test Assembly). Интерфейс Test Runner упрощает этот процесс и создает соответствующую папку в проекте. — Создайте тест. Интерфейс Test Runner помогает управлять скриптами C#, используемыми как модульные тесты. Выберите папку Test Assembly и откройте Assets > Create > Testing > C# Test Script. Отредактируйте созданный скрипт и добавьте логику теста. — Запустите тест. Через интерфейс Test Runner можно выполнить все модульные тесты или только выбранный. В JetBrains Rider UTF также запускается непосредственно из редактора скриптов.
— Добавьте тесты Play Mode для Editor или автономного запуска. Стандартная Test Assembly работает в Edit Mode. Чтобы тесты выполнялись во время работы приложения, создайте отдельную сборку Play Mode. Настройте их и для автономной сборки; результаты будут отображаться в Editor.
Unity Test Framework отображает в Editor результаты тестирования standalone-сборки.
Дополнительные сведения о UTF, тестировании и отладке проектов Unity доступны в следующих материалах: — Микросайт Unity Test Framework — Автоматизированное тестирование игр с помощью Unity Test Framework — Отладка игрового кода с помощью Roslyn Analyzers — Рекомендации по тестированию и обеспечению качества проектов Unity — Ускорение отладки с помощью Microsoft Visual Studio Code — Отладка кода с помощью Microsoft Visual Studio