Тестирование CMS Joomla
С начала выхода Mambo до сегодняшнего дня, Joomla! постоянно менялась и расширяла функционал. С момента выхода Joomla! 1.5, качество кода и удобство работы с системой изменилось в лучшую сторону, что так же можно наблюдать и версии 2.5. Переезд на GitHub облегчило работу разработчикам, можно постоянно наблюдать изменения и вносить свой вклад в дальнейшее развитие системы. Теперь центр внимания все больше и больше падает на следующий логический шаг - Автоматизированные тесты.
Процесс тестирования
В настоящее время используют три вида тестирования:
- Модульное тестирование (юнит-тестирование) - тестирование небольших кусков кода (единиц), как правило, это тестирование отдельных методов, без учета других классов или методов. Эти тесты позволяют проверить работу методов, а так же проверить их на наличие ошибок.
- Интеграционное тестирование - проверка интеграции двух или более единиц (групп). Эти тесты охватывают взаимодействие нескольких единиц.
- Системное тестирование - тестирование системы в целом. К этой группе относится тестирование приложений через браузер.
Для обеспечения общего качества кода Joomla, покрытие юнит-тестирования более чем на 90% не требуется. В настоящее время база кода не всегда позволяет проводить юнит-тесты. Причиной этого является тесные связи отдельных объектов, поэтому в основном ограничиваются интеграционными и системными тестами.
Разработка через тестирование
Для будущего это должна быть цель - осуществлять Разработку через тестирование, т.е., разработчик сначала тестирует отдельный модуль, чтобы определить его поведение, и только после этого реализует его в коде. Таким образом очень высокое покрытие юнит-тестирования модуля гарантируется. Развитие кодовой базы никогда не будет повреждать существующую функциональность, потому что это будет обнаружено на начальной стадии внедрения.
Тестируемые объекты
Использование связей и зависимостей в настоящее время усложнят процесс модульного тестирования. Самый простой способ избавиться от этого это сделать методы JFactory не статическими, а передавать экземпляр "фабрики" с помощью параметров. Таким образом будет не проблема найти ложную "фабрику", которая поставляет ложные объекты.
Нет тестов - Нет исправления ошибок
Что бы исправить найденную ошибку, нужно провести тест, который воспроизведет данную проблему. В идеале это должно быть модульное тестирование, но часто это ограничивается системным тестированием. Таким образом создается решение, которое заставляет правильно пройти тест, а не решает проблему в корне, что доказывает затруднительное положение.
Рабочая группа юнит-тестирования CMS Joomla
В платформе проделали огромную работу, добавив автоматизированное тестовое покрытие для кода. С Joomla! 3.0 также нашей целью является представить автоматизированные тесты для CMS. Рабочую группу модульного тестирования координирует Michael Babker, которая будет работать на создание тестовой среды для CMS с версии 3.0 в качестве основы для разработки тестовой структуры.
Руководство по написанию тестов, в том числе учебники, будут опубликованы в вики, как только система будет готова.
Если вы хотите присоединиться к проекту, то от вас требуется просто наличие учетной записи на GitHub. Таким образом, вы можете наблюдать за ходом развития репозитория и принимать участие в проекте.
Автор - Niels Braczek
Источник - http://magazine.joomla.org/issues/Issue-June-2012/item/778-CMS-Testing
0