неділя, 13 травня 2012 р.

Архитектура тестового фреймворка для Behat/Mink

Добрый день, читатель.

В текущее время, у меня на проекте внедряется подход Behavior Driven Development
Хочу с вами поделится архитектурным решениям для тестирования с помощью Behat

В архитектуре тестового фреймворка используется стандартный подход. Вот такой:


но с небольшим вкраплением - связью с Behat и утилитой PageHelper
Собственно архитектура состоит из двух компонент. Первой что связывает нас с Behat, которая выглядит следующим образом:

Этот компонент всегда должен содержать клас FeatureContext и загрузает все класы как суб-контексты из второй компоненты.
Вторая компонента, состоит из контекстов для определений шагов тестирования приложения. Она выглядит следующим образом

Как видно с рисунка, то базовый клас имеет несколько зависимостей - зависимость на модель вашего приложения и на утилитный клас PageHelper. Последний будет расматриватся в следующем посте.  Зависимость на модель призвана облегчить Given шаги.

Вас наверное интересует, почему именно такая архитектура? Обоснования следующие:

  • Первый компонент позволяет разделять сценарии, которые относятся только к определенному бандлу, сохраняя видимость общих определений шагов. 
  • Второй компонент енкапсулирует код ваших шагов от общего функционала Behat
  • Все контексты подключаются как суб-контексты - что разделяет шаги на функциональные области. 
  • Создается общий репозиторий для обьектов с которыми работают субконтексты и статический мапинг страниц приложения
Минусы архитектуры:
  • Субконтексты нельзы наследовать.
  • Необходимо дополнительное время для поддержки двух компонент. 
  • Статический общий репозиторий. 

Немає коментарів:

Дописати коментар