Дорогие таксисты, у нас хорошие новости!
Конкурс рекламодателей
Конкурс проходит с 27 октября по 4 ноября (20:00 мск).
Пополняйте рекламный счет, занимайте призовое место, и получайте бонус к сумме пополнений до 100%!
Как мы разрабатывали Задания
Хотим поделиться с Вами информацией о том, что под капотом некоторых разделов Такси-мани. Сегодня мы расскажем о том, как делали задания в Кликсе.
В новом разделе Кликса мы применили метод - разработка через тестирование.
Это такой вид разработки, когда сначала пишутся тесты а уже потом сама программа.
То есть, пишется спецификация на программу, описывается какие в программе будут функции, как они будут работать, что будут отвечать и главное как.
Спецификация детально прорабатывается, учитываются все возможные ситуации, сбои,
некорректные ответы других подсистем, отсутствие ответов.
На каждый вид сбоя прогнозируется поведение программы, и закладывается в спецификацию.
Спецификаций пишется много, на разные части системы, главное чтобы спецификация не "разрасталась".
Далее, по этой спецификация пишутся тесты.
Тесты - это такой набор скриптов, которые проверяют - работает ли код правильно.
А как проводится проверка? Очень просто - это по факту эмулирование действий пользователя.
Чтобы проверить, корректно ли работает программа
- необходимо
сэмулировать действия пользователя.
При этом эмулировать нужно с разными вводными (с корректными данными, с ошибочными).
Фактические результаты нужно сравнить с с ожидаемыми.
Давайте рассмотрим на примере:
Возьмем функцию "Активация задания", по-сути это просто смена статуса задания, но под капотом скрыто много логических точек, которые либо позволяют активировать задание, либо нет.
Если задание имеет достаточный баланс - то запустить можно. Если задание не проверено модератором - то запустить нельзя. И так далее по списку.
Тест создает задание, заполняет его данными "от балды" и проводит операции для выявления потенциальных ошибок.
Допустим, пытается активировать задание ДО того как проверил модератор.
И если вдруг ответ будет успешным (то есть активация задания произошла) - это означает что в системе есть ошибка, ведь непроверенное задание не должно быть допущено к общему списку.
Или пытается активировать задание с нулевым балансом на счету.
И так далее по списку, по каждой функции системы пишется несколько тестов.
Перед публикаций на сайте мы запускаем все тесты, и если вдруг какой-то из них "отвалился" (сообщил об ошибке), то проблема исследуется и исправляется.
Данный вид разработки позволяет нам быть более уверенными в том, что система в целом работает нормально и критических ошибок нет.
Конечно, это не исключает ошибки вовсе, но значительно сводит их количество на нет.
К сожалению, данный метод разработки значительно более медленный и трудозатратный. Ведь теперь нужно разрабатывать сразу несколько программ - одна выполняет работу, а другая тестирует первую.
Но мы верим, что выдавая более качественный продукт своим пользователям, мы позволяем работать с сайтом без ошибок, нервотрепок и просто испорченного настроения.
А это подчас куда дороже затраченного времени программистов.
Уже сейчас мы можем сказать, что данный метод принес нам значительные дивиденды - количество критических ошибок после публикации заданий равняется нулю.
Конечно были ошибки в тех частях системы, которая не была покрыта тестами, но это малозначимые ошибки, которые никак не сказались на общей работоспособности.
В будущих разделах мы будем использовать данный метод, дабы дать возможность нашим пользователям насладится нашими трудами без назойливых багов.
Оставайтесь с лучшим проектом RUнета!