Перевод одной страницы документа Джеймса Баха о техниках тест-дизайна. Девять семейств эвристик для разработки тестов

Оригинал полного документа

Основные техники тест-дизайна

Тест-техника есть эвристика для разработки тестов. Имеется много интересных техник. Настоящий список включает девять “семейств” основных техник. Под “основными техниками” мы понимаем технику, достаточно простую и универсальную для применения во множестве различных контекстов. Множество специальных техник базируются на одной или нескольких этих основных. И каждая из бесконечного множества специальных техник может быть представлена как комбинация нескольких основных с покрытием идей из других списков (“семейств”).

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

Тестируем, что оно может делать

  1. Определяем вещи, которые ПО может делать (функции и подфункции)
  2. Определяем, как мы установим что функция работоспособна
  3. Тестируем все функции, по одной за раз
  4. Определяем, что функция делает то, что она должна делать и не делает того, что она делать не должна

Доменное тестирование

Разделяем кластеры данных

  1. Смотрим все классы данных, которые ПО может обрабатывать. Обращаем внимание как на входные данные, так и на выходные
  2. Решаем, с какими конкретно данными будем тестировать. Рассматриваем такие штуки как граничные значения, типичные значения, удобные значения, недопустимые значения, лучшие представители значений (возможно, тут имеются в виду репрезентативные выборки – прим. перев.)
  3. Рассматриваем комбинации данных, которые следует тестировать вместе

Тестирование требований

Оспариваем каждое требование

  1. Определяем материалы, которые включают в себя явные или неявные требования к продукту. Рассматриваем пользовательские соглашения, соглашения об уровне обслуживания, рекламные тексты, тексты справки, руководства и тому подобные
  2. Анализируем индивидуальные требования и проясняем требования недостаточно ясные/размытые
  3. Тестируем выполнение каждого требования
  4. Если тестируем по явной спецификации, ожидаем ее выполнения от продукта, в противном случае приводим продукт в соответствие

Пользовательское тестирование

Вовлекаем пользователей

  1. Устанавливаем категории пользователей и их роли
  2. Определяем, что каждая категория пользователей будет делать (пользовательские истории), как она это будет делать и что получит в результате
  3. Получаем действительные пользовательские данные или вовлекаем реальных пользователей в тест
  4. В иных случаях регулярно симулируем поведение пользователей (будьте осторожны – легко представлять себя пользователем даже если вы не он)
  5. Действительно мощное пользовательское тестирование – когда вовлечены множество пользователей с различными ролями, а не только какой-нибудь один пользователь

Стресс-тестирование

Превосходим требования к продукту

  1. Ищем подсистемы и функции, которые уязвимы для перегрузок или могут быть «сломаны» при наличии сложных данных или в условиях ограниченных ресурсов
  2. Определяем данные и ресурсы, относящиеся к таким подсистемам
  3. Выбираем или генерируем данные или условия ограничения ресурсов: то есть большие или сложные структуры данных, большие нагрузки, тесты, которые запускаются надолго, сеты из множества тестов, урезанная системная память

Тестирование рисков

Представляем потенциальную проблему, затем ищем ее в реальности

  1. Какого рода проблемы может иметь продукт?
  2. Какие виды этих проблем важнее других? Сосредотачиваемся на них
  3. Если они действительно есть, как мы можем их обнаружить?
  4. Составляем список интересных проблем и разрабатываем тесты так, чтобы именно их обнаружить
  5. Может помочь консультация экспертов, проектная документация, прошлые ошибки, отчеты или эвристики оценки рисков

Потоковое тестирование

Делаем одну вещь за другой

  1. Выполняем несколько действий, связанных между собой, например, совершаем тур по модели состояний-переходов
  2. Не ресетим систему в процессе цепочечных действия
  3. Варьируем время выполнения и последовательность действий, пробуем многопоточность

Автоматические проверки

Проверяем дриллионы различных фактов

  1. Находим или разрабатываем инструменты, которые могут совершать множество действий и проверять множество фактов
  2. Рассматриваем инструменты, позволяющие частично автоматизировать тестовое покрытие
  3. Рассматриваем инструменты, позволяющие частично автоматизировать оракулов
  4. Рассматриваем инструменты, позволяющие частично автоматизировать детекторы
  5. Рассматриваем инструменты, позволяющие автоматически генерировать тестовые данные
  6. Рассматриваем инструменты, которые делают ручное тестирование более мощным

Тестирование по сценариям

Тестируем убедительную пользовательскую историю

  1. Начинаем со стиля мышления, охватывающего все, что происходит вокруг продукта
  2. Разрабатываем тесты, которые включают содержательные и сложные взаимодействия с продуктом
  3. Хороший тест по сценарию это история про то, как кто-то, кто имеет значение, может сделать что-то важное при помощи продукта

Leave a Reply

Your email address will not be published. Required fields are marked *