TGViewer
QAжется, работает! QAжется, работает! @seems_to_be_working · 613 subscribers
Post #275 340
Как я перестал читать логи упавших тестов и начал их видеть
Продолжаем истории про тестирование Умного Трекинга.
Для освежения контекста можно почитать предыдущие посты (раз, два, три)
В предыдущих постах не упомянул ещё один недостаток статичных тестов, который решил с помощью ИИшки. Точнее, упоминал его, но хочется остановиться на нём подробнее.
Нам тяжело было анализировать результаты тестирования. Вот представьте, у вас тест
public async Task RunStandardGroupingScenario(RoutingTestData testData)
{
...
var order1 = new TestOrderBuilder(1)
.PlacedAt(currentDate.AddMinutes(-40))
.WithMeterOffsets(724, 1000)
.Please();
...
await Runner
.WithContext<AutoAssignmentContext>()
.RunScenarioAsync(
...
_ => _.OrderPlacementSteps.GivenOrdersAreOnTheShelf(order1),
...
_ => _.when_GroupOrdersForDelivery_iterate(),
_ => _.then_ORDERS_are_grouped(order1.Number, order2.Number, order3.Number)
);
}

Тут ключевое, на что нужно смотреть, — WithMeterOffsets. Это смещение заказа от координат пиццерии в метрах. Сделали метод для упрощения написания тестов, чтобы не нужно было искать координаты каждого заказа. Просто указываешь смещение от пиццерии по направлению север-юг и смещение по направлению запад-восток, а тестовый метод сам высчитывает координаты.
И вот перед очередным релизом этот тест падает, и ты видишь буквально:
Orders are not in the same group
Found groups: [{"TravelMode":0,"Orders":[3,2]}], [{"TravelMode":0,"Orders":[1]}]

И что с этим делать? Напомню, что мы тестируем результаты работы алгоритма группировки. Как понять расположение заказов относительно друг друга и пиццерии? Можно, конечно, вспомнить, что первый аргумент в методе WithMeterOffsets — это отклонение по направлению север-юг, но, возможно, и отклонение по направлению запад-восток. Затем мысленно представить себе карту и наложить на неё заказы. Но у меня не получалось.
Что я сделал? Правильно, навайбкодил html, который получал последний запрос к солверу, парсил его и рисовал карту. На карте отмечал маркеры заказов и группы заказов, ну и вообще отображал весь контекст того, какие данные были засетаплены до этого.
Затем сделал генерацию такой карты после каждого теста и приложил её в ТестОпс. Теперь можно легко смотреть на итоги теста, и разбирать упавшие тесты стало сильно легче.
Раньше, без ИИшки, я бы даже не взялся за это, а сейчас в перерывах между тестированием создал вспомогательный инструмент, который плотно засел в тестах. У меня есть ещё один похожий инструмент для других тестов, но о нём расскажу дальше, когда буду рассказывать о динамических тестах в Умном Трекинге.
  • 🔥 15
More from @seems_to_be_working
  1. Aug 25, 2026Динамические тесты - база Если вы думали что история с тестированием группировщика закончи…
  2. Apr 30, 2026Как автотестируем систему батчинга заказов ч.2 Времени на нормальную отладку тестов у нас…
  3. Apr 30, 2026Как автотестируем систему батчинга заказов ч.1 Это продолжение предыдущего поста. У нас в…
  4. Apr 3, 2026Тестирование сложных систем Я уже рассказывал, что плотно сижу на проекте «Умный трекинг»…
  5. Mar 3, 2026Хотели бы вы найти багулю в самолёте? Я если честно не очень. Вот @DanilBabich нашел, пора…
  6. Feb 19, 2026Погружайтесь в бизнес Почти всю прошлую неделю я провел в пиццериях своего города. К нам н…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →