<?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>hudson@work &#187; selenium</title>
	<atom:link href="http://hudson.su/tag/selenium/feed/" rel="self" type="application/rss+xml" />
	<link>http://hudson.su</link>
	<description>статьи о web-разработке, менеджменте IT проектов и контроле качества</description>
	<lastBuildDate>Fri, 20 Jan 2012 13:15:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Cubic Test. Параметризация тестовых данных, Интернационализация тестов / Parameterisation of test data, Internationalization of tests</title>
		<link>http://hudson.su/2010/01/17/cubic-test-parameterisation-of-test-data-and-internationalization/</link>
		<comments>http://hudson.su/2010/01/17/cubic-test-parameterisation-of-test-data-and-internationalization/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 23:34:57 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[cubic test]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=761</guid>
		<description><![CDATA[Продолжаем цикл статей о CubicTest. На этот раз мы поговорим о параметризации тестовых данных (http://boss.bekk.no/display/BOSS/Parameterisation+of+test+data). Параметризация Параметризация тестовых данных позволяет использовать тесты для различных тестовых наборов. Параметры можно контролировать как на уровне теста (test level) так и на уровне вложенного теста (sub-test level). Параметризованы могут быть как идентификаторы элементов (например label text, name и ID), [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжаем цикл статей о <strong>CubicTest</strong>. На этот раз мы поговорим о параметризации тестовых данных (<a href="http://boss.bekk.no/display/BOSS/Parameterisation+of+test+data" target="_blank">http://boss.bekk.no/display/BOSS/Parameterisation+of+test+data</a>).</p>
<p><span id="more-761"></span></p>
<h2>Параметризация</h2>
<p>Параметризация тестовых данных позволяет использовать тесты для различных тестовых наборов. Параметры можно контролировать как на уровне теста (<strong>test level</strong>) так и на уровне вложенного теста (<strong>sub-test level</strong>). Параметризованы могут быть как идентификаторы элементов (например label text, name и ID), так и данные, вводимые пользователем. Данные описываются в CSV файле (разделители &#8211; точка с запятой &#8220;;&#8221;) или во встроенном редакторе параметров.</p>
<p>Параметризацию можно настроить в графическом редакторе тестов на на странице свойств параметризации теста (<strong>Parameterisation property sheet</strong>).</p>
<p>Данные из строки параметров вставляются в тест и хранятся в нем. Для их контроля используется параметр index.</p>
<p>Для того чтобы использовать параметры:</p>
<ul>
<li>Создайте файл параметров (<strong>parameter file</strong>) правокликнув на кнопку &#8220;<strong>Create new parameter file</strong>&#8221; на странице свойств параметризации теста.</li>
<li><strong>Добавьте данные</strong> в файл параметров (кликайте Add key / Add Row).</li>
<li>Сохраните файл параметров и нажмите &#8220;обновить параметры&#8221; (<strong>&#8220;Refresh parameters&#8221;</strong>) на странице свойств параметризации теста.</li>
<li><strong>Присвойте параметры</strong> идентификаторам элементов страницы на закладке свойств элементов страницы.</li>
</ul>
<p>Для параметризации данных, вводимых пользователем, выберите &#8220;Enter parameter text&#8221; в диалоге пользовательских взаимодействий (User Interactions) в дропдауне колонки <strong>Action Type</strong> и выберите подходящее наименование параметра. Опция &#8220;Enter parameter text&#8221; доступна только для типов действий, которые допускают ввод текста.</p>
<p>Если тест используется в качестве вложенного теста (sub test), индекс параметра должен независимо контролироваться на уровне вложенного теста.</p>
<h3>Запуск теста с различными наборами тестовых данных</h3>
<p>Создайте новый тест-обертку (обычный тест) и добавьте в него тест, который нужно параметризовать, в качестве вложенного теста несколько раз (один на каждый набор параметров) и установите индекс на соответствующие вложенные тесты.</p>
<p>В будущем, вероятно будет опция в раннере для того чтобы выполнять цикл по всем наборам параметров автоматически.</p>
<h2>Интернационализация</h2>
<h3>Тестирование web-страниц на различных языках</h3>
<p>Интернационализация (<strong>Internationalization</strong>), или же <strong>i18n</strong> (аббревиатура &#8211; это число букв между первой &#8220;i&#8221; и последней &#8220;n&#8221; в слове internationalization) &#8211; это способ тестировать одну и ту же страницу на различных языках. Основное назначение этой функции в сохранении принципа DRY (don&#8217;t repeat yourself &#8211; не повторяйся) применительно к вашим тестам, в не зависимости от того сколько и каких языков у вас на тестируемом сайте.</p>
<h3>Как добавить интернационализацию в тест</h3>
<p>Для того чтобы добавить поддержку интернационализации в тест:</p>
<ul>
<li>Кликните на свободном месте в графическом редакторе тестов и выберите закладку интернационализации в свойствах.</li>
<li>Кликните кнопку &#8220;Add language&#8221; для того чтобы добавить язык в тест.</li>
<li>Когда язык добавлен, выберите элемент страницы в тесте и разрешите интернационализацию (для него). Установите ключ этому элементу, соответствующий .properties файлу языка.</li>
<li>Для того чтобы заполнить элемент страницы значением, соответствующим языку, выберите язык на странице свойств интернационализации теста (Test Internationalization properties page).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2010/01/17/cubic-test-parameterisation-of-test-data-and-internationalization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CubicTest: непрерывная интеграция с плагином Maven 2 / Continuous Integration &#8211; Maven 2 Plugin</title>
		<link>http://hudson.su/2009/12/22/cubic-test-continuous-integration-maven2-plugin/</link>
		<comments>http://hudson.su/2009/12/22/cubic-test-continuous-integration-maven2-plugin/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 08:04:36 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[cubic test]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=653</guid>
		<description><![CDATA[Еще одна небольшая статья о возможностях CubicTest: Continuous Integration &#8211; Maven 2 Plugin Запуск тестов при помощи Maven Для запуска тестов из командной строки нужно: Создать как минимум один пользовательский тестовый набор (Custom test suite, он же JUnit test), который определяет, какие тесты будут выполнены. Этот файл должен находиться в директории src/test/java. Выполнить в командной [...]]]></description>
			<content:encoded><![CDATA[<p>Еще одна небольшая статья о возможностях CubicTest: <a href="http://boss.bekk.no/display/BOSS/Continuous+Integration+-+Maven+2+Plugin" target="_blank">Continuous Integration &#8211; Maven 2 Plugin</a></p>
<p><span id="more-653"></span></p>
<h3>Запуск тестов при помощи Maven</h3>
<p>Для запуска тестов из командной строки нужно:</p>
<ol>
<li>Создать как минимум один <a href="http://hudson.su/?p=652" target="_blank">пользовательский тестовый набор</a> (Custom test suite, он же JUnit test), который определяет, какие тесты будут выполнены. Этот файл должен находиться в директории src/test/java.</li>
<li>Выполнить в командной строке (в корне проекта) <strong>mvn test </strong>и все JUnit классы, определенные в проекте (Custom Test Suites), будут выполнены.</li>
</ol>
<p>Имейте в виду:</p>
<ul>
<li>переменная окружения JAVA_HOME должна как минимум указывать на Java 5 JRE.</li>
<li>Maven runner не зависит от Eclipse и не требует обязательного наличия CubicTest.</li>
</ul>
<h3>Полезные советы</h3>
<ul>
<li>Для того чтобы приостановить выполнение тестов при запуске их из командной строки, нажмите клавишу &#8220;pause&#8221; на клавиатуре, когда активным является окно командной строки с запущенными тестами. Для возобновления процесса, можете нажать любую клавишу.</li>
<li>Для получения тестового отчета, используйте инструменты для постоянной интеграции, например Hudson <em>(примечание переводчика: вот ведь совпадение )))</em> для перехвата отчетов Maven Surefire plugin (JUnit runner). В этом случае вы сможете использовать возможности CI инструмента для получения статистики по вашим тестам.</li>
</ul>
<p>P.S.</p>
<ul>
<li>Подробнее о maven можно почитать на официальном сайте: <a href="http://maven.apache.org/" target="_blank">http://maven.apache.org/</a></li>
<li>Про Hudson читайте тут: <a href="http://hudson-ci.org/" target="_blank">http://hudson-ci.org/</a> и тут: <a href="http://www.javaworld.com/javaworld/jw-12-2008/jw-12-hudson-ci.html" target="_blank">http://www.javaworld.com/javaworld/jw-12-2008/jw-12-hudson-ci.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/12/22/cubic-test-continuous-integration-maven2-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cubic test: пользовательские тестовые наборы/Custom Test Suites</title>
		<link>http://hudson.su/2009/12/22/cubic-test-custom-test-suites/</link>
		<comments>http://hudson.su/2009/12/22/cubic-test-custom-test-suites/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 08:04:17 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[cubic test]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=652</guid>
		<description><![CDATA[Давно я не писал про CubicTest ) Этим морозным утром переводим статью Custom Test Suites. Пользовательские тестовые наборы (custom test suites) Пользовательские тестовые наборы (custom test suites) &#8211; возможность CubicTest, которая позволяет вам запускать тесты CubicTest при помощи Java и JUnit. Можно выполнить отдельный тест или все тесты в директории, а также добавить Setup и [...]]]></description>
			<content:encoded><![CDATA[<p>Давно я не писал про CubicTest ) Этим морозным утром переводим статью <a href="http://boss.bekk.no/display/BOSS/Custom+Test+Suites+%28and+flow+control%29" target="_blank">Custom Test Suites</a>.</p>
<p><span id="more-652"></span></p>
<h3>Пользовательские тестовые наборы (custom test suites)</h3>
<p>Пользовательские тестовые наборы (custom test suites) &#8211; возможность CubicTest, которая позволяет вам запускать тесты CubicTest при помощи <strong>Java </strong>и <strong>JUnit</strong>. Можно выполнить отдельный тест или все тесты в директории, а также добавить <strong>Setup </strong>и <strong>TearDown </strong>(что это такое лучше почитать в документации JUnit) логику для тестов.</p>
<p>Применяется:</p>
<ol>
<li>Для запуска тестов из командной строки при помощи maven 2 в процессе <a href="http://hudson.su/?p=653" target="_blank">непрерывной интеграции</a>.</li>
<li>Setup-логика нужна для инициализации системы перед запуском теста, TearDown-логика нужна для корректной завершения работы системы после выполнения теста (или для доступа к состоянию системы после выполнения теста).</li>
<li>Для определения, какие тесты будут выполнены, на основании некоторой управляющей логики.</li>
</ol>
<h3>Создание и запуск Custom Test Suite</h3>
<p>Простой тестовый набор создается при создании нового проекта CubicTest. Вы также можете создать дополнительные тестовые наборы, либо путем копирования уже имеющегося эталонного класса, либо путем создания нового тест-класса JUnit. Тестовый класс должен располагаться в директории <strong>src/test/java</strong> в текущем проекте CubicTest.</p>
<p>Для запуска набора, правокликните на нем и выберите пункт <strong>Run As -&gt; JUnit Test</strong>.</p>
<p>Также набор может быть выполнен при помощи maven из командной строки: <strong>mvn test</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/12/22/cubic-test-custom-test-suites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CubicTest: пользовательские тестовые шаги / Custom Test Steps</title>
		<link>http://hudson.su/2009/12/09/cubic-test-custom-test-steps/</link>
		<comments>http://hudson.su/2009/12/09/cubic-test-custom-test-steps/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 19:43:32 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[cubic test]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=548</guid>
		<description><![CDATA[Продолжаю переводить документацию по CubicTest. На этот раз мы рассмотрим пользовательские тестовые шаги (Custom Test Steps) в CubicTest (http://boss.bekk.no/display/BOSS/Custom+Test+Steps). Пользовательские тестовые шаги позволяют вам писать свой собственный код, который будет выполняться во время выполнения теста. Например, вы можете использовать custom test step для того чтобы выполнить проверку или взаимодействие, которые нельзя смоделировать в графическом редакторе [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжаю переводить документацию по CubicTest. На этот раз мы рассмотрим пользовательские тестовые шаги (Custom Test Steps) в CubicTest (<a href="http://boss.bekk.no/display/BOSS/Custom+Test+Steps" target="_blank">http://boss.bekk.no/display/BOSS/Custom+Test+Steps</a>).</p>
<p><span id="more-548"></span></p>
<p>Пользовательские тестовые шаги позволяют вам писать свой собственный код, который будет выполняться во время выполнения теста. Например, вы можете использовать custom test step для того чтобы выполнить проверку или взаимодействие, которые нельзя смоделировать в графическом редакторе тестов CubicTest.</p>
<p>Позовательский шаг в CubicTest состоит из двух частей:</p>
<ul>
<li>Определения родительского Пользовательского тестового шага (generic Custom Test Step &#8211; элемент в графическом редакторе тестов), который присваивает <strong>имя </strong>и <strong>описание </strong>тестовому шагу, а также может определять <strong>набор входных параметров </strong>для шага.</li>
<li>Реализации (реализаций) шага (написанный вами код), максимум &#8211; одна реализация на каждый плагин экспорта.</li>
</ul>
<p>В теории вы можете написать реализацию тестового шага для всех доступных плагинов экспорота, если плагин предоставляет редактор для этого. Например, тестовый шаг для набора текущей даты в поле ввода может принимать в качестве параметра ID поля и заполнять его требуемым значением. Для того чтобы быть уверенным, что тест будет работать как с Selenium так и с Watir, нужно реализовать custom test step для обоих случаев.</p>
<blockquote><p>Тем не менее, <strong>с версии 1.8.11</strong> редактор тестовых шагов есть только у плагина Selenium Remote Control.</p></blockquote>
<h3>Создание Custom Test Step</h3>
<ul>
<li>Правокликните на папке в Package Explorer и выберите &#8220;New CubicTest Custom Test Step&#8221; (возможно вы захотите создать отдельную папку для ваших тестовых шагов).</li>
<li>Укажите имя шага и имя файла для него, нажмитие Finish.</li>
<li>На странице Custom Test Step, которая откроется, вы сможете создать реализацию тестового шага и определить параметры. Синяя ссылка &#8211; для создания реализации.</li>
</ul>
<p><a rel="lightbox" href="http://hudson.su/wp-content/blogs.dir/1/files/2009/12/cubic-test-custom-test-step-01.jpg" target="_blank"><img class="alignnone size-medium wp-image-550" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/12/cubic-test-custom-test-step-01-300x179.jpg" alt="Редактор Custom Test Step в CubicTest" width="300" height="179" /></a><br />
<a rel="lightbox" href="http://hudson.su/wp-content/blogs.dir/1/files/2009/12/cubic-test-custom-test-step-02.jpg" target="_blank"><img class="alignnone size-medium wp-image-551" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/12/cubic-test-custom-test-step-02-300x123.jpg" alt="Реализация Custom Test Step в CubicTest" width="300" height="123" /></a></p>
<p>Для того чтобы добавить пользовательский шаг в тест нужно:</p>
<ul>
<li>Перетащить пользовательский шаг из Package Explorer в графический редактор тестов.</li>
<li>Соединить шаг со страницей (состоянием) чтобы он мог быть выполнен.</li>
</ul>
<h3>Редактор Java пользовательских тестовых шагов для Selenium RC</h3>
<p>Редактор позволяет создать реализацию пользовательского шага со следующими возможностями:</p>
<ul>
<li>Добавлять и использовать любые Java-библиотеки, которые вам нужны.</li>
<li>Автодополнение кода и встроенный javadoc для Selenium RC API.</li>
<li>Отладка Java кода.</li>
</ul>
<p>Для создания реализации:</p>
<ul>
<li>Кликните на ссылку <strong>Cubic Test Selenium Extension</strong> на странице определения пользовательского шага.</li>
<li>Указать имя Java класса, который создаете.</li>
<li>Написать код класса. Смотрите документацию Selenium RC, если хотите знать больше про его API.</li>
</ul>
<p>Вы будете писать реализацию интерфейса ICustomTestStep. Этот интерфейс имеет метод <strong>execute</strong>, который необходимо реализовать. мы предполагаем что вы используете ассерты в стиле JUnit, например assertEquals и т.д. В этом случае CubicTest сможет обрабатывать ассерты корректно. Вы также можете бросать другие типы исключений.</p>
<h3>Параметры метода execute</h3>
<ul>
<li><strong>&#8220;</strong><strong>arguments&#8221;</strong> (тип <strong>Map&lt;String, String&gt;</strong>) имена ключей берутся со страницы определения пользовательского шага (Custom Step definition page), а значения &#8211; со страницы свойств (properties) в графическом редакторе тестов.</li>
<li><strong>&#8220;context&#8221;</strong> (тип <strong>IElementContext</strong>) Shared Custom Step Context. Делает возможным пересылать сообщения из одного тестового шага в другой не используя статические переменные. По умолчанию это пустой HashMap, пока вы не решите наполнить его чем-нибудь.</li>
<li><strong>&#8220;selenium&#8221;</strong> (тип <strong>Selenium</strong>) объект Selenium Remote Control.</li>
</ul>
<p>Метод может бросать исключения любого типа. Если исключение перехватывается CubicTest. java.lang.AssertionError, то будет step = failed, иначе &#8211; test exception.</p>
<p><strong>Пример</strong>: пользовательский шаг, который выбирает окно браузера (например попап), на основании параметра windowName:</p>
<pre>public class SelectWindow implements ICustomTestStep {
    public void execute(
        Map arguments,
        IElementContext context,
        Selenium selenium
    ) throws Exception {
        selenium.selectWindow(arguments.get("windowName"));
    }
}</pre>
<h3>Логгирование</h3>
<p>Для логгирования можно использовать статический метод <strong>org.cubictest.core.facade.Logger</strong>. Логгер будет писать лог в доступную систему логгирования (Eclipse log system, если используется Eclipse, Commons Logging в противном случае).</p>
<p>Если вы хотите записать в лог наименование конкретного экземпляра пользовательского шага, который сейчас выполняется, создайте аргумент name для шага используйте во время выполнения класс Logger.</p>
<h3>Важное замечание о таймингах в браузере</h3>
<p>Выполняя пользовательский тестовый шаг, браузер может не загрузить страницу целиком. Есть две возможные стратегии для отслеживания данного события, в зависимости от типа приложения/страницы, которая тестируется (традиционная или Ajax/JavaScript).</p>
<h4>Custom Test Step после загрузки страницы</h4>
<p>При тестировании традиционных веб-приложений, вы можете установить чекбокс <strong>Wait for page to load before entering Custom Test Step</strong> в редакторе тестовых шагов (Custom Test Step Editor). В этом случае runner ожидает загрузки страницы, используя таймаут в секундах из предыдущего взаимодействия (опция <strong>timeout for result</strong>). Если таймаут явно не задан при предыдущем взаимодействии, его значение берется из более раннего взаимодействия (если он есть, опять таки). Если на предыдущих шагах таймауты не были заданы, используется значение timeout в файле test-project.properties, которое по умолчанию составляет 20 секунд.</p>
<h4>Custom Test Step responding to Ajax or JavaScript</h4>
<p>При тестировании Ajax/JavaScript страниц, вы не можете использовать selenium.waitForPageToLoad(..), так как страница не перегружалась. Вместо этого нужно использовать класс CubicWait с таймаутом, для проверки наличия элемента. Когда элемент будет присутствовать на странице и будет доступен для взаимодействия, тогда ожидание закончится (или будет исключение по таймауту).</p>
<p>Пример: ждем 10 секунд появления элемента и кликаем на него:</p>
<pre>
new CubicWait() {
    public boolean until() {
        return selenium.isElementPresent(yourLocator);
    }
}.wait("Page element not found: " + yourLocator, 10000);
selenium.click(yourLocator);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/12/09/cubic-test-custom-test-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Графический редактор тестов CubicTest</title>
		<link>http://hudson.su/2009/11/24/cubic-test-graphical-test-editor/</link>
		<comments>http://hudson.su/2009/11/24/cubic-test-graphical-test-editor/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 23:35:51 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[cubic test]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=477</guid>
		<description><![CDATA[Продолжаю переводить документацию по CubicTest. На сон грядущий &#8211; небольшая заметка про Graphical Test Editor (http://boss.bekk.no/display/BOSS/The+Graphical+Test+Editor). Итак, графический редактор тестов &#8211; это основное средство моделирования тестов, которое предоставляет CubicTest. Редактор не принесет вашим пользовательским ощущениям ничего нового: функции Undo / Redo Drag-n-drop Любимый всеми копипаст ) По правому клику открывается контекстное меню, которое зависит от [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжаю переводить документацию по CubicTest. На сон грядущий &#8211; небольшая заметка про Graphical Test Editor (<a href="http://boss.bekk.no/display/BOSS/The+Graphical+Test+Editor" target="_blank">http://boss.bekk.no/display/BOSS/The+Graphical+Test+Editor</a>).</p>
<p><span id="more-477"></span>Итак, графический редактор тестов &#8211; это основное средство моделирования тестов, которое предоставляет CubicTest. Редактор не принесет вашим пользовательским ощущениям ничего нового:</p>
<ul>
<li>функции Undo / Redo</li>
<li>Drag-n-drop</li>
<li>Любимый всеми копипаст )</li>
</ul>
<p>По правому клику открывается контекстное меню, которое зависит от элемента, на котором был сделан правый клик.</p>
<p>Фичи, не очевидные на первый взгляд:</p>
<ul>
<li>Многие элементы имеют свойства, редактируемые в т.н. <strong>properties view</strong>. Для просмотра свойств элемента достаточно кликнуть на него. Имейте в виду, что там может быть более одной закладки.</li>
<li>Кликните на фон (<strong>canvas</strong>), для того чтобы просмотреть его свойства.</li>
<li>Элементы страниц можно перетаскивать с одной страницы на другую, а также на общие страницы (<strong>commons</strong>). Если перемещаемый элемент участвует в пользовательском взаимодействии, он будет удален из него.</li>
<li>Для изменения точки входа теста (<strong>start point</strong>) правокликните на ней и выберите &#8220;Change start point&#8221;.</li>
<li>Порядок выполнения пользовательских действий (<strong>user interactions</strong>) в рамках одного перехода (<strong>transition</strong>) можно изменить, например, выбрав &#8220;Move up&#8221; в дропдауне в первой колонке в редакторе пользовательского взаимодействия. Там же действия можно удалять.</li>
<li>Copy, paste и undo работают как и ожидается. Поддержка undo &#8211; расширенная.</li>
<li>Вложенные тесты добавляются путем перетаскивания <strong>.aat </strong>файлов тестов из package explorer&#8217;а в графический редактор.</li>
<li>Двойной клик на вложенном тесте открывает его.</li>
<li>Если вложенный тест перемещается или переименовывается, ссылки на него автоматически обновляются во всех тестах, которые на него ссылаются.</li>
<li>Поддерживаются древовидные тесты (<strong>Tree tests</strong>). Для создания дерева (например множественные пути) &#8211; создайте несколько пользовательских взаимодействий, с исходной страницы. Тем не менее рекомендуется не злоупотреблять деревьями, а создавать, например, раздельные тесты, что повысит читаемость и поддерживаемость тестов.</li>
<li>Поддерживает функция Eclipse <strong>Restore from Local History</strong> &#8211; доступна по правому клику на файл.</li>
<li>Имеется даже поддержка рефакторинга
<ul>
<li>При перемещении тестов, пути к вложенным тестам обновляются автоматически</li>
<li>Для того чтобы несколько страниц (состояний) извлечь в отдельный набор, выберите их, затем правокликните на них и выберите Refactor -&gt; &#8220;Extract subtest&#8221;.</li>
</ul>
</li>
</ul>
<p>А вот и долгожданный скриншот (увеличение по клику) )</p>
<p><a rel="lightbox" href="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/cubic_test_graphical_test_editor.png" target="_blank"><img class="alignnone size-medium wp-image-478" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/cubic_test_graphical_test_editor-300x300.png" alt="Графический редактор тестов CubicTest" width="300" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/11/24/cubic-test-graphical-test-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Базовые понятия в CubicTest / Essential Concepts in CubicTest</title>
		<link>http://hudson.su/2009/11/21/cubic-test-essential-concepts-in-cubictest/</link>
		<comments>http://hudson.su/2009/11/21/cubic-test-essential-concepts-in-cubictest/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 13:46:34 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[cubic test]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=454</guid>
		<description><![CDATA[Продолжаю перевод вики по cubic test (http://boss.bekk.no/display/BOSS/Essential+Concepts+in+CubicTest) Тестовый проект / Test Project Все тесты в CubicTest должны находиться в тестовом проекте. Проект создается в перспективе CubicTest в Eclipse. Пример проекта: Тест / Test Тест в терминах CubicTest это одно или несколько требований к веб-приложению. Тест моделируется серией страниц/состояний с пользовательскими взаимодействиями между ними. Тест может [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжаю перевод вики по cubic test (<a href="http://boss.bekk.no/display/BOSS/Essential+Concepts+in+CubicTest" target="_blank">http://boss.bekk.no/display/BOSS/Essential+Concepts+in+CubicTest</a>)</p>
<p><span id="more-454"></span></p>
<h3>Тестовый проект / Test Project</h3>
<p>Все тесты в CubicTest должны находиться в тестовом проекте. Проект создается в перспективе CubicTest в Eclipse. Пример проекта:</p>
<p><a href="http://boss.bekk.no/download/attachments/230/test_project.gif" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/test_project.gif" alt="" width="246" height="154" /></a></p>
<h3>Тест / Test</h3>
<p>Тест в терминах CubicTest это одно или несколько требований к веб-приложению. Тест моделируется серией страниц/состояний с пользовательскими взаимодействиями между ними.</p>
<p>Тест может быть использован для</p>
<ul>
<li>Тестирования требований</li>
<li>Описания требований (например в Test Driven Development &#8211; TDD)</li>
<li>Сообщения об ошибках</li>
<li>Запросов на изменения (TDD)</li>
</ul>
<p>Пример теста, который тестирует процесс логина в интернет магазин:</p>
<p><a href="http://boss.bekk.no/download/attachments/230/test.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/test.png" alt="" width="366" height="398" /></a></p>
<p>Синие прямоугольники &#8211; это страницы/состояния. Стрелки это взаимодействия которые осуществляют переход от одной страницы к другой (ну или же из одного состояния в другое). Элементы &#8220;Username&#8221;, &#8220;Password&#8221; и &#8220;Log in&#8221;- это элементы формы логина. Ниже мы к ним еще вернемся.</p>
<h3>Страница/состояние / Page/state</h3>
<p>Как правило, веб-приложение, состоит из множества страниц/состояний. В CubicTest страница/состояние это стабильное представление (вид) приложения, с которым пользователь может взаимодействовать. Например, пользователь может перейти к другой странице посредством такого взаимодействия.</p>
<p>При использовании javascript / ajax состояние приложения может меняться многократно без перегрузки страницы, например при перемещении мыши или наборе текста.  Результат моделируется в виде новой страницы/состояния.</p>
<p>Пример страницы/состояния (с ассертами на наличие 4х элементов):</p>
<p><a href="http://boss.bekk.no/download/attachments/230/page_state.gif" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/page_state.gif" alt="" width="163" height="113" /></a></p>
<p>Заголовок страницы (на синем фоне, верхняя часть) содержит логическое имя для читабельности тестов. 4 элемента на странице так и называются &#8220;элементы страницы&#8221; (page elements). О них расскажем ниже.</p>
<h3>Переходы и пользовательские взаимодействия / Transitions and user interactions</h3>
<p>В то время как страница/состояние представляют собой стабильное состояние приложения, переходы определяют как страница/состояние изменятся при переходе к следующей странице или следующему состоянию.</p>
<p>Переход может иметь одно или больше пользовательских взаимодействий, которые последовательно выполняются для получения новой страницы/состояния. Пользовательские взаимодействия могут быть следующими:</p>
<ul>
<li>Заполнение текстового поля</li>
<li>Клик на ссылку</li>
<li>Клик на кнопку</li>
<li>Помещение курсора мыши над элементом</li>
<li>Выбор опции в SELECT&#8217;е</li>
<li>и другие</li>
</ul>
<p>Пример перехода с пользовательскими действиями (заполнение поля username, заполнение поля password, клик по кнопке &#8220;Log in&#8221;. Последнее из этих действий инициирует переход в новое состояние).</p>
<p><a href="http://boss.bekk.no/download/attachments/230/user_interactions.gif" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/user_interactions.gif" alt="" width="277" height="267" /></a></p>
<p>Стрелка символизирует переход и содержит три пользовательских взаимодействия. Переход выполняется только после того как выполнены все пользовательские действия.</p>
<p><strong>Установка таймаута получения результата</strong></p>
<p>По умолчанию таймаут до появления результата пользовательских взаимодействий &#8211; 20 секунд. Эту величину можно изменить на закладке свойств (properties tab) пользовательского взаимодействия. Там вы можете установить величину таймаута для всех последующих страниц.</p>
<p>Если значение таймауа отличается от значения по умолчанию, это значение будет применяться для всех последующих страниц и ассертов (проверок) элементов страниц в тесте. Чтобы вернуть таймаут к дефолтному значению в 20 секунд, установите его на закладке свойств следующего пользовательского взаимодействия.</p>
<p>Таймаут по-умолчанию (20 секунд) для всего проекта может быть изменен в файле test-project.properties.</p>
<h3>Элементы страниц</h3>
<p>Элементы страниц используются для проверок-ассертов на наличие элементов на странице/состоянии и как основа для пользовательских взаимодействий.</p>
<p>Каждый элемент страницы имеет набор идентификаторов, которые определяют этот элемент на странице. Также элементы имеют набор пользовательских взаимодействий, которые могут быть применены к ним.</p>
<p>Для проверки того что элемент <strong>не присутствует</strong> на странице, можно отметить его как &#8220;should not be present&#8221;.</p>
<p>Ниже представлен список доступных в CubicTest элементов страниц (вы можете их видеть на &#8220;палитре&#8221; тестового редактора):</p>
<p><a href="http://boss.bekk.no/download/attachments/230/page_elements.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/page_elements.png" alt="" width="113" height="279" /></a></p>
<p>Когда элемент страницы добавляется на страницу/состояние, это выглядит следующим образом (проверка наличия 4х элементов):</p>
<p><a href="http://boss.bekk.no/download/attachments/230/page_state.gif" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/page_state.gif" alt="" width="163" height="113" /></a></p>
<h3>Контексты / Contexts</h3>
<p>Контексты позволяют легко идентифицировать элементы путем указания соседних элементов и используются, когда элементы трудно идентифицировать самостоятельно.</p>
<blockquote><p>Например: на странице много кнопок &#8220;Buy&#8221; и сложно идентифицировать, которую из них нажать, чтобы купить конкретный продукт. Мы хотим нажать кнопку &#8220;Buy&#8221; которая находится в одной строке с текстом &#8220;Foo&#8221;.</p></blockquote>
<p>Контексты в CubicTest позволяют выполнить такую операцию. Контексты напоминают другие элементы страниц, но они определяют часть страницы (например таблицу, DIV, строку таблицы и т.п.).</p>
<p><span><span style="background-color: #ffffff" title="Specify a context and put some elements in it that together forms a unique combination, and they will be identified on the page.">Укажите контекст и расположите элементы в нем, в совокупности они образуют уникальную комбинацию, и будут однозначно определены на этой странице.</span></span></p>
<p><span><span style="background-color: #ffffff" title="Specify a context and put some elements in it that together forms a unique combination, and they will be identified on the page.">Котексты имеют ряд идентификаторов, также как и элементы страницы, но они не должны быть уникальными так как <strong>дочерние элементы контекста помогают его идентифицировать единственным образом</strong>. Тем не менее, неплохо также использовать идентификаторы и для контекстов (хотя бы имя, например &#8220;tr&#8221; для строки таблицы).</span></span></p>
<p><span><span style="background-color: #ffffff" title="Specify a context and put some elements in it that together forms a unique combination, and they will be identified on the page.">Контексты не обязательно должны быть прямыми родителями их элементов (в смысле DOM), они вполне могут быть и на более высоком уровне в DOM дереве. Т.о. детальная информация о структуре страницы не нужна.</span></span></p>
<p><span><span style="background-color: #ffffff" title="Specify a context and put some elements in it that together forms a unique combination, and they will be identified on the page.">Подводя итоги, контексты</span></span></p>
<ul>
<li><span><span style="background-color: #ffffff" title="Specify a context and put some elements in it that together forms a unique combination, and they will be identified on the page.">должны присутствовать на странице</span></span></li>
<li><span><span style="background-color: #ffffff" title="Specify a context and put some elements in it that together forms a unique combination, and they will be identified on the page.">должны содержать все дочерние элементы, которые для них указаны</span></span></li>
</ul>
<p>Как правило, кандидатами на контексты будут</p>
<ul>
<li>Строки таблиц</li>
<li>Блочные элементы &#8211; DIV&#8217;ы</li>
<li>Таблицы</li>
</ul>
<p>Но вы также может попробовать использовать любой родительский элемент )</p>
<p><strong>Пример</strong>: Дана таблица со строкой, которая содержит ссылку и кнопку. Иерархия и элементы того же уровня (siblings) дают уникальную идентификацию. Все элементы могут иметь дополнительные идентификаторы, но это не обязательно. В данном случае используются элементы типа table и tr.</p>
<p><a href="http://boss.bekk.no/download/attachments/230/contexts.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/contexts.png" alt="" width="141" height="137" /></a></p>
<p><strong>Пример контекста в графическом редакторе тестов</strong>: Контекст используется для определния какая именно кнопка &#8220;Buy&#8221; была нажата (здесь кнопка &#8220;Buy&#8221; не нуждается в идентификаторе, так как ссылка &#8220;Shipping crate&#8221; однозначно определяет какай строка имеется в виду):</p>
<p><a href="http://boss.bekk.no/download/attachments/230/contexts_transition.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/contexts_transition.png" alt="" width="356" height="374" /></a></p>
<p>Контексты также могут использоваться как элементы общего назначения, т.е. для элементов, которые отсутствуют на палитре CubicTest (для HTML &lt;button&gt; вне формы например).</p>
<h3>Идентификаторы / Identifiers</h3>
<p>Элемент страницы или контекст может быть идентифицирован по набору идентификаторов (ну кто бы мог подумать )) в HTML коде.</p>
<p>Примеры идентификаторов:</p>
<ul>
<li>id</li>
<li>name</li>
<li>href</li>
<li>src</li>
<li>css class</li>
<li>title (tooltip)</li>
</ul>
<p>CubicTest поддерживает множественные идентификаторы, <strong>связанные между собой логическим &#8220;И&#8221;</strong>, что означает что все они должны соответствовать. Элемент также может быть помещен в контекст, чтобы идентифицировать его (или же он может быть в контексте и иметь несколько идентификаторов &#8220;для себя&#8221;).</p>
<p>В дополнение, каждый идентификатор может иметь один из следующих методов сравнения (<strong>moderators</strong>):</p>
<ul>
<li>&#8220;be equal to&#8221; (эквивалетно, строго равно),</li>
<li>&#8220;contains&#8221; (содержит)</li>
<li>&#8220;starts with (начинается с)</li>
<li>&#8220;ends with&#8221; (оканчивается на)</li>
</ul>
<p>Эти методы можно врьировать в зависимости от того, знаем ли мы идентификатор точно или же только часть его. Пример набора идентификаторов для кнопки Buy (без модераторов):</p>
<p><a href="http://boss.bekk.no/download/attachments/230/identifiers.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/identifiers.png" alt="" width="540" height="341" /></a></p>
<h3>Точки старта и точки расширения / Start Points and Extension Points</h3>
<p>Тест может стартовать как вызова некоторого URL, так и с <strong>точки расширения</strong> в другом тесте.</p>
<p>Вкратце, возможно определить точку расширения к любой странице или любому состоянию в тесте и другой тест начнется с этого состояния. В этом случае, взаимодействия и ассерты, общие для более чем одного теста, не должны дублироваться так же как начальная загрузка (bootstrapping) не повторяется во всех тестах.</p>
<p>Пример стартового URL, который стартует с &#8220;http://localhost:8080/cubicshop/&#8221;:</p>
<p><a href="http://boss.bekk.no/download/attachments/230/extension_point.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/extension_point.png" alt="" width="510" height="407" /></a></p>
<p>В этом тесте мы также определили расширение &#8220;Logged in&#8221; с которого может начаться другой тест.</p>
<p>Пример того как точка расширения может быть использована как стартовая точка другого теста:</p>
<p><a href="http://boss.bekk.no/download/attachments/230/extension_start_point.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/extension_start_point.png" alt="" width="307" height="315" /></a></p>
<p>Тут мы стартуем с состояния &#8220;Logged In&#8221;, которое определено ранее и продолжаем тест, который проверяет наличие и кликает на ссылку Webshop (остальной тест пропущен).</p>
<h3>Общие страницы/состояния / Commons</h3>
<p>Общая страница это виртуальная страница или же состояние, используемое для тестирования одних и тех же ассертов на многих страницах.</p>
<p>Пример использования общей страницы для проверки наличия основных навигационных ссылок:</p>
<p><a href="http://boss.bekk.no/download/attachments/230/common.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/common.png" alt="" width="562" height="405" /></a></p>
<p>Общие страницы (commons) находятся на палитре как и страницы/соcтояния. Для подключения общей страницы к странице, перетащите коннектор (connection) с палитры от общей страницы к странице на которой нужно выполнить проверки.</p>
<p>Элементы общих страниц могут быть также использованы для пользовательских взаимодействий.</p>
<h3>Вложенные тесты / Sub tests</h3>
<p>Тест может включать другие тесты (т.е. использовать тест как вложенный тест).</p>
<p>Вложенные тесты (субтесты) подключаются также как и страницы и могут выполняться полностью или же до точки расширения (extension point).</p>
<p>Для добавления вложенного теста, перетащите тест из package explorer&#8217;а в графический редактор тестов.</p>
<p>Пример использования вложенных тестов:</p>
<p><a href="http://boss.bekk.no/download/attachments/230/subtests.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/subtests.png" alt="" width="359" height="373" /></a></p>
<p><strong>Независимые вложенные тесты с использованием стартовых точек для вложенных тестов:</strong></p>
<p>Любой тест может быть использован в качестве вложенного теста, но наиболее подходящими являются тесты не использующие собственную конфигурацию (например без URL или стартовых точек расширения), так как они могут быть использованы в различных конфигурациях и тестовых сценариях.</p>
<p>Для создания независимого субтеста</p>
<ul>
<li>Правокликните на package explorer</li>
<li>New -&gt; New CubicTest Test</li>
<li>Выберите &#8220;Subtest start point&#8221; в качестве стартовой точки на вотором шаге мастера создания теста.</li>
</ul>
<p>Новый тест будет иметь <strong>Sub test start point</strong> и не может быть запущен самостоятельно (не имеет URL стартовой точки расширения). Он может быть использован как субтест в тесте более высокого уровня, который и будет содержать правильную стартовую точку.</p>
<p>Тип стартовой точки может быть изменен на другой по правому клику в тесте. Нужно выбрать опцию &#8220;Change start point of test&#8221;.</p>
<h3>Тестовые наборы / Test suites</h3>
<p>Есть два типа тестовых наборов. <strong>Пользовательские тестовые наборы</strong> (Custom Test Suites (JUnit java classes)) и <strong>визуальные тестовые наборы</strong> (.ats файлы).</p>
<p>О пользовательских тестовых наборах подробнее описано в другой статье <a href="http://boss.bekk.no/display/BOSS/Custom+Test+Suites+%28and+flow+control%29">Custom Test Suites (and flow control)</a> (переведу как будет время, она небольшая). Далее в этой секции обсуждаются визуальные тестовые наборы.</p>
<p>Визуальные тестовые наборы &#8211; это специализированные тесты, которые начинаются со стартовой точки тестового набора (Test suite start point) и они обычно располагаются в папке &#8220;test suites&#8221;.</p>
<p>Файлы визуального тестового набора имеют расширение *.ats. Основное отличие между тестовым набором обычным тестом в стартовой точке, которая не вызывает ни URL ни предыдущий тест.</p>
<p>Для создания тестового набора, правокликните на папку (как правило она называется &#8220;test suites&#8221;) и выберите &#8220;New -&gt; New CubicTest test suite&#8221;.</p>
<p>Для того чтобы добавить тесты в тестовый набор, перетащите тесты из package explorer&#8217;a в графический редактор тестов где открыт тестовый набор и соедините их коннекторами, начиная от стартовой точки. Тестовые наборы могут быть выполнены/экспортированы точно так же как и обычные тесты.</p>
<p>Пример тестового набора:</p>
<p><a href="http://boss.bekk.no/download/attachments/230/test_suite.png" rel="lightbox"><img class="alignnone" src="http://boss.bekk.no/download/attachments/230/test_suite.png" alt="" width="514" height="476" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/11/21/cubic-test-essential-concepts-in-cubictest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cubic Test. Инструкция / Cubic test. Tutorial</title>
		<link>http://hudson.su/2009/11/18/cubic-test-tutorial/</link>
		<comments>http://hudson.su/2009/11/18/cubic-test-tutorial/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 16:21:28 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[cubic test]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=421</guid>
		<description><![CDATA[Ниже представлен перевод базовой инструкции к CubicTest с официального сайта (http://boss.bekk.no/display/BOSS/CubicTest+-+Tutorial), так сказать проба пера. Если будут положительные отзывы &#8211; буду переводить еще. Содержание Скачиваем CubicTest / Download CubicTest Запускаем CubicTest / Start CubicTest Пишем первый тест на CubicTest / Writing your first CubicTest test Создаем новый CubicTest проект / Create a New CubicTest Project [...]]]></description>
			<content:encoded><![CDATA[<p>Ниже представлен перевод базовой инструкции к CubicTest с официального сайта (<a href="http://boss.bekk.no/display/BOSS/CubicTest+-+Tutorial" target="_blank">http://boss.bekk.no/display/BOSS/CubicTest+-+Tutorial</a>), так сказать проба пера. Если будут положительные отзывы &#8211; буду переводить еще.</p>
<p><strong>Содержание</strong></p>
<ul>
<li><a href="http://hudson.su/?p=421#c1">Скачиваем CubicTest / Download CubicTest</a></li>
<li><a href="http://hudson.su/?p=421#c2">Запускаем CubicTest / Start CubicTest</a></li>
<li><a href="http://hudson.su/?p=421#c3">Пишем первый тест на CubicTest / Writing your first CubicTest test</a>
<ul>
<li><a href="http://hudson.su/?p=421#c3-1">Создаем новый CubicTest проект / Create a New CubicTest Project</a></li>
<li><a href="http://hudson.su/?p=421#c3-2">Создаем элементы (ассерты) для начальной страницы / Create assertions for the initial page/state</a></li>
<li><a href="http://hudson.su/?p=421#c3-3">Создаем элементы для взаимодействия с пользователем / Create a user interaction</a></li>
<li><a href="http://hudson.su/?p=421#c3-4">Запуск теста / Run the test</a></li>
<li><a href="http://hudson.su/?p=421#c3-5">Запись тестов / Recording tests</a></li>
<li><a href="http://hudson.su/?p=421#c3-6">Пользовательские тестовые шаги / Custom Test Steps</a></li>
<li><a href="http://hudson.su/?p=421#c3-7">Создание тестового набора и запуск тестов из командной строки / Creating a test suite and running tests from the command line</a></li>
<li><a href="http://hudson.su/?p=421#c3-8">Просмотр примеров / Viewing samples</a></li>
</ul>
</li>
</ul>
<p>Итак, приступим:</p>
<p><span id="more-421"></span></p>
<h2 id="c1"><a title="Наверх, к содержанию статьи" href="#top">Скачиваем CubicTest / Download CubicTest</a></h2>
<p>Для начала скачайте CubicTest со страницы <a href="http://boss.bekk.no/cubictest/download.html">http://boss.bekk.no/cubictest/download.html</a>. Для пользователей Eclipse 3.4 Ganymede рекомендуется обновление их локальной версии. Для тех пользователей, у которых нет минимально необходимых версий Eclipse 3.4 Ganymede или Java 5 рекомендуется &#8220;rich&#8221; клиент (по сути это пакет “все в одном” – скачал, распаковал, запустил и работай).</p>
<p>Если вы планируете использовать rich клиент, просто распакуйте скачанный архив в любое место на ваш жесткий диск.</p>
<h2 id="c2"><a title="Наверх, к содержанию статьи" href="#top">Запускаем CubicTest / Start CubicTest</a></h2>
<p><strong> </strong></p>
<p><strong>Обновление локальной версии</strong>: Запустите Eclipse и откройте перспективу CubicTest:</p>
<p>Window -&gt; Open Perspective -&gt; Other… -&gt; CubicTest</p>
<p><strong>Ric</strong><strong>h клиент</strong>: Запустите CubicTest двойным кликом по файлу &#8220;eclipse.exe&#8221; в директории, в которую вы распаковали CubicTest.</p>
<h2 id="c3"><a title="Наверх, к содержанию статьи" href="#top">Пишем первый тест на CubicTest / Writing your first CubicTest test</a></h2>
<h3 id="c3-1"><a title="Наверх, к содержанию статьи" href="#top">Создаем новый CubicTest проект / Create a New CubicTest Project</a></h3>
<ul>
<li>Правокликаем на &#8220;<strong>package </strong><strong>explorer</strong>&#8221; (верхний левый фрейм) в Eclipse и выбираем:</li>
<li><strong>New</strong> -&gt; <strong>New CubicTest Project</strong></li>
<li>Следуем инструкциям, которые появятся на экране</li>
</ul>
<p><a href="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/01.png" rel="lightbox"><img class="alignnone size-full wp-image-443" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/01.png" alt="01" width="571" height="179" /></a></p>
<p>Будет создан пустой тест, который отобразится в окне редактора &#8211; с пустой начальной страницей/состоянием.</p>
<ul>
<li>Тесты в CubicTest состоят из <strong>последовательностей страниц</strong>/состояний и <strong>переходов</strong> между ними.</li>
<li>Каждая страница/состояние могут иметь несколько элементов (page element), которые рассматриваются как ассерты (проверки), которые будут выполнены на странице. Примеры элементов страницы включают текст, ссылки, текстовые поля, кнопки и т.п. Также эти элементы могут быть задействованы пользователем (быть объектами действий пользователя).</li>
<li>Переходы с одной страницы на другую выполняет “тестовый пользователь”. Переход может состоять из нескольких пользовательских действий с элементами страницы. Все вместе, эти пользовательские действия, формируют последующий переход.</li>
</ul>
<p>Примерами пользовательских действий могут служить: ввод текста в текстовое поле, клик по ссылке, “перевод мыши” на изображение (mouse over). Когда переход включает в себя много пользовательских действий (например, заполнение некоей формы), только последнее действие (например, клик по кнопке “отправить форму”) запускает переход на другую страницу (к другому состоянию).</p>
<p>Более подробную информацию можно получить в топике Essential Concepts in CubicTest (на английском) (<a href="http://boss.bekk.no/display/BOSS/Essential+Concepts+in+CubicTest">http://boss.bekk.no/display/BOSS/Essential+Concepts+in+CubicTest</a>)</p>
<h3 id="c3-2"><a title="Наверх, к содержанию статьи" href="#top">Создаем элементы (ассерты) для начальной страницы / Create assertions for the initial page/state</a></h3>
<p>Добавим теперь несколько элементов на первую страницу, которая по умолчанию была создана в нашем новом тесте. <strong>Элементы страницы</strong> находятся в специальной палитре на левой стороне графического редактора тестов:</p>
<p><a href="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/02.png" rel="lightbox"><img class="alignnone size-full wp-image-444" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/02.png" alt="02" width="162" height="145" /></a></p>
<h3 id="c3-3"><a title="Наверх, к содержанию статьи" href="#top">Создаем элементы для взаимодействия с пользователем / Create a user interaction</a></h3>
<p>После того как мы добавили на страницу несколько элементов, создадим <strong>переход по действию пользователя</strong> (User Interaction transition), который переведет нас с одной страницы, на другую:</p>
<ul>
<li>Правокликнем на странице и выберем пункт меню &#8220;<strong>Add user interaction</strong>&#8221;
<ul>
<li>Выберем элемент, на который будет действовать пользователь (в первой колонке, например link)</li>
<li>Затем выберем тип действия (во второй колонке, например Click)</li>
<li>Для элементов, которые поддерживают ввод текста, этот текст можно ввести в третьей колонке.</li>
</ul>
</li>
</ul>
<p><a href="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/03.png" rel="lightbox"><img class="alignnone size-full wp-image-445" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/03.png" alt="03" width="253" height="143" /></a></p>
<p>Вы можете создать несколько элементов ввода в тот же самый переход, если кликните на кнопку &#8220;<strong>Add new user input</strong>&#8220;. Затем нажмите ОК для того чтобы добавить переход. Новая страница, на которую мы осуществляем переход, будет создана автоматически. На ней вы можете добавлять элементы (например, Text) для проверки наличия некоторого результата пользовательского действия.</p>
<h3 id="c3-4"><a title="Наверх, к содержанию статьи" href="#top">Запуск тестов / Run the test</a></h3>
<p>Для того чтобы запустить тест в браузере:</p>
<ul>
<li>Правокликните в области редактора тестов -&gt; затем выберите <strong>Run As</strong> -&gt; <strong>Run CubicTest with Selenium</strong>&#8221; (или сразу <strong>Run Test with Selenium Runner</strong>). Это действие откроет браузер и запустит тест. Тестовая модель в редакторе CubicTest будет окрашиваться в в соответствии с результатами выполнения теста.</li>
<li>Альтернативный способ: правокликните в области редактора тестов -&gt; затем сразу выберите <strong>Run Test with Watir Runner</strong>. Это действие запустит тест в Internet Explorer с использованием Watir. Для того чтобы этот способ работал, на рабочей станции должны быть установлены Ruby и Watir (подробнее см. <a href="http://wtr.rubyforge.org/install.html">http://wtr.rubyforge.org/install.html</a>).</li>
</ul>
<p><a href="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/04.png" rel="lightbox"><img class="alignnone size-full wp-image-446" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/04.png" alt="04" width="323" height="347" /></a></p>
<h3 id="c3-5"><a title="Наверх, к содержанию статьи" href="#top">Запись тестов / Recording tests</a></h3>
<p>Хорошей альтернативой созданию теста вручную (как описано выше) является запись пользовательских действий на существующем web-приложении. Recorder для корректной работы требует наличия браузеров Firefox или Opera. Для того чтобы записать тест:</p>
<ul>
<li>Правокликните в области редактора тестов и выберите пункт <strong>Reco</strong><strong>rd</strong> (или же правокликните на произвольной странице и выберите <strong>Record from this Page/State</strong>. В этом случае тест отработает до этой страницы и запись можно будет продолжить дальше уже с этой страницы).</li>
<li>Откроется Firefox/Opera и загрузит стартовый URL теста.</li>
<li>Для того чтобы записать ассерты для страницы, правокликните на ней в Firefox над некоторым элементом страницы (например над ссылкой) и выберите пункт <strong>Assert link present</strong>.</li>
<li>Для того чтобы записать ассерт на некий текст, его сначала нужно выделить, затем правокликнуть и выбрать пункт <strong>assert text present</strong>.</li>
<li>Для того чтобы записать действие пользователя, перемещайтесь по страницам как вы делаете это обычно. Все действия будут записаны и события типа Click будут запускать переходы на новую страницу. Текстовый ввод автоматически не инициирует переход на новую страницу (оно и понятно J ).</li>
</ul>
<p>Вы можете наблюдать за процессом добавления элементов в тест, перейдя к окну CubicTest. Для того чтобы прекратить запись теста:</p>
<ul>
<li>Правокликните в редакторе тестов и переключите режим <strong>Record</strong> в <strong>off</strong>.</li>
</ul>
<h3 id="c3-6"><a title="Наверх, к содержанию статьи" href="#top">Пользовательские тестовые шаги / Custom Test Steps</a></h3>
<p>Пользовательские тестовые шаги (test steps) это способ создать тесты, которые вы не можете смоделировать при помощи графического редактора тестов CubicTest и палитры элементов. Пользовательские расширения позволяют вам создавать любой необходимый код, использовать любые библиотеки из classpath. Код может быть выполнен и отлажен с использованием стандартных механизмов Eclipse. Изначально пользовательские расширения CubicTest поддерживают Selenium RC. Поддержка остальных фреймворков (HTML export, Selenium export и Watir) ожидается в следующих версиях. Для того чтобы создать  пользовательский тестовый шаг нужно:</p>
<ul>
<li>Правокликнуть на папке в виде package explorer и выполнить New -&gt; New CubicTest Custom Test Step</li>
<li>Выполнить шаги мастера, который отобразится. После этого откроется редактор пользовательского тестового шага.</li>
<li>Перетащить созданный файл в графический редактор тестов и шаг будет добавлен в тест.</li>
</ul>
<p>Все установленные экспортеры (Selenium, Watir, HTML Prototype) могут предоставлять реализацию Custom Test Step, такую что тест и custom step могут работать с различными фреймворками. Для реализации пользовательского тестового шага для Selenium RC нужно:</p>
<ul>
<li>Открыть пользовательский тестовый шаг или два раза кликнуть на него в графическом редакторе.</li>
<li>Кликнуть на ссылку Selenium RC для создания пользовательского тестового шага с использованием Selenium RC, указать имя шага.</li>
<li>После создания класса кликнуть на ссылку Selenium RC еще раз для создания ярлыка для открытого класса.</li>
<li>Реализовать необходимые методы в классе используя Selenium RC (в JavaDoc по Selenium RC обратите внимание на интерфейс ICustomTestStep для самостоятельного создания пользовательского тестового шага).</li>
</ul>
<p>Для запуск теста с включенным в него пользовательским шагом вам нужно сделать правый клик на CubicTest и выбрать</p>
<p><strong>Run as -&gt; Run CubicTest with Selenium</strong></p>
<p>После этого запустится Firefox в качестве браузера по умолчанию. Для того чтобы изменить браузер по умолчанию – откройте run dialog в тулбаре.</p>
<h3 id="c3-7"><a title="Наверх, к содержанию статьи" href="#top">Создание тестового набора и запуск тестов из командной строки / Creating a test suite and running tests from the command line</a></h3>
<p>Когда вы создаете новый тест, создается JUnit тест с именем CustomTestSuite.java. Зная это, вы можете запустить тест, используя объект SeleniumRunner, который поставляется вместе с CubicTest’ом. По умолчанию запускаются все тесты из директории <strong>test</strong>. С момента появления фичи «Custom Test Suite» вы можете использовать любой Java код и любые библиотеки которые вам необходимы, например для вашей конкретной реализации методов setup/teardown. Объект SeleniumRunner может быть сконфигурирован таким же образом как и test runner, запущенный через GUI. Подробнее это описано в JavaDoc и методах-мутаторах (setters). Также доступна опция – оставлять ли браузер открытым между тестами или нет.</p>
<p>Для запуска Custom Test Suite правокликние на класс и выберите опцию <strong>Run As &#8211;&gt; JUnit Test. </strong>Для запуска из командной строки:</p>
<ul>
<li>Убедитесь что у вас установлен Maven 2 и как минимум Java 5 (с JRE)</li>
<li>Перейдите в директорию проекта CubicTest и наберите <strong>mvn </strong><strong>test</strong></li>
<li>После этого будет запущен браузер и начнется выполнение тестового набора.</li>
</ul>
<p>Для пользователей, которым необходимо указывать, какие файлы запускать (и не добавлять их вместе с кодом), предусмотрен редактор тестового набора для выбора – какие тесты запускать. Правокликните на папке «test suites» и выберите опцию &#8220;New CubicTest Test Suite&#8221;. Чтобы добавить тесты, убедитесь что файл тестового набора .<strong>ats</strong> открыт и перетащите файлы тестов в редактор. Преимущество такого подхода в том, что переименование/перемещение тестов автоматически отражается в тестовом наборе.</p>
<h3 id="c3-8"><a title="Наверх, к содержанию статьи" href="#top">Просмотр примеров / Viewing samples</a></h3>
<p>Версия CubicTest с Rich Client’ом поставляется с примерами тестов. Для их просмотра выберите:</p>
<p><strong>File -&gt; Import… -&gt; Existing Project into Workspace -&gt; Select root directory: &lt; CubicTest install dirsamplesCubicShopTest -&gt; Press OK</strong></p>
<div style="overflow: hidden;width: 1px;height: 1px"></div>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/11/18/cubic-test-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash/Flex test tools</title>
		<link>http://hudson.su/2009/07/07/flash-flex-test-tools/</link>
		<comments>http://hudson.su/2009/07/07/flash-flex-test-tools/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 07:06:00 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=89</guid>
		<description><![CDATA[Обзор в пару строчек: FlexMonkey ( http://code.google.com/p/flexmonkey ) Record / playback Flex UI взаимодействия Редактор записанных тестов FlexUnit TestCases могут также использоваться НЕ-FlexUnit-based тестовыми фреймворками Тесты могут запускаться сторонними системами сборки,&#160;например Ant Поддерживает все Flex UI эвенты Использует Flex Automation API для осуществленя прямого (нативного)&#160;контроля над Flex приложением. Не требует javascript и браузерных плагинов. Тесты [...]]]></description>
			<content:encoded><![CDATA[<p>Обзор в пару строчек:</p>
<p><span style="font-size: larger">FlexMonkey </span>( <a href="http://code.google.com/p/flexmonkey">http://code.google.com/p/flexmonkey</a> )
<ul>
<li>Record / playback Flex UI взаимодействия</li>
<li>Редактор записанных тестов</li>
<li>FlexUnit TestCases могут также использоваться НЕ-FlexUnit-based тестовыми фреймворками</li>
<li>Тесты могут запускаться сторонними системами сборки,&nbsp;например Ant</li>
<li>Поддерживает все Flex UI эвенты</li>
<li>Использует Flex Automation API для осуществленя прямого (нативного)&nbsp;контроля над Flex приложением. Не требует javascript и браузерных плагинов.</li>
<li>Тесты записываются на ActionScript.</li>
<li>Не требует хаков вашего приложения.</li>
</ul>
<p><span style="font-size: larger">Flex-ui-selenium</span> ( <a href="http://code.google.com/p/flex-ui-selenium/">http://code.google.com/p/flex-ui-selenium/</a>&nbsp; <a href="http://flexting.blogspot.com">http://flexting.blogspot.com</a>&nbsp;)
<ul>
<li>FlexUISelenium это расширение SeleniumRC для тестирования Flex UI компонент</li>
<li>Код пишется на любом языке для которого есть Selenium Driver (Java, .Net, Ruby, Phyton and PHP)</li>
<li>Требует библиотеки SeleniumRC, Selenium Flex API, FlashSelenium</li>
<li>Требует пересборки приложения с Selenium Flex API</li>
</ul>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/07/07/flash-flex-test-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cubic Test теперь и с кирилицей</title>
		<link>http://hudson.su/2009/04/06/cubic-test-now-with-cyrilic/</link>
		<comments>http://hudson.su/2009/04/06/cubic-test-now-with-cyrilic/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 11:08:00 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[cubic test]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=58</guid>
		<description><![CDATA[Недавно обнаружил что Cubic Test научился нормально работать с кирилицей. Вкратце &#8211; что такое CubicTest: CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable. CubicTest&#8217;s test editor is centered around pages/states and transitions between [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно обнаружил что Cubic Test научился нормально работать с кирилицей.</p>
<p><span id="more-58"></span></p>
<p>Вкратце &#8211; что такое CubicTest:</p>
<div style="margin-left: 40px">
<div>
<p><span style="color: #808080"><br />
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests.<br />
It makes tests faster and easier to write, and provides abstractions to make tests<br />
more robust and reusable. </span></p>
<p>CubicTest&#8217;s test editor is centered around<br />
pages/states and transitions between these pages/states. The model is intuitive<br />
for both Ajax and traditional web applications and supports most user interaction<br />
types.</p>
<p><span style="color: #808080"><br />
CubicTest featres an innovative test recorder and test runner based on<br />
Selenium RC which are fully integrated with the graphical test editor.<br />
Tests can also be run standalone from Maven 2.<br />
</span></div>
</div>
<p>По русски &#8211; это плагин к eclipse который позволяет записывать<br />
Selenium/Watir тесты, отображать их графически (очень наглядно) и<br />
выполнять их. Ранее для меня основным препятствием к его использованию<br />
была некорректная работа с кирилицей. Сейчас похоже эта проблема<br />
успешно исправлена (у меня сейчас установлен CubicTest версии 1.9.2 от 15-Feb-2009).<br />
Простенький пример, иллюстрирующий работу с сайтом в WINDOWS-1251</p>
<p>(UTF-8 тоже работает замечательно):</p>
<div>
<p><a href="http://pics.livejournal.com/dbykadorov/pic/000027t4/"><br />
<img src="http://pics.livejournal.com/dbykadorov/pic/000027t4/s320x240" border="0" alt="" width="304" height="240" /><br />
</a></p>
<p>Полезные ссылки:</p>
<p><a title="Сайт Selenium и его подпроектов" href="http://seleniumhq.org" target="_blank">seleniumhq.org</a></p>
<p><a title="Страничка Qubic Test" href="http://boss.bekk.no/cubictest/" target="_blank">boss.bekk.no/cubictest/</a></div>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/04/06/cubic-test-now-with-cyrilic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Решения для автоматизации тестирования Web-приложений на базе Selenium</title>
		<link>http://hudson.su/2008/06/22/solutions-for-test-automation-web-applications-selenium/</link>
		<comments>http://hudson.su/2008/06/22/solutions-for-test-automation-web-applications-selenium/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 16:35:00 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[bromine]]></category>
		<category><![CDATA[cubic test]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[selenium grid]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[Мои сайты]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=65</guid>
		<description><![CDATA[Представляю вашему вниманию мой доклад на конференции SQADays’2008. Поскольку Selenium как инструмент для тестирования web-приложений показал себя вполне уверенно, встал вопрос о его оптимальном использовании. В частности об оптимизации процессов разработки тестов их исполнения. Для этих целей можно реализовать свой фреймворк (как например, поступили коллеги в Яндексе) для конкретных целей или же разработать более общее [...]]]></description>
			<content:encoded><![CDATA[<div class="contenttext">
<p>Представляю вашему вниманию мой доклад на конференции <a href="http://www.sqadays.ru/programm/bykadorov/" target="_blank">SQADays’2008</a>.</p>
<p>Поскольку <span lang="EN-US">Selenium</span><span lang="EN-US"> </span>как инструмент для тестирования <span lang="EN-US">web</span>-приложений показал себя вполне уверенно, встал вопрос о его оптимальном использовании. В частности об оптимизации процессов разработки тестов их исполнения. Для этих целей можно реализовать свой фреймворк (как например, поступили коллеги в Яндексе) для конкретных целей или же разработать более общее решение и выложить его в общий доступ (одно другому не мешает <img src='http://hudson.su/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ).</p>
<p><span id="more-65"></span><br />
Цель данного доклада – познакомить присутствующих с несколькими удобными решениями.</p>
<h2>1. <span lang="EN-US">Selenium</span><span lang="EN-US"> </span><span lang="EN-US">IDE</span>: возможности применения без использования тяжеловесных решений</h2>
<p class="MsoNormal" style="text-align: justify"><span lang="EN-US">Selenium</span>, как инструмент для автоматизированного тестирования был бы менее эффективен и востребован, если бы не имел средств для быстрой записи/воспроизведения тестовых сценариев. Такой инструмент есть, и те кто уже имел дело с <span lang="EN-US">Selenium</span><span lang="EN-US"> </span>скорее всего уже знакомы с ним – это т.н. <span lang="EN-US">Selenium</span><span lang="EN-US"> </span><span lang="EN-US">IDE</span>:</p>
<p><strong><span lang="EN-US">Plugin</span> к </strong><strong><span lang="EN-US">Firefox</span>. Позволяет:</strong></p>
<ol>
<li>Записывать тесты непосредственно из <span lang="EN-US">Firefox</span></li>
<li>Воспроизводить загруженный тест в <span lang="EN-US">Firefox</span></li>
<li>Воспроизводить загруженный тест в <span lang="EN-US">Firefox</span> через <span lang="EN-US">Selenium</span><span lang="EN-US">Test</span><span lang="EN-US">Runner</span></li>
<li>Экспортировать записанный тест в один из поддерживаемых языков (<span lang="EN-US">java</span>, <span lang="EN-US">ruby</span>, <span lang="EN-US">php</span>, <span lang="EN-US">c</span>#, <span lang="EN-US">python</span>…)</li>
</ol>
<p><strong>Достоинства</strong></p>
<ol>
<li>Прост в использовании, не требует много ресурсов, не требует специальной подготовки сотрудников.</li>
<li>Позволяет автоматизировать простые тестовые сценарии/операции</li>
</ol>
<p><strong>Недостатки</strong></p>
<ol>
<li>Не позволяет использовать логические условия, циклы и т.п. что ограничивает его применимость линейными тестами</li>
<li>Нет возможности запуска сьюитов, а не отдельных тестов</li>
<li>Нет возможности параллельного запуска (только в разных экземплярах <span lang="EN-US">Firefox</span>)</li>
</ol>
<p class="MsoNormal" style="text-indent: 35.4pt;text-align: justify">Конечно, как самостоятельный инструмент автоматизации, <span lang="EN-US">Selenium</span><span lang="EN-US"> </span><span lang="EN-US">IDE</span><span lang="EN-US"> </span>весьма ограничен. Однако, если у вас есть много небольших или средних проектов, например на аутсорсинг, с фиксированным бюджетом, которые не предусматривают комплексную автоматизацию, данная <span lang="EN-US">IDE</span><span lang="EN-US"> </span>позволит автоматизировать рутинные операции по проверке функциональных и/или приемочных требований с минимальными затратами на внедрение и использование.</p>
<p class="MsoNormal" style="text-align: justify">Как указывалось на предыдущей конференции <span lang="EN-US">QA</span><span lang="EN-US"> </span>специалистов, выбор фреймворка для проекта должен быть обусловлен прежде всего самим проектом: маленьким проектам – простые фреймворки, большим и сложным – соответственно сложные. Соответственно <span lang="EN-US">Selenium</span><span lang="EN-US"> </span><span lang="EN-US">IDE</span><span lang="EN-US"> </span>может быть использован как простой фреймворк для автоматизации тестирования, в тех случаях, когда нет времени, денег и необходимости все усложнять.</p>
<h2>2. <span lang="EN-US">Cubic</span><span lang="EN-US"> </span><span lang="EN-US">Test</span>: <span lang="EN-US">Eclipse</span> + <span lang="EN-US">GEF</span> + <span lang="EN-US">Selenium</span> = визуальное управление тестами</h2>
<p class="MsoNormal" style="text-indent: 35.4pt">Современные проприентарные приложения для автоматизации тестирования хороши, на мой взгляд, прежде всего тем, что предоставляют решение по организации и управлению автоматическими тестами. В случае с <span lang="EN-US">open</span><span lang="EN-US"> </span><span lang="EN-US">source</span><span lang="EN-US"> </span>решениями ситуация хуже, так как тот же <span lang="EN-US">Selenium</span><span lang="EN-US"> </span>предоставляет скорее основу для формирования фреймворка для каждого конкретного случая, а не готовое решение. <span lang="EN-US">Cubic</span><span lang="EN-US"> </span><span lang="EN-US">test</span><span lang="EN-US"> </span>предлагает вариант решения, сравнимый с мощными средами от ведущих производителей.</p>
<p><strong>Его </strong><strong>возможности:</strong></p>
<ol>
<li>Интегрируется в <span lang="EN-US">Eclipse</span><span lang="EN-US">IDE</span>как отдельная <span lang="EN-US">Perspective</span>.</li>
<li>Имеет инструменты <span lang="EN-US">Record/Playback</span>.</li>
<li>Использует визуальное моделирование и управление тестами (на базе Graphical Test Editor, <span lang="EN-US">GEF</span>, также интегрируемого в <span lang="EN-US">Eclipse</span>).</li>
<li>Позволяет выносить общие сценарии в субтесты и подключать их по мере необходимости.</li>
<li>Позволяет объединять тесты в наборы (сьюиты), также используя визуальное представление.</li>
<li>Позволяет экспортировать графическое представление тестов в HTML Prototype или Watir (в том числе допускает написание собственных экспортеров).</li>
</ol>
<p><strong>Достоинства</strong></p>
<ol>
<li>Оригинальная и простая для понимания концепция визуального управления тестами, основанная на распространенных и доступных <span lang="EN-US">open</span><span lang="EN-US">source</span>инструментах.</li>
<li>Прост в использовании и не требует специализированных навыков программирования на том или ином языке (<span lang="EN-US">java</span>, <span lang="EN-US">ruby</span>, <span lang="EN-US">c</span>#…).</li>
<li>Встроенные средства записи и воспроизведения.</li>
</ol>
<p><strong>Недостатки</strong></p>
<ol>
<li>Отсутствие возможности параллельного воспроизведения тестовых наборов.</li>
<li>Некорректная работа с кирилицей</li>
</ol>
<p class="MsoNormal" style="text-indent: 35.4pt;text-align: justify">Итого, <span lang="EN-US">Cubic</span><span lang="EN-US"> </span><span lang="EN-US">test</span><span lang="EN-US"> </span>можно рассматривать как решение для проектов средней сложности, где есть возможность целенаправлено заниматься автоматизацией. При этом радует, что инструмент вполне доступен для использования <span lang="EN-US">junior</span><span lang="EN-US"> </span>тестировщиками. Проблема с кирилицей пока решается только ручной правкой тест-файлов (которые хранятся в текстовом формате).</p>
<h2>3. <span lang="EN-US">Selenium</span><span lang="EN-US"> </span><span lang="EN-US">grid</span>: распределнная среда для тестирования <span lang="EN-US">web</span><span lang="EN-US"> </span>приложений – это просто.</h2>
<p class="MsoNormal" style="text-indent: 35.4pt;text-align: justify">Один из недостатков <span lang="EN-US">Selenium</span><span lang="EN-US"> </span>(он же его достоинство) – это запуск экземпляра браузера при выполнении тестов. Достоинства понятны – мы можем тестировать не просто <span lang="EN-US">web</span>-приложение, а <span lang="EN-US">web</span>-приложение в реальном окружении – в <span lang="EN-US">IE</span>, <span lang="EN-US">Safari</span>, <span lang="EN-US">Firefox</span><span lang="EN-US"> </span>на различных платформах. Недостатки тоже на поверхности – нам нужна графическая оболочка (<span lang="EN-US">windows</span>, <span lang="EN-US">kde</span><span lang="EN-US"> </span>или <span lang="EN-US">gnome</span><span lang="EN-US"> </span>в <span lang="EN-US">linux</span><span lang="EN-US"> </span>и т.п.) для выполнения тестов и, что весьма немаловажно, само выполнение тестов в условиях приближанных к боевым занимает продолжительное время. Эту задачу берутся решить разработчики <span lang="EN-US">Selenium</span>-<span lang="EN-US">grid</span>. Они предоставляют решение, позволяющее с минимальными затратами получить распределненую и легко масштабируемую среду для параллельного выполнения большого числа тестов.</p>
<p><strong>Итак, возможности:</strong></p>
<ol>
<li>Самое главное – быстрое и простое распараллеливание выполнения тестов. В основе данной возможности лежит фреймворк <span lang="EN-US">TestNG</span> (а не <span lang="EN-US">jUnit </span>как у «классических» <span lang="EN-US">selenium</span>-тестов).</li>
<li>Возможность построения распределенной и масштабируемой среды для выполнения тестов.</li>
</ol>
<p><strong>Достоинства</strong></p>
<ol>
<li>Многократное уменьшение времени выполнения при большом количестве тестовых сценариев.</li>
<li>Возможность использования ранее написанных тестов (на <span lang="EN-US">java</span>, <span lang="EN-US">ruby</span><span lang="EN-US"> </span><span lang="EN-US">python</span>…).</li>
<li>Простой способ построения распределенной среды для выполнения тестов.</li>
</ol>
<p><strong>Недостатки</strong></p>
<ol>
<li>Нет средств <span lang="EN-US">Record/Playback.</span></li>
<li>Требует более высокой квалификации от сотрудников.</li>
<li>Нетподдержки<span> <span lang="EN-US">selence test cases.</span></span></li>
<li>Сыроват. Например:</li>
</ol>
<blockquote><p>Проблемы с кирилицей при воспроизведении<br />
Проблемы с запуском <span lang="EN-US">parallels tests</span></p></blockquote>
<h2>4. О чем еще стоит упомянуть?</h2>
<p><strong><span lang="EN-US">Selenium</span><span lang="EN-US"> </span></strong><strong><span lang="EN-US">on</span><span lang="EN-US"> </span></strong><strong><span lang="EN-US">Rails</span></strong>. Простой способ интеграции <span lang="EN-US">Selenium</span><span lang="EN-US"> </span>с <span lang="EN-US">Ruby</span><span lang="EN-US"> </span><span lang="EN-US">on</span><span lang="EN-US"> </span><span lang="EN-US">Rail</span><span lang="EN-US"> </span>приложениями.  Поскольку я  сам с Ruby знаком очень поверхностно, этот инструмент представлю обзорно:</p>
<ol>
<li><span lang="EN-US">Selenium Core </span>не «замусоривают»<span lang="EN-US"> /public.</span></li>
<li>Не нужно создвать <span lang="EN-US">suite</span>-файлы, они генерятся на лету — один <span lang="EN-US">suite</span><span lang="EN-US"> </span>на директорию в /<span lang="EN-US">test</span>/<span lang="EN-US">selenium</span>.</li>
<li><span lang="EN-US">Partial test cases. </span>Позволяет выносить часто используемые последовательности действий в отдельные «кусочные» кейсы и подключать их по мере надобности.</li>
<li>Загрузка фикстур и имитация сессий.</li>
<li>Возможность использования нескольких более удобных форматов для <span lang="EN-US">TestCases</span>, помимо <span lang="EN-US">HTML</span></li>
</ol>
<blockquote><p>- Selenese, самый простой тестовый формат.<br />
- Rselenese, позволяет писать тесты на <span lang="EN-US">ruby</span>.<br />
- HTML/RHTML<span lang="EN-US">.</span></p></blockquote>
<p class="MsoNormal" style="text-align: justify">
<p class="MsoNormal" style="text-align: justify"><strong><span lang="EN-US">Bromine</span></strong>. Интегрированная тестовая среда на базе <span lang="EN-US">Selenium</span>.</p>
<p class="MsoNormal" style="text-align: justify"><span lang="EN-US">Selenium </span>предоставляет возможности</p>
<ol>
<li>Создание тестов при помощи IDE</li>
<li>Предоставляет JS framework</li>
<li>Предоставляет R<span lang="EN-US">emote </span>C<span lang="EN-US">ontrol</span> server</li>
<li>Предоставляет Core runner</li>
</ol>
<p class="MsoNormal" style="text-align: justify"><span lang="EN-US">Bromine</span></p>
<ol>
<li>Многофункциональный <span lang="EN-US">QA </span>инструмент</li>
<li>Позволяет создавать проекты</li>
<li>Привязывать требования к проектам</li>
<li>Привязывать тесты к требованиям</li>
<li>Предоставляет простой способ управления и запуска тестов</li>
<li>Позволяет анализировать результаты запуска тестов</li>
<li>Позволяет создавать дефекты</li>
<li>Также имеется облегченная <span lang="EN-US">light</span><span lang="EN-US"> </span>версия только для запуска тестов и анализа результатов</li>
</ol>
<p>На момент составления основы доклада, я только узнал о Bromine и не планировл его как-то подробно освещать, но непосредственно перед SQADays у меня нашлось время посмотреть что этот тул из себя представляет.<br />
Собственно основное ощущение, которое возникло при первом знакомстве с Bromine &#8211; сырость. Реализован он в виде web-приложения на PHP+MySQL. Реализован мягко говоря не хорошо (по сути набор независимых скриптов без разделения логики и представления) и не смотря на указание версии 1.9 у меня не получилось сконфигурировать интеграцию с Selenium, так как приложение упорно теряло текущий выбранный проект.<br />
Будем надеяться что не смотря на это Bromine можно использовать, так как он предлагает ряд интересных идей. Собственно когда у меня будет время, я постараюсь разобраться и настроить действующий стенд Bromine &#8211; а это заслуживает как минимум отдельной статьи.</p>
<h2>5. О грустном</h2>
<p>Как ни прискорбно указывать на этот факт, полноценных IDE и тем более промышленных решений на базе Selenium нет. Пока что наиболее гибким (но и наиболее ресурсоемким) остается вариант использования базовых средств Selenium, дорабатывая свои необходимые надстройки или разрабатывать свой уникальный framework под конкретную задачу.</p></div>
<h2>6. В довесок</h2>
<p><a href="http://rutube.ru/tracks/793135.html?v=a4cc75bdb3100fcb1922e2ada0145a42" target="_blank"><br />
Тот же доклад в записи.<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2008/06/22/solutions-for-test-automation-web-applications-selenium/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

