<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр / Комментарии к посту «Экстремальное программирование, знакомство с Behavior Driven Development и RSpec» в блоге «Тестирование»</title>
	<link>http://habrahabr.ru/rss/post/52929/</link>
	<description><![CDATA[Новые комментарии к посту «Экстремальное программирование, знакомство с Behavior Driven Development и RSpec» в блоге «Тестирование»]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sat, 11 Feb 2012 16:26:25 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	

	
	
	
	
	
		
	
		<item>
			<title>28.02.2009 20:44:59 NaTTs</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1413132</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1413132</link>
			<description><![CDATA[<a href="http://railsmaniac.com/development/rails/2009/02/bdd-on-rails-1/">Еще про test-driven на ruby on rails</a>.]]></description>
			<pubDate>Sat, 28 Feb 2009 20:44:59 GMT</pubDate>
			<author>NaTTs</author>
		</item>
	

	
		<item>
			<title>26.02.2009 15:44:26 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407531</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407531</link>
			<description><![CDATA[И сразу же встает другой: зачем архитектору описывать спецификацию на понятном бизнесу языке? Ему куда как проще в терминах тестов все описать.]]></description>
			<pubDate>Thu, 26 Feb 2009 15:44:26 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 15:14:04 VasilioRuzanni</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407369</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407369</link>
			<description><![CDATA[Здесь встает вопрос ролей. Назовем этих людей не заказчиком и аналитиком, а более общим термином — «owner». В случае системных фич, owner'ом может быть архитектор, технический руководитель и разработчики.]]></description>
			<pubDate>Thu, 26 Feb 2009 15:14:04 GMT</pubDate>
			<author>VasilioRuzanni</author>
		</item>
	

	
		<item>
			<title>26.02.2009 15:01:24 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407288</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407288</link>
			<description><![CDATA[Об этом и речь: если есть спецификация для тестирования системной фичи, то по определению, она должна быть написана на языке бизнеса, и скорее всего писать ее заказчику или аналитику.]]></description>
			<pubDate>Thu, 26 Feb 2009 15:01:24 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:56:12 DYPA</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407259</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407259</link>
			<description><![CDATA[ну в php есть вообще проблема с нормальным TDD фреймворком, для phpunit нет человекопонятного гуя + вагон пир зависимостей, simpletest очень медленно развивается в trunk, тк нет интереса разработчиков, а интересующихся сразу же переманивают к phpunit показывая икону zend framework<br/>
<br/>
phpspec я привел лишь как пример уже работающего фреймворка для тех кто хочет пробнуть свои силы.]]></description>
			<pubDate>Thu, 26 Feb 2009 14:56:12 GMT</pubDate>
			<author>DYPA</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:51:04 VasilioRuzanni</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407232</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407232</link>
			<description><![CDATA[Отдельно об этом:<br/>
<br/>
«Согласен, что любую системную фичу можно вытащить на уровень бизнеса, не знаю будут ли они только вам благодарны, скорее скажут: это ваше дело какие там библиотеки используются.»<br/>
<br/>
Речь вовсе не идет о том, что что-то куда-то вытаскивать. Не нужно системные фичи на уровень бизнеса вытаскивать. Я говорю о том, что системные фичи точно так же, как и бизнес-логику, можно тестировать с помощью этих спецификаций.]]></description>
			<pubDate>Thu, 26 Feb 2009 14:51:04 GMT</pubDate>
			<author>VasilioRuzanni</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:50:45 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407230</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407230</link>
			<description><![CDATA[по мне так там сильно все притянуто за уши. Отличие лишь в том, что framework позволяет название метода разложить в текст (расставить пробелы).<br/>
<br/>
а спецификация все равно пишется на PHP, тестировщикам и заказчикам это явно не понравится. А как разработчику мне все равно как будет текст написан camel-ом или через пробел.]]></description>
			<pubDate>Thu, 26 Feb 2009 14:50:45 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:49:41 VasilioRuzanni</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407224</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407224</link>
			<description><![CDATA[Тогда, возможно, да. Если это действительно общие спецификации (по крайней мере те из них, которые касаются предметной области, а не системных фич) — то BDD — это немного другое, чем TDD. Однако, считаю, что часть BDD является полным аналогом TDD.<br/>
<br/>
Я покопаю тему концепции BDD еще.<br/>
<br/>
Отдельно об этом:<br/>
<br/>
]]></description>
			<pubDate>Thu, 26 Feb 2009 14:49:41 GMT</pubDate>
			<author>VasilioRuzanni</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:45:06 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407201</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407201</link>
			<description><![CDATA[Согласен, что любую системную фичу можно вытащить на уровень бизнеса, не знаю будут ли они только вам благодарны, скорее скажут: это ваше дело какие там библиотеки используются.<br/>
<br/>
«Тестировщики и заказчики — это уже последующий этап (если там и используется некая схожая методика — то она все равно служит другим целям, нежели BDD как метод разработки).»<br/>
<br/>
Вот тут у Вас важная ошибка в суждении. Почитайте определение BDD, оно именно для всех, объединяет понимание для всех ролей на уровне общих спецификаций.]]></description>
			<pubDate>Thu, 26 Feb 2009 14:45:06 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:38:40 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407156</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407156</link>
			<description><![CDATA[Да, да, классический случай: <br/>
<br/>
— мы используем Agile!<br/>
— а кто у вас Product Owner?<br/>
— ну как же, менеджер проекта…<br/>
<br/>
Если уж и писать о методике и бросаться фразами «чем отличается от TDD», то нужно суть излагать.]]></description>
			<pubDate>Thu, 26 Feb 2009 14:38:40 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:38:13 VasilioRuzanni</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407153</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407153</link>
			<description><![CDATA[Так, я подумаю, как донести свою точку зрения :)<br/>
<br/>
Но сразу могу сказать про последний абзац.<br/>
«Как известно, помимо бизнеса в реальном приложении масса сугубо технических задач, которые бизнесу вообще до фонаря.»<br/>
<br/>
Можете представить всю системную часть как «бизнес-логику» работы вашей же архитектуры, системы.<br/>
<br/>
Я думаю, что спецификация на модуль (указано у вас, как одна из составляющий TDD) — это одно и то же, что и спецификация-бизнес-описание в BDD.<br/>
Грубо говоря, я думаю, что мы и юнит-тесты можем использовать для проверки бизнес-правил, в то время как BDD-правила для проверки системных алгоритмов.<br/>
<br/>
Тестировщики и заказчики — это уже последующий этап (если там и используется некая схожая методика — то она все равно служит другим целям, нежели BDD как метод разработки).<br/>
<br/>
Ибо тесты также точно описывают бизнес-поведение системы. С точки зрения процесса разработки, думаю, это просто 2 разных способа делать одно и то же.<br/>
<br/>
Наверное, для наглядности надо будет рассмотреть какой-нибудь пример.]]></description>
			<pubDate>Thu, 26 Feb 2009 14:38:13 GMT</pubDate>
			<author>VasilioRuzanni</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:35:53 iv_s</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407141</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407141</link>
			<description><![CDATA[Я бы вообще в Ruby перенес, про RSpec ведь. Жалко в два блога поместить нельзя.]]></description>
			<pubDate>Thu, 26 Feb 2009 14:35:53 GMT</pubDate>
			<author>iv_s</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:34:02 iv_s</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407127</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407127</link>
			<description><![CDATA[Понял причину нашего спора:) Вы смотрите на TDD/BDD более широко, с точки зрения общего цикла разработки ПО. Эта же статья и сам фреймворк RSpec нацелены на BDD только в контексте написания кода.<br/>
Для менеджера BDD одно, для программиста другое:)]]></description>
			<pubDate>Thu, 26 Feb 2009 14:34:02 GMT</pubDate>
			<author>iv_s</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:31:10 DYPA</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407115</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407115</link>
			<description><![CDATA[phpшникам стоит глянуть на пример <a href="http://www.phpspec.org/">www.phpspec.org/</a> сразу станет ясна суть]]></description>
			<pubDate>Thu, 26 Feb 2009 14:31:10 GMT</pubDate>
			<author>DYPA</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:28:21 sirmakc</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407095</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407095</link>
			<description><![CDATA[Темы TDD, BDD и все, что за ними тянется(unit test, CI, refactoring и так далее) настолько обширны, что пытаться их изложить в какой-то одной статье неблагодарное дело. Когда пытаешься все это прицепить к какой-либо технологии, то получается вообще каша, а сама статья вызовет еще кучу вопросов и нареканий(сам с этим столкнулся). <br/>
Поэтому я бы писал статью только про саму технологию и как именно она позволяет использовать те или иные приемы TDD(Предполагая, что аудитория знакома с техникой tdd). При это стараясь не вдаваться в теорию.<br/>
Или же написать цикл статьей посвященных исключительно TDD и BDD, максимум давай небольшие примеры.]]></description>
			<pubDate>Thu, 26 Feb 2009 14:28:21 GMT</pubDate>
			<author>sirmakc</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:23:35 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407067</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407067</link>
			<description><![CDATA[Как раз привносит: вопрос заключается в требованиях к тестам.<br/>
<br/>
По TDD мы должны иметь <br/>
<br/>
а) спецификацию на модуль<br/>
б) потом делать модуль и разрабатывать модульные тесты вперед<br/>
в) потом проводить функциональное тестирование QA<br/>
г) потом проводить приемочное тестирование заказчиком<br/>
<br/>
все эти активности базируются на исходных требованиях<br/>
<br/>
По BDD мы должны иметь:<br/>
<br/>
а) спецификации в смысле BDD, не требования, а именно бизнес-описание поведения системы<br/>
<br/>
Разработчики используют их для реализации возможности автоматической верификации кода по этим спецификациям, тестировщики и заказчики расширяют и создают их.<br/>
<br/>
Разница очевидна.<br/>
<br/>
Понятно, что BDD получится использовать только в продвинутых командах. Но все равно это несколько разные вещи, TDD полезно разработчикам, BDD полезно скорее тестировщикам и заказчику, для разработчиков это лишняя головная боль, поскольку каждую новую спецификацию нужно «завязать» на методы.<br/>
<br/>
Пока остаюсь при своем мнении: <br/>
<br/>
TDD и BDD можно и даже наверно нужно использовать совместно, поскольку TDD ориентирована на техническую составляющую: проверить DAO, проверить согласованность всяких XML-файлов, проверить работоспособность сугубо технических аспектов (логирование, как пример). BDD ориентировано на бизне-логику. Как известно, помимо бизнеса в реальном приложении масса сугубо технических задач, которые бизнесу вообще до фонаря.]]></description>
			<pubDate>Thu, 26 Feb 2009 14:23:35 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 14:12:24 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1407026</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1407026</link>
			<description><![CDATA[В целом со всем согласен, за исключением: «TDD — это подход к разработке кода, основанный на юнит тестировании»<br/>
<br/>
TDD — это подход к разработке кода, основанный на *модульном* тестировании, то есть на создании тестов невидимых и недоступных QA или закачзику.<br/>
<br/>
Из описания BDD в википедии прямым текстом следует (encourages collaboration between developers, QA and non-technical or business participants), что эта методика нацелена на разработку единых тестов для всех ролей, именно функциональных, описанных на языке бизнеса.<br/>
<br/>
И противопоставление к TDD основывается как раз на том, что в TDD готовятся тесты понятные только разработчикам, а в BDD тесты понятные всем. <br/>
<br/>
Тесты в смысле TDD называются спецификациями, хотя по-прежнему для меня здесь слишком тонкая грань, у них просто цели разные: у тестов задать входные данные и ожидаемый результат, у спецификации описать некоторое бизнес-правило и определить контрольные точки (опять же сверку входных данных и ожидаемого результата), то есть спецификация — это набор связанных тестов, описанных на языке бизнеса, как-то так.<br/>
<br/>
Посмотрите на FITPro, например, это в чистом виде BDD методика: тесты пишутся на бизнес-языке, они являются требованиями для разработки, несколько тестов можно объединить и получится спецификация на бизнес-правило.<br/>
<br/>
]]></description>
			<pubDate>Thu, 26 Feb 2009 14:12:24 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:58:29 VasilioRuzanni</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406974</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406974</link>
			<description><![CDATA[И да, я, собственно, перенес бы подобную статью в блог TDD. Тестирование — это немного другое и несколько сбивает с толку.]]></description>
			<pubDate>Thu, 26 Feb 2009 13:58:29 GMT</pubDate>
			<author>VasilioRuzanni</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:57:18 VasilioRuzanni</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406968</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406968</link>
			<description><![CDATA[Я твердо убежден, что unit-тесты — это основа и TDD, и BDD, просто пишутся они, по сути, по-разному, вот и все. Суть и концепция их от этого не меняется. BDD не закрывает никакого «пробела» (ибо его, как такового и нет), а просто вводит новую методику написания тестов.<br/>
<br/>
По поводу бизнес-правил — разумеется, разработчик ими оперирует, он же не просто так код пишет, а для чего-то. Ключевой момент в том, что он тестирует именно код (а не систему с точки зрения пользователя и сценариев использования, «не заглядывая в код» — для этого есть тестировщики).<br/>
<br/>
Еще один нюанс в том, что _технически_ часть функциональных тестов можно сделать в виде юнит-тестов (точто так же, как, например, интеграционные тесты). Просто для кого-то это может быть запутано, но BDD не привносит ничего нового в тестирование как таковое (все и так тестируется полностью и BDD, скажем, не увеличит процент покрытия кода тестами), а только дает новый метод делать то, что мы уже делали с помощью TDD. Можно называть это не юнит-тестами, а «спецификациями» — суть проверки конкретного бизнес-правила от этого не поменяется.]]></description>
			<pubDate>Thu, 26 Feb 2009 13:57:18 GMT</pubDate>
			<author>VasilioRuzanni</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:49:12 iv_s</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406919</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406919</link>
			<description><![CDATA[Статья не моя:) Лично я считаю что функциональное тестирование и BDD — это разные вещи.<br/>
Еще нужно добавить, для точности, что вообще то юнит тестирование не тоже самое что и TDD.<br/>
Юнит тестирование — это метод тестирования, а TDD — это подход к разработке кода, основанный на юнит тестировании.<br/>
Точно также и с BDD. В общем случае можно сказать что тестирование поведения это и есть функциональное тестирование, когда тестируется черный ящик. Но BDD — это подход к написанию кода, используя тесты поведения по спецификации. Что нам и демонстрирует фреймворк RSpec. ]]></description>
			<pubDate>Thu, 26 Feb 2009 13:49:12 GMT</pubDate>
			<author>iv_s</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:47:09 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406914</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406914</link>
			<description><![CDATA[«Можете указать, где именно спорный момент у автора?»<br/>
<br/>
Да, конечно, &quot;… Behavior Driven Development и чем данная техника отличается от Test-Driven Development&quot;<br/>
<br/>
Согласен с тем, что BDD полностью укладывается в методику TDD, и поэтому ничем не может отличаться. Комментом выше уже предположил, что автор путает unit-тесты (assertTrue, assertFalse) и TDD.<br/>
<br/>
Если отталкиваться от сравнения Unit-тестов и BDD, то конечно BDD иногда может быть удобнее, но поскольку BDD закрывает пробел между unit-тестами и функциональными тестами, то в этом и проявляется сложность вопроса: относится ли BDD к функциональным тестам или нет, поскольку можно написать такой тест, что он будет полностью повторять функциональный, поскольку оперируем бизнес-понятиями (то чем оперирует QA и закачзик), а не объектами и элементами архитектуры (то чем оперирует разработчик)<br/>
<br/>
То есть в итоге получается какая-то каша. С одной стороны тесты делает разработчик, а с другой он оперирует бизнес-правилами, то есть выполняет работу тестировщика.]]></description>
			<pubDate>Thu, 26 Feb 2009 13:47:09 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:46:55 dirdor</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406910</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406910</link>
			<description><![CDATA[<a href="http://railsmaniac.com/development/2009/02/bdd-basic-concepts/">BDD1</a><br/>
<a href="http://railsmaniac.com/development/rails/2009/02/bdd-on-rails-1/">BDD2</a><br/>
А у вас реально можно было ограничится ссылками ;)<br/>
]]></description>
			<pubDate>Thu, 26 Feb 2009 13:46:55 GMT</pubDate>
			<author>dirdor</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:35:30 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406870</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406870</link>
			<description><![CDATA[«Вот так и появилось BDD:) И это уже более высокий уровень чем assertEquals и т.п.»<br/>
<br/>
Я кажется понял откуда ноги растут: вы действительно сравниваете unit-тестирование с TDD? <br/>
<br/>
В моем понимании TDD — это совсем не фреймворк для unit-тестов, это методика разработки, использовать там assertEquals или test.CheckLogicIsCorrectlyImplemented() не регламентируется TDD, это всего лишь подход к разработке: сначала тест, потом логика.<br/>
<br/>
«А то что касаеться FIT, вы просто путаете функциональные тесты с BDD»<br/>
<br/>
Мне почему-то все же верится, что я ничего не путаю, поскольку BDD и есть фукнциональное тестирование, опять же основываясь на Вашей статье: «Мышление в терминах функциональности (того, что код должен делать)...»<br/>
<br/>
В моем понимании необходимо два типа тестирования функционала (не считая нагрузки, совместимости, масштабируемости горизонтальной и вертикальной и т.п.):<br/>
<br/>
1. unit-тестирование, когда разработчик проверяет и фиксирует спецификацию к некоторому алгоритму, участку кода<br/>
<br/>
2. функциональное тестирование, когда QA или заказчик смотрит на систему не со стороны кода и конкретных алгоритмов, а с наружи, со стороны пользователя и пытается получить от системы ответы согласно функциональности системы.<br/>
<br/>
Хочу заметить, что TDD как таковое может покрывать как первый, так и второй тип тестирования, то есть написание тестов может начаться:<br/>
<br/>
а) до разработки логики (пишется программистом)<br/>
б) до поставки продукта QA или заказчику на приемку (пишется QA или закачзиком)<br/>
<br/>
В этом смысле Ваше BDD есть некоторое расширение классического unit-тестирования и не более того.<br/>
<br/>
]]></description>
			<pubDate>Thu, 26 Feb 2009 13:35:30 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:21:18 iv_s</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406823</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406823</link>
			<description><![CDATA[«Более того, TDD не обязательно следует применять для проверки равенства. Применяйте методику для тестирования логики по спецификациям.»<br/>
<br/>
Вот так и появилось BDD:) И это уже более высокий уровень чем assertEquals и т.п.<br/>
<br/>
«В данном ключе BDD — это тот же TDD, просто чуть более высокоуровневый.»<br/>
По сути, так и есть, я и написал выше что его можно рассматривать как слой абстрации над TDD.<br/>
<br/>
А то что касаеться FIT, вы просто путаете функциональные тесты с BDD. Функциональное тестирование, которое может проводить не только программист но и тестер и пользователь, прежде всего подразумавает «черный ящик», т.е. тестирующий не имеет представления как это работает, и тестирует некие функиональные куски и их интеграцию. В BDD пользователь конечно может прогнать тесты, но вот написать — врядли.]]></description>
			<pubDate>Thu, 26 Feb 2009 13:21:18 GMT</pubDate>
			<author>iv_s</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:20:17 VasilioRuzanni</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406814</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406814</link>
			<description><![CDATA[Можете указать, где именно спорный момент у автора?<br/>
<br/>
Вообще, BDD ни на грамм не выходит за рамки TDD, его все также пишут программисты (функциональное тестирование здесь вообще ни при чем). Однако, любой код так или иначе привязан к задаче и ее бизнес-логике. Я думаю, автор имел в виду, что BDD, возможно, более подходит для того, чтобы применять бизнес-правила к коду. В BDD они просто более «человекопонятны». Разумеется, при этом это все тот же код, который пишется разработчиками.<br/>
<br/>
Т.е., по сути, отличие BDD от TDD только в том, в каком виде разработчику удобно писать тесты для кода (но не функциональные/UX-тесты).]]></description>
			<pubDate>Thu, 26 Feb 2009 13:20:17 GMT</pubDate>
			<author>VasilioRuzanni</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:10:13 EugeneKudashev</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406782</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406782</link>
			<description><![CDATA[Одобрительное кивание.]]></description>
			<pubDate>Thu, 26 Feb 2009 13:10:13 GMT</pubDate>
			<author>EugeneKudashev</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:09:19 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406779</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406779</link>
			<description><![CDATA[Вот и я не пойму, человек говорит, что TDD не всегда хорошо, а хорошо BDD, которое суть больше подходит к функциональному тестированию.<br/>
<br/>
Причем функциональные тесты пишут разработчики, хотя всем известно, что такие вещи должны делать QA или заказчик (в случае Agile).]]></description>
			<pubDate>Thu, 26 Feb 2009 13:09:19 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 13:03:39 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406761</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406761</link>
			<description><![CDATA[Вот я не понимаю, почему Вы различаете тесты и спецификации? Спецификация — это такой же тест, только описываемый декларативно (на языке бизнеса чаще всего). <br/>
<br/>
Класс, метод, его аргументы и возвращаемый результат есть ничто иное как спецификация.<br/>
<br/>
Более того, TDD не обязательно следует применять для проверки равенства. Применяйте методику для тестирования логики по спецификациям. То есть будет у вас тест, который делает ровно тоже самое, что сейчас Вы называете BDD.<br/>
<br/>
Единественное отличие, которое я вижу, то в BDD просто используется более высокоуровневое тестирование, обычно именуемое как автоматическое функциональное тестирование.<br/>
<br/>
А что касается написания BDD тестов разработчиками, то на мой взгляд это отнюдь не преимущество по сравнению с идеями FIT. В данном ключе BDD — это тот же TDD, просто чуть более высокоуровневый.<br/>
<br/>
Настоящее преимущество методика получает при использовании ее пользователем (заказчиком), который точно знает как ему нужно, а не как написано в спецификации.<br/>
<br/>
]]></description>
			<pubDate>Thu, 26 Feb 2009 13:03:39 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 12:59:51 VasilioRuzanni</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406742</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406742</link>
			<description><![CDATA[По-моему, вы путаете функциональное/приемочное тестирование как этап проекта и разработку через тестирование (TDD/BDD). Пользователи (или QA-people) не пишут тесты к блокам кода.]]></description>
			<pubDate>Thu, 26 Feb 2009 12:59:51 GMT</pubDate>
			<author>VasilioRuzanni</author>
		</item>
	

	
		<item>
			<title>26.02.2009 12:36:12 iv_s</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406658</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406658</link>
			<description><![CDATA[«Основная цель: привлечение к тестированию пользователей продукта, где они могут создавать тесты на бизнес-языке и проверять работу приложения в автоматическом режиме. Насколько я понял из Вашего примера — это есть одно и то же.»<br/>
<br/>
Нет, в BDD тесты пишет сам программист, так же как и в TDD. А то что синтаксис библиотеки RSpec выглядит как BNL — это синтаксический сахар Ruby.<br/>
И все-таки BDD и TDD соперники, нет смысла писать юнит тесты если есть спецификации. BDD можно рассматривать как новый слой абстракции над юнит тестами. Если там мы просто проверяем равенства и т.п., то тут проверяем соответствия поведения реальной функции/объекта с поведением описанным в спецификации, правда используя теже методики:)(всмысле проверка на равенство и т.д.)]]></description>
			<pubDate>Thu, 26 Feb 2009 12:36:12 GMT</pubDate>
			<author>iv_s</author>
		</item>
	

	
		<item>
			<title>26.02.2009 12:34:50 diggy</title>
			<guid isPermaLink="true">#comment_1406656</guid>
			<link>#comment_1406656</link>
			<description><![CDATA[Тема как-то не раскрыта =\]]></description>
			<pubDate>Thu, 26 Feb 2009 12:34:50 GMT</pubDate>
			<author>diggy</author>
		</item>
	

	
		<item>
			<title>26.02.2009 12:30:46 Joka</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406650</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406650</link>
			<description><![CDATA[TDD — это одна из крайностей разработки. В это схеме работы очень сложно создать нормальную архитектуру приложения. Ибо если использовать другую крайность — «нормальную разработку», то сначала надо создать спецификацию (srs), потом разработать архитектуру, потом высокоуровневое проектирование и тд… <br/>
<br/>
Я бы лично комбинировал данные подходы к разработке ПО]]></description>
			<pubDate>Thu, 26 Feb 2009 12:30:46 GMT</pubDate>
			<author>Joka</author>
		</item>
	

	
		<item>
			<title>26.02.2009 12:15:52 VasilioRuzanni</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406597</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406597</link>
			<description><![CDATA[Странный вы пример привели. «TestNG, Selenium и FEST»… Selenium — это вообще функциональное тестирование, что не есть основа TDD. Я бы привел в пример множество фреймфорков семейства xUnit для самых разных языков и технологий.]]></description>
			<pubDate>Thu, 26 Feb 2009 12:15:52 GMT</pubDate>
			<author>VasilioRuzanni</author>
		</item>
	

	
		<item>
			<title>26.02.2009 10:59:57 devprom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1406362</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1406362</link>
			<description><![CDATA[Честно говоря, статья так и не раскрыла разницу между понятиями «тест» и «должен», функциональное тестирование и unit-тестирование понятия иногда расходящиеся, иногда сходящиеся. <br/>
<br/>
Почему бы «должен» не отнести к «метод А должен возвращать 1, если передали 0», реализация проверки есть самый настоящий «тест».<br/>
<br/>
Тест всегда характеризуется входными данными, ожидаемым и фактическим результатом, после выполнения операции над некоторым черным ящиком.<br/>
<br/>
Тест может быть определен на уровне метода, а может на уровне функции системы, а может на уровне функционала — это конечно свобода выбора, но TDD тем и хороша, что эту свободу ограничивает и требует покрыть тестами все методы, а не какой-то по желанию выбранный разработчиком функционал.<br/>
<br/>
Более, того, на мой взгляд необосновано замолчено грандиозное требование TDD к использованию: код, который вы разрабатываете, должен предполагать автоматическое тестирование (!) Данный принцип позволяет проектировать архитектуру приложения исходя из возможности его тестирования автоматическими unit-тестами.<br/>
<br/>
Аббревиатура BDD мне не очень известна, но известен инструмент FIT (и его аналоги), есть некоторые обзоры тут: lobasev.ru/search/label/FIT<br/>
<br/>
Основная цель: привлечение к тестированию пользователей продукта, где они могут создавать тесты на бизнес-языке и проверять работу приложения в автоматическом режиме. Насколько я понял из Вашего примера — это есть одно и то же.<br/>
<br/>
Подчеркну, что TDD и BDD это не соперники, а скорее совершенно разные методики, которые совместно необходимо применять в проектах.]]></description>
			<pubDate>Thu, 26 Feb 2009 10:59:57 GMT</pubDate>
			<author>devprom</author>
		</item>
	

	
		<item>
			<title>26.02.2009 08:04:32 kernel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1405873</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1405873</link>
			<description><![CDATA[поддерживаю]]></description>
			<pubDate>Thu, 26 Feb 2009 08:04:32 GMT</pubDate>
			<author>kernel</author>
		</item>
	

	
		<item>
			<title>26.02.2009 07:49:43 iv_s</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/52929/#comment_1405835</guid>
			<link>http://habrahabr.ru/blogs/testing/52929/#comment_1405835</link>
			<description><![CDATA[Положительный отзыв:)]]></description>
			<pubDate>Thu, 26 Feb 2009 07:49:43 GMT</pubDate>
			<author>iv_s</author>
		</item>
	

	
</channel>
</rss>

