<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oduvan's Web Blog &#187; testing</title>
	<atom:link href="http://www.lyabah.com/index.php/tag/testing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lyabah.com</link>
	<description></description>
	<lastBuildDate>Thu, 13 Oct 2011 13:00:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Методология написания тестов в Django с использованием fixtures</title>
		<link>http://www.lyabah.com/index.php/2011/06/10/testing-django-fixtures/</link>
		<comments>http://www.lyabah.com/index.php/2011/06/10/testing-django-fixtures/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 19:37:14 +0000</pubDate>
		<dc:creator>Oduvan</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[fixtures]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.lyabah.com/?p=941</guid>
		<description><![CDATA[В Django есть такая удобная вещь для написания тестов — это fixtures. Удобство состоит в том, что ваши тесты могут входить в уже заполненный данными проект. Например тестируем работу админчасти статистики, надо иметь готовый массив данных, с которым оперируем и проверяем результаты. Неудобство состоит в том, что эти фикстуры надо где взять, надо поддерживать актуальными, [...]]]></description>
			<content:encoded><![CDATA[<p>В <strong><a href="https://www.djangoproject.com/">Django</a></strong> есть такая удобная вещь для написания тестов — это <a href="https://docs.djangoproject.com/en/dev/topics/testing/#django.test.TestCase.fixtures">fixtures</a>. Удобство состоит в том, что ваши тесты могут входить в уже заполненный данными проект. Например тестируем работу админчасти статистики, надо иметь готовый массив данных, с которым оперируем и проверяем результаты. Неудобство состоит в том, что эти фикстуры надо где взять, надо поддерживать актуальными, такими-же актуальными как и тесты. Вот как раз и про неудобную часть, а также паре подводных камней я бы и хотел вам рассказать.</p>
<h2>Получаем фикстуру</h2>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">python manage.py dumpdata <span class="sy0">&gt;</span> all_data.json</div>
</li>
</ol>
</div>
<p>Рассказывать, что это означает я не буду, но то есть хорошая <a href="https://docs.djangoproject.com/en/dev/topics/testing/#django.test.TestCase.fixtures">документация по фикстурам у самой Django </a>.</p>
<p>Я «обплетал» тесты уже готового написанного проекта. В нагрузку с проектом идет дамп базы, которая,  как это не удивительно,  может быть не <a href="http://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85">целостная</a>.  Самый часты бок — это когда записи по форенключу нет. Например у Вас есть профиль, но нет юзера или есть транзакция между не существующими счетами.</p>
<p>Самое обидное, что Джанго Вам не поможет решить эту проблему. И получите что-то типа<br />
<em>Error: Unable to serialize database:</em></p>
<p>Нагугил тикет в <a href="https://code.djangoproject.com">Django Code</a>:<br />
<a href="https://code.djangoproject.com/ticket/6773">https://code.djangoproject.com/ticket/6773</a></p>
<p>К которому прилагается команда, которая показывает Вам «разбитые модели», т. е. модели не полные с неверными данными в  ForeignKey .<br />
Я ее немного приукрасил возможностью удалять их автоматом <a href="https://gist.github.com/1018947">https://gist.github.com/1018947</a>.  Для реальных данных удаление автоматом — это не очень обдуманный шаг, но мне сейчас надо получить хоть какую-то фикстуру.</p>
<h2>Подержание актуальности фикстуры</h2>
<p>Для поддержки актуальности базы между всеми разработчиками используется django-south, мне кажется это уже давно стало стандартом Django разработки. Тот же механизм можно использовать для поддержки актуальности с фикстурами, поэтому я одну фикстуру полностью перегоняю в sqlite3 базу, которую как и фикстуру держу в репозитарии проекта и для доступа к которой использую отдельный сетингс.</p>
<p>Сеттингс файл для этого состоит из 3х строчек (settings_lights.py):</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">from</span> settings <span class="kw1">import</span> <span class="sy0">*</span></div>
</li>
<li class="li1">
<div class="de1">DATABASES<span class="br0">&#91;</span><span class="st0">&#39;default&#39;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;ENGINE&#39;</span><span class="br0">&#93;</span> =<span class="st0">&#39;django.db.backends.sqlite3&#39;</span> </div>
</li>
<li class="li1">
<div class="de1">DATABASES<span class="br0">&#91;</span><span class="st0">&#39;default&#39;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;NAME&#39;</span><span class="br0">&#93;</span> = <span class="st0">&#39;lights.db&#39;</span></div>
</li>
</ol>
</div>
<p>Как известно, в любую команду можно передать не стандартное имя сетингс модуля.</p>
<p>Например, для того, чтоб запустить его и добавить новых данных:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">python manage.py runserver <span class="nu0">0</span>:<span class="nu0">8001</span> &#8211;<span class="re2">settings=</span>settings_lights</div>
</li>
<li class="li1">
<div class="de1">python manage.py dumpdata &#8211;<span class="re2">setting=</span>settings_lights <span class="sy0">&gt;</span> all_data.json</div>
</li>
</ol>
</div>
<p>А поддерживать актуальность фикстуры можно через миграции, которые вы создаете после изменения структуры базы</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">python manage.py migrate &#8211;<span class="re2">settings=</span>settings_lights</div>
</li>
<li class="li1">
<div class="de1">python manage.py dumpdata &#8211;<span class="re2">setting=</span>settings_lights <span class="sy0">&gt;</span> all_data.json</div>
</li>
</ol>
</div>
<h2>Тестирование</h2>
<p>Для тестирования я использую тот-же <em>settings_lights.py</em> для того, чтобы использовать <strong>sqlite3</strong> в тестах, при этом для тестов вся база будет держаться в памяти, что существенно ускорит процесс написания тестов и тестирования их. </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">python manage.py <span class="kw3">test</span> &#8211;<span class="re2">settings=</span>settings_lights</div>
</li>
</ol>
</div>
<p>Но я думаю как финальную проверку, после того, как вы закончили с разработкой ( доработкой  ) тестов можно использовать и реальный Engine.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">python manage.py <span class="kw3">test</span></div>
</li>
</ol>
</div>
<p>А собственно сам текст тестов может выглядить так:</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">from</span> django.<span class="kw3">test</span> <span class="kw1">import</span> TestCase</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> django.<span class="kw3">test</span>.<span class="me1">client</span> <span class="kw1">import</span> Client</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> django.<span class="me1">contrib</span>.<span class="me1">auth</span>.<span class="me1">models</span> <span class="kw1">import</span> User</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> SimpleTest<span class="br0">&#40;</span>TestCase<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; fixtures = <span class="br0">&#91;</span><span class="st0">&#39;all_data.json&#39;</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> setUp<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>: &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">client</span> = Client<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> test_details<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> User.<span class="me1">objects</span>.<span class="me1">all</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Этот пример ничего не тестирует, а просто показывает Вам, что данные на момент запуска тестов в базе уже есть. Фикстуры можно хранить как в папке fixtures любой апы, не только тестируемой. А еще в <a href="https://docs.djangoproject.com/en/1.3/ref/settings/#fixture-dirs">сетингсах</a> можно прописать:</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1">FIXTURE_DIRS = <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="st0">&#39;/path/to/myapp/fixtures/&#39;</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<h2>Проблема с сигналами</h2>
<p><i>Про сигналы в Django вы можете почитать в <a href="https://docs.djangoproject.com/en/1.3/topics/signals/">документции</a>.</i></p>
<p>Фикстура — это по сути сериализация ОРМ объектов, т. е. объект будет сохранен как json, как просто текст. А значит загрузка из фикстуры — это поочередное добавление всех объектов, а добавление объектов связано с вызовом сигналов, которые в свою очередь могу сами создавать объекты моделей или изменять существующие. </p>
<p>Например. У Вас есть 2 модели счета и транзакции. При добавлении транзакции — дергается сигнал, по которому изменяются балансы счетов участников этой транзакции. При подготовке фикстуры  вы создали одну транзакцию между двумя счетами на сумму 100 рублей, т. е. после ее проведения на одном счету прибавится 100 рублей, а на другой вычтится. Вы сохраните полученные данные в файл фикстуры, в которой будут готовые записи со счетами и транзакциями. Во время тестирования этот файл будет загружаться и вначале загрузятся модели счетов &#8211; на одном 100, на другом -100. После загрузятся транзакции и дернут сигнал, который еще раз изменит балансы на счетах и мы во время тестирования увидим состояния на счетах 200 и -200.</p>
<p>Решение у джанги <a href="https://code.djangoproject.com/ticket/5422">есть</a> , но почему-то не документированное, и как по мне — очень не удачное.</p>
<p>В обработчик сигнала передается параметр raw который True во время загрузки фиксутры.</p>
<p>Так что, если вы не хотите, чтоб обработчик сигнала работал в момент загрузки фикстуры, то первые 3 строчки вашего обработчика могут выглядит так:</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">def</span> trans_save<span class="br0">&#40;</span>sender, instance, raw, &nbsp;<span class="sy0">**</span>kwargs<span class="br0">&#41;</span>: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> raw: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span></div>
</li>
</ol>
</div>
<p>Как по мне — это недокументированную возможность надо огромными буквами задокументировать в обоих разделах — тесты и сигналы, но я думаю будут решения и лучше этой проблемы.</p>
<p>У меня все. Я описал то, как  с фикстурами работаю я, и очевидно, что они могут сэкономить очень много времени Вам при разработке тестов, а также могут помогать Вам делать более качественные и реальные тесты. </p>
<p>Хотелось бы в комментариях увидеть критику такого подхода, дополнения, подводные камни, с которым вы сталкиваетесь. Буду дополнять статью Вашими цитатами и идеями.</p>
<p>Спасибо, и удачных Вам выходных.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;t=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures" title="Facebook"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures&amp;source=Oduvan%27s+Web+Blog+&amp;summary=%D0%92%20Django%20%D0%B5%D1%81%D1%82%D1%8C%20%D1%82%D0%B0%D0%BA%D0%B0%D1%8F%20%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%89%D1%8C%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20fixtures.%20%D0%A3%D0%B4%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82%20%D0%B2%20%D1%82%D0%BE%D0%BC%2C%20%D1%87%D1%82%D0%BE%20%D0%B2%D0%B0%D1%88%D0%B8%20%D1%82%D0%B5%D1%81%D1%82%D1%8B%20%D0%BC%D0%BE%D0%B3%D1%83%D1%82%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B2%20%D1%83%D0%B6%D0%B5%20%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B4%D0%B0%D0%BD%D0" title="LinkedIn"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures&amp;notes=%D0%92%20Django%20%D0%B5%D1%81%D1%82%D1%8C%20%D1%82%D0%B0%D0%BA%D0%B0%D1%8F%20%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%89%D1%8C%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20fixtures.%20%D0%A3%D0%B4%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82%20%D0%B2%20%D1%82%D0%BE%D0%BC%2C%20%D1%87%D1%82%D0%BE%20%D0%B2%D0%B0%D1%88%D0%B8%20%D1%82%D0%B5%D1%81%D1%82%D1%8B%20%D0%BC%D0%BE%D0%B3%D1%83%D1%82%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B2%20%D1%83%D0%B6%D0%B5%20%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B4%D0%B0%D0%BD%D0" title="del.icio.us"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures" title="StumbleUpon"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;t=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures" title="MySpace"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures" title="Reddit"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures&amp;bodytext=%D0%92%20Django%20%D0%B5%D1%81%D1%82%D1%8C%20%D1%82%D0%B0%D0%BA%D0%B0%D1%8F%20%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%89%D1%8C%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20fixtures.%20%D0%A3%D0%B4%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82%20%D0%B2%20%D1%82%D0%BE%D0%BC%2C%20%D1%87%D1%82%D0%BE%20%D0%B2%D0%B0%D1%88%D0%B8%20%D1%82%D0%B5%D1%81%D1%82%D1%8B%20%D0%BC%D0%BE%D0%B3%D1%83%D1%82%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B2%20%D1%83%D0%B6%D0%B5%20%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B4%D0%B0%D0%BD%D0" title="Digg"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures&amp;annotation=%D0%92%20Django%20%D0%B5%D1%81%D1%82%D1%8C%20%D1%82%D0%B0%D0%BA%D0%B0%D1%8F%20%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%89%D1%8C%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20fixtures.%20%D0%A3%D0%B4%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82%20%D0%B2%20%D1%82%D0%BE%D0%BC%2C%20%D1%87%D1%82%D0%BE%20%D0%B2%D0%B0%D1%88%D0%B8%20%D1%82%D0%B5%D1%81%D1%82%D1%8B%20%D0%BC%D0%BE%D0%B3%D1%83%D1%82%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B2%20%D1%83%D0%B6%D0%B5%20%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B4%D0%B0%D0%BD%D0" title="Google Bookmarks"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F" title="Technorati"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="mailto:?subject=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures&amp;body=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F" title="email"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;partner=sociable" title="Print"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F" title="Sphinn"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/sphinn.png" title="Sphinn" alt="Sphinn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.mixx.com/submit?page_url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures" title="Mixx"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/mixx.png" title="Mixx" alt="Mixx" class="sociable-hovers" /></a></li>
	<li><a  href="http://blogplay.com" title="Blogplay"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/blogplay.png" title="Blogplay" alt="Blogplay" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkter.hu/index.php?action=suggest_link&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures" title="Linkter"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/linkter.png" title="Linkter" alt="Linkter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures" title="Live"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reporter.nl.msn.com/?fn=contribute&amp;Title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures&amp;URL=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;cat_id=6&amp;tag_id=31&amp;Remark=%D0%92%20Django%20%D0%B5%D1%81%D1%82%D1%8C%20%D1%82%D0%B0%D0%BA%D0%B0%D1%8F%20%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%89%D1%8C%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20fixtures.%20%D0%A3%D0%B4%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82%20%D0%B2%20%D1%82%D0%BE%D0%BC%2C%20%D1%87%D1%82%D0%BE%20%D0%B2%D0%B0%D1%88%D0%B8%20%D1%82%D0%B5%D1%81%D1%82%D1%8B%20%D0%BC%D0%BE%D0%B3%D1%83%D1%82%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B2%20%D1%83%D0%B6%D0%B5%20%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B4%D0%B0%D0%BD%D0" title="MSN Reporter"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/msnreporter.png" title="MSN Reporter" alt="MSN Reporter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.newsvine.com/_tools/seed&amp;save?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;h=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures" title="NewsVine"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/newsvine.png" title="NewsVine" alt="NewsVine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.lyabah.com/index.php/feed/" title="RSS"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://bookmarks.yahoo.com/toolbar/savebm?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;t=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures&opener=bm&amp;ei=UTF-8&amp;d=%D0%92%20Django%20%D0%B5%D1%81%D1%82%D1%8C%20%D1%82%D0%B0%D0%BA%D0%B0%D1%8F%20%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%89%D1%8C%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20fixtures.%20%D0%A3%D0%B4%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82%20%D0%B2%20%D1%82%D0%BE%D0%BC%2C%20%D1%87%D1%82%D0%BE%20%D0%B2%D0%B0%D1%88%D0%B8%20%D1%82%D0%B5%D1%81%D1%82%D1%8B%20%D0%BC%D0%BE%D0%B3%D1%83%D1%82%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B2%20%D1%83%D0%B6%D0%B5%20%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B4%D0%B0%D0%BD%D0" title="Yahoo! Bookmarks"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/yahoomyweb.png" title="Yahoo! Bookmarks" alt="Yahoo! Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;submitHeadline=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures&amp;submitSummary=%D0%92%20Django%20%D0%B5%D1%81%D1%82%D1%8C%20%D1%82%D0%B0%D0%BA%D0%B0%D1%8F%20%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%89%D1%8C%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20fixtures.%20%D0%A3%D0%B4%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82%20%D0%B2%20%D1%82%D0%BE%D0%BC%2C%20%D1%87%D1%82%D0%BE%20%D0%B2%D0%B0%D1%88%D0%B8%20%D1%82%D0%B5%D1%81%D1%82%D1%8B%20%D0%BC%D0%BE%D0%B3%D1%83%D1%82%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B2%20%D1%83%D0%B6%D0%B5%20%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B4%D0%B0%D0%BD%D0&amp;submitCategory=science&amp;submitAssetType=text" title="Yahoo! Buzz"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/yahoobuzz.png" title="Yahoo! Buzz" alt="Yahoo! Buzz" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://yigg.de/neu?exturl=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2011%2F06%2F10%2Ftesting-django-fixtures%2F&amp;exttitle=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%20Django%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20fixtures" title="Yigg"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/yiggit.png" title="Yigg" alt="Yigg" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.lyabah.com/index.php/2011/06/10/testing-django-fixtures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Доверяй но проверяй, разделяй и властвуй</title>
		<link>http://www.lyabah.com/index.php/2009/08/04/split-develop/</link>
		<comments>http://www.lyabah.com/index.php/2009/08/04/split-develop/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 09:38:05 +0000</pubDate>
		<dc:creator>Oduvan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[checking]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.lyabah.com/?p=499</guid>
		<description><![CDATA[Последнее время мучает одна идея. Мне как всегда кажется, что она реально не нова, и если это так, скажите мне, как это дело называется.
Если помните, я уже писал о тестировании наследниками. Теперь у меня родилась идея организации инлайн тестов, также намного своеобразным способом.
Что если проект разделить на 2, или создавать 2 его копии. Один будет [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lyabah.com/wp-content/uploads/2009/08/kombain.jpg"><img src="http://www.lyabah.com/wp-content/uploads/2009/08/kombain-300x228.jpg" alt="kombain" title="kombain" width="300" height="228" class="alignleft size-medium wp-image-501" /></a>Последнее время мучает одна идея. Мне как всегда кажется, что она реально не нова, и если это так, скажите мне, как это дело называется.</p>
<p>Если помните, я уже писал о <a href="http://www.lyabah.com/index.php/2009/04/15/%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8/">тестировании наследниками</a>. Теперь у меня родилась идея организации инлайн тестов, также намного своеобразным способом.</p>
<p>Что если проект разделить на 2, или создавать 2 его копии. Один будет для боевого сервера, а второй будет для сервера разработки. И проект для разработки будет отличатся от проекта для боевого только тем, что в него будут включены проверки входных данных для всех блоков программы ( или критичных, или точек взаимодействия модулей ), это бывает полезно, когда несколько человек работает на одним проекта и надо проверять, чтоб один разработки пользовался интерфейсом модуля другого разработчика правильно. Но все эти проверки не нужны на боевом, или не нужны с определенного времени. Т.е. чтоб от них можно было легко избавится и легко включить обратно.</p>
<p>Так. Надеюсь общую задачу я описал адекватно. Если нет, то возможно из решения вы поймете о чем речь.</p>
<p>Задача решается на python. </p>
<p>У python есть массив каталогов, в которых он ищет модуль, как только вы хотите его импортировать. И этот список каталогов можно расширять во время работы программы.</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">sys</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">sys</span>.<span class="me1">path</span>.<span class="me1">apend</span><span class="br0">&#40;</span><span class="st0">&#39;/home/oduvan/list_of_my_cool_modules&#39;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Python позволяет один и тот же модуль импортировать с разными именами. Т.е. в области видимости, в которую мы импортируем модуль — мы можем дать ему несколько различных имен.</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">sys</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">sys</span> as new_sys</div>
</li>
</ol>
</div>
<p>И можно все имена из одного модуля импортировать в другой модуль.</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">from</span> <span class="kw3">sys</span> <span class="kw1">import</span> <span class="sy0">*</span></div>
</li>
</ol>
</div>
<p>Вот по сути и весь необходимый функционал от python, который необходим для реализации этой идеи. Т.е. предполагаю, что любой другой  язык с ООП, который имеет эти возможности может использовать эту идею.</p>
<p>Решение. </p>
<p>Модули для боевого сервера — будут включать в себя только функционал, т.е без каких либо проверок. А модули для деволова будут включать только проверки  и никакого функционала. В них будут собраны функции, которые будут проверять входных параметры одноименных функций из девелопа. При чем возможности проверок вообще ничем не ограничены.</p>
<p>Ниже приведена структура каталогов и файлов нашего проекта.</p>
<pre>
modules
	__init__.py
	develop
		__init__.py
		t1.py
	production
		__init__.py
		t1.py
		t2.py
run.py
</pre>
<p>В modules/production собраны все модули для боевого сервера<br />
В modules/develop модули с проверками данных<br />
run.py скрипт, в котором они будут использоваться.</p>
<p>Замете, что в папке modules тоже есть файл __init__.py, т.е. он также будет точкой отсчета для импорта.</p>
<p>В папке develop есть файл t1.py для тестирования такого же модуля из продакшена, или его части. А также мы видим, что модуль t2 остается без тестов. </p>
<p>( Автор просит прощения, за такие без звучные имена, с фантазией у него совсем все плохо )</p>
<p>Приведу пример модуля t1 из production</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">def</span> p_name<span class="br0">&#40;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">&#39;Production&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">def</span> just_in_prod<span class="br0">&#40;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">&#39;This just in prod&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">def</span> sum2<span class="br0">&#40;</span>a,b<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> a+b</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> A<span class="br0">&#40;</span><span class="kw2">object</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> b_prop<span class="br0">&#40;</span><span class="kw2">self</span>,b<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> b.<span class="me1">prop</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> B<span class="br0">&#40;</span><span class="kw2">object</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>,prop<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">prop</span> = prop</div>
</li>
</ol>
</div>
<p>функция p_name просто нужна для вывода имени модуля или репозитария, для нас она особой ценности не имеет.<br />
just_in_prod — тестироваться этой функции проводится не будет<br />
sum2 — складывает 2 числа. И мы хотим проверить, чтоб это на самом деле были 2 числа.<br />
Объект класс A имеет метод, который на вход получает один параметр — объект класса B, и возвращает его свойство. Класс B мы также тестировать не будем.</p>
<p>Как сами уже можете видеть, в модуле нет ни одного слово о тестах. Вы видите чистый функционал.</p>
<p>Теперь приведу вам пример модуля t1 из develop</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">from</span> production.<span class="me1">t1</span> <span class="kw1">import</span> <span class="sy0">*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> production.<span class="me1">t1</span> as P</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">def</span> p_name<span class="br0">&#40;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">&#39;Develop&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; P.<span class="me1">p_name</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">def</span> sum2<span class="br0">&#40;</span>a,b<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw1">not</span> <span class="kw2">isinstance</span><span class="br0">&#40;</span>a, <span class="br0">&#40;</span><span class="kw2">int</span>,<span class="kw2">float</span><span class="br0">&#41;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">raise</span> <span class="kw2">ValueError</span><span class="br0">&#40;</span><span class="st0">&#39;a must be int or float&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw1">not</span> <span class="kw2">isinstance</span><span class="br0">&#40;</span>b, <span class="br0">&#40;</span><span class="kw2">int</span>,<span class="kw2">float</span><span class="br0">&#41;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">raise</span> <span class="kw2">ValueError</span><span class="br0">&#40;</span><span class="st0">&#39;a must be int or float&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> P.<span class="me1">sum2</span><span class="br0">&#40;</span>a,b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> A<span class="br0">&#40;</span>P.<span class="me1">A</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> b_prop<span class="br0">&#40;</span><span class="kw2">self</span>,b,<span class="sy0">*</span>args,<span class="sy0">**</span>kwargs<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="kw1">not</span> <span class="kw2">isinstance</span><span class="br0">&#40;</span>b, B<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">raise</span> <span class="kw2">ValueError</span><span class="br0">&#40;</span><span class="st0">&#39;first argument must be instance of B&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">super</span><span class="br0">&#40;</span>A,<span class="kw2">self</span><span class="br0">&#41;</span>.<span class="me1">b_prop</span><span class="br0">&#40;</span>b,<span class="sy0">*</span>args,<span class="sy0">**</span>kwargs<span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Первые 2 строчки всегда должны быть в модуле тестирования.</p>
<p>Функция p_name будет чисто информативная ( мы на ней покажем вам порядок импортирования) , и безусловно тестирование без нее лучше обойтись.</p>
<p>Проверка для функции sum2 и проверка для свойства b_prop из класса A. </p>
<p>Ну и текст скрипта, который демонстрирует процесс работы и тестирования run.py. Предполагается, что у вас это и будет точкой отсчета для запуска. </p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">sys</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">sys</span>.<span class="me1">path</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&#39;modules/develop&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">sys</span>.<span class="me1">path</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&#39;modules&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">sys</span>.<span class="me1">path</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&#39;modules/production&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> t1,t2</div>
</li>
<li class="li1">
<div class="de1">t1.<span class="me1">p_name</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> <span class="st0">&#39;&#8212;&#39;</span></div>
</li>
<li class="li1">
<div class="de1">t1.<span class="me1">just_in_prod</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">t2.<span class="me1">in_only_production</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> <span class="st0">&#39;&#8212;&#39;</span></div>
</li>
<li class="li1">
<div class="de1">o_a = t1.<span class="me1">A</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">o_b = t1.<span class="me1">B</span><span class="br0">&#40;</span><span class="st0">&#39;it_s prop&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> o_a.<span class="me1">b_prop</span><span class="br0">&#40;</span>o_b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> t1.<span class="me1">sum2</span><span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">2</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> o_a.<span class="me1">b_prop</span><span class="br0">&#40;</span><span class="nu0">15</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>В этом скрипте важным является порядок добавления модулей в массив sys.path, ну и то, чтоб эти строчки были самые первые в вашем скрипте.</p>
<p>Вывод скрипта будет следующий </p>
<pre>
Develop
Production
---
This just in prod
Only in production
---
it_s prop
3
Traceback (most recent call last):
  File "run.py", line 18, in <module>
    print o_a.b_prop(15)
  File "modules/develop/t1.py", line 18, in b_prop
    raise ValueError('first argument must be instance of B')
ValueError: first argument must be instance of B
</pre>
<p>для боевого сервера он будет такой же, только в «шапке» скрипта будет не</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">sys</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">sys</span>.<span class="me1">path</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&#39;modules/develop&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">sys</span>.<span class="me1">path</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&#39;modules&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">sys</span>.<span class="me1">path</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&#39;modules/production&#39;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>а</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">sys</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">sys</span>.<span class="me1">path</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&#39;modules/production&#39;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>В этом случае поменяется только текст ошибки</p>
<pre>
Production
---
This just in prod
Only in production
---
it_s prop
3
Traceback (most recent call last):
  File "run.py", line 18, in <module>
    print o_a.b_prop(15)
  File "modules/production/t1.py", line 12, in b_prop
    return b.prop
AttributeError: 'int' object has no attribute 'prop'
</pre>
<p>Я думаю люди, которые часами разбирались в мало понятных ошибках модулей — оценят идею.</p>
<p>Да, и еще одним плюсом является то, что вы можете делать легко несколько профилей тестирования и легко между ними переключатся, Добавив рядом с папкой develop, что нить типа develop_plusplus, или если вы хотите залить на продакшн тесты, но не хотите тестировать все, а только те чатити, которые подвержены изменения develop_light. </p>
<p>Я же планирую у себя это использовать для своего сокет сервера. У меня именно так разнесен скрипт run.pay от функциональных модулей. И думаю при запуске его добавить еще параметр -t которому можно будет передать имя профиля тестирования.</p>
<p><a href='http://www.lyabah.com/wp-content/uploads/2009/08/split_develop.tar.gz'>Файлы из примера split_develop.tar</a></p>
<p>Вот и все. Жду жесткую критику, предложения по улучшению.</p>
<p><strong>Спасибо, что дочитали до конца <img src='http://www.lyabah.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;t=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9" title="Facebook"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9&amp;source=Oduvan%27s+Web+Blog+&amp;summary=%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%BC%D1%83%D1%87%D0%B0%D0%B5%D1%82%20%D0%BE%D0%B4%D0%BD%D0%B0%20%D0%B8%D0%B4%D0%B5%D1%8F.%20%D0%9C%D0%BD%D0%B5%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%20%D0%BA%D0%B0%D0%B6%D0%B5%D1%82%D1%81%D1%8F%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D0%B8%20%D0%B5%D1%81%D0%BB%D0%B8%20%D1%8D%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%2C%20%D1%81%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%20%D0%BC%D0%BD%D0%B5%2C%20%D0%BA%D0%B0%D0%BA%20%D1%8D%D1%82%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%BE%20%D0%BD%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F.%0D%0A%0D%0A%D0%95%D1" title="LinkedIn"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9&amp;notes=%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%BC%D1%83%D1%87%D0%B0%D0%B5%D1%82%20%D0%BE%D0%B4%D0%BD%D0%B0%20%D0%B8%D0%B4%D0%B5%D1%8F.%20%D0%9C%D0%BD%D0%B5%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%20%D0%BA%D0%B0%D0%B6%D0%B5%D1%82%D1%81%D1%8F%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D0%B8%20%D0%B5%D1%81%D0%BB%D0%B8%20%D1%8D%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%2C%20%D1%81%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%20%D0%BC%D0%BD%D0%B5%2C%20%D0%BA%D0%B0%D0%BA%20%D1%8D%D1%82%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%BE%20%D0%BD%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F.%0D%0A%0D%0A%D0%95%D1" title="del.icio.us"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9" title="StumbleUpon"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;t=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9" title="MySpace"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9" title="Reddit"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9&amp;bodytext=%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%BC%D1%83%D1%87%D0%B0%D0%B5%D1%82%20%D0%BE%D0%B4%D0%BD%D0%B0%20%D0%B8%D0%B4%D0%B5%D1%8F.%20%D0%9C%D0%BD%D0%B5%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%20%D0%BA%D0%B0%D0%B6%D0%B5%D1%82%D1%81%D1%8F%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D0%B8%20%D0%B5%D1%81%D0%BB%D0%B8%20%D1%8D%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%2C%20%D1%81%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%20%D0%BC%D0%BD%D0%B5%2C%20%D0%BA%D0%B0%D0%BA%20%D1%8D%D1%82%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%BE%20%D0%BD%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F.%0D%0A%0D%0A%D0%95%D1" title="Digg"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9&amp;annotation=%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%BC%D1%83%D1%87%D0%B0%D0%B5%D1%82%20%D0%BE%D0%B4%D0%BD%D0%B0%20%D0%B8%D0%B4%D0%B5%D1%8F.%20%D0%9C%D0%BD%D0%B5%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%20%D0%BA%D0%B0%D0%B6%D0%B5%D1%82%D1%81%D1%8F%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D0%B8%20%D0%B5%D1%81%D0%BB%D0%B8%20%D1%8D%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%2C%20%D1%81%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%20%D0%BC%D0%BD%D0%B5%2C%20%D0%BA%D0%B0%D0%BA%20%D1%8D%D1%82%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%BE%20%D0%BD%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F.%0D%0A%0D%0A%D0%95%D1" title="Google Bookmarks"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F" title="Technorati"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="mailto:?subject=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9&amp;body=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F" title="email"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;partner=sociable" title="Print"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F" title="Sphinn"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/sphinn.png" title="Sphinn" alt="Sphinn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.mixx.com/submit?page_url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9" title="Mixx"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/mixx.png" title="Mixx" alt="Mixx" class="sociable-hovers" /></a></li>
	<li><a  href="http://blogplay.com" title="Blogplay"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/blogplay.png" title="Blogplay" alt="Blogplay" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkter.hu/index.php?action=suggest_link&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9" title="Linkter"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/linkter.png" title="Linkter" alt="Linkter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9" title="Live"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reporter.nl.msn.com/?fn=contribute&amp;Title=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9&amp;URL=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;cat_id=6&amp;tag_id=31&amp;Remark=%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%BC%D1%83%D1%87%D0%B0%D0%B5%D1%82%20%D0%BE%D0%B4%D0%BD%D0%B0%20%D0%B8%D0%B4%D0%B5%D1%8F.%20%D0%9C%D0%BD%D0%B5%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%20%D0%BA%D0%B0%D0%B6%D0%B5%D1%82%D1%81%D1%8F%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D0%B8%20%D0%B5%D1%81%D0%BB%D0%B8%20%D1%8D%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%2C%20%D1%81%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%20%D0%BC%D0%BD%D0%B5%2C%20%D0%BA%D0%B0%D0%BA%20%D1%8D%D1%82%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%BE%20%D0%BD%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F.%0D%0A%0D%0A%D0%95%D1" title="MSN Reporter"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/msnreporter.png" title="MSN Reporter" alt="MSN Reporter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.newsvine.com/_tools/seed&amp;save?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;h=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9" title="NewsVine"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/newsvine.png" title="NewsVine" alt="NewsVine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.lyabah.com/index.php/feed/" title="RSS"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://bookmarks.yahoo.com/toolbar/savebm?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;t=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9&opener=bm&amp;ei=UTF-8&amp;d=%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%BC%D1%83%D1%87%D0%B0%D0%B5%D1%82%20%D0%BE%D0%B4%D0%BD%D0%B0%20%D0%B8%D0%B4%D0%B5%D1%8F.%20%D0%9C%D0%BD%D0%B5%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%20%D0%BA%D0%B0%D0%B6%D0%B5%D1%82%D1%81%D1%8F%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D0%B8%20%D0%B5%D1%81%D0%BB%D0%B8%20%D1%8D%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%2C%20%D1%81%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%20%D0%BC%D0%BD%D0%B5%2C%20%D0%BA%D0%B0%D0%BA%20%D1%8D%D1%82%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%BE%20%D0%BD%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F.%0D%0A%0D%0A%D0%95%D1" title="Yahoo! Bookmarks"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/yahoomyweb.png" title="Yahoo! Bookmarks" alt="Yahoo! Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;submitHeadline=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9&amp;submitSummary=%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%BC%D1%83%D1%87%D0%B0%D0%B5%D1%82%20%D0%BE%D0%B4%D0%BD%D0%B0%20%D0%B8%D0%B4%D0%B5%D1%8F.%20%D0%9C%D0%BD%D0%B5%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%20%D0%BA%D0%B0%D0%B6%D0%B5%D1%82%D1%81%D1%8F%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D0%B8%20%D0%B5%D1%81%D0%BB%D0%B8%20%D1%8D%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%2C%20%D1%81%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%20%D0%BC%D0%BD%D0%B5%2C%20%D0%BA%D0%B0%D0%BA%20%D1%8D%D1%82%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%BE%20%D0%BD%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F.%0D%0A%0D%0A%D0%95%D1&amp;submitCategory=science&amp;submitAssetType=text" title="Yahoo! Buzz"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/yahoobuzz.png" title="Yahoo! Buzz" alt="Yahoo! Buzz" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://yigg.de/neu?exturl=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F08%2F04%2Fsplit-develop%2F&amp;exttitle=%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9%2C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B9%20%D0%B8%20%D0%B2%D0%BB%D0%B0%D1%81%D1%82%D0%B2%D1%83%D0%B9" title="Yigg"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/yiggit.png" title="Yigg" alt="Yigg" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.lyabah.com/index.php/2009/08/04/split-develop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Тестирование наследниками</title>
		<link>http://www.lyabah.com/index.php/2009/04/15/%d1%82%d0%b5%d1%81%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0%d1%81%d0%bb%d0%b5%d0%b4%d0%bd%d0%b8%d0%ba%d0%b0%d0%bc%d0%b8/</link>
		<comments>http://www.lyabah.com/index.php/2009/04/15/%d1%82%d0%b5%d1%81%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0%d1%81%d0%bb%d0%b5%d0%b4%d0%bd%d0%b8%d0%ba%d0%b0%d0%bc%d0%b8/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 11:10:05 +0000</pubDate>
		<dc:creator>Oduvan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[inlite]]></category>
		<category><![CDATA[servers]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.lyabah.com/?p=327</guid>
		<description><![CDATA[Коротенько изложу идею. И как всегда, уверен, что она не нова, т.к. ничего особенного в ней нет.
Итак. Тестирование. Для меня синоним закрепления функционала. И тесты я как правило пишу, когда у меня утряслась бизнес логика и архитектура проекта, и даже отчасти написана документация ( в тех местах, где было не лень). Когда у вас просто [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.lyabah.com/wp-content/uploads/2009/04/crashtestdummy.jpg" alt="crashtestdummy" title="crashtestdummy" width="232" height="174" class="alignleft size-full wp-image-328" />Коротенько изложу идею. И как всегда, уверен, что она не нова, т.к. ничего особенного в ней нет.</p>
<p>Итак. Тестирование. Для меня синоним закрепления функционала. И тесты я как правило пишу, когда у меня утряслась бизнес логика и архитектура проекта, и даже отчасти написана документация ( в тех местах, где было не лень). Когда у вас просто класс, который супирует 2 числа и выдает результат, то написать автоматические тесты &#8211; не проблема. У меня стала задача написание автоматических тестов для сетевого приложения.</p>
<p>Общая задача его сводится к следующему. К нему по очереди цепляются клиенты, оставляют какие то данные. Сервер обрабатывает и выдает инфу следующим клиентам. Это общая задача для любого сетевого приложения + есть игровой элемент, когда есть событие, которое может возникнуть с некой вероятностью. Как организовать тест. Первое, что пришло в голову — это тестируемые программы, которые подключаются к этому серваку, прогоняют функционал, проверяют ответы, выдают результат. Но можно проще. Тестируемое приложение имеет базовый класс. В котором создаётся объект сокет сервера и объект коннекта к бд. Мы создаем наследника от него, в котором переопределяем функции коннекта и обработки данных с сокет сервера, а функции эти просто сохраняют эти данные в отдельной переменной. Таким образом мы уже тестирует сам функционал, а не систему взаимодействия (которую изначально рассматриваем как черный ящик), и все тестирование по сути сводится к суммированию двух чисел. Кроме того — вы можете сразу выделить вероятностный функционал, например который генерит рандомное значение, и его также переопределить, чтоб данные не генерировались, а брались из заданного пула значений.</p>
<p>Как бонус, можно попробовать, создать отдельный наследник, в котором будут инлайн тесты самого приложения. Т.е. когда во время реальной работы приложения идет тестирование его промежуточных результатов, таким образом можно не напортачить в процессе самой разработки. </p>
<p>Вот и все.  Ваше мнение?</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;t=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8" title="Facebook"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8&amp;source=Oduvan%27s+Web+Blog+&amp;summary=%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%B5%D0%BD%D1%8C%D0%BA%D0%BE%20%D0%B8%D0%B7%D0%BB%D0%BE%D0%B6%D1%83%20%D0%B8%D0%B4%D0%B5%D1%8E.%20%D0%98%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%2C%20%D1%83%D0%B2%D0%B5%D1%80%D0%B5%D0%BD%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D1%82.%D0%BA.%20%D0%BD%D0%B8%D1%87%D0%B5%D0%B3%D0%BE%20%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%20%D0%BD%D0%B5%D0%B9%20%D0%BD%D0%B5%D1%82.%0D%0A%0D%0A%D0%98%D1%82%D0%B0%D0%BA.%20%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5.%20%D0%94%D0%BB%D1%8F%20%D0%BC%D0%B5%D0%BD%D1%8F%20%D1%81%D0%B8%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%B7%D0%B0%D0%BA%D1%80%D0%B5" title="LinkedIn"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8&amp;notes=%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%B5%D0%BD%D1%8C%D0%BA%D0%BE%20%D0%B8%D0%B7%D0%BB%D0%BE%D0%B6%D1%83%20%D0%B8%D0%B4%D0%B5%D1%8E.%20%D0%98%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%2C%20%D1%83%D0%B2%D0%B5%D1%80%D0%B5%D0%BD%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D1%82.%D0%BA.%20%D0%BD%D0%B8%D1%87%D0%B5%D0%B3%D0%BE%20%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%20%D0%BD%D0%B5%D0%B9%20%D0%BD%D0%B5%D1%82.%0D%0A%0D%0A%D0%98%D1%82%D0%B0%D0%BA.%20%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5.%20%D0%94%D0%BB%D1%8F%20%D0%BC%D0%B5%D0%BD%D1%8F%20%D1%81%D0%B8%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%B7%D0%B0%D0%BA%D1%80%D0%B5" title="del.icio.us"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8" title="StumbleUpon"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;t=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8" title="MySpace"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8" title="Reddit"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8&amp;bodytext=%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%B5%D0%BD%D1%8C%D0%BA%D0%BE%20%D0%B8%D0%B7%D0%BB%D0%BE%D0%B6%D1%83%20%D0%B8%D0%B4%D0%B5%D1%8E.%20%D0%98%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%2C%20%D1%83%D0%B2%D0%B5%D1%80%D0%B5%D0%BD%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D1%82.%D0%BA.%20%D0%BD%D0%B8%D1%87%D0%B5%D0%B3%D0%BE%20%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%20%D0%BD%D0%B5%D0%B9%20%D0%BD%D0%B5%D1%82.%0D%0A%0D%0A%D0%98%D1%82%D0%B0%D0%BA.%20%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5.%20%D0%94%D0%BB%D1%8F%20%D0%BC%D0%B5%D0%BD%D1%8F%20%D1%81%D0%B8%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%B7%D0%B0%D0%BA%D1%80%D0%B5" title="Digg"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8&amp;annotation=%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%B5%D0%BD%D1%8C%D0%BA%D0%BE%20%D0%B8%D0%B7%D0%BB%D0%BE%D0%B6%D1%83%20%D0%B8%D0%B4%D0%B5%D1%8E.%20%D0%98%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%2C%20%D1%83%D0%B2%D0%B5%D1%80%D0%B5%D0%BD%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D1%82.%D0%BA.%20%D0%BD%D0%B8%D1%87%D0%B5%D0%B3%D0%BE%20%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%20%D0%BD%D0%B5%D0%B9%20%D0%BD%D0%B5%D1%82.%0D%0A%0D%0A%D0%98%D1%82%D0%B0%D0%BA.%20%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5.%20%D0%94%D0%BB%D1%8F%20%D0%BC%D0%B5%D0%BD%D1%8F%20%D1%81%D0%B8%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%B7%D0%B0%D0%BA%D1%80%D0%B5" title="Google Bookmarks"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F" title="Technorati"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="mailto:?subject=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8&amp;body=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F" title="email"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;partner=sociable" title="Print"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F" title="Sphinn"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/sphinn.png" title="Sphinn" alt="Sphinn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.mixx.com/submit?page_url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8" title="Mixx"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/mixx.png" title="Mixx" alt="Mixx" class="sociable-hovers" /></a></li>
	<li><a  href="http://blogplay.com" title="Blogplay"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/blogplay.png" title="Blogplay" alt="Blogplay" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkter.hu/index.php?action=suggest_link&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8" title="Linkter"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/linkter.png" title="Linkter" alt="Linkter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8" title="Live"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reporter.nl.msn.com/?fn=contribute&amp;Title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8&amp;URL=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;cat_id=6&amp;tag_id=31&amp;Remark=%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%B5%D0%BD%D1%8C%D0%BA%D0%BE%20%D0%B8%D0%B7%D0%BB%D0%BE%D0%B6%D1%83%20%D0%B8%D0%B4%D0%B5%D1%8E.%20%D0%98%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%2C%20%D1%83%D0%B2%D0%B5%D1%80%D0%B5%D0%BD%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D1%82.%D0%BA.%20%D0%BD%D0%B8%D1%87%D0%B5%D0%B3%D0%BE%20%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%20%D0%BD%D0%B5%D0%B9%20%D0%BD%D0%B5%D1%82.%0D%0A%0D%0A%D0%98%D1%82%D0%B0%D0%BA.%20%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5.%20%D0%94%D0%BB%D1%8F%20%D0%BC%D0%B5%D0%BD%D1%8F%20%D1%81%D0%B8%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%B7%D0%B0%D0%BA%D1%80%D0%B5" title="MSN Reporter"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/msnreporter.png" title="MSN Reporter" alt="MSN Reporter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.newsvine.com/_tools/seed&amp;save?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;h=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8" title="NewsVine"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/newsvine.png" title="NewsVine" alt="NewsVine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.lyabah.com/index.php/feed/" title="RSS"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://bookmarks.yahoo.com/toolbar/savebm?u=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;t=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8&opener=bm&amp;ei=UTF-8&amp;d=%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%B5%D0%BD%D1%8C%D0%BA%D0%BE%20%D0%B8%D0%B7%D0%BB%D0%BE%D0%B6%D1%83%20%D0%B8%D0%B4%D0%B5%D1%8E.%20%D0%98%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%2C%20%D1%83%D0%B2%D0%B5%D1%80%D0%B5%D0%BD%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D1%82.%D0%BA.%20%D0%BD%D0%B8%D1%87%D0%B5%D0%B3%D0%BE%20%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%20%D0%BD%D0%B5%D0%B9%20%D0%BD%D0%B5%D1%82.%0D%0A%0D%0A%D0%98%D1%82%D0%B0%D0%BA.%20%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5.%20%D0%94%D0%BB%D1%8F%20%D0%BC%D0%B5%D0%BD%D1%8F%20%D1%81%D0%B8%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%B7%D0%B0%D0%BA%D1%80%D0%B5" title="Yahoo! Bookmarks"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/yahoomyweb.png" title="Yahoo! Bookmarks" alt="Yahoo! Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;submitHeadline=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8&amp;submitSummary=%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%B5%D0%BD%D1%8C%D0%BA%D0%BE%20%D0%B8%D0%B7%D0%BB%D0%BE%D0%B6%D1%83%20%D0%B8%D0%B4%D0%B5%D1%8E.%20%D0%98%20%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%2C%20%D1%83%D0%B2%D0%B5%D1%80%D0%B5%D0%BD%2C%20%D1%87%D1%82%D0%BE%20%D0%BE%D0%BD%D0%B0%20%D0%BD%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B0%2C%20%D1%82.%D0%BA.%20%D0%BD%D0%B8%D1%87%D0%B5%D0%B3%D0%BE%20%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%20%D0%BD%D0%B5%D0%B9%20%D0%BD%D0%B5%D1%82.%0D%0A%0D%0A%D0%98%D1%82%D0%B0%D0%BA.%20%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5.%20%D0%94%D0%BB%D1%8F%20%D0%BC%D0%B5%D0%BD%D1%8F%20%D1%81%D0%B8%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%B7%D0%B0%D0%BA%D1%80%D0%B5&amp;submitCategory=science&amp;submitAssetType=text" title="Yahoo! Buzz"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/yahoobuzz.png" title="Yahoo! Buzz" alt="Yahoo! Buzz" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://yigg.de/neu?exturl=http%3A%2F%2Fwww.lyabah.com%2Findex.php%2F2009%2F04%2F15%2F%25d1%2582%25d0%25b5%25d1%2581%25d1%2582%25d0%25b8%25d1%2580%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25b0%25d1%2581%25d0%25bb%25d0%25b5%25d0%25b4%25d0%25bd%25d0%25b8%25d0%25ba%25d0%25b0%25d0%25bc%25d0%25b8%2F&amp;exttitle=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8" title="Yigg"><img src="http://www.lyabah.com/wp-content/plugins/sociable/images/yiggit.png" title="Yigg" alt="Yigg" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.lyabah.com/index.php/2009/04/15/%d1%82%d0%b5%d1%81%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0%d1%81%d0%bb%d0%b5%d0%b4%d0%bd%d0%b8%d0%ba%d0%b0%d0%bc%d0%b8/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

