<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр:  Метки / tdd</title>
	<link>http://habrahabr.ru/rss/tag/tdd/</link>
	<description><![CDATA[]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sat, 11 Feb 2012 01:44:00 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	
			
		<item>		
			<title><![CDATA[Блог компании Ciklum / Приезжай в Харьков и отожги вместе с нами на Ciklum Mobile Субботнике и iPhoneDevCamp 2012]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/company/Ciklum/blog/137545/</guid>
			<link>http://habrahabr.ru/company/Ciklum/blog/137545/</link>			
			<description><![CDATA[Вы не поверите, но начало 2012 года началось для нас жаркой зимой! Все дело в том, что мы, в Сиклум, ежемесячно проводим около 60(!) как внутренних, так и внешних мероприятий для разработчиков, таких как тематические <b>Сиклум Субботники</b>, Хакатоны, кемпы и т.д.<br/>
<br/>
Обмен опытом и знаниями, живые дискуссии и неформальное общение — вот цель таких мероприятий, на которые, кстати говоря, может прийти любой разработчик. И представьте себе, такой формат мероприятий пришелся по душе многим в разных городах в Украине! Например, недавно мы провели <a href="http://habrahabr.ru/company/Ciklum/blog/134685">самый первый .NET Субботник</a> в Виннице, а также очередной <a href="http://habrahabr.ru/company/Ciklum/blog/133811">.NET Субботник</a> в Харькове, поддержали <a href="http://habrahabr.ru/company/Ciklum/blog/134610">DOU STARTUP MIXER</a> и <a href="http://habrahabr.ru/company/Ciklum/blog/134127/">Drupal Cafe</a> в Киеве.<br/>
<br/>
<b>11 февраля 2012 в рамках Мобильного Сиклум Субботника</b> пройдет и <b><a href="http://iosdev.org.ua">iPhoneDevCamp 2012</a></b>, который все так долго ждали! Таким образом, суббота в нашем харьковском офисе будет очень насыщенной. По нашей замечательной традиции, мы открыты к тем, кто хочет выступить. Так, на <b>Мобильный Сиклум Субботник</b> мы пригласили зубров мобильной разработки, отчаянных борцов за чистоту кода и ярых яблочников. <br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/company/Ciklum/blog/137545/#habracut">Интересные подробности под хабра-катом</a> </div>]]></description>
			
			<pubDate>Fri, 03 Feb 2012 10:29:47 GMT</pubDate>
			<author>atael</author>
			<category>ciklum</category><category>mobile development</category><category>ios development</category><category>TDD</category><category>BDD</category><category>Dependency Injection</category><category>сиклум</category><category>ciklum saturday</category><category>DTrace</category><category>LLDB</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Тестирование / Selenium: работаем с элементами страницы, используя @FindBy и PageFactory]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/134462/</guid>
			<link>http://habrahabr.ru/blogs/testing/134462/</link>			
			<description><![CDATA[В этой статье будет рассмотрена возможность использования аннотации @FindBy для поиска элементов на странице, а так же создание своих классов для работы с элементами и контейнерами вроде форм, таблиц и т.д.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/testing/134462/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Mon, 30 Jan 2012 19:36:04 GMT</pubDate>
			<author>oraz_ra</author>
			<category>selenium</category><category>java</category><category>tdd</category>
		</item>
		
		
		
		
		
		
		
		
	
		
		
			
		<item>		
			<title><![CDATA[Подкасты / [PODCAST] «Разбор полетов» — episode 7 — Чем заняться в следующем году]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/hpodcasts/136478/</guid>
			<link>http://habrahabr.ru/blogs/hpodcasts/136478/</link>
			<description><![CDATA[После продолжительного новогоднего застоя, c простуженными голосами я&nbsp;и&nbsp;коллега <a href="http://habrahabr.ru/users/aib/" class="user_link">aib</a> представляем вашему вниманию очередной седьмой выпуск популярного в&nbsp;узких кругах, разговорного IT-тематического подкаста «Разбор Полетов».<br/>
В&nbsp;этом выпуске:<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/hpodcasts/136478/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 18 Jan 2012 03:15:24 GMT</pubDate>
			<author>gAmUssA</author>
			<enclosure url="http://moscow-nthost3a.cdn.rpod.ru/00/00/01/01/92/260490-223080/razbor_7_release.mp3?play=1" type="audio/mpeg" />
			<category>java</category><category>google</category><category>gwt</category><category>dart</category><category>closure</category><category>javascript</category><category>opensource</category><category>tdd</category><category>javaone</category><category>разбор-полетов</category>
		</item>
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[TDD / Тестирование параллельных потоков]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/tdd/135815/</guid>
			<link>http://habrahabr.ru/blogs/tdd/135815/</link>			
			<description><![CDATA[В дебагере можно без проблем поймать поток исполнения в правильной точке, а затем, после проведения анализа, перезапустить его. В автоматических тестах эти операции выглядят безумно сложными.<br/>
<br/>
А зачем вообще это нужно?<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/tdd/135815/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Tue, 10 Jan 2012 06:29:10 GMT</pubDate>
			<author>d7k</author>
			<category>автотестирование</category><category>TDD</category><category>параллельные вычисления</category><category>инструменты</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[TDD / О влиянии TDD на разработку (мнения читателей)]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/tdd/134210/</guid>
			<link>http://habrahabr.ru/blogs/tdd/134210/</link>			
			<description><![CDATA[Добрый день уважаемые посетители habrahabr.ru!<br/>
<br/>
Давным-давно, когда я работал в одном из стартапов, где я был основным иницатором и продвиженцем внедрения TDD, у меня возник спор с моим «техническим директором» (если его можно было так назвать) на тему того как TDD влияет на получаемый в итоге код. Он сделал одно простое замечание, на которое я не смог тогда найти, что ему ответить – «При подобном подходе к разработке в коде появляются дополнительные интерфейсы (я практиковал подход к тестированию с помощью Mock'ов, Stub'ов и подмены реализаций интерфейсов) и уровни, усложняющие и замедляющие код».<br/>
Что бы Вы ответили?<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/tdd/134210/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 07 Dec 2011 19:06:17 GMT</pubDate>
			<author>fedor_malyshkin</author>
			<category>tdd</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Flash-платформа / Особенности тестирования Flex UI-компонентов с помощью FlexUnit 4]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/Flash_Platform/132255/</guid>
			<link>http://habrahabr.ru/blogs/Flash_Platform/132255/</link>			
			<description><![CDATA[По работе как-то потребовалось добавить функциональность в один самописный flex-компонент. При этом важно было не поломать уже существующее поведение, т.к. компонент за время своего существования был использован в нескольких приложениях и оброс наследниками. <br/>
<br/>
Стандартный подход к решению подобных задач — начать с написания юнит-тестов, покрывающих нынешнее поведение компонента, попутно проясняя для себя особенности его устройства. <br/>
Только после этого можно начинать пошаговый рефакторинг и расширение функциональности, постоянно прогоняя тесты на предмет не сломалось ли чего в результате изменений. [3]<br/>
<br/>
Задача однако осложняется тем, что визуальные компоненты во флекс имеют многофазную асинхронную процедуру инициализации и обновления свойств, и для них требуется особые средства для написания тестов. FlexUnit 4 позволяет легко справляться с этой задачей, и ниже я покажу как это делать, а заодно и раскрою пару нюансов. <br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/Flash_Platform/132255/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Mon, 14 Nov 2011 15:44:26 GMT</pubDate>
			<author>Vitamon</author>
			<category>flex</category><category>flexunit</category><category>tdd</category><category>async testing</category>
		</item>
		
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[Тестирование / [Из песочницы] Автоматическое тестирование в PHP]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/testing/132102/</guid>
			<link>http://habrahabr.ru/blogs/testing/132102/</link>			
			<description><![CDATA[Работа по TDD имеет очевидные преимущества: у разработчика всегда есть чётко описанная в виде теста цель, и он сразу узнает, когда она будет достигнута.<br/>
Тем не менее, есть и некоторые издержки: необходимо постоянно запускать один и тот же тест при изменениях в нем или в соответствующем классе, чтобы не пропустить тот самый момент истины. Вроде бы не такая уж и большая проблема, но постоянное переключение в консоль для проверки сделанных изменений на работоспособность, да и вообще помнить о необходимости этих манипуляций — лишнее рассеивание внимания.<br/>
<br/>
Далее о том, как все это дело автоматизировать.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/testing/132102/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Tue, 08 Nov 2011 00:30:44 GMT</pubDate>
			<author>hdg700</author>
			<category>TDD</category><category>автотест</category><category>php</category><category>phpunit</category><category>python</category><category>inotify</category><category>dbus</category>
		</item>
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Agile / Почему Agile вам не подходит]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/agile/131926/</guid>
			<link>http://habrahabr.ru/blogs/agile/131926/</link>			
			<description><![CDATA[Ни об одной теме я не слышал столько негативных отзывов, как об Аджайл. Дескать, он и неэффективный, и не работает, и подходит для ленивых, и придуман для зарабатывания бабла на консультациях, и вообще, <i>нам аджайл не подходит</i>. <br/>
<br/>
<img src="http://www.ruthmalan.com/Journal/Images/PairProgram.jpg" align="right"/><br/>
<br/>
Я здесь не собираюсь никого разубеждать. Я хочу поделиться соображениями, почему большинству компаний <b>аджайл действительно не подходит</b>.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/agile/131926/#habracut">Почему Agile вам не подходит</a> </div>]]></description>
			
			<pubDate>Sat, 05 Nov 2011 14:25:19 GMT</pubDate>
			<author>asolntsev</author>
			<category>аджайл</category><category>парное программирование</category><category>мотивация</category><category>agile development</category><category>tdd</category><category>test driven development</category><category>pair programming</category><category>motivation</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Разработка под Android / Шаблоны проектирования при разработке под Android. Часть 3 — Пользовательский интерфейс, тестирование, AndroidMock]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/android_development/131652/</guid>
			<link>http://habrahabr.ru/blogs/android_development/131652/</link>			
			<description><![CDATA[В прошлой статье я рассказал, что такое MVP и как надо организовать процесс разработки приложений с использованием MVP. Теперь же я покажу как я разрабатывал свой T-Alarm.<br/>
<br/>
Сначала я сделал представление и presenter, как описано в прошлой статье.<br/>
<br/>
<h4>Представление (View)</h4><br/>
Естественно, что мое представление это наследник класса Activity, точнее RoboActivity, что это такое я вкратце сейчас расскажу. Ниже показан очень характерный кусок исходников для окна редактирования настроек будильника:<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/android_development/131652/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Tue, 01 Nov 2011 08:14:23 GMT</pubDate>
			<author>AndreyFedorov</author>
			<category>android</category><category>mvp</category><category>tdd</category><category>presenter</category><category>view</category><category>model</category>
		</item>
		
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[Разработка под Android / [Из песочницы] Шаблоны проектирования при разработке под Android. Часть 1 — Введение]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/android_development/131369/</guid>
			<link>http://habrahabr.ru/blogs/android_development/131369/</link>			
			<description><![CDATA[Писать программки для смартфонов — мое хобби. Все началось с того, что я купил свой первый смартфон Nokia E51 на Symbian и мне очень нравилось что его функционал можно было расширить через установку дополнительных программ.<br/>
Но однажды я не нашел необходимой программы и решил написать ее сам. Так и началось мое увлечение программами для смартфонов.<br/>
<br/>
После того как глава Nokia заявил, что дни Symbian сочтены, я решил изучить платформу Android.<br/>
<br/>
Для лучшего усвоения материала я решил написать полезную, хотя бы для себя, программку. Но написать ее не по детски, когда куски примитивного кода копируются из документации, а по взрослому с разработкой архитектуры, и использованием современных технологий программирования TDD, MVP и IoС.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/android_development/131369/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 27 Oct 2011 18:33:02 GMT</pubDate>
			<author>AndreyFedorov</author>
			<category>android</category><category>tdd</category><category>mvp</category><category>ioc</category><category>unit test</category><category>разарботка</category>
		</item>
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[TDD / [Из песочницы] Учебный пример разработки PHP-класса с использованием TDD]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/tdd/130086/</guid>
			<link>http://habrahabr.ru/blogs/tdd/130086/</link>			
			<description><![CDATA[В данном посте приводится учебный пример разработки PHP-класса, который совершает запрос к Twitter API с целью выборки статусов пользователя по его никнейму. Кроме того, Twitter-класс кеширует полученные данные с использованием еще одного PHP-класса, который осуществляет простое кеширование данных в файлах.<br/>
<br/>
Целью поста является закрепление собственных знаний, полученных в результате прочтения некоторых книг, статей, а также возможность получить комментарии от опытных TDD-практиков, с указанием на грубые ошибки в процессе разработки или в тестах.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/tdd/130086/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Mon, 10 Oct 2011 13:23:09 GMT</pubDate>
			<author>xstupidkidzx</author>
			<category>tdd</category><category>php</category>
		</item>
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[TDD / Юнит-тесты в Cocoa]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/tdd/129896/</guid>
			<link>http://habrahabr.ru/blogs/tdd/129896/</link>			
			<description><![CDATA[<img align="left" src="http://habrastorage.org/storage1/690c752e/ee738c9d/88f535d3/f6e22d79.png"/> Ниже описаны основы использования OCUnit — фреймворка для создания юнит-тестов, интегрированного в Xcode. Чтобы наглядно попробовать описываемые вещи, код можно <a href="http://b2.ge.tt/9zH3oV8/InvertString.zip">скачать</a> сразу. <font color="#555555">Писал до эпохи Xcode 4, поэтому картинки немного устарели.</font><br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/tdd/129896/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 06 Oct 2011 17:56:16 GMT</pubDate>
			<author>shoumikhin</author>
			<category>unit test</category><category>cocoa</category><category>xcode</category><category>tdd</category><category>юнит-тесты</category>
		</item>
		
		
		
		
		
		
		
		
	
		
		
		
		
		
			
		<item>		
			<title><![CDATA[TDD / [Опрос] А ты используешь TDD, хабрачеловек?]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/tdd/129387/</guid>
			<link>http://habrahabr.ru/blogs/tdd/129387/</link>
			<description><![CDATA[]]></description>
			
			<pubDate>Fri, 30 Sep 2011 03:50:18 GMT</pubDate>
			<author>Shaddix</author>
			<category>TDD</category>
		</item>
		
		
		
	
			
		<item>		
			<title><![CDATA[Программирование / TDD в непривычных условиях]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/programming/129375/</guid>
			<link>http://habrahabr.ru/blogs/programming/129375/</link>			
			<description><![CDATA[<img align="center" src="http://paralay.com/20380/l104.jpg" alt="image"/><br/>
В своей заметке о модульном тестировании, которую <a href="http://habrahabr.ru/blogs/programming/129348/">я хабрил</a>, приводился довольно тривиальный пример написания модульного теста на примере калькулятора. В этой мне бы хотелось коснуться несколько иной ситуации, которая меня, в общем-то, и поставила на эти рельсы, а именно — многопоточные приложения реального времени.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/programming/129375/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 29 Sep 2011 14:03:51 GMT</pubDate>
			<author>kir19890817</author>
			<category>TDD</category><category>c plus plus</category><category>embedded software development</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Программирование / О Test Driven Development (TDD) из личного опыта]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/programming/129348/</guid>
			<link>http://habrahabr.ru/blogs/programming/129348/</link>			
			<description><![CDATA[На хабре есть моя <a href="http://habrahabr.ru/blogs/cpp/129281/">заметка</a>, посвященная чтению книги А. Александреску «Современное проектирование на C++» и неудачному опыту реализации идей, почерпнутых из нее. Надо сказать, что проблема была не в книге, а в плохо контролируемом энтузиазме и несоответствии целей и средств. Мной было написано еще несколько вещей в духе той, что описана в заметке (значительно меньше по объему), и в какой-то момент пришла мысль, что так жить нельзя. Одновременно с этим мой товарищ, работающий в том же отделе, что и я, передал мне книгу М. Физерса «Эффективная работа с наследованным кодом» (прежде от него же я узнал и об Александреску). Сам он ее прочитал несколько раньше, но широко в работе TDD не применял. И тут, надо сказать, она пришлась очень вовремя и к месту.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/programming/129348/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 28 Sep 2011 12:19:51 GMT</pubDate>
			<author>kir19890817</author>
			<category>программирование</category><category>TDD</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JAVA / Правильная проверка XML данных в java-проектах]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/java/127473/</guid>
			<link>http://habrahabr.ru/blogs/java/127473/</link>			
			<description><![CDATA[Привет, %username%.<br/>
<br/>
В ряде проектов мне потребовалось сравнивать XML данные в тестах. <br/>
<br/>
Действительно, бывает, что результат работы твоего модуля — XML данные. Если это так, то как они генерятся нужно проверять в соответствии с принципами <a href="http://ru.wikipedia.org/wiki/Разработка_через_тестирование" title="TDD"><abbr title="Test driven development">TDD</abbr></a>. Я же в свою очередь стараюсь их придерживаться при разработке. <br/>
<br/>
Под катом я постараюсь рассказать о том, как лучше всего, по моему мнению, тестировать генерацию XML в коде. В качестве инструмента сравнения XML я использовал <a href="http://xmlunit.sourceforge.net/">XmlUnit</a>.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/java/127473/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Sun, 04 Sep 2011 17:52:18 GMT</pubDate>
			<author>png</author>
			<category>java</category><category>xmlunit</category><category>tdd</category><category>test</category><category>compare xml</category><category>сравнение xml</category><category>тесты</category>
		</item>
		
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[TDD / [Из песочницы] Еще немного о TDD и модульных тестах]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/tdd/111095/</guid>
			<link>http://habrahabr.ru/blogs/tdd/111095/</link>			
			<description><![CDATA[На хабре полно адептов TDD, и уже не раз всплывали статьи про разработку методом тестирования. Хочу внести и свои пять копеек статьей про этот замечательный инструмент.<br/>
<br/>
При взгляде новичка на тесты сразу возникает вопрос: а зачем вообще писать лишний код? Вроде как преимущества TDD никто не отрицает, но находятся какие нибудь причины: «да, я слышал что TDD полезен в больших проектах, но у нас проект маленький», «в нашем проекте слишком много изменений, поэтому тесты для нас слишком большая обуза» и так далее. Попробую рассказать как модульные тесты помогают мне в работе и поделиться опытом использования.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/tdd/111095/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 24 Aug 2011 12:37:14 GMT</pubDate>
			<author>cdeus</author>
			<category>TDD</category>
		</item>
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JAVA / JUnit 4.9 зарелизило]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/java/126912/</guid>
			<link>http://habrahabr.ru/blogs/java/126912/</link>			
			<description><![CDATA[Несколько часов назад на github-е популярного TDD-фреймворка JUnit <a href="https://github.com/KentBeck/junit/downloads">появилась</a> финальная версия JUnit 4.9. Что же вошло в долгожданный релиз?<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/java/126912/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Tue, 23 Aug 2011 11:19:56 GMT</pubDate>
			<author>dax</author>
			<category>java</category><category>testing</category><category>junit</category><category>tdd</category><category>тестирование приложений</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[TDD / Assert DSL на примере .Net]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/tdd/124254/</guid>
			<link>http://habrahabr.ru/blogs/tdd/124254/</link>			
			<description><![CDATA[Никто уже не отрицает полезность тестов в любой сколько-нибудь сложной системе. Без тестов очень быстро можно скатиться в хаос и проводить большую часть времени в отладчике, занимаясь поиском и отловом косвенных эффектов от изменений той или иной части приложения. Тесты важны, нужны и так далее по тексту.<br/>
<br/>
По науке, тесты являются документированием системы. Грамотно написанные тесты дают понять, как работает система, как ведет себя, причем читаться все это должно как готовая спецификация на поведение системы. Т.е. в идеале должен получаться связный и понятный текст. Это идеал, к которому постепенно приближаются методы тестирования, начиная от юнит тестирования и наиболее явно проявляясь в поведенческом/приемочном тестировании, когда сами тесты уже пишутся на языке бизнеса (в этом моменте вспоминаем Fitnesse).<br/>
<br/>
При написании тестов не стоит скупиться на строчки кода и классы, важно только их правильно структурировать. Я считаю, что может быть вполне нормальной ситуация, когда у вас тестовый класс состоит только из одного тестового метода – не надо этого стесняться, это гораздо лучше, чем классы на 20 экранов. HD экранов.<br/>
<br/>
В общем, все должно быть направлено на максимальную ясность и четкость тестов, чтобы явно было видно все взаимосвязи. Чтобы можно было восстановить логику программы по одним лишь тестам. В дело читабельности пойдет не только Assert DSL (Domain Specific Language), но и именование файлов, подход <a href="http://www.arrangeactassert.com/why-and-what-is-arrange-act-assert/">Arrange Act Assert</a>. Все это <a href="http://www.gotdotnet.ru/blogs/ulu/5715/">не новые подходы</a> как оказывается, но широкой известности пока не получившие, судя по тому, что я вижу в окружающих меня проектах. Да и сам я натолкнулся на новые темы случайно, изучая <a href="https://github.com/structuremap/structuremap">исходные коды</a> StructureMap.<br/>
<br/>
Чтобы не томить, сразу расскажу какие основные шаги предлагаются для улучшения тестов:<br/>
<ul>
<li>Именовать тестовые файлы по основному методу, который тестируется.</li>
<li>Использовать DSL  для создания объектов, чтобы методы делать максимально лаконичными.</li>
<li>Стараться писать тесты в стиле «один тестовый метод – один assert».</li>
<li>Структурировать внутренности теста.</li>
<li>Создать и использовать Assert DSL.</li>
</ul><br/>
Думаю что для большинства многие перечисленные пункты не новость, и почти все они применяются в реальной разработке.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/tdd/124254/#habracut">Раскрытие темы с примерами и в картинках</a> </div>]]></description>
			
			<pubDate>Fri, 15 Jul 2011 13:00:25 GMT</pubDate>
			<author>VioletTape</author>
			<category>.net 4.0</category><category>tdd</category><category>dsl</category><category>extension methods</category><category>fluent interface</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JAVA / Тестирование в Java. TestNG]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/java/121234/</guid>
			<link>http://habrahabr.ru/blogs/java/121234/</link>			
			<description><![CDATA[<img src="http://habrastorage.org/storage/b22b53b6/77c8f76e/35a37c5c/73063f51.jpg" align="left"/><br/>
Наверняка все знакомы с таким понятием как <a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5">test-driven development(TDD)</a>. Наряду с ним также существует такое понятие, как <a href="http://en.wikipedia.org/wiki/Data-driven_testing">data-driven testing(DDT, не в обиду Шевчуку)</a> — техника написания тестов, при которой данные для тестов хранятся отдельно от самих тестов. Они могут храниться в базе данных, файле, генерироваться во время исполнения теста. Это очень удобно, так как один и тот же функционал тестируется на различных наборах данных, при этом добавление, удаление или изменение этих данных максимально упрощено.<br/>
<br/>
В <a href="http://habrahabr.ru/blogs/java/120101/">предыдущей статье</a> я рассмотрел возможности <a href="http://junit.org/">JUnit-а</a>. Там примерами такого рода подхода могут служить запускалки <i>Parameterized</i> и <i>Theories</i>, в обоих случаях один тест-класс может содержать только один такой параметризированный тест(в случае <i>Parameterized</i> несколько, но все они будут использовать одни и те же данные).<br/>
<br/>
В этой статье я заострю внимание на тестовом фреймворке <a href="http://testng.org/doc/index.html">TestNG</a>. Многие уже слышали это название, и перейдя на него, вряд ли желают вернуться к JUnit-у(хотя это только предположение).<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/java/121234/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Mon, 13 Jun 2011 16:34:12 GMT</pubDate>
			<author>sody</author>
			<category>java</category><category>testing</category><category>testng</category><category>tdd</category><category>ddt</category><category>data driven testing</category><category>junit</category>
		</item>
		
		
		
		
		
		
		
		
	
	
	
	
	
	
	
	

	
</channel>
</rss>

