Comments 68
Кажется, я нашел тестировалку, о которой мечтал.
Супер! прям для дибилов меня, спасибо!
Это божественно!
Спасибо. Это должно упростить жизньработу.
А что делать с drag&drop?
У меня к сожалению не завелось.
1. Прочитал доки по установке на Вашем сайте.
2. Установил пакет из pear.
3. Запустил codecept install через sudo
Все дальнейшие команды (codecept bootstrap, codecept buil, codecept run) не дают никаких результатов ни в пустой папке, ни в папке с каким либо проектом. Вообще команда codecept никак не реагирует ни на какие параметры, даже если ей передать произвольную строку.
1. Прочитал доки по установке на Вашем сайте.
2. Установил пакет из pear.
3. Запустил codecept install через sudo
Все дальнейшие команды (codecept bootstrap, codecept buil, codecept run) не дают никаких результатов ни в пустой папке, ни в папке с каким либо проектом. Вообще команда codecept никак не реагирует ни на какие параметры, даже если ей передать произвольную строку.
Забыл сказать. Система kubuntu 11.10, PHP 5.3.6-13ubuntu3.3
phpUnit устанавливал вручную, т.к. команда install ругнулась на старую версию PEAR Installer.
А планируется ли добавить класс TestGirl? )
А также TestBlond, который будет совершать действия, отличные от заданных в сценарии, и ожидать верного результата. :)
А по теме. Спасибо за работу. Единственный минус BDT, что покрыть все use case просто невозможно. Т.е. нет никакой гарантии что оно действительно работает.
О нем рассказывали на конференции по Symfony в Украине. Это были не Вы случаем?
Наконец-то для sf2 оформил :) жаль на симфоникамп не успел :)
Вопрос к автору как раз на эту тему: можете сказать, какие плюсы и минусы есть у Codeception по сравнению с Behat?
По описанию принципиальных отличий или преимуществ Codeception по сравнению с Behat вроде бы нет. Похоже, что это тот же Behat, только в профиль.
Ну тут скорее дело привычки. И то и то сценарный BDD, но мне проще писать PHP-код, а не сочинения на тему «каким я вижу сайт».
Ну а из принципиальных, behat занимается только приемочными тестами. Тут же вся инфраструктура, с модулями для чистки БД. Ну и наверняка, много отличий в мелочах. Например, Codeception автоматически сохраняет скриншот последней страницы, если тест не удался. Ну, или умеет эмулировать AJAX-запросы в режиме PHP-браузера. Все команды понимают как названия, так и CSS-селекторы…
Ну а из принципиальных, behat занимается только приемочными тестами. Тут же вся инфраструктура, с модулями для чистки БД. Ну и наверняка, много отличий в мелочах. Например, Codeception автоматически сохраняет скриншот последней страницы, если тест не удался. Ну, или умеет эмулировать AJAX-запросы в режиме PHP-браузера. Все команды понимают как названия, так и CSS-селекторы…
Твой тул со сценарным BDD не имеет почти ничего общего, кроме понятия сценария. Почитай на досуге: dannorth.net/whats-in-a-story/
Не-не-не, на RubyC была отличная презенташка, где рассказывалось, что BDD это Beer Driven Development. Так что, в такой вот расшифровке, оно очень даже верно.
А вообще, я использую термин, BDD не потому что он там уместен, а потому что так проще донести мысль. Может он и некорректен, но судя по всему, как ни крути, народ всё равно будет сравнивать с Behat.
А вообще, я использую термин, BDD не потому что он там уместен, а потому что так проще донести мысль. Может он и некорректен, но судя по всему, как ни крути, народ всё равно будет сравнивать с Behat.
Это 2 разные вещи. У автора — высокоуровневый тул для функционального тестирования. Behat — тул для тестирования бизнесс правил, описанных в виде поведенческих сценариев на языке, доступном для «непрограммистов».
Корректнее сравнивать этот тул с PHPUnit/PHPSpec+Mink, потому как он имеет больше общего с функциональными спецификациями (Spec BDD, Unit tests), нежели поведенческими сценариями (Scenario BDD).
Корректнее сравнивать этот тул с PHPUnit/PHPSpec+Mink, потому как он имеет больше общего с функциональными спецификациями (Spec BDD, Unit tests), нежели поведенческими сценариями (Scenario BDD).
Ок, а как его прикрутить к continuous integration server (Jenkins, Hudson и иже с ними)? Если оно пользует PHPUnit (скорее всего его части asserts и профайлинга тестов) — как заставить его писать отчёты по покрытию тестами и т.д. в файлики?
Пока что я его прикрутил только к TravisCI.
Насчет отчетов по покрытию тестами, я не совсем понял. Вы имеете ввиду, CodeCoverage? Если мы говорим о функциональных тестах, то они никогда не покроют код. А приемочные его даже дергать не будут.
Из того что есть: генерация отчетов в виде HTML и в виде репортов.
Насчет отчетов по покрытию тестами, я не совсем понял. Вы имеете ввиду, CodeCoverage? Если мы говорим о функциональных тестах, то они никогда не покроют код. А приемочные его даже дергать не будут.
Из того что есть: генерация отчетов в виде HTML и в виде репортов.
Если уж решили взяться за написание тестов «человеческим языком», то почему бы не использовать Gherkin? Это, на мой взгляд, горяздо более наглядный и гибкий способ описания сценариев.
Вот-вот :) Получается, что Codeception это тот же Behat, только без поддержки Gherkin.
А зачем нам ещё один Behat? ;)
Читаемый код это тоже человеческий язык. Хороший код читается без комментариев, а пишется быстрее текста. Например, через указанное автодополнение.
Хотя смотря, конечно, кто будет читать ваши тесты. Если их будут читать разработчики + менеджеры, то Codeception они осилят (плюс можно перевести текст в нормальный english), если текст будут читать заказчики, то, конечно Behat лучше.
Каждый тест можно ещё в таком виде представить:
I WANT TO SIGN IN
I am on page '/login'
I fill field ['signin[username]', 'davert']
I fill field ['signin[password]', 'qwerty']
I click 'LOGIN'
I see 'Welcome, Davert!'
Читаемый код это тоже человеческий язык. Хороший код читается без комментариев, а пишется быстрее текста. Например, через указанное автодополнение.
Хотя смотря, конечно, кто будет читать ваши тесты. Если их будут читать разработчики + менеджеры, то Codeception они осилят (плюс можно перевести текст в нормальный english), если текст будут читать заказчики, то, конечно Behat лучше.
Каждый тест можно ещё в таком виде представить:
I WANT TO SIGN IN
I am on page '/login'
I fill field ['signin[username]', 'davert']
I fill field ['signin[password]', 'qwerty']
I click 'LOGIN'
I see 'Welcome, Davert!'
Неужели это от того, что PHP-разработчики поголовно быдло-кодеры? Я считаю, что нет.
Вы так говорите, будто согласны с тем что PHP-разработчики быдло кодеры, но не согласны что из-за этого приложения не тестируют.
Вы так говорите, будто согласны с тем что PHP-разработчики быдло кодеры, но не согласны что из-за этого приложения не тестируют.
Они не тестируют, ибо нет хороших простых инструментов:
Что есть? «PHPUnit + Selenium». Буду ли я стрелять из пушки по воробьям, если, допустим, у меня небольшой сайт на друпале и мне совершенно не хочется заморачиваться в установке этих двух монстров. Человеку не привычному к PHPUnit настройка этой связки может трудной, а в итоге напрочь отобьет желание что-то тестировать. А самое глваное — нет необходимости гонять все тесты в Selenium.
Тот же Behat+Mink намного лучше, но он, как мне кажется, всё равно пока больше для гиков.
Что есть? «PHPUnit + Selenium». Буду ли я стрелять из пушки по воробьям, если, допустим, у меня небольшой сайт на друпале и мне совершенно не хочется заморачиваться в установке этих двух монстров. Человеку не привычному к PHPUnit настройка этой связки может трудной, а в итоге напрочь отобьет желание что-то тестировать. А самое глваное — нет необходимости гонять все тесты в Selenium.
Тот же Behat+Mink намного лучше, но он, как мне кажется, всё равно пока больше для гиков.
А для других платформ, на Ваш взгляд, есть хорошие инструменты?
Ну, далеко не на всех платформах пишут сайты )
А так, впринципе, то на Ruby, что RSpec, что TestUnit, что Cucumber — все они хороши. Из-за особенностей языка, его инфраструктуры и сообщества.
Будем надеяться, что в PHP тулзы для тестирвоания будут развиваться.
А так, впринципе, то на Ruby, что RSpec, что TestUnit, что Cucumber — все они хороши. Из-за особенностей языка, его инфраструктуры и сообщества.
Будем надеяться, что в PHP тулзы для тестирвоания будут развиваться.
В том же Ruby (on Rails), как выше уже написали, существует прекрасная связка Cucumber+Capybara+RSpec. и к оным существует over 9000 разнообразных примочек, чтобы жизнь тестера была похожа на сказку. В свое время, когда еще приходилось немного кодить на php, я был дико обрадован появлению Behat, т.к. уже тогда слабо себе представлял разработку без автоматизированного тестирования.
На первый взгляд не увидел преимуществ перед Behat и Mink. Добавьте, пожалуйста, сравнение, если этот инструмент действительно в чём-то лучше.
Осталось прикрутить всё к Yii… :D
Попробуйте сначала с приемочных тестов — они универсальны.
А если нужна тесная интеграция с Yii, то можете взять и интегрировать:
codeception.com/docs/05-FunctionalTests#integrating-other-framwork
Если будут вопросы, стучитесь в скайп: davert.ua
А если нужна тесная интеграция с Yii, то можете взять и интегрировать:
codeception.com/docs/05-FunctionalTests#integrating-other-framwork
Если будут вопросы, стучитесь в скайп: davert.ua
а на CodeIgniter заработает?
Приемочный тест не завелся на ZF
Ткните мордой, что я не так делаю, пожалуйста.
Mink ставил отдельно
Exception thrown Zend\Http\Exception\InvalidArgumentException:
Invalid parameter type passed as Cookie
Ткните мордой, что я не так делаю, пожалуйста.
Mink ставил отдельно
сделал все по инструкции
В ответ получаю
There was 1 failure:
Couldn't test front page of my site (StartPageCept.php)
Method StartPageCept.php does not exist
В ответ получаю
There was 1 failure:
Couldn't test front page of my site (StartPageCept.php)
Method StartPageCept.php does not exist
Ни у кого проблем с utf8 не возникало?
Решил поиграть с codeception, но заметил интересную зависимость. Если передать в метод see() метку с национальными символами в utf-8, то всё работает правильно до момента пока вторым параметром не указать селектор области поиска.
Пример:
$I->see('Москва');
> * I see «Москва»
> OK
$I->see('Москва', 'div');
> 1. I see ["\u041c\u043e\u0441\u043a\u0432\u0430",«div»]
>
>FAILURES!
Решил поиграть с codeception, но заметил интересную зависимость. Если передать в метод see() метку с национальными символами в utf-8, то всё работает правильно до момента пока вторым параметром не указать селектор области поиска.
Пример:
$I->see('Москва');
> * I see «Москва»
> OK
$I->see('Москва', 'div');
> 1. I see ["\u041c\u043e\u0441\u043a\u0432\u0430",«div»]
>
>FAILURES!
Какой средой пользуется уважаемый автор? Спасибо за лаконичный инструмент, такого сильно не хватало.
То есть ОС? Сижу в Windows в ожидании Ubuntu 12 (громко скорбя над упавшим Оцелотом), тестю всё как в винде, так и в под виртуалкой в lubuntu.
Codeception покрыт тестами. Они через CI-сервер гоняются под линуксом с использованием Selenium, MySQL, Sqlite и в PHP 5.3, 5.4.
Codeception покрыт тестами. Они через CI-сервер гоняются под линуксом с использованием Selenium, MySQL, Sqlite и в PHP 5.3, 5.4.
Или IDE? Тогда PHPStorm
Подозреваю, что в Netbeans, Eclipse разрабатывать будет так же удобно )
Подозреваю, что в Netbeans, Eclipse разрабатывать будет так же удобно )
А могу я потестировать вебсервис с помощью Acceptance test? Например, постим данные на урл и ассертим json/лезем в бд.
Не поверите, недавно как раз добавил модули для REST и SOAP тестирования.
Пока правда нету развернутых гайдов по их использованию, но уже достаточно документированы.
codeception.com/06-19-2012/testing-webservices.html
Пока правда нету развернутых гайдов по их использованию, но уже достаточно документированы.
codeception.com/06-19-2012/testing-webservices.html
Не могу найти инфу на тему как лучше сделать отдельный конфиг для теста / группы тестов.
Можно конечно инклудить свой, но красивше было бы заюзать системный yml конфиг
Не подскажете как доставать значения из yml в пространство теста?
PS: использую только приемочные для тестирования REST сервисов
Можно конечно инклудить свой, но красивше было бы заюзать системный yml конфиг
Не подскажете как доставать значения из yml в пространство теста?
PS: использую только приемочные для тестирования REST сервисов
Sign up to leave a comment.
Codeception — тестирование по-новому