Как тестировать процесс резервного копирования (backup) и восстановления данных?

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

Ответ

Тестирование бэкапов направлено на гарантию того, что данные могут быть полностью и корректно восстановлены после сбоя.

Ключевые этапы и проверки:

  1. Тестирование создания бэкапа:

    • Процесс завершается без ошибок.
    • Файлы/дампы создаются в ожидаемом месте и формате.
    • Соблюдается расписание и политика хранения (инкрементальные, полные бэкапы).
  2. Валидация целостности и полноты данных:

    • Контрольные суммы: Сравнение хэшей (MD5, SHA-256) исходных данных и бэкапа.
    • Проверка размера и метаданных.
    • Выборочная проверка содержимого критичных таблиц или файлов.

    Пример скрипта для проверки целостности на Python:

    import hashlib
    
    def verify_backup(original_path, backup_path):
        with open(original_path, 'rb') as f_orig, open(backup_path, 'rb') as f_backup:
            hash_orig = hashlib.sha256(f_orig.read()).hexdigest()
            hash_backup = hashlib.sha256(f_backup.read()).hexdigest()
            return hash_orig == hash_backup
    
    if verify_backup('data.db', 'backup/data.db.bak'):
        print('Backup integrity verified.')
    else:
        print('Backup integrity check FAILED!')
  3. Тестирование восстановления (Restore):

    • Восстановление данных на тестовом стенде (никогда на продакшене!).
    • Проверка, что все данные присутствуют и не повреждены (запуск тестовых запросов к БД).
    • Проверка работоспособности приложения после восстановления (smoke-тесты).
  4. Тестирование обработки ошибок и граничных условий:

    • Недостаточно места на диске.
    • Повреждение исходных данных или носителя с бэкапом.
    • Прерывание процесса бэкапа/восстановления.
    • Восстановление на более новую/старую версию ПО или БД.

Важно: Тестирование восстановления — это самая критичная часть, которую необходимо выполнять регулярно.