Тест-дизайн (как проверить)

Цель - создать оптимальное тестовое покрытие при минимуме тест-кейсов.

Тест-дизайн нужно начинать с размышлений о том, что и как нужно проверить:

  • определить, что нужно проверить;
  • как я пойму, что это работает;
  • каким способом (инструментом) можно это проверить;
  • что будет если... (если отправить не заполненную форму);
  • добавить «НЕ» к каждому слову в требовании (не цифра, не поле, не вводит).

Техники тест-дизайна

Цель - сократить количество входных значений.

Алгоритм

  • определить классы эквивалентности;
  • выбрать одного представителя от каждого класса.

Советы

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

Цель - проверить границы эквивалентных классов. Тесты строятся с ориентацией на использование тех величин, которые определяют предельные характеристики проверяемой системы.

Типы границ

  • физические – законы природы;
  • логические – здравый смысл;
  • произвольные – созданы нашими разработчиками;
  • технологические – созданы сторонними разработчиками.

Алгоритм

  • выделить классы эквивалентности;
  • определить граничные значения этих классов;
  • понять, к какому классу будет относиться каждая граница;
  • выяснить величину шага;
  • для каждой границы определить значения до границы, на границе, и сразу после границы с учетом величины шага;
  • количество тестов = количество границ х 3.

Табличное представление применения техник Эквивалентные классы и Граничные значения (скачать xlsx)

