← Назад к вопросам

Как протестировать отпечаток пальца

1.0 Junior🔥 171 комментариев
#Мобильное тестирование#Техники тест-дизайна

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Тестирование функции отпечатка пальца: комплексный подход

Тестирование отпечатка пальца — это многоуровневый процесс, охватывающий функциональность, безопасность, производительность и пользовательский опыт. Я подхожу к этому как к системе, требующей интеграционного, негативного и edge-тестирования.

1. Функциональное тестирование

Проверяем базовые сценарии работы:

  • Регистрация отпечатка: успешное добавление, отмена процесса, повторная регистрация того же пальца.
  • Верификация (сравнение): успешный вход по зарегистрированному отпечатку, блокировка при использовании незарегистрированного.
  • Удаление и управление: удаление одного/всех отпечатков, работа после сброса данных приложения.

Пример тест-кейса для API регистрации:

# Пример структуры теста на Python с использованием pytest
import pytest

def test_fingerprint_enrollment_success(api_client, test_user):
    """Успешная регистрация отпечатка пальца."""
    # 1. Инициируем сессию регистрации
    session_response = api_client.start_enrollment(user_id=test_user.id)
    assert session_response.status_code == 200
    session_id = session_response.json()["session_id"]
    
    # 2. Имитируем передачу данных отпечатка (заглушка сканера)
    fingerprint_data = simulate_fingerprint_capture()
    enroll_response = api_client.enroll_fingerprint(
        session_id=session_id,
        fingerprint_data=fingerprint_data
    )
    
    # 3. Проверяем успешный ответ
    assert enroll_response.status_code == 201
    assert enroll_response.json()["status"] == "enrolled"
    assert "fingerprint_id" in enroll_response.json()

2. Тестирование безопасности и надежности

Это критически важный блок:

  • Ложные срабатывания (False Acceptance): проверяем, что система НЕ принимает чужие отпечатки. Используем набор отпечатков "злоумышленников".
  • Ложные отказы (False Rejection): проверяем, что система надежно узнает владельца при разных условиях (влажный/сухой палец, небольшой сдвиг).
  • Уязвимости:
    *   Попытка подменить биометрические данные в запросе (fuzzing).
    *   Проверка, что шаблон отпечатка хранится в зашифрованном виде.
    *   Атаки на exhaustion: множественные попытки верификации с блокировкой аккаунта.
  • Альтернативные пути аутентификации: При блокировке отпечатка должен работать PIN/пароль.

3. Тестирование в различных условиях (Condition Testing)

Биометрия чувствительна к окружению:

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

4. Интеграционное и межплатформенное тестирование

  • Интеграция с ОС: проверка работы с Android Keystore / iOS Secure Enclave.
  • Межплатформенная согласованность: если приложение кроссплатформенное, отпечаток, зарегистрированный на iOS, не должен работать на Android (если не используется облачная синхронизация шаблонов, что нежелательно).
  • Работа с фоновыми процессами: как ведет себя сканирование при входящем звонке или уведомлении.

5. Производительность и UX

  • Скорость верификации: время от приложения пальца до разблокировки не должно превышать 1-2 секунды.
  • Энергопотребление: активное использование сканера не должно чрезмерно разряжать батарею.
  • Интуитивность: четкие инструкции для пользователя при регистрации ("Приложите палец", "Не убирайте палец").

6. Негативные сценарии и Edge-кейсы

  • Прерывание процесса: ввод отпечатка до завершения регистрации.
  • Экстремальные данные: передача пустого, неверно формата или чрезмерно большого биометрического шаблона.
  • Работа без прав: попытка вызова биометрического API без соответствующих разрешений (USE_BIOMETRIC, USE_FINGERPRINT в Android).
  • Смена аккаунта: что происходит с зарегистрированными отпечатками при смене пользователя на устройстве.

Ключевой инструментарий: Помимо ручных проверок, используются специализированные симуляторы (например, Android Fingerprint Tool для эмуляторов), снифферы (Charles Proxy) для анализа сетевого трафика (если используется облачная верификация), скрипты для fuzzing-атак на биометрические конечные точки и аппаратные тестовые стенды с реальными сканерами.

Главный принцип: отпечаток пальца — это не пароль, а username. Его нельзя изменить при компрометации. Поэтому тестирование безопасности и надежности хранения криптографических ключей, привязанных к биометрии, является абсолютным приоритетом.

Как протестировать отпечаток пальца | PrepBro