Перейти к содержимому

dyarosh

Регистрация: 14 ноя 2014
Offline Активность: 27 окт 2015 11:35
-----

Мои темы

Как правильно тестировать write-акшены в CRUD? TDD, Symfony, PHPUnit

21 октября 2015 - 12:43

Всем привет!

 

 

Пишу RESTful API на Symfony. И покрываю все actions функциональными тестами. Даже, сначало пишу тесты, а потом пишу код. Использую для этих целей инструменты входящие в Symfony.

У меня возник вопрос с тестированием write-сервисов (Create, Update, Delete). Так как после успешного прогона они вносят изменения в БД и соотвественно, на втором прогоне сервисы Update и Delete вызывают ошибку.

 

Я вижу следующий выход (я так делал на одном проекте):

1. Настраиваю тестовую среду cо своей тестовой базой - в Symfony это предусмотрено.

2. Перед запуском тестов:

- грохаю старую тестовую базу

- создаю новую тестовую базу и таблицы

- делаю дамп демо-данных (т.е. записи которые я буду просматривать, редактировать и удалять)

3. Запускаю тесты.

 

Я так спокойно проверяю у себя локально во время разработки и на продакшн (пока-что dev) сервере в тестовом окружении, что мои правки работают и ничего не поламали.

Отсюда у меня возникает вопрос как мне проверить, продакшн окружение. Что все изменения удачно вылелись, и в том числе в базе данных?

Может есть возможность как-то откатывать изменения сделанные тестами?

 

Заранее спасибо.


Нерегулярные ошибки. Selenium Webdriver.

14 ноября 2014 - 08:19

Добрый день.

 

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

 

Например:

  • Позавчера: 5 тестов, запускаю эти тесты вручную все в порядке!
  • Вчера error: 2 теста(притом совершено другие), запускаю эти тесты вручную все в порядке!
  • Сегодня error: 4 теста (притом совершено другие), запускаю эти тесты вручную все в порядке!

 

И так с самого начала.

 

Выпадают следующие типы ошибок:

  • org.openqa.selenium.TimeoutException: Timed out after 30 seconds waiting for presence of any elements located by By.selector:
  • org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up
  • org.openqa.selenium.WebDriverException: Unable to bind to locking port 7055 within 45000 ms
  • org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary(/home/dmitriy/bin/firefox) on port 7063; process output follows: 

Если запускать тесты параллельно, то количество ошибок увеличивается в разы.

 

Большинство ошибок - это подключения к Firefox.  По ним, вроде тут уже говорилось, но решения пока нет. 

 

У меня мало опыта в написание функциональных тестов. И учусь я єтому набивая шишки. Это третий проект на Selenium. Первый был на Selenium IDE for PHP, два других на Selenium Webdriver.

 

Использую:

 

Ubuntu - 13.04

Java - 1.8.0_05

SeleniumWebdriver - 2.44.0 (Java)

Junit - 4.11

FireFox - 33.1

Xvfb - для запуска в фоне.

 

Запускаю: ant 1.9.2 и crontab

 

Как можно решить эти проблемы? Может быть я просто неправильно что-то делаю. Сталкивался кто-то с такими проблемами еще?

 

Спасибо.