Название поля Тип поля ЭК валидные ЭК невалидные ГЗ валидные ГЗ невалидные ТЗ валидные ТЗ невалидные
имя строка А-Я, а-я A-z, 0-9, пробел, спец символы 3, 20 пусто, 2, 21 Яна, Гитинамагомедгаджияв пусто, Ян, Анна-Мария, Гитинамагомедгаджиявв, три пробела, !/*, Jon, G20

* ЭК - эквивалентные классы; ГЗ - граничные значения; ТЗ - тестовые значения

Цель - анализ граничных значений классов эквивалентности, зависимых между собой параметров.

Алгоритм

  • определить зависимые параметры;
  • определить классы эквивалентности;
  • заполнить таблицу значениями на границе;
  • заполнить таблицу приграничными значениями;
  • заполнить таблицу валидными значениями.

Табличное представление техники Доменный анализ (скачать xlsx)

Цель - сократить количество входных значений, проверить связи независимых между собой параметров.

Методика генерации тестовых данных основана на предположении, что большинство дефектов (98%) возникает при взаимодействии не более чем ДВУХ параметров, например, цвет и марка автомобиля.
Эффективность методики тем выше, чем больше параметров.

Инструменты

Цель - связать результат с входными параметрами.

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

Алгоритм

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

Пример

Входные параметры ТС 1 ТС 2 ТС 3 ТС 4
Студент да да нет нет
Есть дети да нет да нет
Скидка, % 50 25 10 нет

Цель - покрытие операторов программы:

  • каждый узел тестируется 1 раз;
  • самый слабый критерий;
  • 1 тест (1-2-3-4-5).

  1
 /  |
2  |
 \  |
  3
 /  |
4  |
 \  |
  5

Цель - покрытие ветвлений программы:

  • каждый ветка тестируется 1 раз;
  • более сильный, чем покрытие операторов;
  • пропускает "мертвый код" (узел №6);
  • 2 теста (1-2-3-4-5), (1-3-5).

  1
 /  |
2  |
 \  |
  3   6
 /  |
4  |
 \  |
  5

Цель - покрытие путей программы:

  • все возможные пути программы тестируются 1 раз;
  • самое сильное покрытие;
  • при наличии цикла, он выполняется 3 раза;
  • 4 теста (1-2-3-4-5), (1-3-5), (1-2-3-5), (1-3-4-5).

  1
 /  |
2  |
 \  |
  3
 /  |
4  |
 \  |
  5

Цель - проверить, чтобы оператор условия хотя бы один раз принял значение TRUE или FALSE.

Алгоритм

  • каждое логическое условие должно принимать все возможные значения;
  • каждая компонента должна хотя бы один раз принимать все возможные значения;
  • должно быть показано независимое влияние каждой из компонент на значение логического условия, т.е. влияние при фиксированных значениях остальных компонент.

Пример

1. Возраст больше 18 лет (А>18)

Результат А>18
T T
F F

2. Возраст больше 18 лет и меньше 40 лет (А>18 & B<40)

Результат (И) А>18 B<40
T T T
F T F
F F T

3. Возраст больше 18 лет и меньше 40 лет или студент ((А>18 & B<40) || C)

Результат (ИЛИ) Результат (И) С=студент
T T F
T F T
F F F
Результат А>18 B<40 С=студент
T T T F
T T F T
F F T F

Цель - проверить поведение одного определенного объекта.

Диаграмма определяет:

  • состояния, в которых объект может находиться;
  • события, которые могут возникнуть во время работы с объектом.

Алгоритм

  • определить состояния объекта;
  • определить события;
  • определить точку входа и точку выхода.

Инструменты UML

Цель - проверить функциональные цепочки бизнес-требований на верхнем уровне детализации (Е2Е тесты).

Метод включает в себя создание и последующий анализ ряда мини-сценариев, которые в свою очередь проверяют комбинации требований на уровне системы.

Каждый сценарий использования системы:

  • описывает последовательность действий, в том числе варианты (основной, альтернативные), которые объект может выполнить в результате взаимодействия с действующими лицами;
  • описывает условия отказа и его обработку;
  • имеет начальную точку, набор дискретных шагов и критерий выхода;
  • определяет поведение системы или других семантических объектов без выявления их внутренней структуры;
  • не проверяют подробно отдельные элементы интерфейса;
  • не проверяют комбинации данных при заполнении форм;
  • не пытаются сломать систему.

Алгоритм

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

Вариант использования описывает поведение системы при ее ответах на запрос одного из участников (действующее лицо) в различных условиях. Действующее лицо инициирует взаимодействие с системой, чтобы добиться некоторой цели. Система отвечает, соблюдая интересы всех участников.

У действующего лица есть цель, а система должна помогать действующему лицу достичь этой цели. Некоторые сценарии приводят к достижению заданной цели (успех); другие заканчиваются неудачей, если цель оказывается недостижимой. Каждый сценарий содержит последовательность шагов, показывающих, как раскрываются действия и взаимодействия. Вариант использования собирает все эти сценарии вместе, показывая все пути, которые могут привести или не привести к цели.

В сценарии успеха интересы участников удовлетворяются. В сценарии неудачи все интересы защищаются в соответствии с гарантиями системы. Сценарий завершается, когда все интересы участников удовлетворены или защищены.

Виды действий:

  • взаимодействие между двумя действующими лицами, при котором информация может передаваться назад и вперед;
  • проверка достоверности, чтобы защитить интересы одного из участников;
  • изменение внутреннего состояния для защиты интереса участника.

Пример

A. Варианты использования:

1. Пользователь выбирает меню "Создать кабинет"

2. Система отображает форму создания кабинета

3. Пользователь вводит данные

3а. Пользователь нажимает "Отмена"

4. Пользователь нажимает "Сохранить"

4а. Пользователь нажимает "Отмена"

5. Система проверяет введенные данные

6. Система создает новую запись в базе данных

6а. Система выдает сообщение об ошибке

7. Система выдает сообщение об успешном создании кабинета

Б. Табличное представление:

№ варианта ТС 1 ТС 2 ТС 3 ТС 4
1 1 1 1 1
2 2 2 2 2
3 3 3 3
4 4 х 4
5 5 х 5
6 6
7 7 х
- х

Тестирование бизнес-циклов

Советы:

  • принимать во внимание реальную проблему;
  • экономить время, выбирая самую быструю из удовлетворяющих методик;
  • тестирование бизнес-циклов не эффективно;
  • таблица принятия решений - для зависимых параметров и одного перехода;
  • диаграмма состояний и переходов - когда много переходов;
  • основанные на опыте техники, необходимо комбинировать с техниками на покрытие:
    • если есть сложные условия – покрыть ветви, покрыть условия;
    • если есть граничные значения – провести граничный анализ;
    • если есть процесс – покрыть все пути.

Чек-лист - список проверок, которые нужно выполнить.
Используется в тест-дизайне для проектирования высокоуровневых тестов и не содержит реализацию (отсутствуют шаги, ожидаемый результат, тестовые данные).
Составляется в произвольной форме, как на продукт в целом, так и на его отдельный компонент.

Тест-кейс - атомарный тест, содержащий реализацию: шаги, ожидаемый результат, тестовые данные.
Приоритетность создания тест-кейсов:

  • стандартный сценарий + корректные данные;
  • альтернативный сценарий + корректные данные;
  • стандартный сценарий + НЕкорректные данные;
  • альтернативный сценарий + НЕкорректные данные;
  • НЕстандартный сценарий + корректные данные (работа в двух вкладках браузера);
  • работа в НЕобычных условиях: отключены картинки, JavaScript, низкая скорость передачи данных в сети Интернет (нестабильность), устаревшая версия браузера, быстрое переключение (перетаскивание), много кликов на один элемент.

Матрица трассировки требований - таблица взаимосвязи требования и тест-кейса.
Позволяет визуализировать покрытие требований тестами, определить уровень покрытости требований и уровень избыточности тестов, обнаружить зависимости.
Составляется в произвольной форме, как на продукт в целом, так и на его отдельный компонент.

Скачать xlsx