В настоящее время мы работаем над средним / большим проектом PHP / MySQL. Мы проводим модульное тестирование с помощью PHPUnit & QUnit, и у нас есть два постоянных тестера, которые вручную тестируют приложение. Наши тестовые (фиктивные) данные в настоящее время создаются с помощью сценариев SQL.
У нас проблема с поддержкой скриптов для тестовых данных. Бизнес-логика довольно сложна, и одно «простое» изменение тестовых данных часто приводит к нескольким ошибкам в приложении (которые не являются реальными ошибками, а являются продуктом неверных данных). Это стало большой нагрузкой для всей команды, потому что мы постоянно создаем и меняем таблицы.
На самом деле я не вижу смысла сохранять тестовые данные в сценариях, потому что все может быть добавлено в приложение вручную через 5 минут с помощью пользовательского интерфейса. Наш премьер-министр не согласен и говорит, что иметь проект, который мы не можем развернуть с тестовыми данными, - плохая практика.
Должны ли мы отказаться от обслуживания сценариев с тестовыми данными и просто позволить тестировщикам протестировать приложение без данных? Какая лучшая практика?
источник
Да, рекомендуется проводить модульные тесты и макеты данных. Менеджер проекта правильный. Поскольку «простое» изменение тестовых данных часто приводит к ошибкам, в этом и заключается суть проблемы.
Код нуждается в улучшении. Не делать этого (говоря, эй, нам не нужны тесты) - это не исправление, а просто добавление технического долга . Разбейте код на более мелкие, более пригодные для тестирования блоки, потому что неспособность идентифицировать блоки без поломки является проблемой.
Начните делать рефакторинг. Сохраняйте улучшения небольшими, чтобы ими можно было управлять. Ищите анти-паттерны, такие как классы / методы Бога, не следуя СУХОЙ, единоличной ответственности и т. Д.
Наконец, посмотрите на TDD, чтобы увидеть, работает ли он на команду. TDD хорошо работает для обеспечения того, чтобы весь ваш код был способен к тестированию (потому что вы сначала пишете тесты), а также для того, чтобы вы оставались простыми , написав достаточно кода для прохождения тестов (свести к минимуму разработку).
В целом, если ряд сложных процессов бизнес-логики создает набор данных, я рассматриваю это как отчет. Инкапсулируйте отчет. Запустите отчет и используйте полученный объект в качестве входных данных для следующего теста.
источник
Это очень распространенная и очень сложная проблема. Автоматические тесты, которые запускаются на базе данных (даже в базе данных в памяти, такой как HSQLDB ), обычно медленны, недетерминированы и, поскольку сбой теста указывает только на наличие проблемы где-то в вашем коде или ваших данных, они не очень информативно.
По моему опыту, лучшая стратегия - сосредоточиться на модульных тестах для бизнес-логики. Постарайтесь охватить как можно больше кода вашего основного домена. Если вы правильно сделаете эту часть, что само по себе является сложной задачей, вы достигнете наилучшего соотношения затрат и выгод для автоматизированных тестов. Что касается персистентного уровня, я обычно вкладываю гораздо меньше усилий в автоматизированные тесты и оставляю его специальным ручным тестерам.
Но если вы действительно хотите (или должны) автоматизировать тесты на постоянство, я бы порекомендовал вам прочитать « Растущее объектно-ориентированное программное обеспечение под руководством тестов» . В этой книге есть целая глава, посвященная тестам на стойкость.
источник