Здравствуйте, хочу рассказать вам о проблеме, с которой недавно столкнулась наша команда и о том, как нам пришлось участвовать в фальсификации результатов лотереи.
Итак, в первую неделю нового года перед нами стояла простая, но неотложная задача.
Некая зарубежная кинопрокатная компания решила привлечь людей к новому неприметному фильму, разыгрывая билеты на него среди своих посетителей.
Для этого на партии свежих билетов (1 миллион штук) должны были быть нанесены уникальные буквенные коды достаточной длины, чтобы обеспечить несовпадаемость.
Покупатели должны ввести их на специальной странице сайта (вместе со своим почтовым индексом, чтобы в случае выигрыша направить человека в ближайший кинотеатр).
Наши зарубежные коллеги предоставили нам файл со списком кодов и посоветовали взять первые 500 имеющихся и использовать их как выигрышные (за 1 выигрышный код разыгрывалось 4 места в кинотеатре).
Поскольку нас не интересовали невыигрышные билеты, а клиенту было все равно, кто выиграл, мы разместили в нашей базе 500 строк кодов и написали необходимую логику для проверки кодов и раздачи призов — писем-приглашений в ближайший доступный кинотеатр.
.
Через неделю после запуска сайт заработал, билеты поступили в кассу, и в первый же вечер счастливчиками стали 2 человека.
Однако прошла неделя и заказчик начал писать тревожные письма – больше никто не выиграл! Регулярное тестирование и доработка кода ничего не дали - все работало отлично, вводите хороший код - выиграете, плохой код - повезет в следующий раз.
Конечно, вероятность правильного кода невелика — около 0,0005, и не все люди любят играть в лотерею, но смущало то, что в первый день кто-то действительно выиграл.
В результате кинопрокат принял решение – во что бы то ни стало заполнить кинотеатры.
Мы переписали всю логику, чтобы манипулировать результатами.
и только тогда мы поняли проблему.
Заказчик получил тот же список кодов, что и мы, и отправил его в типографию.
Естественно, коды были напечатаны на последовательных билетах.
Потом, конечно, билеты пачками рассылали по кинотеатрам, а потом пачками раздавали в кассах.
И скорее всего, те самые «первые попавшиеся, несмотря ни на что» 500 кодов, которые мы взяли из первых 500 строк файла, все оказались в 1 киносеансе.
Утешает лишь то, что только двое из 500 зрителей решили проверить свои билеты.
А мораль вся в названии — помните о бумажках, на которых будут распечатаны ваши данные, помните об «ограничениях» реального мира.
Теги: #ошибки программиста #Тестирование ИТ-систем #программирование
-
Что Такое Сетевая Инфраструктура?
19 Oct, 24 -
Я Пишу Текст В Freetype 2 И Opengl.
19 Oct, 24 -
Удаление Аккаунтов
19 Oct, 24 -
Chromium 9 И Синхронизация Паролей
19 Oct, 24 -
Ооп Workshop Php5: Эмуляция Миксинов В Языке
19 Oct, 24 -
10 Признаков Php-Приложения С «Запахом»
19 Oct, 24