Приведи примеры нетривиальных задач из опыта тестирования.

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

Ответ

1. Тестирование OAuth 2.0 flow с автоматическим обновлением токенов

Задача: Автоматизировать сценарии, где access token "протухает" во время длительной серии запросов. Требовалось автоматически перехватывать 401 ошибку, обновлять токен с помощью refresh token и повторять исходный запрос.

Пример на Python (pytest + requests):

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

class AuthSession:
    def __init__(self):
        self.session = requests.Session()
        self.token = self._get_new_token()
        # Настройка повторных попыток для 401
        retry_strategy = Retry(
            total=2,
            status_forcelist=[401],
            allowed_methods=["GET", "POST"],
            backoff_factor=1
        )
        adapter = HTTPAdapter(max_retries=retry_strategy)
        self.session.mount("https://", adapter)

    def _refresh_token(self):
        # Логика обновления токена
        self.token = self._get_new_token()

    def request_with_auth(self, method, url, **kwargs):
        # Добавляем текущий токен в заголовки
        headers = kwargs.get('headers', {})
        headers['Authorization'] = f'Bearer {self.token}'
        kwargs['headers'] = headers

        response = self.session.request(method, url, **kwargs)
        if response.status_code == 401:
            self._refresh_token()  # Обновляем токен
            headers['Authorization'] = f'Bearer {self.token}'
            response = self.session.request(method, url, **kwargs) # Повторяем запрос
        return response

2. Тестирование геолокации и геозон в мобильном приложении

Задача: Проверить логику push-уведомлений и изменения UI при входе/выходе пользователя из заданных географических зон (геофенсинга).

Подход:

  • Инструменты: Appium + симулятор локации (для iOS/Android).
  • Метод: Скрипт эмулировал "движение" устройства по заданным координатам (точкам маршрута).
  • Проверки:
    • Прибытие уведомления в момент пересечения виртуальной границы.
    • Корректное отображение точки на карте в реальном времени.
    • Отсутствие ложных срабатываний при колебаниях GPS-сигнала.