Приведите пример интересного технического бага из истории разработки ПО.

«Приведите пример интересного технического бага из истории разработки ПО.» — вопрос из категории Практические задания, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Классическим примером является Y2K-баг (Проблема 2000 года).

Суть проблемы: Многие старые системы хранили год в виде двух последних цифр (например, 99 вместо 1999), чтобы экономить память. При переходе на 2000 год значение 00 интерпретировалось как 1900, что вызывало сбои в расчётах дат.

Пример на Python, иллюстрирующий проблему:

def get_short_year(full_year):
    # Опасная функция, возвращающая только две последние цифры года
    return str(full_year)[-2:]

print(get_short_year(1999))  # Вывод: '99'
print(get_short_year(2000))  # Вывод: '00' → система может воспринять это как 1900 год.

Последствия: Потенциальные сбои в финансовых системах, управлении энергосетями и авиацией. Для устранения потребовались глобальные затраты на аудит и обновление кода.

Современный аналог — Проблема 2038 года: Переполнение 32-битного целочисленного типа time_t в системах Unix, которое произойдёт 19 января 2038 года в 03:14:07 UTC.