Ответ
При отсутствии документации наиболее эффективным подходом является исследовательское тестирование (Exploratory Testing). Это одновременное изучение приложения, проектирование тестов и их выполнение. Тестировщик полагается на свои знания, опыт и креативность для исследования функциональности и выявления дефектов.
Основные техники и сопутствующие методы:
- Исследовательское тестирование: Систематическое, но не предопределенное изучение продукта. Тестировщик создает ментальную модель приложения «на лету».
- Ad-hoc тестирование: Неформальное, спонтанное тестирование без какой-либо подготовки или документации. Часто используется для быстрой проверки.
- Тестирование методом черного ящика: Анализ поведения системы исключительно на основе входных данных и наблюдаемых выходных данных, без знания внутреннего устройства.
- Тестирование на основе ошибок (Error Guessing): Использование опыта тестировщика для предположения, где в приложении могут скрываться ошибки (например, ввод специальных символов, очень длинных строк, отрицательных чисел).
Пример структуры исследовательского тестового сеанса для поля ввода:
# Эвристики (правила-подсказки) для проверки текстового поля
def explore_input_field(field_name, submit_function):
"""Исследует поведение поля ввода."""
test_cases = [
("", "Пустое значение"),
(" ", "Пробел"),
("123", "Цифры"),
("Test@mail.com", "Email"),
("<script>alert('xss')</script>", "Попытка XSS"),
("A" * 1000, "Очень длинная строка"),
("NULL", "Специальное ключевое слово"),
("123e4567-e89b-12d3-a456-426614174000", "UUID"),
]
print(f"=== Исследование поля: {field_name} ===")
for value, description in test_cases:
result = submit_function(value)
# Анализ результата: упало ли приложение, корректно ли обработало ввод?
print(f"Ввод '{description}': {value[:30]}... -> Результат: {result}")
print("=== Сеанс завершен ===n")
# Предполагаемая функция, которая отправляет значение в систему
# (В реальности это мог бы быть вызов API или клик по кнопке в UI)
def submit_to_system(value):
# Заглушка для примера. В реальном тесте здесь был бы вызов Selenium или requests.
if value == "":
return "Ошибка: поле обязательно"
elif len(value) > 255:
return "Ошибка: превышена длина"
else:
return "Успех"
# Запуск исследования
explore_input_field("Имя пользователя", submit_to_system)
Практические шаги:
- Разведка: Определить основные модули и потоки приложения.
- Формирование гипотез: Предположить, что может сломаться.
- Выполнение проверок: Тестировать на основе гипотез и стандартных эвристик (например, CRUD — Create, Read, Update, Delete).
- Документирование: Фиксировать найденные баги и уточненную логику работы для будущих тестов.