Введение
Курсы по автоматизации qalalab.ru готовились долго. Большая часть подготовки ушла на написание текстов а русском, перевод их на английский язык. Я делал это сам, привлекал к работе профессионального переводчика, занимался редактурой, готовил туториал с кодом на битбакете. Для каждого шага в туториале была подготовлена отдельная ветка, естественно туториал был сначала пройдем автором и подготовлен эталонный код. Много времени ушло на отладку окружения на vagrant.
Технологии применены
Этот проект так же являлся первым production-проектом на AngularJS 1.4 — новому для меня фреймворка, изученного с помощью udemy.com совсем недавно. По ходу создания курс сменилась одна мажорная версия Django — с 1.7 на 1.8. Так же впервые для меня был использован Postgresql.
Использование Angular наложили на определенные ограничения на backend. Таким образом система шаблонов Django нужно было интегрировать с системой шаблонов Angular. Это привело к лучшему разделению данных и представления. Чтобы сделать все еще красивее и лучше, мной был использован Django Rest Framework — так же впервые, так же был изучен в ходе написания проекта. Последнее чтобы было изучено и применено — фреимворк Django hvad для создания двуязычных моделей, чтобы хранить двуязычные статьи. При этом я работал fulltime естественно. Было чему уделить внимание. Я был рад когда все это наконец закончилось. Как только в я закончил вбивать все статьи + переводы на production-окружение, я опубликовал ссылку в facebook и рабочем чатике. О чем пожалел на следующий день.
Fatal Error
Написав 24 практико-теоретических беседы о том, что писать тесты нужно, что это ускоряет разработку, как именно это нужно делать, как настраивать окружение, как выстраивать процесс, создал пошаговый туториал, в котором все это применил на практике. При написании своего собственного проекта я полностью это проигнорировал, за что поплатился сразу же.
Обнаруженные на production critical issues:
- При открытии беседы я получал 500 ошибку тк я неправильно кастомизировал миксины в Django Rest Framework для метода retrieve. Это можно было проверить локально элементарно, но это не было сделано по какой-то причине. Я удовлетворился тем что без ошибки смог посмотреть на список статей с introduction-ами
- Скроллинг не работал в Safari в iOS. Причем он не работал в двух местах. И проверив и починив в один день в одном месте — в списке всех бесед, я не проверил это в представлении одной статьи. Починил это только на следующий день
- Проект не был проверен в мобильных версиях. Вместе с тем гул-аналитика в первый же день показала что у меня не было ни одного захода с десктопных устройств. Может там пару процентов. Соответственно UX для мобильных устройств страдал безбожно. Пришлось увеличивать шрифты, кнопки делать более большими и яркими. В функциональности кроме проблем со скролом в iOS больше не было.
- Оказалось что кому-то может захотеться прочитать следующую статью а не закрыть сайт сразу же — добавил кнопки “next” и “prev"
- Отформатирован первый раздел — вступление. Всякая философская шляпа
Заключение
По-моему прекрасный кейс, который показывает зачем нужно комплексное тестирование на всех интересующих окружениях. Даже люди, которые этим зарабатывают на жизнь, оказавшись по другую сторону баррикад, игнорируют это. За что платят. Первое впечатление многих людей о моем продукте было безнадежно потеряно.