← Назад ко всем вопросам

Cause–effect graphing (причинно-следственные связи)

1️⃣ Как кратко ответить

Cause-effect graphing — это метод тест-дизайна, который используется для идентификации и визуализации логических связей между входными условиями (причинами) и ожидаемыми результатами (следствиями) в программном обеспечении. Он помогает выявить важные комбинации условий для тестирования и минимизировать количество тестов, сохраняя при этом покрытие.

2️⃣ Подробное объяснение темы

Cause-effect graphing — это метод, который позволяет тестировщикам систематически анализировать и визуализировать логические связи между различными входными условиями и их влиянием на поведение системы. Этот метод особенно полезен для сложных систем, где множество входных данных могут взаимодействовать друг с другом, создавая различные результаты.

Основные этапы метода

  1. Идентификация причин и следствий:

    • Причины — это входные условия или события, которые могут повлиять на систему. Например, ввод пользователя, состояние системы или внешние события.
    • Следствия — это выходные результаты или состояния системы, которые зависят от причин. Например, успешное выполнение операции, сообщение об ошибке или изменение состояния системы.
  2. Построение графа:

    • Граф состоит из узлов и ребер. Узлы представляют причины и следствия, а ребра — логические связи между ними.
    • Логические операторы, такие как AND, OR, NOT, используются для описания условий, при которых следствие происходит.
  3. Определение ограничений и условий:

    • Определяются ограничения, которые могут влиять на комбинации причин. Например, некоторые причины могут быть взаимоисключающими.
  4. Генерация тестовых случаев:

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

Пример

Рассмотрим простой пример: система, которая отправляет уведомление пользователю, если выполнены следующие условия:

  • Пользователь подписан на уведомления (C1).
  • Время отправки уведомлений (C2) — в рабочие часы.

Следствие (E1): Уведомление отправлено.

Граф будет выглядеть следующим образом:

  • Узлы C1 и C2 связаны с узлом E1 через логический оператор AND, так как оба условия должны быть выполнены для отправки уведомления.

Применение

Cause-effect graphing используется для:

  • Оптимизации количества тестов, сохраняя при этом полное покрытие логики.
  • Выявления сложных логических ошибок, которые могут быть упущены при других методах тестирования.
  • Улучшения понимания логики системы и ее поведения при различных комбинациях входных данных.

Пример кода

Хотя cause-effect graphing в основном является концептуальным методом, его результаты могут быть использованы для автоматизации тестирования. Например, на основе графа можно сгенерировать тестовые сценарии в виде кода:

def send_notification(is_subscribed, is_working_hours):
    # Проверка условий: пользователь подписан и время рабочее
    if is_subscribed and is_working_hours:
        return "Notification sent"
    else:
        return "No notification"
​
# Тестовые случаи на основе графа
test_cases = [
    (True, True),   # Оба условия выполнены
    (True, False),  # Подписан, но не рабочее время
    (False, True),  # Не подписан, но рабочее время
    (False, False)  # Ни одно условие не выполнено
]
​
for is_subscribed, is_working_hours in test_cases:
    result = send_notification(is_subscribed, is_working_hours)
    print(f"Subscribed: {is_subscribed}, Working Hours: {is_working_hours} => {result}")
  • Функция send_notification проверяет условия и возвращает результат.
  • test_cases содержит все возможные комбинации условий.
  • Цикл проходит по всем тестовым случаям, проверяя каждую комбинацию и выводя результат.

Cause-effect graphing помогает структурировать процесс тестирования, делая его более эффективным и целенаправленным.

Тема: Техники тест-дизайна и анализ
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки