Времени на нормальную отладку тестов у нас не было, мы сразу стали использовать эти тесты для проверки группировок и соответствия системы требованиям. Потому что нам надо было очень быстро тестить гипотезы и мы не могли долго разрабатывать и тестировать. Перед релизом новой версии группировщика запускали тесты, брали упавшие и начинали разбирать. Из инструментов для разбора - только логи системы, мы даже визуально не могли представить где находятся эти заказы. Вот есть координаты пиццерии 30, 31. И у нас есть метод который принимает отклонения в метрах от этих координат, дальше метод сам вычисляет координаты по методу линейного приближения сферических координат. Заказ создается таким образом
var order1 = new TestOrderBuilder(1)
.PlacedAt(currentDate.AddMinutes(-7))
.WithMeterOffsets(-2500, -3000)
.Please();
Если создано 2-3 заказа, то в целом это можно как-то представить в уме, но у нас были кейсы с 12-15 заказами (в след посте расскажу как вайбкодинг помог решить эту проблему).
Также всплыла проблем с тем, что до написания теста мы не знали ожидаемый результат каждого теста. Тут нам на помощь пришли требования - мы зафиксировали цели оптимизации, по приоритету:
1. Развезти все заказы
2. Отдать наименьшее количество сертификатов
3. Дать наилучший сервис (минимальное время от получения заказа до выдачи клиенту С2E)
4. Обеспечить справедливость распределения заказов на курьеров.
Если с 1 и 2 требованием все просто, то с расчетом C2E были проблемы. Представьте у вас 7 заказов и 3 курьера, вы можете возить заказы по 1, по 2 и по 3. Сколько комбинаций получится? Клод посчитал 30 240 комбинаций. Чтобы понять соответствует полученная группа требованию или нет сидели и считали С2E для разных вариаций групп, которые на наш человеческий взгляд выглядели логично. Пришлось даже написать вспомогательную утилиту, которая принимала лог с заказами и считала С2E разных групп.
По итогу задача оказалась сложнее чем ожидали - не были уверены какой результат должен быть в тесте, не видели заказы и как они сгруппированы, не могли быстро посчитать c2e. Но все равно даже с такими проблемами, мы поймали несколько проблем и исправляли логику группировок чтобы она стала соответствовать требованиям.