<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>автоматизация &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/автоматизация/</link>
	<description>Feed of posts on WordPress.com tagged "автоматизация"</description>
	<pubDate>Sat, 11 Oct 2008 04:31:42 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Три сита в грамотном тестировании]]></title>
<link>http://testitquickly.wordpress.com/?p=463</link>
<pubDate>Thu, 09 Oct 2008 15:17:36 +0000</pubDate>
<dc:creator>Алексей Лупан</dc:creator>
<guid>http://testitquickly.com/2008/10/09/tri_sita/</guid>
<description><![CDATA[Вечер.
Хочется порассуждать о тестировании глобально, ]]></description>
<content:encoded><![CDATA[<p>Вечер.</p>
<p>Хочется порассуждать о тестировании глобально, посасывая белое мартини из трубочки. Именно мартини, потому, что «массандровский» херес меня не восхитил, а коньяка в офисе уже мало.</p>
<p>Рассуждать хочу долго и о ситах.</p>
<blockquote><p><strong>Си́то</strong> — устройство для разделения сыпучих масс по величине их составляющих (зёрен, круп, песка и т.п.).</p></blockquote>
<p><!--more--></p>
<p>Сперва послушаем историков:</p>
<blockquote><p>Человеческие жертвоприношения из ряда тестировщиков до и после релиза были распространённым явлением у менеджеров проектов, живших на полуострове Юкатан до нашествия конкистадоров. Тестировщиков приносили в жертву через повешение, утопление, отравление, избивание, а также посредством захоронения заживо в груде документации по проекту.</p>
<p>Наиболее жестоким видом жертвоприношения являлось, как и у девелоперов, вспарывание живота и вырывание из груди ещё бьющегося сердца тестировщика, который пропустил баг.</p>
<p>В жертву приносились как тестировщики, перекупленные в ходе войн представители других племён (корпораций), так и члены собственной группы, в том числе и высший слой, сениоры.</p>
<p>Выбор времени, очерёдности и способа жертвоприношения тестировщиков до сих пор не ясен. Точно установлено, что в жертвоприношение в огромных масштабах приносились тестировщики, выявленные в офисе после демонстрации продакшн-релизов представителям заказчика. Однако до сих пор неясно, вели ли менеджеры проектов кровопролитные войны для получения большего количества тестировщиков с целью принесения их в будущем в жертву.</p></blockquote>
<p>Итак, утопление.</p>
<p>В начале ХХ века в центральной Америке было модно заниматься археологическими раскопками в «подземных» озерах. Для тех, кто в эти озера когда-то нырял, это довольно мрачное место. А для археолога ХХ века подобное озеро - кладезь информации. На дне, в многовековых наслоениях грязи, лежат никем не разворованные украшения, кости, черепа и прочие интересные археологические штучки.</p>
<p>Как все это добро достать?</p>
<p>Любое движение водолаза по дну такого жилищного массива баламутит всю грязь, и видимость склоняется к нулю.</p>
<p>А водолаз без движения уподобляется тем, кто уже никогда не выныривал из этого озера.</p>
<p>Выход — использовать насосы с ситами разного калибра. Положим три сита друг на друга. Наверху будет сито с самыми крупными ячейками. В середине — среднее. Снизу — самое мелкоячеистое.</p>
<p>Насос начинает выкачивать грязь из подземного озера. Грязь вываливается на сита, и археологам надо только подставлять свои любопытные руки под это месиво.</p>
<ul>
<li>Все крупные предметы будут лежать на верхнем сите.</li>
<li>Самые мелкие тоже не пропадут, потому что их пропустит среднее сито, но задержит самое мелкое.</li>
<li>Все бусины буду сосчитаны и уложены в ящики. Если их не пропьют помощники археологов, то позже их можно будет выкрасть из европейских музеев.</li>
</ul>
<p>В идеальном, грамотном процессе девелопмента применим тот же принцип просеивания тонны грязи <span style="text-decoration:line-through;">софта</span> сквозь три сита. Но, поскольку у нас тут не все как у людей, то порядок расположения сит изменен. Сверху лежит самое мелкоячеистое, потом среднее, и внизу — сито с самой крупноячеистой сеткой.</p>
<p>Сделаем музыкальную паузу.</p>
<hr /><strong><span style="color:#ff0000;">Прочти, раскрась, запомни:</span></strong></p>
<blockquote><p>Тестирование в Agile-way особенно сильно тем, что всё, что можно автоматизировать, автоматизируется до и во время разработки, а не отдельно от неё.</p></blockquote>
<hr />Продолжим сосать мартини и рассуждать.</p>
<p>Каждое "сито" в девелопменте имеет свое имя.</p>
<ol>
<li>Test Driven Development — сито мелкоячеистое.</li>
<li> Acceptance Test Driven Development — сито среднеячеистое.</li>
<li> Functional Testing — сито крупноячеистое.</li>
</ol>
<p>Первые два сита — епархия программистов. Сам я существенно разбираюсь только в третьей теме.</p>
<p>Тестировщики и прочий рабочий люд тоже могут запускать акксептанс-тесты одной кнопкой, но по-настоящему полезно и мощно этот инструмент работает в руках программистов, которые могут писать, запускать и апдейтить акксептанс-тесты в ходе разработки, а не после или вместо неё.</p>
<p>Рассуждать о трех ситах следует абстрактно, с точки зрения процесса, не вдаваясь в детальки.</p>
<blockquote><p>Например, понятие сита — уже абстракция.</p></blockquote>
<p>Абстрактность тут нужна потому, что большинству людей понятие TDD поначалу не «поддаётся», и неимоверно трудным оказывается процесс понимания всего этого. Но когда во все врубился и вгрыззся, становится странным, что до сих пор все это не использовал...</p>
<h2><span style="color:#008000;"><strong>Unit testing</strong></span></h2>
<p>Внятный пример - <a href="http://cylib.iit.nau.edu.ua/Books/ComputerScience/PhilosophyProblem/xprogramming.ru/Articles/LoveUT.html">LoveUT</a>.</p>
<p>Цитата из статьи:</p>
<blockquote><p>Тихо мурлыкая под нос, Анна продолжает кодировать свой класс.</p></blockquote>
<p>Суть «разработки через тестирование» проста:</p>
<ul>
<li>Сначала программист пишет тест для проверки функциональности, которую собирается написать. Этот тест называется «unit-test», потому, что он проверяет только одну единицу функционала.</li>
<li> Затем программист пишет функциональность.</li>
<li> И постоянно проверяет ее посредством ранее написанного, специально для нее, теста.</li>
<li> Как только функционал удовлетворяет требованиям этого теста, разработка функции считается завершенной. Переходим к следующей.</li>
<li> Во время разработки других функций, которые связаны с уже существующей, программисту можно и следует запускать юнит-тесты чаще, чем его легкие всасывают в себя один литр воздуха. Если все «горит зеленым» — программист счастлив. Если красное — увы.</li>
</ul>
<p>Юнит-тестирование (на абстрактном уровне) позволяет достаточно быстро проверить, не привело ли очередное изменение кода к <em>регрессии</em>, то есть к появлению ошибок в уже написанных и оттестированных местах программы, а также существенно облегчает локализацию и устранение таких ошибок. Все это <strong>может</strong> ускорить разработку.</p>
<p>Особенности юнит-тестов:</p>
<ul>
<li> Неподготовленный человек не может их читать и понимать, не видя код.</li>
<li> Уровень абстракции в юнит-тестировании неимоверно нулевой. Тесты обрабатывают определенный код, и будучи отстраненными от кода просто не находят смысла в своем существовании. Цель юнит-тестирования — изолировать отдельные части программы и показать, что по отдельности эти части — работоспособны.</li>
<li> Когда функция меняется, юнит-тесты меняются в первую очередь.</li>
</ul>
<p>Дальше надо сидеть рядом и показывать, как это работает. Этот момент в одиночку вряд ли одолеть, поэтому пропускаем подробности и едем дальше.</p>
<h2><span style="color:#008000;"><strong>Acceptance testing</strong></span></h2>
<p>Внятное описание на английском языке: <a href="http://en.wikipedia.org/wiki/Acceptance_testing">wikipedia.org</a>.</p>
<p>Акксептанс-тесты — второй шаг после юнит-тестов. Это уже существенный уровень абстрактности от кода.</p>
<p>На предыдущем уровне проверялось и доказывалось, что каждая отдельная часть программы работоспособна. А на этом уровне проверяются взаимосвязи между отдельными частями программы, а также то, что программа выполняет заранее определенные задачи в определенном виде.</p>
<blockquote><p>Мне когда-то казалось, что акксептанс-тестирование означает проверку соответствия отдельных модулей заявленным критериям или достижение заранее и очень точно определенных целей, что можно делать вручную. Я ошибался. Это изумительно работает в руках разработчиков. В остальных руках это работает или очень просто, или никак.</p></blockquote>
<p>Особенности акксептанс-тестов:</p>
<ul>
<li> Неподготовленный человек вполне может их читать и понимать, не видя код.</li>
<li> Уровень абстракции в юнит-тестировании неимоверно большой. Тесты обрабатывают не определенный код, а определенные абстракции, которые должны быть воплощены в коде.</li>
<li> Функция меняется как угодно. Акксептанс-тесты для нее не меняются.</li>
</ul>
<p>Неординарность подобного тестирования в том, что оно относится к методам <span style="text-decoration:line-through;">чернокнижников </span>тестирования черного ящика, когда про код мы знаем только то, что он где-то существует. Но тестирование происходит путем нажатия одной кнопки и прогона каких-то тест-кейсов, которые написаны на более-менее машинном языке, что неимоверно роднит эти тесты с юнит-тестами.</p>
<p>Парадкос в том, что подобные проверки хоть и абстрактны, но изрядно привязаны к существующему коду. Ведь абстракции проверяются работающим кодом, не так ли?</p>
<p>Для сочувствующих agile development уточняем: акксептанс-тесты проверяют юзер-сториз. А юзер-сториз - вне кода, вне технологий. Получается, что у нас есть high level tests, которые запускаются нажатиями кнопок.</p>
<h3><strong>Пример, пример! </strong></h3>
<blockquote><p>Приводится стандартный пример из учебного проекта, который видит каждый, кто умудряется запустить FitNesse.</p></blockquote>
<p>В примере проверялась такая юзер-стори:</p>
<blockquote><p>«User want to perform money operation from my account to another one to pay/receive money to/from another User»</p></blockquote>
<p>посредством следующего приемочного критерия:</p>
<blockquote><p>«After money operation one of the accounts is increased and another is decreased by the same amount of money».</p></blockquote>
<p>Критерии акксептанс-тестов задают (а в идеальном мире — пишут) заказчики софта, а не разработчики. Например, пресловутый заказчик просит* следующего:</p>
<ul>
<li>в базе должны существовать аккаунты разных юзеров.</li>
<li>у каждого юзера на счету есть какие-то деньги.</li>
<li>после нажатия кнопки «Сделать офигенно», со счета юзера №1 на счет юзера №2 должны передаваться какие-то суммы.</li>
</ul>
<ul>* имхо, неимоверно удачно выбранный глагол.</ul>
<p>Как выглядит такой тест, написанный в wiki-разметке в фреймворке «FitNesse»</p>
[caption id="attachment_464" align="aligncenter" width="448" caption="Тесты в FitNesse читаемы и понятны"]<a href="http://testitquickly.files.wordpress.com/2008/10/test-money-operation-default-view.jpg"><img class="size-full wp-image-464" title="test-money-operation-default-view" src="http://testitquickly.wordpress.com/files/2008/10/test-money-operation-default-view.jpg" alt="FitNesse" width="448" height="652" /></a>[/caption]
<p>Как эта таблица выглядит в формате wiki:</p>
<blockquote><p>Make sure that there are no accounts in the bank.</p>
<p>!&#124;ensure&#124;clean accounts&#124;</p>
<p>Create two different accounts.</p>
<p>!&#124;create account for user&#124;Bob&#124;with amount&#124;5&#124;</p>
<p>!&#124;create account for user&#124;John&#124;with amount&#124;7&#124;</p>
<p>и тд</p></blockquote>
<p>Как это выглядит после прогона теста:</p>
[caption id="attachment_465" align="aligncenter" width="461" caption="FitNesse рапортует о выполнении задач партии"]<a href="http://testitquickly.files.wordpress.com/2008/10/test-money-operation-results.jpg"><img class="size-full wp-image-465" title="test-money-operation-results" src="http://testitquickly.wordpress.com/files/2008/10/test-money-operation-results.jpg" alt="FitNesse рапортует о выполнении задач партии" width="461" height="677" /></a>[/caption]
<p>Как и почему это работает — не уточним, чтобы не переходить в детали и не разрушать сказки и абстракции.</p>
<blockquote><p>Но стоит сказать, что написание подобных тестов требует интеллекта и какого-то времени. Все равно, что стихи писать...</p></blockquote>
<h3>Предварительное резюме</h3>
<p>Тестирование на уровне юнит-тестов показывает, что кусочки кода по-отдельности работают, как ожидалось.</p>
<p>Тестирование на уровне приемочных-тестов показывает, что кусочки кода по-отдельности работают, как ожидалось, а также то, что взаимосвязи между ними работают и выполняются, как ожидалось.</p>
<blockquote><p>Сравним это с муравьями. Пропустим муравьев через мелкое сито. Если каждый в отдельности муравей не хромает и бодро шевелит своими шестью лапками — это отличный муравей. Но это не гарантирует нам то, что муравейник, большая система взаимоотношений между муравьями, будет работать.</p></blockquote>
<p>Систему взаимоотношений мы начинаем проверять средним ситом. В ячейки попадают по-несколько муравьев, например, отсортированных по принципам выполнения задач. Отдельно — фуражиры, отдельно — охранники, отдельно — муравьи-мамки, отдельно — все остальное. Но сцепленное между собой по какой-то логике.</p>
<h2><span style="color:#008000;"><strong>Functional testing</strong></span></h2>
<p>Сито с самыми крупными ячейками. Оно отлавливает логические взаимодействия, которые посредством проверки работоспособности мелких муравьев проверить невозможно.</p>
<p>Тут мы руками или головой проверяем, что будет, если мимо муравейника проедет танк, и кто победит, если муравьи нападут на танк. Ставлю сто баксов на муравьев...</p>
<p>Тут мы глазами проверяем, что случится, если все этажи муравейника соединены между собой проходами, и по ним все двигаются, как положено.</p>
<p>Тут мы узнаем, что бывает, если муравьев в системе слишком много или слишком мало.</p>
<p>Это можно делать как всеми органами осязания, воззрения и осмысления, так и заранее документируя свои действия (тест-кейсы).</p>
<p>Иногда проверки на этом уровне можно автоматизировать, но это не та волшебная автоматизация, которая присуща предыдущим уровням. Это грубое вмешательство с мечтательной целью избавиться от необходимости шерстить софт руками :)</p>
<h2>Окончательное резюме</h2>
<p>Если</p>
<ol>
<li> проект только начинается</li>
<li>разработка ведется в стиле on-going (неизвестны ни конечный результат, ни дата полного финала)</li>
<li> код пишется «с нуля»</li>
<li> заказчик умеет работать в agile-стиле</li>
<li> разработчики умеют работать в agile-стиле</li>
<li> инженеры «болеют» тестированием</li>
<li> все три сита постоянно применяются в процессе разработки</li>
</ol>
<p>тогда</p>
<ol>
<li> проект вполне может завершиться выпуском идеального продукта</li>
<li> все риски, которые влечет неполное тестирование, могут быть предупреждены и преодолены</li>
<li> скорость разработки возрастает в неимоверные разы</li>
<li> каждый гребёт свою кучу денег и убегает домой пить пиво и смотреть футбол с любимой женой.</li>
</ol>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Приемочное (acceptance) тестирование]]></title>
<link>http://testitquickly.com/2008/09/06/%d0%bf%d1%80%d0%b8%d0%b5%d0%bc%d0%be%d1%87%d0%bd%d0%be%d0%b5-acceptance-%d1%82%d0%b5%d1%81%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/</link>
<pubDate>Sat, 06 Sep 2008 16:54:57 +0000</pubDate>
<dc:creator>Алексей Лупан</dc:creator>
<guid>http://testitquickly.com/2008/09/06/%d0%bf%d1%80%d0%b8%d0%b5%d0%bc%d0%be%d1%87%d0%bd%d0%be%d0%b5-acceptance-%d1%82%d0%b5%d1%81%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/</guid>
<description><![CDATA[Прослушал отличный семинар Николая Алименкова про Accept]]></description>
<content:encoded><![CDATA[<p>Прослушал <a href="http://www.scrumguides.com/2008/07/training-automated-acceptance-testing.html">отличный семинар</a> Николая Алименкова про <strong>Acceptance Test Driven Development</strong>.</p>
<p>Выводы: это ж совсем не то, что мне до сих пор понималось! :(</p>
<p>Еще не совсем ясно, как это будет касаться меня впредь. Подобные прогоны подобных тестов - это мир ХР. Это сила, но она касается именно момента "владения кодом":</p>
<ol>
<li>овладел кодом,</li>
<li>сделал в нем изменение,</li>
<li>прогнал тесты,</li>
<li>увидел "зеленое" - с довольной рожей продолжил править код;</li>
<li>а если увидел "красное" - быстро поправил код, прогнал все заново, и с довольной рожей продолжил кодировать свои абстрактные абстракции в нечто более осязаемое, но тоже абстрактное.</li>
</ol>
<p>Школа "функционального" тестирования гласит о следующем:</p>
<ol>
<li>исследовал софтину,</li>
<li>прогнал тесты,</li>
<li>увидел "красное" - сообщил программисту. Что и как он будет дальше делать - он не скажет.</li>
</ol>
<p>То есть, вообще другим воздухом дышим.</p>
<p>Еще я дам доллар тому, кто покажет мне заказчика, который "умеет писать акксептанс критериа", и с удовольствием этим занимается.</p>
<p>Или не дам.</p>
<p>ЗЫ Fitnesse (wiki-надстройка над Framework for Integrated Tests) - это вещь...</p>
<p>Бонус №1: <a href="http://www.agileukraine.org/2008/07/acceptance-testing-test-first.html">рассуждения</a> Алименкова на тему ATDD:</p>
<blockquote><p><span>На мой взгляд, современные средства для acceptance тестирования позволяют достаточно легко писать тесты наперед. Это помогает разработчикам повысить уверенность в законченности своей работы и правильности (полноте) требуемого функционала без постоянного взаимодействия с QA. Таким образом команда становится более целостной и помогает друг другу достигнуть единой цели - разработки качественного продукта.</span></p></blockquote>
<p>Команда становится более целостной без постоянного взаимодействия с тестировщиками...</p>
<p>Бонус №2: презентация Дмитрия Лобасева "<a title="Разработка через приемочное тестирование с FIT" href="http://www.slideshare.net/lobasev/fit?src=embed">Разработка через приемочное тестирование с FIT</a><span class="black_small_text">". Материалы с выступления на SQA2008".</span></p>
<p style="text-align:center;">
]]></content:encoded>
</item>
<item>
<title><![CDATA[Load Runner vs The Grinder vs Apache JMeter]]></title>
<link>http://testitquickly.wordpress.com/2008/06/12/load-runner-vs-the-grinder-vs-apache-jmeter/</link>
<pubDate>Thu, 12 Jun 2008 20:26:47 +0000</pubDate>
<dc:creator>Алексей Лупан</dc:creator>
<guid>http://testitquickly.com/2008/06/12/load-runner-vs-the-grinder-vs-apache-jmeter/</guid>
<description><![CDATA[Достаточно толковое сравнение между Load Runner vs The Grinder vs JM]]></description>
<content:encoded><![CDATA[<p>Достаточно толковое сравнение между <a href="http://blackanvil.blogspot.com/2006/06/shootout-load-runner-vs-grinder-vs.html#links">Load Runner vs The Grinder vs JMeter</a>.</p>
<h3>CONCLUSION</h3>
<blockquote><p>I selected The Grinder due to several make-or-break issues.</p>
<p>However, each tool has unique strengths and weaknesses.  Which tool is ultimately best for you depends on a number of things.</p>
<p>Both of the open source projects have merits, but neither one is ideal.  My approach will be to work with the Grinder development team to resolve the most serious offenders.</p></blockquote>
<p>Вчера лег спать в полпятого утра. Ночь ушла на возню с JAVA, без настройки которой Grinder не работает. Добился внятного сообщения о том, что <span style="font-size:13px;color:#000000;background-color:transparent;">"<em>Failed to load Main-Class manifest attribute</em>" из файла, в котором эти самые атрибуты должны читаться, а почему так - не понятно. </span></p>
<p><span style="font-size:13px;color:#000000;background-color:transparent;">Отложил. </span></p>
<p><span style="font-size:13px;color:#000000;background-color:transparent;">Не готов я учить JAVA только для того, чтобы запустить "для рассмотрения" Grinder.</span></p>
<p>Придётся теребить ближайшего разработчика.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Автоматизация производства]]></title>
<link>http://antonskiter.wordpress.com/?p=5</link>
<pubDate>Mon, 05 May 2008 07:10:22 +0000</pubDate>
<dc:creator>antonskiter</dc:creator>
<guid>http://antonskiter.ru.wordpress.com/2008/05/05/visio-connectors/</guid>
<description><![CDATA[Находка-кандидат номер один на забывание, почему-то ст]]></description>
<content:encoded><![CDATA[<p>Находка-кандидат номер один на забывание, почему-то столь полезные вещи мой мозг забывает моментально. Итак, микрософт визио довольно удобная программка, обладающая уникальным функционалом, а, главное, великолепно автоматизируемая.</p>
<p style="padding-left:30px;"><span style="color:#000000;">Public Sub Add_Connector()</span></p>
<p style="padding-left:60px;"><span style="color:#000000;">Set vsoShape = Application.ActiveWindow.Selection.Item(1)<br />
vsoShape.AddRow visSectionConnectionPts, 7, visCnnctX<br />
vsoShape.CellsSRC(visSectionConnectionPts, 7, visCnnctY).FormulaU = "Height*0"<br />
vsoShape.CellsSRC(visSectionConnectionPts, 7, visCnnctX).FormulaU = "Width*0.5"</span></p>
<p style="padding-left:60px;"><span style="color:#000000;">vsoShape.AddRow visSectionConnectionPts, 8, visCnnctX<br />
vsoShape.CellsSRC(visSectionConnectionPts, 8, visCnnctY).FormulaU = "Height*1"<br />
vsoShape.CellsSRC(visSectionConnectionPts, 8, visCnnctX).FormulaU = "Width*0.5"</span></p>
<p style="padding-left:30px;"><span style="color:#000000;">End Sub</span></p>
<p>Этот милый кусочек кода добавляет коннекторы вверху и внизу посередине у шестигранника, почему-то лишенного столь полезных элементов.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Макрос для вставки текста в Calc]]></title>
<link>http://testitquickly.wordpress.com/2008/04/04/%d0%9c%d0%b0%d0%ba%d1%80%d0%be%d1%81-%d0%b4%d0%bb%d1%8f-%d0%b2%d1%81%d1%82%d0%b0%d0%b2%d0%ba%d0%b8-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%b0-%d0%b2-calc/</link>
<pubDate>Fri, 04 Apr 2008 14:14:00 +0000</pubDate>
<dc:creator>Алексей Лупан</dc:creator>
<guid>http://testitquickly.com/2008/04/04/%d0%bc%d0%b0%d0%ba%d1%80%d0%be%d1%81-%d0%b4%d0%bb%d1%8f-%d0%b2%d1%81%d1%82%d0%b0%d0%b2%d0%ba%d0%b8-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%b0-%d0%b2-calc/</guid>
<description><![CDATA[Рекламная замануха:
- Используешь OpenOffice Calc для перевод]]></description>
<content:encoded><![CDATA[<p>Рекламная замануха:</p>
<blockquote><p>- Используешь OpenOffice Calc для перевода юз-кейсов на язык тест-кейсов, и мечтаешь автоматизировать это?</p>
<p>- Но как это сделать, ведь это невозможно!</p>
<p>- Теперь это возможно с новым макросом, который поможет любому, кто использует OpenOffice Calc для перевода юз-кейсов на язык тест-кейсов, и мечтает автоматизировать это!</p></blockquote>
<p>Весь прикол в чем: при состалении шагов обычного тест-кейса есть повторяющиеся моменты типа "Отрыть приложение. Отрыть новый профиль и зарыть в нем банковский вклад". Сделаем мелкий трюк и заставим Calc вставлять это в нужные ячейки по нажатию одного сочетания двух клавиш.</p>
<p>В итоге на листе Calc появляется уже готовое нечто:</p>
<table border="1" cellspacing="1" cellpadding="0">
<tbody>
<tr>
<td style="font-weight:bold;">Шаг вперед</td>
<td style="font-weight:bold;">Ожидаемый результат</td>
<td style="font-weight:bold;">Реальный результат</td>
</tr>
<tr>
<td>Отрыть приложение.</td>
<td>Ok.</td>
<td>Passed</td>
</tr>
<tr>
<td>Отрыть новый профиль и зарыть в нем банковский вклад.</td>
<td>Ok.</td>
<td>Passed</td>
</tr>
</tbody>
</table>
<p>а курсор перебегает на нужное место, чтобы продолжить сочинение кейсов.</p>
<p>Макрос предрасположен в первом комментарии. Лицензия фрибээсдэшная. Ю ар фри ту бээсдэ тхиз код аз ю уищ.</p>
<blockquote><p>Мы знаем, как вставить макрос в Calc.</p>
<p>Мы знаем, как назначить макросу сочетание клавиш.</p>
<p>Все это знают.</p></blockquote>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Скорость без ущерба]]></title>
<link>http://testitquickly.wordpress.com/2008/02/12/%d0%a1%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d1%8c-%d0%b1%d0%b5%d0%b7-%d1%83%d1%89%d0%b5%d1%80%d0%b1%d0%b0/</link>
<pubDate>Tue, 12 Feb 2008 19:42:00 +0000</pubDate>
<dc:creator>Алексей Лупан</dc:creator>
<guid>http://testitquickly.com/2008/02/12/%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d1%8c-%d0%b1%d0%b5%d0%b7-%d1%83%d1%89%d0%b5%d1%80%d0%b1%d0%b0/</guid>
<description><![CDATA[Когда метель тимлид ревет как зверь, протяжно и сердит]]></description>
<content:encoded><![CDATA[<p>Когда <span style="font-style:italic;">метель тимлид ревет как зверь, протяжно и сердито</span>, о том, что времени в обрез, а обрез уже близок, то тестировать надо быстро (просветлил, нда). Наибыстрейший метод "быстрого тестирования" — моментально пропускать кейсы, в которых хоть что-то непонятно...</p>
<p>Если делать так, то за два часа до завершения у нас уже будут КАКИЕ-ТО результаты тестирования. А все вопросы будут заданы тимлидеру ВСЕ СРАЗУ. Он отметит все то, что не особо важное, и ответит на все, что важно.</p>
<p>Недостаток тут может быть только в human resource - если в четыре часа будет недоступен тот, кто может прояснить темные места скрипта. Но это редкий форс-мажор.</p>
<p><!--more-->Еще на собственном опыте разодыбл жизненно важную информацию для всех уверенных в том, что на установку платформы и всех прибамбасов нужно тратить не более часа: "чистая" Windows Vista ставится в течение 1 часа 40 минут на 512 Мб (или в течение 1 часа 20 минут на 1 Гб).</p>
<p>Еще 30-40 минут уходит на конфигурацию системы (доменные политики, установка прав пользователя). Почему так долго? А спросите разработчиков Vista, почему процедура Log on и Log off в доменном имени занимает не менее шести-семи минут? А почему сохранение измененных настроек домена занимает не менее шести-семи минут? Итого 2 часа 10 минут из восьмичасового рабочего дня (исполнение скриптов, разумеется, рассчитано на восемь часов, а не на шесть). Теперь начинаем ставить все офисы и программы, которые нужно тестировать. Если на их установку уходит менее часа - поздравления.</p>
<p>Вчера в процессе установки Vista "встала" криво, и не разрешала устанавливать какой бы то ни было Office или Non-Office. О своей "кривости" Vista ничего не сообщила, и через 3 часа 20 минут было принято решение установить нужную платформу на другом компьютере. Кто же знал, что для Vista такой долгий процесс установки - норма...</p>
<p><strong>Закуска</strong>: Приснилось забавное восклицание: <em>Дурак! Это не описание бага! Это requirements!</em></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Macro ToolsWorks v.7.0 Beta 2]]></title>
<link>http://winbeatz.wordpress.com/2007/12/28/macro-toolsworks-v70-beta-2/</link>
<pubDate>Fri, 28 Dec 2007 15:35:14 +0000</pubDate>
<dc:creator>winbeatz</dc:creator>
<guid>http://winbeatz.ru.wordpress.com/2007/12/28/macro-toolsworks-v70-beta-2/</guid>
<description><![CDATA[Macro ToolsWorks - программа для автоматизации работы операци]]></description>
<content:encoded><![CDATA[<p><a HREF="http://www.pitrinec.com/toolsworks.htm">Macro ToolsWorks</a> - программа для автоматизации работы операционных систем Windows, объединяющая в себе основные возможности утилит Perfect Keyboard, MacroToolbar, WinScheduler и ClickyMouse. Благодаря мощному встроенному скриптовому языку вы сможете полностью настроить выполнение своих стандартных задач.</p>
<p><!--more--></p>
<p><a HREF="http://www.pitrinec.com/mtw_pro_7b2.exe">Скачать</a> (6,5 мб)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Ввод данных из списка в ячейку]]></title>
<link>http://testitquickly.wordpress.com/2007/07/20/%d0%92%d0%b2%d0%be%d0%b4-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%b2-%d1%8f%d1%87%d0%b5%d0%b9%d0%ba%d1%83/</link>
<pubDate>Fri, 20 Jul 2007 13:21:00 +0000</pubDate>
<dc:creator>Алексей Лупан</dc:creator>
<guid>http://testitquickly.com/2007/07/20/%d0%b2%d0%b2%d0%be%d0%b4-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%b2-%d1%8f%d1%87%d0%b5%d0%b9%d0%ba%d1%83/</guid>
<description><![CDATA[Чтобы автоматизировать ввод данных в отчетные списки, ]]></description>
<content:encoded><![CDATA[<div>Чтобы автоматизировать ввод данных в отчетные списки, можно воспользоваться методом, описанным в Excel-справке: "<strong>Ввод данных из списка в ячейку</strong>".</p>
<p>Удивительно эффективно.<br />
Главное - не включать в список пустые ячейки.</p></div>
]]></content:encoded>
</item>

</channel>
</rss>
