Pull to refresh

Comments 68

Кажется, я нашел тестировалку, о которой мечтал.
Вот она, вооот онааа, тестировалка моей мечты!!!
Супер! прям для дибилов меня, спасибо!
Спасибо. Это должно упростить жизньработу.
выбирай одно из двух: жизнь или работу?
или вся твоя жизнь — это одна большая работа??
Не не не. Только работу. Просто я забыл что у меня сейчас HTML в комментариях не работает :)
Если я правильно понимаю, это уже UI, основаный на js — тут уже отдельная методика и средства тестирования.
У меня к сожалению не завелось.
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.
ой. Старая версия PEAR Installer. Что не обходимо установить в виде pear пакетов: Mink и Symfony Components.
Я постараюсь по-быстрому добавить возможность установки через Composer.
Пока советую обновить PEAR Installer. Танцы с бубнами, конечно, но пока это лучший способ.
А планируется ли добавить класс TestGirl? )
А также TestBlond, который будет совершать действия, отличные от заданных в сценарии, и ожидать верного результата. :)
TestBlond нужно будет ещё прогонять через TestGuy чтобы удостовериться что оно работает )
А по теме. Спасибо за работу. Единственный минус BDT, что покрыть все use case просто невозможно. Т.е. нет никакой гарантии что оно действительно работает.
Угу. Но могу ещё про юнит-тесты рассказать ) Они там тоже есть.
О нем рассказывали на конференции по Symfony в Украине. Это были не Вы случаем?
Тоже помню этот доклад. С того времени начал внедрять в свои проекты
Таки да. Только парней с тех пор развелось больше )
UFO just landed and posted this here
Наконец-то для sf2 оформил :) жаль на симфоникамп не успел :)
Ой, я только недавно под symfony2 оформил. Что поделаешь — мало с ним работаю :( Но кстати, важно не то, что Symfony2 завелся, а то, что через BrowserKit есть универсальный доступ практически ко всем фреймворкам.
Советую еще всем, кому понравилось, посмотреть на BDD Framework Behat.
Вопрос к автору как раз на эту тему: можете сказать, какие плюсы и минусы есть у Codeception по сравнению с Behat?
По описанию принципиальных отличий или преимуществ Codeception по сравнению с Behat вроде бы нет. Похоже, что это тот же Behat, только в профиль.
Ну тут скорее дело привычки. И то и то сценарный BDD, но мне проще писать PHP-код, а не сочинения на тему «каким я вижу сайт».

Ну а из принципиальных, behat занимается только приемочными тестами. Тут же вся инфраструктура, с модулями для чистки БД. Ну и наверняка, много отличий в мелочах. Например, Codeception автоматически сохраняет скриншот последней страницы, если тест не удался. Ну, или умеет эмулировать AJAX-запросы в режиме PHP-браузера. Все команды понимают как названия, так и CSS-селекторы…
Твой тул со сценарным BDD не имеет почти ничего общего, кроме понятия сценария. Почитай на досуге: dannorth.net/whats-in-a-story/
Не-не-не, на RubyC была отличная презенташка, где рассказывалось, что BDD это Beer Driven Development. Так что, в такой вот расшифровке, оно очень даже верно.

А вообще, я использую термин, BDD не потому что он там уместен, а потому что так проще донести мысль. Может он и некорректен, но судя по всему, как ни крути, народ всё равно будет сравнивать с Behat.
… а behat будут называть фреймворком для функционального тестирования
Чтобы не было никаких претензий к терминологии:

image

image
Это 2 разные вещи. У автора — высокоуровневый тул для функционального тестирования. Behat — тул для тестирования бизнесс правил, описанных в виде поведенческих сценариев на языке, доступном для «непрограммистов».

Корректнее сравнивать этот тул с PHPUnit/PHPSpec+Mink, потому как он имеет больше общего с функциональными спецификациями (Spec BDD, Unit tests), нежели поведенческими сценариями (Scenario BDD).
Ок, а как его прикрутить к continuous integration server (Jenkins, Hudson и иже с ними)? Если оно пользует PHPUnit (скорее всего его части asserts и профайлинга тестов) — как заставить его писать отчёты по покрытию тестами и т.д. в файлики?
Пока что я его прикрутил только к TravisCI.

Насчет отчетов по покрытию тестами, я не совсем понял. Вы имеете ввиду, 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!'
Интересно было было бы увидеть комментарий автора
А зачем нам ещё один Behat? ;)

Спустя вот столько лет, когда Gherkin все же завезли в кодцепшн.

Что же повлияло?)
Неужели это от того, что PHP-разработчики поголовно быдло-кодеры? Я считаю, что нет.
Вы так говорите, будто согласны с тем что PHP-разработчики быдло кодеры, но не согласны что из-за этого приложения не тестируют.
Они не тестируют, ибо нет хороших простых инструментов:

