Если вы уже обзавелись сайтом на django, и этап кропотливой разработки остался позади — данная статья поможет определиться с дальнейшим планами касательно вашего проекта.
Уведомления — на сайте и по электронной почте
Было бы неплохо, если бы пользователи получали уведомления, когда кто-то делится с ними списком. Вы можете использовать уведомления Django, чтобы показывать сообщение в следующий раз, когда они обновляют экран. Для этого в вашем ФТ потребуется два браузера.
Также вы могли бы отправлять уведомления по электронной почте. Исследуйте возможности Django по проверке почты. Затем вы можете принять решение, что это критически важно и вам нужны реальные тесты с реальными электронными письмами. Используйте библиотеку IMAPClient для выборки фактических электронных писем из тестовой учетной записи веб-почты.
Переходите на Postgres
SOLite представляет собой замечательную небольшую СУБД, но она не сможет в достаточной мере справляться, как запросы вашего сайта будут принимать более одного рабочего веб-процесса. СУБД Postgres сегодня является всеобщим любимцем, поэтому выясните, как ее установить и сконфигурировать.
Нужно определиться с местом хранения имен пользователей и паролей для локального, промежуточного и производственного серверов Postgres. Поскольку в целях безопасности вы, вероятно, не захотите хранить их в репозитории исходного кода, измените ваши сценарии развертывания так, чтобы передавать их из командной строки. Популярное решение вопроса с местом их хранения — переменные окружения.
Проведите эксперимент: продолжая выполнять модульные тесты вместе с SOLite, сравните, насколько они быстрее, чем их выполнение относительно Postgres. Настройте систему так, чтобы ваша локальная машина использовала SOLite для тестирования, а CI-сервер использовал Postgres.
Выполняйте тесты относительно разных браузеров
Selenium поддерживает самые разные браузеры, включая Chrome и Internet Explorer. Попробуйте оба и убедитесь, что поведение вашего комплекта ФТ отличается.
Вам также необходимо попробовать «бездисплейный» браузер Phan-tomJS. На моем опыте переход на другой браузер часто помогает вскрыть разного рода ошибки ситуации состязания в тестах на основе Selenium. Скорее всего, вам придется намного чаще применять схему «взаимодействие/ ожидание» (особенно при использовании PhantomJS).
Тесты на коды состояния 404 и 500
Профессиональный сайт должен иметь красивые страницы ошибок. Тестирование страницы с кодом состояния 404 не представляет труда, но для тестирования страниц с кодом 500 вам, вероятно, потребуется индивидуализировать представление «поднимать исключения умышленно».
Сайт администратора Django
Представьте ситуацию, когда пользователь просит предоставить ему анонимный список. Для этого администратор сайта вручную изменяет запись, использующую сайт администратора Django.
Узнайте, как включить сайт администратора, и поэкспериментируйте с ним. Напишите ФТ, который показывает, как нормальный, не зарегистрировавшийся в системе пользователь создает список, затем пользователь-администратор входит в систему, переходит на сайт администратора и назначает список пользователю. Затем пользователь видит его на своей странице «Мои списки».
Напишите несколько тестов защищенности
Подробно остановитесь на входе в систему, «Моих списках» и обмене списками — что нужно написать, чтобы убедиться, что пользователи могут делать только то, что они авторизованы делать?
Тест на мягкую деградацию
Что произойдет, если сервер Persona «ляжет»? Сможем ли мы показать нашим пользователям хотя бы сообщение об ошибке с извинениями?
— Совет: один из способов симулировать падение сервера Persona — подправить файл hosts (на узлах /etc/ или c:\Windows\Sytem32\drivers\ etc). Не забудьте отменить изменения в тестовой функции tearDown!
— Подумайте о серверной и о клиентской сторонах.
Кэширование и тестирование и производительности
Узнайте, как установить и сконфигурировать memcached — ПО, которое реализует службу кэширования данных в оперативной памяти. Узнайте, как использовать утилиту тестирования производительности ab разработки Apache. Какова производительность с кэшированием и без него? Можно ли написать автоматизированный тест, который перестанет работать, если кэширование не будет включено? Что насчет ужасающей проблемы аннулирования кэша? Смогут ли тесты помочь вам обеспечить несокрушимость программной логики аннулирования кэша?
MVC-инфраструктуры для JavaScript
Библиотеки JavaScript, которые позволяют реализовывать шаблон проектирования «Модель-Представление-Контроллер» на клиентской стороне, — последний писк моды. Списки неотложных дел являются для них одним из любимых демонстрационных приложений, так что не составит труда конвертировать сайт в одностраничный, где все дополнения в список происходят на JavaScript.
Выберите библиотеку (возможно, Backbone. js или Angular.js) и выполните импульсную реализацию. Каждая библиотека имеет свои собственные предпочтения по поводу того, как писать модульные тесты. Изучите тот способ, который к ней прилагается, и посмотрите, устраивает ли он вас.
Async и протокол Websocket
Предположим, два пользователя работают с одним списком одновременно. Разве не круто увидеть обновления в реальном времени — когда один человек добавляет элемент к списку, а другой его сразу видит? Реализовать постоянное соединение между клиентом и сервером позволяет использование протокола веб-сокетов.
Попробуйте один из Python-овских асинхронных веб-серверов — Tornado, gevent, Twisted — и убедитесь, что их можно использовать для реализации динамических уведомлений.
Для тестирования вам понадобятся два экземпляра браузера (как для тестирования обмена списками). Проверьте, что уведомления о действиях в одном экземпляре появляются в другом без обновления страницы.
Перейдите на использование py.test
Программная инфраструктура py.test позволяет писать модульные тесты с меньшим объемом стереотипного кода. Попытайтесь конвертировать несколько своих модульных тестов для использования py.test. Возможно, понадобится плагин, чтобы заставить его слаженно работать с Django.
Попробуйте coverage. py
Утилита coverage. py Неда Бэтчелда (Ned Batchelder) сообщит вам о покрытии вашего кода тестами, то есть какой его процент покрыт тестами. Теоретически, теперь у нас всегда должно быть 100%-ное покрытие, потому что мы использовали строгую методологию TDD. Но хочется знать наверняка. Этот инструмент также очень полезен для работы с проектами, в которых с самого начала тесты не использовались.
Шифрование на стороне клиента
Вот забавная ситуация: что, если наши пользователи параноидально настроены в отношении Агентства национальной безопасности (NSA) и больше не доверяют свои списки «облаку»? Реально ли создать систему шифрования на JavaScript, где пользователь может вводить пароль, чтобы шифровать свой текст элемента в списке перед его отправкой на сервер?
Один из способов протестировать это мог бы состоять в том, чтобы существовал некий пользователь-администратор, который переходит к представлению администратора Django, чтобы пронспектировать списки пользователей, и проверяет, что они сохранены в базе данных в зашифрованном виде.
Монетизация вашего сайта
Если ваш проект уже успел набрать популярность, и обзавелся постоянной аудиторией, и как следствие трафиком – самое время подумать о его монетизации. Заработать на своем трафике вам могут помочь партнерские программы, одной из которых является партнерка Lucky Online, предлагая выгодные условия для постоянного и перспективного сотрудничества. С более подробными условиями партнерки от Lucky Online вы сможете ознакомиться перейдя по ссылке.
Остается пожелать нашим читателям успехов в их начинаниях!
Добавить комментарий