Раздел 43 · Автотестирование с нуля

Гонки: два запроса за одно место

middle~35 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Тимур · бэкенд, #qa-antrakt

Про «место 14Б» мне пересказали уже трижды. Я смотрел код: перед продажей мы проверяем, что на место нет активного билета, и если есть, отвечаем 409. Тест на это есть, он зелёный. Продать одно место дважды наш код не может. Если в базе дубли, значит, их кто-то вставил руками. Покажи тест, который краснеет, тогда поверю.

Вера Ланская · лид QA, #qa-antrakt

До «Ночи продаж» четыре месяца. Если Тимур прав, нам нужен тест, который это докажет. Если нет, нужен тест, который это покажет. В обоих случаях нужен тест.

В уроке 62 ты уже находил дубли запросом к базе «Антракта». Их 58, все на фестивале «Белые ночи звука 2026», все в первые пятнадцать минут продаж. Среди них место 14Б, на котором висят два активных билета из заказов 391 и 3118. Тимур прав в одном: последовательно его код второй билет не продаст. Но в «Ночь продаж» покупатели приходят не по очереди.

Две кассы и один журнал

В фойе театра две кассы, у каждой свой кассир. Проданные места они отмечают в одном журнале на столе посередине. Зритель просит у первой кассы 14Б. Кассир заглядывает в журнал: свободно. Поворачивается к принтеру за бланком. В эту секунду второй зритель просит 14Б у второй кассы. Второй кассир заглядывает в тот же журнал: всё ещё свободно, первый ничего не записал. Продаёт. Первый кассир возвращается с бланком и тоже продаёт, ведь он сам видел, что место свободно.

Каждый кассир действовал правильно. Ошибка живёт между ними: в промежутке между «посмотрел» и «записал», где мир успел измениться. Этот промежуток и есть гонка.

урок из курса

Урок из курса «Автотестирование с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.