Что есть? «PHPUnit + Selenium». Буду ли я стрелять из пушки по воробьям, если, допустим, у меня небольшой сайт на друпале и мне совершенно не хочется заморачиваться в установке этих двух монстров. Человеку не привычному к PHPUnit настройка этой связки может трудной, а в итоге напрочь отобьет желание что-то тестировать. А самое глваное — нет необходимости гонять все тесты в Selenium.

Тот же Behat+Mink намного лучше, но он, как мне кажется, всё равно пока больше для гиков.
А для других платформ, на Ваш взгляд, есть хорошие инструменты?
Ну, далеко не на всех платформах пишут сайты )

А так, впринципе, то на Ruby, что RSpec, что TestUnit, что Cucumber — все они хороши. Из-за особенностей языка, его инфраструктуры и сообщества.

Будем надеяться, что в PHP тулзы для тестирвоания будут развиваться.
В том же Ruby (on Rails), как выше уже написали, существует прекрасная связка Cucumber+Capybara+RSpec. и к оным существует over 9000 разнообразных примочек, чтобы жизнь тестера была похожа на сказку. В свое время, когда еще приходилось немного кодить на php, я был дико обрадован появлению Behat, т.к. уже тогда слабо себе представлял разработку без автоматизированного тестирования.
На первый взгляд не увидел преимуществ перед Behat и Mink. Добавьте, пожалуйста, сравнение, если этот инструмент действительно в чём-то лучше.
Ну см. комментарии выше. Но если вы уже используете Behat, то я не буду отговаривать вас )
Осталось прикрутить всё к Yii… :D
Попробуйте сначала с приемочных тестов — они универсальны.

А если нужна тесная интеграция с Yii, то можете взять и интегрировать:
codeception.com/docs/05-FunctionalTests#integrating-other-framwork

Если будут вопросы, стучитесь в скайп: davert.ua
Опять таки, комментарий выше. Если тестировать с Goutte или в Selenium, оно обязательно заработает. Ну а список поддерживаемых фреймворков будет постепенно обновляться.
Приемочный тест не завелся на ZF

Exception thrown Zend\Http\Exception\InvalidArgumentException:
Invalid parameter type passed as Cookie

Ткните мордой, что я не так делаю, пожалуйста.
Mink ставил отдельно
Первое что стоит попробовать запустить с опцией --debug и показать stack trace.
сделал все по инструкции
В ответ получаю

There was 1 failure:

Couldn't test front page of my site (StartPageCept.php)
Method StartPageCept.php does not exist

Method? Так сходу сложно представить что не так.
Может в скайпе обсудим?

Мой: davert.ua
Ни у кого проблем с utf8 не возникало?

Решил поиграть с codeception, но заметил интересную зависимость. Если передать в метод see() метку с национальными символами в utf-8, то всё работает правильно до момента пока вторым параметром не указать селектор области поиска.
Пример:

$I->see('Москва');

> * I see «Москва»
> OK

$I->see('Москва', 'div');

> 1. I see ["\u041c\u043e\u0441\u043a\u0432\u0430",«div»]
>
>FAILURES!
Если что, лучше создавать Issues в GitHub или в секции Q&A. А то этот топик скоро затеряется в дубрях Хабра )

Я так подозреваю, вы приемочный тест писали? Вечером посмотрю в чем проблема.
Какой средой пользуется уважаемый автор? Спасибо за лаконичный инструмент, такого сильно не хватало.
То есть ОС? Сижу в Windows в ожидании Ubuntu 12 (громко скорбя над упавшим Оцелотом), тестю всё как в винде, так и в под виртуалкой в lubuntu.

Codeception покрыт тестами. Они через CI-сервер гоняются под линуксом с использованием Selenium, MySQL, Sqlite и в PHP 5.3, 5.4.
Или IDE? Тогда PHPStorm
Подозреваю, что в Netbeans, Eclipse разрабатывать будет так же удобно )
Да, я IDE имел в виду. Спасибо еще раз.
А могу я потестировать вебсервис с помощью Acceptance test? Например, постим данные на урл и ассертим json/лезем в бд.
Не поверите, недавно как раз добавил модули для REST и SOAP тестирования.
Пока правда нету развернутых гайдов по их использованию, но уже достаточно документированы.

codeception.com/06-19-2012/testing-webservices.html
Не могу найти инфу на тему как лучше сделать отдельный конфиг для теста / группы тестов.
Можно конечно инклудить свой, но красивше было бы заюзать системный yml конфиг
Не подскажете как доставать значения из yml в пространство теста?

PS: использую только приемочные для тестирования REST сервисов
Пока никак. Но сейчас как раз усиленно думаю в этом направлении. Думаю, скоро, появится такая возможность.
Sign up to leave a comment.

Articles