Оригинал полного документа
Основные техники тест-дизайна
Тест-техника есть эвристика для разработки тестов. Имеется много интересных техник. Настоящий список включает девять “семейств” основных техник. Под “основными техниками” мы понимаем технику, достаточно простую и универсальную для применения во множестве различных контекстов. Множество специальных техник базируются на одной или нескольких этих основных. И каждая из бесконечного множества специальных техник может быть представлена как комбинация нескольких основных с покрытием идей из других списков (“семейств”).
Функциональное тестирование
Тестируем, что оно может делать
- Определяем вещи, которые ПО может делать (функции и подфункции)
- Определяем, как мы установим что функция работоспособна
- Тестируем все функции, по одной за раз
- Определяем, что функция делает то, что она должна делать и не делает того, что она делать не должна
Доменное тестирование
Разделяем кластеры данных
- Смотрим все классы данных, которые ПО может обрабатывать. Обращаем внимание как на входные данные, так и на выходные
- Решаем, с какими конкретно данными будем тестировать. Рассматриваем такие штуки как граничные значения, типичные значения, удобные значения, недопустимые значения, лучшие представители значений (возможно, тут имеются в виду репрезентативные выборки – прим. перев.)
- Рассматриваем комбинации данных, которые следует тестировать вместе
Тестирование требований
Оспариваем каждое требование
- Определяем материалы, которые включают в себя явные или неявные требования к продукту. Рассматриваем пользовательские соглашения, соглашения об уровне обслуживания, рекламные тексты, тексты справки, руководства и тому подобные
- Анализируем индивидуальные требования и проясняем требования недостаточно ясные/размытые
- Тестируем выполнение каждого требования
- Если тестируем по явной спецификации, ожидаем ее выполнения от продукта, в противном случае приводим продукт в соответствие
Пользовательское тестирование
Вовлекаем пользователей
- Устанавливаем категории пользователей и их роли
- Определяем, что каждая категория пользователей будет делать (пользовательские истории), как она это будет делать и что получит в результате
- Получаем действительные пользовательские данные или вовлекаем реальных пользователей в тест
- В иных случаях регулярно симулируем поведение пользователей (будьте осторожны – легко представлять себя пользователем даже если вы не он)
- Действительно мощное пользовательское тестирование – когда вовлечены множество пользователей с различными ролями, а не только какой-нибудь один пользователь
Стресс-тестирование
Превосходим требования к продукту
- Ищем подсистемы и функции, которые уязвимы для перегрузок или могут быть «сломаны» при наличии сложных данных или в условиях ограниченных ресурсов
- Определяем данные и ресурсы, относящиеся к таким подсистемам
- Выбираем или генерируем данные или условия ограничения ресурсов: то есть большие или сложные структуры данных, большие нагрузки, тесты, которые запускаются надолго, сеты из множества тестов, урезанная системная память
Тестирование рисков
Представляем потенциальную проблему, затем ищем ее в реальности
- Какого рода проблемы может иметь продукт?
- Какие виды этих проблем важнее других? Сосредотачиваемся на них
- Если они действительно есть, как мы можем их обнаружить?
- Составляем список интересных проблем и разрабатываем тесты так, чтобы именно их обнаружить
- Может помочь консультация экспертов, проектная документация, прошлые ошибки, отчеты или эвристики оценки рисков
Потоковое тестирование
Делаем одну вещь за другой
- Выполняем несколько действий, связанных между собой, например, совершаем тур по модели состояний-переходов
- Не ресетим систему в процессе цепочечных действия
- Варьируем время выполнения и последовательность действий, пробуем многопоточность
Автоматические проверки
Проверяем дриллионы различных фактов
- Находим или разрабатываем инструменты, которые могут совершать множество действий и проверять множество фактов
- Рассматриваем инструменты, позволяющие частично автоматизировать тестовое покрытие
- Рассматриваем инструменты, позволяющие частично автоматизировать оракулов
- Рассматриваем инструменты, позволяющие частично автоматизировать детекторы
- Рассматриваем инструменты, позволяющие автоматически генерировать тестовые данные
- Рассматриваем инструменты, которые делают ручное тестирование более мощным
Тестирование по сценариям
Тестируем убедительную пользовательскую историю
- Начинаем со стиля мышления, охватывающего все, что происходит вокруг продукта
- Разрабатываем тесты, которые включают содержательные и сложные взаимодействия с продуктом
- Хороший тест по сценарию это история про то, как кто-то, кто имеет значение, может сделать что-то важное при помощи продукта