TGViewer
LikeaDuck🦆 LikeaDuck🦆 @likeaduck · 1.41K subscribers
Post #170 2.37K
#пятничное

Вижу сообщение в рабочем мессенджере в одном из каналов, посвященных разработке нашего IOS приложения Drinkit.

Автор сообщения - наш Senior QA, Денис.

Прочитав это сообщение, я понял, что это прекрасная иллюстрация той мысли, которую я стараюсь нести в этот мир:
Лучший QA - тот, что глубоко разбирается в своем продукте (его коде, инфре и так далее). Приведу его полностью, а вас спрошу - нравятся вам такие баг-репорты? Погружаетесь ли вы так же глубоко в проблему, когда ее видите? Стремитесь ли вы к такому, если нет?

Я писал тест на активацию публичной акции неавторизованным пользователем через меню по кнопке "Войти и применить"
Так вот, там после авторизации происходит чехарда, которая приводит к разным последствиям:

Акция не применится и ничего плохого не произойдет и её можно будет применить (хотя должны были применить)
Акция применится, но через какое-то время произойдет краш - {link}
Он же, но с прода: {link}

Если я всё правильно понимаю, то проблема тут в

private func handleAuthorizationCompleted(with promotion: Promotion) {
if authSession.isAuthorized == false {
return
}

Task {
do {
try await self.promotionsRepository.refresh()

Task { @MainActor in
self.proceedWithPromoApplying(promotion, sender: .menu)
}
} catch {
Task { @MainActor in
self.bannerPresenter.showBanner(for: .genericError())
}
}
}
}

Здесь promotionsRepository рефрешится асинхронно, поэтому таска следующая за ним может выполнится как до, так и после применения акции. И видимо можно поймать момент, когда мы применим акцию, но потом зарефрешим репозиторий и что-то ломается. Ну или не такая последовательность, но в любом случае, как-будто здесь есть место гонке, которая может всё сломать
  • 👍 25
  • 🔥 16
  • 👏 3
  • 🐳 3
More from @likeaduck
  1. May 31, 2026Последние три дня связаны с конференцией Codefest'16 - для меня это была крайне редкая кон…
  2. May 12, 2026В семье все заболели. После конференции сказался, видимо, недосып и усталость, иммунитет о…
  3. Apr 29, 2026Любопытный факт: Оказалось, я на втором месте по числу выступлений на Heisenbug за все вре…
  4. Apr 22, 2026Неделя в Москве - тимбилдинг со своими командами (на фото героическая QA-core команда, кот…
  5. Apr 21, 2026Впервые за год в TG написал рекрутер, спросил интересно ли обсудить позицию руководителя к…
  6. Mar 17, 2026Кстати fun fact о накрутке опыта: В QA.GURU мне дали посмотреть резюме (оценить и, возможн…
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 →