2015-11-12 5 views
3

Итак, у меня есть этот огромный проект SF2, который, к счастью, довольно «хорошо» написан. Службы есть, там есть фоновые задания, нет классов богов, это можно проверить - но я никогда не получал больше, чем просто материал для тестирования единицы, поэтому вопрос в основном, где я начинаю принимать это дальше.Большой проект, огромная нехватка тестового покрытия, как бы вы к этому подошли?

Проект состоит из SF2 и всех yada yada, Doctrine2, Beanstalkd, Gaufrette, некоторых других абстракций - это прекрасно. Единственная проблема, с которой он сталкивается, - это некоторый глюкод в контроллерах здесь и там, но я не вижу в этом большой проблемы, поскольку функциональные тесты будут для меня основным направлением. Инфраструктура настроена довольно хорошо, ее покрывает докер, поэтому CI тоже хорошо поработает.

Но оно в основном слишком велико, чтобы вручную протестировать его, поэтому я хочу получить полное функциональное покрытие в кратчайшие сроки и позволить модульному тестированию расти с течением времени. (Собираюсь погрузиться в изолированные объекты, так как им понадобятся будущие корректировки и в течение их времени провести испытание для них)

Так что я получил модульное тестирование, которое должно расти со временем, но я хочу сделать несколько шагов к функциональному тестированию, чтобы получить быстрый выигрыш в тестировании. ВЧЕРА.

Мой план на данный момент - использование Behat и Mink для этого, тесты будут огромными, поэтому я мог бы также хотеть, чтобы он был настроен как истории вместо кода. Кажется, у него также есть расширение для Symfony 'BrowserKit. Существует множество услуг и внешних вещей, но все они изолированы службами, поэтому я могу издеваться над ними через конфигурацию службы тестовой среды, я думаю. Пожалуйста, некоторые советы здесь, если есть, как лучший способ

Я также буду нуждаться светильниками, я использую Алиса для создания некоторых светильников до сих пор, кажется, хорошо вместе с расширением доктрины, не думает, на этом есть «лучшие» варианты.

Как проверить внешние службы? Im насмешливые вещи как служба Facebook, но я также хочу проверить ее на какой-либо тестовой учетной записи, это целесообразно? Я знаю, что это выходит за рамки его сферы, служба должна быть издеваться и проверяться всеми возможными способами, чтобы «обеспечить ее работу» в соответствии с пуристом. Но в конце концов он все еще ломается из-за какого-либо ключа API или другой проблемы в соединении, которые я не могу себе позволить. Итак, пожалуйста, дайте советы здесь также

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

ответ

0

Я рад, что вы подняли свое поведение, я собирался предложить то же самое.

Я бы хотел начать с ваших наиболее важных для бизнеса предметов; блок тестирует чрезвычайно важную бизнес-логику и использует поведение для остальных.

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

Другим подходом было бы очень тонкое функциональное тестирование, когда вы делаете запросы GET ко всем своим конечным точкам и ищите 200-е. Это очень быстрый способ убедиться, что ваши страницы по крайней мере загружаются. Оттуда вы можете начать писать тесты для своих конечных точек POST и расширить свой пакет с более подробными тестовыми примерами.