Моя команда взяла в разработку проект по батчингу (группировке) заказов на доставку.
Есть курьеры и есть заказы, которые нужно развезти как можно быстрее, но при этом не очень долго (в рамках 60 минут чтобы не отдать сертификат) при доступном наборе курьеров. А от меня как тестировщика этого функционала ждут, что я протестирую качество группировки до того как мы выйдем на реальную пиццерию.
Казалось бы задача не сложная, подавай на вход курьеров и заказы с адресами, получай на выходе батчи и назначай на курьеров. Но есть
У курьеров тоже не все так гладко, есть курьеры которые находятся в пиццерии, а есть курьеры которые едут с заказами и вернутся в пиццерию через Х минут. А этот Х минут - это прогноз, который не всегда точен. А еще есть максимальная вместимость курьера, когда он не может взять больше 3 заказов (хотя возможно справедливее тут считать в коробках, но не суть). А еще ест разные типы курьеров, пеший, вело, авто. А еще есть настройки пиццерии, которые у каждой уникальные, например сервисное вермя, которое курьер тратит на каждую поездку - дойти от пиццерии до машины и обратно, а также сервисное время на каждый заказ - дойти от машины до клиента и обратно.
Все осложняется тем, что прямо сейчас разработаны и проверяются 3 разных инструмента для группировки заказов. Все они принимают отличающийся набор данных и в итоге по разному группируют 🤯
Изменение любого из этих параметров-ограничений на минимальное значение может кардинально изменить группировку.
И мне нужно протестировать это и написать интеграционные автотесты, которые проверяют качество группировки. Тесты то написать не проблема (на самом деле некоторый набор уже написан), но нужно написать тесты которые отражают реальное поведение, а не синтетические кейсы, которых на проде практически не встречается (такие тоже написаны) и еще желательно не раздувать сьют, чтобы он проходил за вменяемое время, если мы хотим это встроить в пайплайн.
В общем как-то так, ничего не понятно, но очень интересно.
