<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkMDQn4yeCp7ImA9WhRTEko.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616</id><updated>2011-11-02T15:54:33.090-07:00</updated><title>JMeter From Belarus</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://easyjmeter.blogspot.com/" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/JmeterFromBelarus" /><feedburner:info uri="jmeterfrombelarus" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkYGRno4fyp7ImA9Wx5VEkU.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-2342957036537483040</id><published>2010-10-05T05:58:00.000-07:00</published><updated>2010-10-05T06:08:47.437-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-05T06:08:47.437-07:00</app:edited><title>Listeners</title><content type="html">1. &lt;span style="font-weight:bold;"&gt;Sample Result Save Configuration&lt;/span&gt; - приемник может быть сконфигурирован для сохранения различных пунктов в результирующий лог файл, посредством конфигурационного всплывающегося окна. Опции по умолчанию определены как описано в &lt;a href="http://jakarta.apache.org/jmeter/usermanual/listeners.html#defaults" target="_blank"&gt;Listener Default Configuration&lt;/a&gt;. Пункты с (CSV) влияют только на CSV формат; пункты с (XML) влияют только на XML формат. CSV формат не может использоваться для сохранения пунктов, которые включают разделители.&lt;br /&gt;2. &lt;span style="font-weight:bold;"&gt;Graph Full Results&lt;/span&gt; - что-то не работает.&lt;br /&gt;3. &lt;span style="font-weight:bold;"&gt;Graph Results&lt;/span&gt; - формирует простые графики на которых изображены времена замеров (семплов). Черный - текущий семпл; синий - текущее среднее всех семплов; красный - текущее стандартное отклонение; зеленый - текущая интенсивность потока.&lt;br /&gt;4. &lt;span style="font-weight:bold;"&gt;Spline Visualizer&lt;/span&gt; - представляет график времени прохождения по всем семплам, начиная с начала до конца, не взирая на то как много семплов было взято. Сплайновая кривая имеет 10 точек, каждая точка представляет 10% от всех семплов, и сойденены точки неприрывной кривой, используя сплайн логику.&lt;br /&gt;5. &lt;span style="font-weight:bold;"&gt;Assertion Results&lt;/span&gt; - показывает лейблы (имена) всех прошедших семплов. Так же сообщает о неудачных высказываниях (assertions) содержащихся в тест плане.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;6. &lt;span style="font-weight:bold;"&gt;View Results Tree&lt;/span&gt; - показывает дерево ответов на все семплы. В дополнение к ответам можно увидеть, которое понадобилось для получения ответа и код ответа.&lt;br /&gt;7. &lt;span style="font-weight:bold;"&gt;Aggregate Report&lt;/span&gt; - создает таблицу, где для каждого уникально названного запроса в тесте есть свой ряд, в котором предоставлены итоги его работы. Label (имя семпла), Samples (число семплов для опреределенного URL), Average (среднее время получение результата), Median (Медиан - это среднее время множество ответом. 50% семплов заняли больше чем это время), 90% Line (90% семплов заняли больше чем это время), Min (Самое короткое время семпла с данным URL),Max (Самое длинное время семпла с данным URL), Error % (Процент неудачных запросов), Throughput (Пропускная способность измеряется в количестве запросов в секунду/минуту/час), Kb/sec (Пропускная способность измеряется в килобайтах в секунду).&lt;br /&gt;8. &lt;span style="font-weight:bold;"&gt;View Results in Table&lt;/span&gt; - визуализатор, создающий ряд для каждого результата семпла.&lt;br /&gt;9. &lt;span style="font-weight:bold;"&gt;Simple Data Writer&lt;/span&gt; - используется для записи в файл но не на UI. Это эффективный метод записи данных минуя UI часть.&lt;br /&gt;10. &lt;span style="font-weight:bold;"&gt;Monitor Results&lt;/span&gt; - визуализатор для отображения статуса сервера. Он спроектирован для Tomcat 5, но любой servlet container (Servlet container сепциализированный веб сервис поддерживающий Servlet исполнение.) способен переносить статус сервлета и использовать этот контролер. Первая закладка - "Health", показывает статус одного или несколько серверов. Вторая закладка - "Performance", показывает производительность для одного сервера на последних 1000 семплах. Как правило интервал между замерами производительности состовляет 5 секунд.&lt;br /&gt;11. &lt;span style="font-weight:bold;"&gt;Distribution Graph (alpha)&lt;/span&gt; - график отображающий "столбик" для каждого уникального времени отклика. На графике дополнительно рисуются две линии: 50% и 90%. Что означает, что 50% из всех времен откликов заключины между 0 и этой линией. Та же история и с 90%.&lt;br /&gt;12. &lt;span style="font-weight:bold;"&gt;Aggregate Graph&lt;/span&gt; - подобен Aggregate Report. Основное различие в том, что Aggregate Graph позволяет легко сформировать гистограмму и сохранить ее как картинку PNG формата.&lt;br /&gt;13. &lt;span style="font-weight:bold;"&gt;Mailer Visualizer&lt;/span&gt; - подготовит и отошлет письмо, если тест получит более чем Failure Limit ответов от сервера с ошибкой.&lt;br /&gt;14. &lt;span style="font-weight:bold;"&gt;BeanShell Listener&lt;/span&gt; - позволяет использовать BeanShell для обработки семплов для сохранения.&lt;br /&gt;15. &lt;span style="font-weight:bold;"&gt;Summary Report&lt;/span&gt; - создает таблицу, где для каждого уникально названного запроса в тесте есть свой ряд, в котором предоставлены итоги его работы, в отличии от Aggregate Report использует меньше памяти. Имеет два дополнительных поля: Std. Dev. (среднеквадратичное отклонение пройденного времени семпла), Avg. Bytes (среднее значение размера ответа в байтах).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-2342957036537483040?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n5VTg2m2XuOjBYQkhwyS6fm4MJY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n5VTg2m2XuOjBYQkhwyS6fm4MJY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n5VTg2m2XuOjBYQkhwyS6fm4MJY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n5VTg2m2XuOjBYQkhwyS6fm4MJY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/7q1BmAuXMek" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/2342957036537483040/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/10/listeners.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/2342957036537483040?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/2342957036537483040?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/7q1BmAuXMek/listeners.html" title="Listeners" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/10/listeners.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYESHo8eCp7ImA9Wx5VEkU.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-91116784400776237</id><published>2010-10-05T05:53:00.000-07:00</published><updated>2010-10-05T06:08:29.470-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-05T06:08:29.470-07:00</app:edited><title>Assertions</title><content type="html">1. &lt;span style="font-weight:bold;"&gt;Response Assertion&lt;/span&gt; - позволяет добавить шаблон строки для сравнения с различными полями ответа от сервера. Шаблон может: совпадать или содержаться (Perl5-регулярные выражения), быть эквивалентным или подстрокой (простой текст с учетом регистра).&lt;br /&gt;2. &lt;span style="font-weight:bold;"&gt;Duration Assertion&lt;/span&gt; - если ответ от сервера занял больше данного времени в миллисекундах, то он помечает его как неудачный.&lt;br /&gt;3. &lt;span style="font-weight:bold;"&gt;Size Assertion&lt;/span&gt; - проверяет, что ответ от сервера имеет правильный размер.&lt;br /&gt;4. &lt;span style="font-weight:bold;"&gt;XML Assertion&lt;/span&gt; - проверяет, что данные ответа от сервера составлены из корректного XML документа. Не проверяет на достоверность документы основанные на DTD или schema или &lt;span style="font-weight:bold;"&gt;какой-либо другом добавочном контроле данных TBD&lt;/span&gt;.&lt;br /&gt;5. &lt;span style="font-weight:bold;"&gt;BeanShell Assertion&lt;/span&gt; - позволяет пользователю выполнять проверку используя BeanShell скрипт.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;6. &lt;span style="font-weight:bold;"&gt;MD5Hex Assertion&lt;/span&gt; - позволяет пользователю проверять MD5 hash ответа.&lt;br /&gt;7. &lt;span style="font-weight:bold;"&gt;HTML Assertion&lt;/span&gt; - позволяет пользователю проверять HTML синтаксис ответа используя JTidy.&lt;br /&gt;8. &lt;span style="font-weight:bold;"&gt;XPath Assertion&lt;/span&gt; - проверяет документ на правильность, имеет опцию проверки согласно DTD, или ввод документа через JTidy и проверка посредством XPath. Если XPath присутствует, то приложение утверждение верно.&lt;br /&gt;9. &lt;span style="font-weight:bold;"&gt;XML Schema Assertion&lt;/span&gt; - позволяет пользователю проверять ответ согласно с XML Schema.&lt;br /&gt;10. &lt;span style="font-weight:bold;"&gt;BSF Assertion&lt;/span&gt; - позволяет BSF скриптовому коду быть использованным для проверки статуса предыдущего семпла.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-91116784400776237?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OaQmCdIJYiluCjudPlsnGbcayds/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OaQmCdIJYiluCjudPlsnGbcayds/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OaQmCdIJYiluCjudPlsnGbcayds/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OaQmCdIJYiluCjudPlsnGbcayds/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/426ABAsgqx0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/91116784400776237/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/10/assertions.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/91116784400776237?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/91116784400776237?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/426ABAsgqx0/assertions.html" title="Assertions" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/10/assertions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEGQnY4cSp7ImA9Wx5VFEs.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-63395762919156225</id><published>2010-09-10T08:00:00.000-07:00</published><updated>2010-10-07T08:50:23.839-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-07T08:50:23.839-07:00</app:edited><title>Trouble shooting</title><content type="html">Бывает так, что JMeter работает некорректно и странно, при прогоне теста, а именно количество активных юзеров начинает уменьшаться хотя этого происходить не должно. Тогда необходимо посмотреть на системное окошко, которое открывается при запуске jmeterа. Если в нем написано &lt;span style="font-weight:bold;"&gt;java.lang.OutOfMemoryError: GC overhead limit exceeded&lt;/span&gt;, тогда необходимо поменять один параметр в файле &lt;span style="font-weight:bold;"&gt;jmeter.bat&lt;/span&gt; в папке &lt;span style="font-style:italic;"&gt;/bin&lt;/span&gt;. Откройте его и найдите параметр &lt;span style="font-weight:bold;"&gt;set HEAP&lt;/span&gt; и увеличьте максимально возможное значение этого параметра, например &lt;span style="font-weight:bold;"&gt;set HEAP=-Xms512m -Xmx1512m&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-63395762919156225?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/m9xN_ik0cyUmTSUv5ukCDuNtBTE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m9xN_ik0cyUmTSUv5ukCDuNtBTE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/m9xN_ik0cyUmTSUv5ukCDuNtBTE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m9xN_ik0cyUmTSUv5ukCDuNtBTE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/8tFknTK2yfk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/63395762919156225/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/09/trouble-shooting.html#comment-form" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/63395762919156225?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/63395762919156225?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/8tFknTK2yfk/trouble-shooting.html" title="Trouble shooting" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/09/trouble-shooting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkACRHk_cSp7ImA9Wx5XEU4.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-8101859394188593744</id><published>2010-09-10T07:47:00.000-07:00</published><updated>2010-09-10T07:59:25.749-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-10T07:59:25.749-07:00</app:edited><title>Logic Controllers</title><content type="html">Мой перевод с английского ниже. Все замечания по поводу неправильности перевода приветствуются! Переводил пару лет назад.&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight:bold;"&gt;Simple Controller&lt;/span&gt; - используется для группирования и установления порядка выполнения для &lt;span style="font-style:italic;"&gt;Samplers&lt;/span&gt; и других &lt;span style="font-style:italic;"&gt;Logic Controllers&lt;/span&gt;.&lt;br /&gt;2. &lt;span style="font-weight:bold;"&gt;Loop Controller&lt;/span&gt; - выполнит все, что находится у него как child &lt;span style="font-style:italic;"&gt;Count Loop&lt;/span&gt; раз.&lt;br /&gt;3. &lt;span style="font-weight:bold;"&gt;Once Only Controller&lt;/span&gt; - исполняет свое содержимое только один раз и пропускает выполнение содержимого при последующих итерациях. Пример: &lt;span style="font-style:italic;"&gt;Loop Controller&lt;/span&gt; настроен на пятикратное выполнение и содержит &lt;span style="font-style:italic;"&gt;Once Only Controller&lt;/span&gt;, содержимое &lt;span style="font-style:italic;"&gt;Once Only Controller&lt;/span&gt; выполнится только один раз.&lt;br /&gt;4. &lt;span style="font-weight:bold;"&gt;Interleave Controller&lt;/span&gt; - если внутри него находятся &lt;span style="font-style:italic;"&gt;Generative&lt;/span&gt; или &lt;span style="font-style:italic;"&gt;Logic Controllers&lt;/span&gt;, то выполняется один из них по порядку для каждой итерации.&lt;br /&gt;5. &lt;span style="font-weight:bold;"&gt;Random Controller&lt;/span&gt; - похож на &lt;span style="font-style:italic;"&gt;Interleave Controller&lt;/span&gt;, только на каждой итерации выполняемая часть берется не по порядку, а в случайной последовательности.&lt;br /&gt;6. &lt;span style="font-weight:bold;"&gt;Random Order Controller&lt;/span&gt; - больше похож на &lt;span style="font-style:italic;"&gt;Simple Controller&lt;/span&gt;, выполняются все его "дети", только выполнение происходит в произвольном порядке.&lt;br /&gt;7. &lt;span style="font-weight:bold;"&gt;Throughput Controller&lt;/span&gt; - регулирует как часто заданный блок будет выполняться. Может работать в режиме percent execution и в режиме total executions. При percent execution программа вычисляет процент от всех проведенных итераций и определяет выполнять или нет этот блок в следующий раз. При total executions выполнение блока прекращается после достижения количества разрешенных раз.&lt;br /&gt;&lt;br /&gt;8. &lt;span style="font-weight:bold;"&gt;Runtime Controller&lt;/span&gt; - определяет как долго его "детям" позволено играть :). &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;9. &lt;span style="font-weight:bold;"&gt;If Controller&lt;/span&gt; - позволяет контролировать запускать или нет элементы, находящиеся ниже, с помощью логического выражения. Выражение на javascript внутри поля &lt;span style="font-weight:bold;"&gt;Condition&lt;/span&gt; должно вернуть true или false. Например: ${COUNT} &lt; 10 или ${JMeterThread.last_sample_ok}.&lt;br /&gt;10. &lt;span style="font-weight:bold;"&gt;While Controller&lt;/span&gt; - выполняет внутренний блок пока значение поля &lt;span style="font-weight:bold;"&gt;Condition&lt;/span&gt; имеет значение false. Возможные значения поля Condition: blank (выходит из цикла когда последний семпл в цикле fail), LAST (выходит из цикла когда последний семпл в цикле fail, если последний семпл перед циклом fail, то не заходит в цикл), Otherwise (выполняет внутренний блок пока значение поля Condition имеет значение true) или функции (не только javascript). &lt;br /&gt;11. &lt;span style="font-weight:bold;"&gt;Switch Controller&lt;/span&gt; - действует как Interleave Controller, только перед тем как выполнять дочерние элементы по порядку, контроллер выполнит элемент определенный параметром &lt;span style="font-weight:bold;"&gt;switch value&lt;/span&gt;. Значением этого параметра может быть число или строка. Нумеруются элементы с нуля. Если введена строка, то будет выполнен элемент имеющий такое же название.&lt;br /&gt;12. &lt;span style="font-weight:bold;"&gt;ForEach Controller&lt;/span&gt; - выполняет дочерние блоки столько раз, сколько значений имеет related ("родственная") переменная, выбирая при этом для каждого цикла новое значение related переменной. При этом в Input variable prefix передается related переменная, а переменная в поле Output variable name получает текущее значение из related переменной. Output переменную и нужно использовать для параметризации внутри цикла.&lt;br /&gt;13. &lt;span style="font-weight:bold;"&gt;Module Controller&lt;/span&gt; - предоставляет механизм по подставлению фрагмента тест плана в текущий тест план, во время выполнения текущего тест плана. Подставляемых фрагмент может находиться либо в Thread Group, либо WorkBench.&lt;br /&gt;14. &lt;span style="font-weight:bold;"&gt;Include Controller&lt;/span&gt; - позволяет использовать внешние .jmx файлы. Для получения рабочего .jmx файла, необходимо например: в simple controller добавить какой-нибудь семпл и сохранить simple controller как .jmx файл.&lt;br /&gt;15. &lt;span style="font-weight:bold;"&gt;Transaction Controller&lt;/span&gt; - используется для группы семплов, генерируя дополнительный семпл, который объединяет все вложенные семплы. Transaction Controller может работать в двух режимах: дополнительный семпл добавляется после вложенных семплов, дополнительный семпл добавляется как родитель ко всем вложенным семплам.&lt;br /&gt;16. &lt;span style="font-weight:bold;"&gt;Recording Controller&lt;/span&gt; - это символ-заполнитель обозначающий, где прокси-сервер должен записывать семплы. Во время выполнения теста Recording Controller не влияет на тест подобно Simple Controllerу. Но во время записи скрипта прокси-сервер способом, все записанные семплы будут сохраняться под Recording Controllerом.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-8101859394188593744?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9fPlYHcWMJ9A99jxbgDgKqURP6w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9fPlYHcWMJ9A99jxbgDgKqURP6w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9fPlYHcWMJ9A99jxbgDgKqURP6w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9fPlYHcWMJ9A99jxbgDgKqURP6w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/vWc1CcsWxOU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/8101859394188593744/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/09/logic-controllers.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/8101859394188593744?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/8101859394188593744?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/vWc1CcsWxOU/logic-controllers.html" title="Logic Controllers" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/09/logic-controllers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcFSHg6cCp7ImA9Wx5XEU4.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-2856568166951929378</id><published>2010-09-10T07:37:00.000-07:00</published><updated>2010-09-10T07:46:59.618-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-10T07:46:59.618-07:00</app:edited><title>Thread Group</title><content type="html">В JMeter исполняется то, что находится внутри &lt;span style="font-weight:bold;"&gt;Thread Group&lt;/span&gt;. В &lt;span style="font-weight:bold;"&gt;Test Plan&lt;/span&gt; может быть несколько &lt;span style="font-weight:bold;"&gt;Thread Group&lt;/span&gt;. И все они будут выполняться независимо и одновременно.&lt;br /&gt;Рассмотрим какие параметры имеет &lt;span style="font-weight:bold;"&gt;Thread Group&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_soWF2Hci_Rc/TIpDVmKl5AI/AAAAAAAAAEk/W2mGemimjIk/s1600/Run_test_1.jpg" target="_blank"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 252px;" src="http://4.bp.blogspot.com/_soWF2Hci_Rc/TIpDVmKl5AI/AAAAAAAAAEk/W2mGemimjIk/s400/Run_test_1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5515294731969881090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Некоторые из них очевидные, а некоторые не очень :).&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Name&lt;/span&gt; - имя группы пользователей.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Comments&lt;/span&gt; - думаю, что это поле для комментария.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Action to be taken after a Sampler error&lt;/span&gt; - этот пункт для выбора действий на случай появления ошибки в некотором сэмпле при выполнении теста. Возможно несколько вариантов: &lt;span style="font-weight:bold;"&gt;Continue&lt;/span&gt; - переходить к следующему элементу теста; &lt;span style="font-weight:bold;"&gt;Stop Thread&lt;/span&gt; - останавливать тест для текущей группы пользователей; &lt;span style="font-weight:bold;"&gt;Stop Test&lt;/span&gt; - останавливать тест полностью.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Number of Threads&lt;/span&gt; - количество пользователей или подключений к серверу.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ramp-Up Period&lt;/span&gt; - определяет сколько времени понадобится JMeter для запуска всех пользователей. То есть если &lt;span style="font-weight:bold;"&gt;Number of Threads&lt;/span&gt; - 6,а &lt;span style="font-weight:bold;"&gt;Ramp-Up Period&lt;/span&gt; - 60, то каждые десять секунд к тесту будет добавляться по пользователю.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Loop Count &lt;/span&gt;- и ёжику понятно.&lt;br /&gt;Выбрав &lt;span style="font-weight:bold;"&gt;Scheduler&lt;/span&gt; можно воспользоваться дополнительными настройками. Можно выставить время начала теста (&lt;span style="font-weight:bold;"&gt;Start time&lt;/span&gt;). Мы можем запустить тест заранее, но действия не начнутся пока не достигнется &lt;span style="font-weight:bold;"&gt;Start time&lt;/span&gt;. Закончиться тест может в двух случаях. Первый - достигнется &lt;span style="font-weight:bold;"&gt;End time&lt;/span&gt;, второй - пока количество прошедших итераций не превысит &lt;span style="font-weight:bold;"&gt;loop count&lt;/span&gt;. &lt;span style="font-weight:bold;"&gt;Startup delay&lt;/span&gt; определяет задержку перед началом теста и &lt;span style="font-weight:bold;"&gt;duration&lt;/span&gt; определяет длительность всего теста. Причем либо используется &lt;span style="font-weight:bold;"&gt;Start time&lt;/span&gt; и &lt;span style="font-weight:bold;"&gt;End time&lt;/span&gt;, либо &lt;span style="font-weight:bold;"&gt;Startup delay&lt;/span&gt; и &lt;span style="font-weight:bold;"&gt;duration&lt;/span&gt;. Они взаимно исключающие.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-2856568166951929378?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W9BW6R5N_0AH-IsvPt5jpT4iQ2Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W9BW6R5N_0AH-IsvPt5jpT4iQ2Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W9BW6R5N_0AH-IsvPt5jpT4iQ2Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W9BW6R5N_0AH-IsvPt5jpT4iQ2Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/zM0B6eK8qrc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/2856568166951929378/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/09/thread-group.html#comment-form" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/2856568166951929378?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/2856568166951929378?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/zM0B6eK8qrc/thread-group.html" title="Thread Group" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_soWF2Hci_Rc/TIpDVmKl5AI/AAAAAAAAAEk/W2mGemimjIk/s72-c/Run_test_1.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/09/thread-group.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cFRHw7cCp7ImA9Wx5XEU8.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-2013599711247889531</id><published>2010-08-02T02:12:00.000-07:00</published><updated>2010-09-10T07:30:15.208-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-10T07:30:15.208-07:00</app:edited><title>Задержки между шагами (delays between steps)</title><content type="html">Порой необходимо сктриптом эмулировать реальное поведение пользователя (или хотя бы приближенное к реальному). Для этого необходимо расставлять задержки (delay) в jmeter скрипте между логическими шагами. Я использую для этого Test Action (Add &gt;&gt; Sampler &gt;&gt; Test Action). Он очень удобен с той точки зрения, что в него величину паузы можно передавать в виде параметра, а уж этот значение этого параметра можно брать либо из файлика, либо генерировать, кому как удобно.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2FJ60ov870I/TFaK19szstI/AAAAAAAAAAM/nzCmFsu7SrY/s1600/test+action.jpg" target="_blank"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 124px;" src="http://3.bp.blogspot.com/_2FJ60ov870I/TFaK19szstI/AAAAAAAAAAM/nzCmFsu7SrY/s320/test+action.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5500736654579839698" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-2013599711247889531?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2NOyPiEK0r7ddb23reDLSOmtHZo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2NOyPiEK0r7ddb23reDLSOmtHZo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2NOyPiEK0r7ddb23reDLSOmtHZo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2NOyPiEK0r7ddb23reDLSOmtHZo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/lIbUP3bfvBs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/2013599711247889531/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/08/delays-between-steps.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/2013599711247889531?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/2013599711247889531?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/lIbUP3bfvBs/delays-between-steps.html" title="Задержки между шагами (delays between steps)" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_2FJ60ov870I/TFaK19szstI/AAAAAAAAAAM/nzCmFsu7SrY/s72-c/test+action.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/08/delays-between-steps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUARHs_cCp7ImA9WxFWFE0.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-1906649051054957117</id><published>2010-06-01T08:57:00.000-07:00</published><updated>2010-06-01T09:04:05.548-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-01T09:04:05.548-07:00</app:edited><title>Важнейшее преимущество способа записи скрипта "BadBoy" над "Прокси-сервер" способом</title><content type="html">Самое главное преимущество "BadBoy" способа - это возможность записи скрипта для https приложений. При помощи прокси-сервера запись запросов с секретным протоколом невозможна. На то и эта защита, что бы никакой посредник между клиентом и сервером не мог вклиниться. Зато "BadBoy" сам и есть клиент и он записывает все запросы и http и https.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-1906649051054957117?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_yg6OkkC2umu7zrhQTPYxMpk_Z8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_yg6OkkC2umu7zrhQTPYxMpk_Z8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_yg6OkkC2umu7zrhQTPYxMpk_Z8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_yg6OkkC2umu7zrhQTPYxMpk_Z8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/OXbsEUMiSig" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/1906649051054957117/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/06/badboy.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/1906649051054957117?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/1906649051054957117?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/OXbsEUMiSig/badboy.html" title="Важнейшее преимущество способа записи скрипта &quot;BadBoy&quot; над &quot;Прокси-сервер&quot; способом" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/06/badboy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4BQ304fip7ImA9WxFWEEg.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-8615514688199144873</id><published>2010-05-27T02:35:00.000-07:00</published><updated>2010-05-28T07:45:52.336-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-28T07:45:52.336-07:00</app:edited><title>Сохранять ответ от сервера на ошибку. - jmeter.save.saveservice.response_data.on_error</title><content type="html">Очень полезная опция jmeter.save.saveservice.response_data.on_error. Используется она для сохранения ответа от сервера в случае ошибки. При проведении нагрузки в non-gui режиме нет смысла сохранять все ответы от сервера, так как это займет очень много места и разобраться в них будет очень сложно.&lt;br /&gt;Для активации, выставляем значение параметра jmeter.save.saveservice.response_data.on_error в значение true. Для того, что бы эта опция действительно приносила пользу, необходимо использовать Assertions, которые и будут выдавать ошибку если ответ не верен.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-8615514688199144873?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/88g9CT7zYDXX--MD7oNBmv5E4WY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/88g9CT7zYDXX--MD7oNBmv5E4WY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/88g9CT7zYDXX--MD7oNBmv5E4WY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/88g9CT7zYDXX--MD7oNBmv5E4WY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/ij5wYW2yNBg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/8615514688199144873/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/05/blog-post_27.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/8615514688199144873?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/8615514688199144873?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/ij5wYW2yNBg/blog-post_27.html" title="Сохранять ответ от сервера на ошибку. - jmeter.save.saveservice.response_data.on_error" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/05/blog-post_27.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MHQX07fCp7ImA9Wx5XEU8.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-8638361092690554491</id><published>2010-05-15T02:02:00.000-07:00</published><updated>2010-09-10T06:30:30.304-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-10T06:30:30.304-07:00</app:edited><title>jmeter.properties</title><content type="html">Мало информации существует об ОЧЕНь полезном файлике jmeter.properties.&lt;br /&gt;&lt;br /&gt;Всем необходимо знать о его содержимом. Вот например блок Results file configuration:&lt;br /&gt;&lt;br /&gt;#---------------------------------------------------------------------------&lt;br /&gt;# Results file configuration&lt;br /&gt;#---------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;# This section helps determine how result data will be saved.&lt;br /&gt;# The commented out values are the defaults.&lt;br /&gt;&lt;br /&gt;# legitimate values: xml, csv, db.  Only xml and csv are currently supported.&lt;br /&gt;#jmeter.save.saveservice.output_format=xml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# true when field should be saved; false otherwise&lt;br /&gt;&lt;br /&gt;# assertion_results_failure_message only affects CSV output&lt;br /&gt;#jmeter.save.saveservice.assertion_results_failure_message=false&lt;br /&gt;#&lt;br /&gt;# legitimate values: none, first, all&lt;br /&gt;#jmeter.save.saveservice.assertion_results=none&lt;br /&gt;#&lt;br /&gt;#jmeter.save.saveservice.data_type=true&lt;br /&gt;#jmeter.save.saveservice.label=true&lt;br /&gt;#jmeter.save.saveservice.response_code=true&lt;br /&gt;# response_data is not currently supported for CSV output&lt;br /&gt;#jmeter.save.saveservice.response_data=false&lt;br /&gt;# Save ResponseData for failed samples&lt;br /&gt;#jmeter.save.saveservice.response_data.on_error=false&lt;br /&gt;#jmeter.save.saveservice.response_message=true&lt;br /&gt;#jmeter.save.saveservice.successful=true&lt;br /&gt;#jmeter.save.saveservice.thread_name=true&lt;br /&gt;#jmeter.save.saveservice.time=true&lt;br /&gt;#jmeter.save.saveservice.subresults=true&lt;br /&gt;#jmeter.save.saveservice.assertions=true&lt;br /&gt;#jmeter.save.saveservice.latency=true&lt;br /&gt;#jmeter.save.saveservice.samplerData=false&lt;br /&gt;#jmeter.save.saveservice.responseHeaders=false&lt;br /&gt;jmeter.save.saveservice.requestHeaders=true&lt;br /&gt;#jmeter.save.saveservice.encoding=false&lt;br /&gt;#jmeter.save.saveservice.bytes=true&lt;br /&gt;#jmeter.save.saveservice.url=false&lt;br /&gt;#jmeter.save.saveservice.filename=false&lt;br /&gt;#jmeter.save.saveservice.hostname=false&lt;br /&gt;#jmeter.save.saveservice.thread_counts=false&lt;br /&gt;#jmeter.save.saveservice.sample_count=false&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;# Timestamp format - this only affects CSV output files&lt;br /&gt;# legitimate values: none, ms, or a format suitable for SimpleDateFormat&lt;br /&gt;#jmeter.save.saveservice.timestamp_format=ms&lt;br /&gt;#jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSSS&lt;br /&gt;&lt;br /&gt;# For use with Comma-separated value (CSV) files or other formats&lt;br /&gt;# where the fields' values are separated by specified delimiters.&lt;br /&gt;# Default:&lt;br /&gt;#jmeter.save.saveservice.default_delimiter=,&lt;br /&gt;# For TAB, since JMeter 2.3 one can use:&lt;br /&gt;#jmeter.save.saveservice.default_delimiter=\t&lt;br /&gt;&lt;br /&gt;# Only applies to CSV format files:&lt;br /&gt;#jmeter.save.saveservice.print_field_names=false&lt;br /&gt;&lt;br /&gt;# Optional list of JMeter variable names whose values are to be saved in the result data files.&lt;br /&gt;# Use commas to separate the names. For example:&lt;br /&gt;#sample_variables=SESSION_ID,REFERENCE&lt;br /&gt;# N.B. The current implementation saves the values in XML as attributes,&lt;br /&gt;# so the names must be valid XML names.&lt;br /&gt;# Versions of JMeter after 2.3.2 send the variable to all servers&lt;br /&gt;# to ensure that the correct data is available at the client.&lt;br /&gt;&lt;br /&gt;# Optional xml processing instruction for line 2 of the file:&lt;br /&gt;#jmeter.save.saveservice.xml_pi=&lt;br /&gt;&lt;br /&gt;!!! Для того, чтобы изменения в этом файле начали действовать необходимо перезапустить JMeter. !!!&lt;br /&gt;&lt;br /&gt;Обсуждение этих опций проведем в отдельных сообщениях.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-8638361092690554491?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/X2eWcqyvxYuAVdvikzAGMxcmTqk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X2eWcqyvxYuAVdvikzAGMxcmTqk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/X2eWcqyvxYuAVdvikzAGMxcmTqk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X2eWcqyvxYuAVdvikzAGMxcmTqk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/tBPZZ6mFZ_0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/8638361092690554491/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/05/jmeterproperties.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/8638361092690554491?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/8638361092690554491?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/tBPZZ6mFZ_0/jmeterproperties.html" title="jmeter.properties" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/05/jmeterproperties.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YMQn48eip7ImA9WxFQGUw.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-5987099592969130345</id><published>2010-05-15T01:51:00.000-07:00</published><updated>2010-05-15T02:19:43.072-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-15T02:19:43.072-07:00</app:edited><title>Assertions в JMeter</title><content type="html">Если развивать тему усложнения скрипта, то необходимо расставлять Assertions после каждого запроса, который открывает новую страницу, либо делает какие-то полезные действия. Наиболее полезный Response Assertion. Принцип действия его интуитивно понятен. Полезность его в том, что если на некий запрос пришла не та страница, то jmeter не выдаст ошибку сам по себе, так как код ответа 200, но дальнейшее исполнение скрипта не имеет смысла. Для этого и используем Assertions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-5987099592969130345?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mEcNIS6luz94O5OD5nqUSSN0ges/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mEcNIS6luz94O5OD5nqUSSN0ges/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mEcNIS6luz94O5OD5nqUSSN0ges/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mEcNIS6luz94O5OD5nqUSSN0ges/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/Z8cCr9M7WeQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/5987099592969130345/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/05/jmeter.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/5987099592969130345?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/5987099592969130345?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/Z8cCr9M7WeQ/jmeter.html" title="Assertions в JMeter" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/05/jmeter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YCSHw5fyp7ImA9Wx5XEU8.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-3156838508717259697</id><published>2010-02-10T04:58:00.000-08:00</published><updated>2010-09-10T07:32:49.227-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-10T07:32:49.227-07:00</app:edited><title>JMeter 2nd page</title><content type="html">&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Записки маленького тестировщ&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;ика. Часть вторая.&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Доработка JMeter скрипта.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;После записи скрипта&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt; не важно каким &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;способом&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt; &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;или "прокси-сервер", или "BadBoy", он  &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;в любом случае нуждается в доработке для корректной р&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;аботы с приложением.&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt; &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;Его нужно параметризовать. В чем заключается параметр&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;изация я попытаюсь показать наглядно ниже.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Тестировать будем приложение&lt;br /&gt;&lt;a href="http://demo.flamingo.exadel.com/booking/home.seam" target="_blank"&gt;http://demo.flamingo.exadel.com/booking/home.seam&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. Запишем скрипт используя BadBoy способ.&lt;br /&gt;Записываем следующие действия:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;1.1. Вводим http://demo.flamingo.exadel.com/booking/home.seam.&lt;br /&gt;1.2. Логинимся с данными &lt;b&gt;Login Name: loaduser1&lt;/b&gt; и &lt;b&gt;Pas&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;sword: 12345&lt;/b&gt;.&lt;br /&gt;1.3. Кликаем &lt;b&gt;Find Hotels&lt;/b&gt; кнопку.&lt;br /&gt;1.4. Кликаем на любой &lt;b&gt;View Hotel&lt;/b&gt; ссылку.&lt;br /&gt;1.5. Нажимаем &lt;b&gt;Book Hotel&lt;/b&gt; кнопку.&lt;br /&gt;1.6. Заполняем поля &lt;b&gt;Credit Card&lt;/b&gt; и &lt;b&gt;Credit Card Name&lt;/b&gt; значением 1231231231231231.&lt;br /&gt;1.7. Жмем &lt;b&gt;Proceed&lt;/b&gt; кнопку.&lt;br /&gt;1.8. Кликаем &lt;b&gt;Confirm&lt;/b&gt; кнопку.&lt;br /&gt;1.9. Удаляем в таблице &lt;b&gt;Current Hotel Bookings&lt;/b&gt; созданную запись, кликая &lt;b&gt;Cancel&lt;/b&gt;.&lt;br /&gt;1.10. Нажимаем &lt;b&gt;Logout&lt;/b&gt; ссылку. &lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;2. Запишем скрипт второй раз.&lt;br /&gt;3. Откроем два скрипта в двух JMeterах.&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;4. Сравнивая запросы в двух скриптах, можно понять &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt; какие данные нужно коррелировать. Например во втором запросе параметр &lt;b&gt;javax.f&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;b&gt;aces.ViewState&lt;/b&gt;. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3K8RJnZTuI/AAAAAAAAADs/4OmGZgWxe4w/s1600-h/Advanced_1.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 162px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3K8RJnZTuI/AAAAAAAAADs/4OmGZgWxe4w/s320/Advanced_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5436614703014563554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4. Добавьте &lt;b&gt;View Results Tree&lt;/b&gt; Listener в конец скрипта.&lt;br /&gt;5. Запустите скипт на выполнение один раз. В листенере можно посмотреть отправленные запросы и полученные ответы. Раз параметр &lt;b&gt;javax.faces.ViewState&lt;/b&gt; имеет динамическое значение и отправляется со вторым запросом, значит его значение должно появиться в ответах из предыдущих запросов. Проверим ответ от первого запроса. Там действительно приходит значение этого параметра.&lt;br /&gt;&lt;a style="font-family: courier new;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_soWF2Hci_Rc/S3K8RGSshXI/AAAAAAAAAD0/ysvy8WMfuOM/s1600-h/Advanced_2.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 193px;" src="http://1.bp.blogspot.com/_soWF2Hci_Rc/S3K8RGSshXI/AAAAAAAAAD0/ysvy8WMfuOM/s320/Advanced_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5436614702122435954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;6. Для того, чтобы выхватить этот параметр, добавим &lt;/span&gt;&lt;b style="font-family: courier new;"&gt;Regular Expression Extractor&lt;/b&gt;&lt;span style="font-family:courier new;"&gt; к первому запросу(семплу) со следующими параметрами:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: courier new;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3K8RjXR3YI/AAAAAAAAAD8/P5BtQGWNpcs/s1600-h/Advanced_3.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 144px;" src="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3K8RjXR3YI/AAAAAAAAAD8/P5BtQGWNpcs/s320/Advanced_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5436614709926288770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;7. Теперь значение параметра &lt;/span&gt;&lt;b style="font-family: courier new;"&gt;javax.faces.ViewState&lt;/b&gt;&lt;span style="font-family:courier new;"&gt; можно заменить&lt;br /&gt;на &lt;/span&gt;&lt;i style="font-family: courier new;"&gt;${ViewStateId}&lt;/i&gt;&lt;span style="font-family:courier new;"&gt;. И запрос будет отправляться с корректным значением.&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: courier new;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3K8R8Ie-HI/AAAAAAAAAEE/EXyduMgVNXo/s1600-h/Advanced_4.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 142px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3K8R8Ie-HI/AAAAAAAAAEE/EXyduMgVNXo/s320/Advanced_4.jpg" alt="" id="BLOGGER_PHOTO_ID_5436614716575119474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="font-family: courier new;"&gt;8. Так же необходимо поступить со всеми запросами, где присутствует параметр &lt;b&gt;javax.faces.ViewState&lt;/b&gt;, а так же параметр &lt;b&gt;cid&lt;/b&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;9. В четвертом запросе параметром &lt;b&gt;dataModelSelection&lt;/b&gt; мы выбираем, какой из отелей открыть. Сделаем, что бы отель выбирался рандомом, для этого в поле &lt;b&gt;Match No.(0 for Random)&lt;/b&gt; &lt;b&gt;Regular Expression Extractor&lt;/b&gt;a, прикрепленного к третьему запросу, выставим значение &lt;b&gt;0&lt;/b&gt;. Остальные поля заполняем из соображений правильности :). А в самом запросе параметр &lt;b&gt;dataModelSelection&lt;/b&gt; будет иметь такой вид: &lt;i&gt;hot:hotels[${hotel}]&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;Вид Regular Expression Extractorа: &lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3K8R7bjMrI/AAAAAAAAAEM/37EDhT9fPps/s1600-h/Advanced_5.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 150px;" src="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3K8R7bjMrI/AAAAAAAAAEM/37EDhT9fPps/s320/Advanced_5.jpg" alt="" id="BLOGGER_PHOTO_ID_5436614716386652850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;10. Приведу пример использования &lt;b&gt;XPath Extractor&lt;/b&gt;а.&lt;br /&gt;&lt;br /&gt;Задача: получить значение &lt;b&gt;Confirmation number&lt;/b&gt; для только что созданной записи.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: courier new;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3Kxl5FzKgI/AAAAAAAAADU/kH2xqmkNzSU/s1600-h/Advanced_6.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 202px;" src="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3Kxl5FzKgI/AAAAAAAAADU/kH2xqmkNzSU/s320/Advanced_6.jpg" alt="" id="BLOGGER_PHOTO_ID_5436602964728031746" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;Используя firebug для firefox или IEDeveloperToolBar для IE,смотрим дерево тегов возле интересующих нас значений.&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: courier new;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3Kxl_VjwpI/AAAAAAAAADc/MDf8lLKGq8A/s1600-h/Advanced_7.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 186px;" src="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3Kxl_VjwpI/AAAAAAAAADc/MDf8lLKGq8A/s320/Advanced_7.jpg" alt="" id="BLOGGER_PHOTO_ID_5436602966404743826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Добавляем &lt;/span&gt;&lt;b style="font-family: courier new;"&gt;XPath Extractor&lt;/b&gt;&lt;span style="font-family:courier new;"&gt; к девятому запросу со следующими параметрами:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3K8YMDl3NI/AAAAAAAAAEU/JNuVndk8Bmw/s1600-h/Advanced_8.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 161px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3K8YMDl3NI/AAAAAAAAAEU/JNuVndk8Bmw/s320/Advanced_8.jpg" alt="" id="BLOGGER_PHOTO_ID_5436614823928782034" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:courier new;"&gt; Теперь с помощью параметра &lt;/span&gt;&lt;i style="font-family: courier new;"&gt;${xcancel}&lt;/i&gt;&lt;span style="font-family:courier new;"&gt; можно получать доступ к значениям &lt;/span&gt;&lt;b style="font-family: courier new;"&gt;Confirmation number&lt;/b&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-3156838508717259697?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_u4mBLY71dvjgl6VHUkoiCqKQqI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_u4mBLY71dvjgl6VHUkoiCqKQqI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_u4mBLY71dvjgl6VHUkoiCqKQqI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_u4mBLY71dvjgl6VHUkoiCqKQqI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/4XqEpRlcNWY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/3156838508717259697/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/02/jmeter-2nd-pag.html#comment-form" title="Комментарии: 3" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/3156838508717259697?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/3156838508717259697?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/4XqEpRlcNWY/jmeter-2nd-pag.html" title="JMeter 2nd page" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3K8RJnZTuI/AAAAAAAAADs/4OmGZgWxe4w/s72-c/Advanced_1.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/02/jmeter-2nd-pag.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MBR384fyp7ImA9Wx5XEU8.&quot;"><id>tag:blogger.com,1999:blog-6054811090145614616.post-8427702316804047781</id><published>2010-02-10T01:03:00.000-08:00</published><updated>2010-09-10T07:37:36.137-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-10T07:37:36.137-07:00</app:edited><title>JMeter 1st page</title><content type="html">&lt;b&gt;Привет всем! Это мой первый блог так, что прошу не судить строго. Многое из того, что вы увидите плагиат, но я пыта&lt;/b&gt;&lt;b&gt;лся расставлять ссылки на оригиналы. Данный блог не претендует на абсолютную истину. Я надеюсь он просто поможет начинающим в JMeter.&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;И так..... Записки маленького тестировщика. Часть первая.&lt;br /&gt;&lt;br /&gt;JMeter&lt;/b&gt; - это проект Apache Jakarta, который может использоваться как инструмент &lt;b&gt;нагрузочного тестирования&lt;/b&gt; для анализа и измерения быстродействия разнообразных служб, с акцентом на веб приложениях. JMeter так же может использоваться для &lt;b&gt;регрессионного тестирования&lt;/b&gt; и &lt;b&gt;стресс-тесрирования&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Содержание:&lt;/span&gt;&lt;br /&gt;1. Скачать, установить, запустить&lt;br /&gt;2. Запись скрипта&lt;br /&gt;2.1. Ручной способ&lt;br /&gt;2.2. "Прокси-сервер" способ&lt;br /&gt;2.3. "Bad Boy" способ&lt;br /&gt;3. Доработка скрипта&lt;br /&gt;3.1. После записи через прокси&lt;br /&gt;3.2. После записи через BadBoy&lt;br /&gt;4. Нагрузка баз данных&lt;br /&gt;5. Нагрузка веб-сервисов&lt;br /&gt;6. JMeter для регрессии и стресс-тестирования&lt;br /&gt;7. Полезные ссылки по литературе&lt;br /&gt;&lt;h2&gt;&lt;span class="mw-headline"&gt;1. Скачать, установить, запустить&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt; JMeter - это бесплатный продукт. А это значит, что его можно свободно &lt;a href="http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi" class="external text" title="http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi" rel="nofollow" target="_blank"&gt;скачать&lt;/a&gt; ничего не опасаясь. Качаем 2.3.x.zip и распаковываем.&lt;br /&gt;Специальной установки он не требует так, что JMeter готов к работе.&lt;br /&gt;Двойной клик по файлу &lt;i&gt;JMeter.bat&lt;/i&gt; в директории &lt;i&gt;jmeter/bin&lt;/i&gt; запустит приложение. И вот ОНО работает. :)&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="mw-headline"&gt;2. Запись скрипта&lt;/span&gt;&lt;/h2&gt;Записывать скрипт можно тремя способами (т.е. я знаю только о трех).&lt;br /&gt;Во-первых, составлять вручную из предложенных шаблонов и пользуясь всеми другими возможностями JMeter. Это высший пилотаж, и по этому поводу могу предложить только элементарный пример, расположенный ниже.&lt;br /&gt;Во-вторых, можно использовать возможности для автоматической записи скрипта средствами самого JMeter с помощью прокси-сервера. Есть пример в &lt;a href="http://jakarta.apache.org/jmeter/usermanual/jmeter_proxy_step_by_step.pdf" class="external text" title="http://jakarta.apache.org/jmeter/usermanual/jmeter_proxy_step_by_step.pdf" rel="nofollow" target="_blank"&gt;оригинале&lt;/a&gt; и в моем переводе, смотрите ниже.&lt;br /&gt;В-третьих, на некоторых форумах советуют использовать &lt;a href="http://www.badboy.com.au/" class="external text" title="http://www.badboy.com.au/" rel="nofollow" target="_blank"&gt;BadBoy&lt;/a&gt; для записи скрипта в &lt;b&gt;Test Plan&lt;/b&gt;. Очень интересный способ и, думаю, перспективный.&lt;br /&gt;&lt;h3&gt;&lt;span class="mw-headline"&gt;2.1. Ручной способ&lt;/span&gt;&lt;/h3&gt;  &lt;p&gt;1. Запускаем JMeter. Перед собой видим рабочую область:&lt;br /&gt;&lt;/p&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J434DgONI/AAAAAAAAAAM/TMrJPNIkihM/s1600-h/Hands_record_1.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 362px; height: 107px;" src="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J434DgONI/AAAAAAAAAAM/TMrJPNIkihM/s320/Hands_record_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5436540601524828370" border="0" /&gt;&lt;/a&gt;    2. Добавляем &lt;b&gt;Thread Group&lt;/b&gt; к &lt;b&gt;Test Plan&lt;/b&gt;. Клик правой клавишей по &lt;b&gt;Test Plan&lt;/b&gt;, выбрать &lt;b&gt;Add -&gt; Thread Group&lt;/b&gt;. &lt;h2&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_soWF2Hci_Rc/S3J5uqCSVkI/AAAAAAAAAAU/6g-i4g95zZo/s1600-h/Hands_record_2.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 156px;" src="http://1.bp.blogspot.com/_soWF2Hci_Rc/S3J5uqCSVkI/AAAAAAAAAAU/6g-i4g95zZo/s320/Hands_record_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5436541542654432834" border="0" /&gt;&lt;/a&gt;&lt;/h2&gt;  3. Добавляем &lt;b&gt;Default HTTP Request&lt;/b&gt; к &lt;b&gt;Thread Group&lt;/b&gt;. Клик правой клавишей по &lt;b&gt;Thread Group&lt;/b&gt;, выбрать &lt;b&gt;Add -&gt; Config Element -&gt; HTTP Request Defaults&lt;/b&gt;. Необходимо в поле &lt;b&gt;Server Name or IP&lt;/b&gt; ввести URL приложения, которое вы собрались тестировать. Пусть это будет &lt;i&gt;jakarta.apache.org&lt;/i&gt;. В поле &lt;b&gt;Port&lt;/b&gt; введем &lt;i&gt;80&lt;/i&gt; (отмечу, что Port специфичен для каждого приложения и зачастую указывать его просто не нужно).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_soWF2Hci_Rc/S3J6aIBw_cI/AAAAAAAAAAc/dNxSWOkzLGU/s1600-h/Hands_record_3.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 186px;" src="http://1.bp.blogspot.com/_soWF2Hci_Rc/S3J6aIBw_cI/AAAAAAAAAAc/dNxSWOkzLGU/s320/Hands_record_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5436542289439686082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4. Добавляем &lt;b&gt;HTTP Requests&lt;/b&gt; к &lt;b&gt;Thread Group&lt;/b&gt;. Клик правой клавишей по &lt;b&gt;Thread Group&lt;/b&gt;, выбрать &lt;b&gt;Add -&gt; Sampler -&gt; HTTP Request&lt;/b&gt;. В поле &lt;b&gt;Path&lt;/b&gt; вводим (&lt;i&gt;/jmeter/&lt;/i&gt;) путь, куда мы собираемся идти в приложении. И меняем имя (&lt;b&gt;Name&lt;/b&gt;) на говорящее для нас - &lt;i&gt;JMeter page&lt;/i&gt;.   &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J6iB1Jj5I/AAAAAAAAAAk/98qz4H_ICeQ/s1600-h/Hands_record_41.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 162px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J6iB1Jj5I/AAAAAAAAAAk/98qz4H_ICeQ/s320/Hands_record_41.jpg" alt="" id="BLOGGER_PHOTO_ID_5436542425215111058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5. Добавляем еще один &lt;b&gt;HTTP Requests&lt;/b&gt; к &lt;b&gt;Thread Group&lt;/b&gt; для перехода на другую страницу. Клик правой клавишей по &lt;b&gt;Thread Group&lt;/b&gt;, выбрать &lt;b&gt;Add -&gt; Sampler -&gt; HTTP Request&lt;/b&gt;. В поле &lt;b&gt;Path&lt;/b&gt; вводим &lt;i&gt;/jmeter/usermanual/index.html&lt;/i&gt;. И меняем имя (&lt;b&gt;Name&lt;/b&gt;) на &lt;i&gt;Usermanual page&lt;/i&gt;. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_soWF2Hci_Rc/S3J6sJGwREI/AAAAAAAAAAs/atENYcJEF00/s1600-h/Hands_record_5.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 162px;" src="http://1.bp.blogspot.com/_soWF2Hci_Rc/S3J6sJGwREI/AAAAAAAAAAs/atENYcJEF00/s320/Hands_record_5.jpg" alt="" id="BLOGGER_PHOTO_ID_5436542598966690882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;6. Добавляем &lt;b&gt;Aggregate Report&lt;/b&gt; к &lt;b&gt;Thread Group&lt;/b&gt; для получения данных о ходе и результатах теста. Клик правой клавишей по &lt;b&gt;Thread Group&lt;/b&gt;, выбрать &lt;b&gt;Add -&gt; Listener -&gt; Aggregate Report&lt;/b&gt;.&lt;br /&gt;7. Вот скрипт готов для использования. Осталось только сохранить &lt;b&gt;Test Plan&lt;/b&gt; и выбрать &lt;b&gt;Run&lt;/b&gt; в меню &lt;b&gt;Run&lt;/b&gt;.&lt;br /&gt;8. Результат теста наблюдаем в &lt;b&gt;Aggregate Report&lt;/b&gt; элементе&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3J6zxDrvbI/AAAAAAAAAA0/1oGPkFbO9pk/s1600-h/Hands_record_6.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 99px;" src="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3J6zxDrvbI/AAAAAAAAAA0/1oGPkFbO9pk/s320/Hands_record_6.jpg" alt="" id="BLOGGER_PHOTO_ID_5436542729950313906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="mw-headline"&gt;2.2. "Прокси-сервер" способ&lt;/span&gt;&lt;/h3&gt;  &lt;p&gt;Для автоматической записи скрипта в JMeter, используя прокси-сервер, необходимо проделать следующие действия:&lt;br /&gt;1. В браузере (например IE6) кликаем &lt;b&gt;Сервис -&gt; Свойства обозревателя&lt;/b&gt;.&lt;br /&gt;2. В &lt;b&gt;свойствах обозревателя&lt;/b&gt; на вкладке &lt;b&gt;Подключения&lt;/b&gt; кликаем &lt;b&gt;Настройка LAN&lt;/b&gt;.&lt;br /&gt;3. Выбираем &lt;b&gt;использовать прокси-сервер ...&lt;/b&gt;, вводим &lt;b&gt;Адрес:&lt;/b&gt; &lt;i&gt;localhost&lt;/i&gt; и &lt;b&gt;Порт:&lt;/b&gt; &lt;i&gt;808&lt;/i&gt;. &lt;/p&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J7Nwec3-I/AAAAAAAAAA8/rEioo7kbggw/s1600-h/Proxy_record_1.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 104px;" src="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J7Nwec3-I/AAAAAAAAAA8/rEioo7kbggw/s320/Proxy_record_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5436543176470749154" border="0" /&gt;&lt;/a&gt; 4. Запускаем JMeter.&lt;br /&gt;5. Добавляем &lt;b&gt;Thread Group&lt;/b&gt; к &lt;b&gt;Test Plan&lt;/b&gt;.&lt;br /&gt;6. Добавляем &lt;b&gt;HTTP Request Defaults&lt;/b&gt; к &lt;b&gt;Thread Group&lt;/b&gt;. Задаем в поле &lt;b&gt;S&lt;/b&gt; &lt;b&gt;erver Name or IP&lt;/b&gt; URL &lt;i&gt;jakarta.apache.org&lt;/i&gt; (обратите внимание на поле &lt;b&gt;Port Number&lt;/b&gt;, в данном случае оно не заполняется, но при необходимости заполните его).&lt;br /&gt;7. Добавляем &lt;b&gt;HTTP Proxy Server&lt;/b&gt; к &lt;b&gt;WorkBrench&lt;/b&gt;. Клик правой клавишей по &lt;b&gt;WorkBrench&lt;/b&gt;, выбрать &lt;b&gt;Add -&gt; Non-Test Elements -&gt; HTTP Proxy Server&lt;/b&gt;.&lt;br /&gt;8. Меняем порт (&lt;b&gt;Port&lt;/b&gt;) в HTTP Proxy Server на &lt;i&gt;808&lt;/i&gt;.&lt;br /&gt;9. В выпадающем меню &lt;b&gt;Target Controller&lt;/b&gt; выбираем &lt;b&gt;Test Plan -&gt; Thread Group&lt;/b&gt;.&lt;br /&gt;Теперь JMeter готов к записи скрипта.&lt;br /&gt;10. Кликаем кнопку &lt;b&gt;Start&lt;/b&gt;.&lt;br /&gt;11. Открываем браузер. В адресную строку вводим &lt;i&gt;&lt;a href="http://jakarta.apache.org/jmeter/index.html" class="external free" title="http://jakarta.apache.org/jmeter/index.html" rel="nofollow" target="_blank"&gt;http://jakarta.apache.org/jmeter/index.html&lt;/a&gt;&lt;/i&gt;.&lt;br /&gt;выполняем те действия, которые нужны в тесте. Например:&lt;br /&gt;12. Кликаем &lt;b&gt;User Manual&lt;/b&gt; ссылку.&lt;br /&gt;13. Кликаем &lt;b&gt;Download Realeses&lt;/b&gt; ссылку.&lt;br /&gt;14. Закрываем браузер.&lt;br /&gt;15. Возвращаемся к JMeter.&lt;br /&gt;16. Останавливаем прокси-сервер, кликая кнопку &lt;b&gt;Stop&lt;/b&gt;.&lt;br /&gt;17. Проверяем результат записи скрипта. Видим что записаны не только запросы на переходы между страничками, другие "полезные" запросы, но и запросы на загрузку  картинок и стилей. Обычно запросы на загрузку картинок, стилей и т.п. излишни и сильно засоряют скрипт.&lt;br /&gt;&lt;h2&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3J7T3TXf0I/AAAAAAAAABE/CrTza-OpYgE/s1600-h/Proxy_record_2.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 143px;" src="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3J7T3TXf0I/AAAAAAAAABE/CrTza-OpYgE/s320/Proxy_record_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5436543281382522690" border="0" /&gt;&lt;/a&gt;&lt;/h2&gt;  18. Значит необходимо отфильтровать нужные нам запросы. Зададим шаблоны, по которым они будут отбираться.&lt;br /&gt;&lt;b&gt;Шаблоны бывают следующие:&lt;/b&gt;&lt;br /&gt;.* - все&lt;br /&gt;.*\.png – png картинки&lt;br /&gt;.*\.gif – gif картинки&lt;br /&gt;.*\.jpg – jpeg картинки&lt;br /&gt;.*\.php&lt;br /&gt;.*\.jsp&lt;br /&gt;.*\.html&lt;br /&gt;.*\.htm&lt;br /&gt;.*\.js&lt;br /&gt;&lt;b&gt;!!!Не забывайте о точке перед звездочкой!!!&lt;/b&gt;&lt;br /&gt;Я перечислил не все шаблоны и вообще я думаю, что их можно придумывать самому. Так, например, в следующих шагах я применю &lt;i&gt;.*\.ico&lt;/i&gt; шаблон, который успешно отработает.&lt;br /&gt;19. Добавим к &lt;b&gt;URL Patterns to Include&lt;/b&gt; шаблон &lt;i&gt;.*&lt;/i&gt;.&lt;br /&gt;20. Добавим к &lt;b&gt;URL Patterns to Exclude&lt;/b&gt; шаблоны &lt;i&gt;.*\.jpg&lt;/i&gt;, &lt;i&gt;.*\.gif&lt;/i&gt;,  &lt;i&gt;.*\.ico&lt;/i&gt; и &lt;i&gt;.*\.css&lt;/i&gt;.&lt;br /&gt;21. Кликаем кнопку &lt;b&gt;Start&lt;/b&gt;.&lt;br /&gt;22. Открываем браузер. В адресную строку вводим &lt;i&gt;&lt;a href="http://jakarta.apache.org/jmeter/index.html" class="external free" title="http://jakarta.apache.org/jmeter/index.html" rel="nofollow" target="_blank"&gt;http://jakarta.apache.org/jmeter/index.html&lt;/a&gt;&lt;/i&gt;.&lt;br /&gt;выполняем те действия, которые нужны в тесте. На пример:&lt;br /&gt;23. Кликаем &lt;b&gt;User Manual&lt;/b&gt; ссылку.&lt;br /&gt;24. Кликаем &lt;b&gt;Download Realeses&lt;/b&gt; сс ылку.&lt;br /&gt;25. Закрываем браузер.&lt;br /&gt;26. Возвращаемся к JMeter.&lt;br /&gt;27. Останавливаем прокси-сервер, кликая кнопку &lt;b&gt;Stop&lt;/b&gt;.&lt;br /&gt;28. Проверяем результат записи скрипта. Видим что записаны только "полезные" запросы на сервер.&lt;br /&gt;&lt;h2&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3J7T3TXf0I/AAAAAAAAABE/CrTza-OpYgE/s1600-h/Proxy_record_2.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 300px;" src="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J_Fa-KM3I/AAAAAAAAACc/XbJlENAkzkk/s320/Proxy_record_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5436547431305720690" border="0" /&gt;&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="mw-headline"&gt;2.3. "BadBoy" способ&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;Для того, что бы воспользоваться этим удобным способом, необходимо скачать и установить саму программу  &lt;b&gt;"BadBoy"&lt;/b&gt;.&lt;br /&gt;1. Скачиваем последнюю версию &lt;a href="http://www.badboy.com.au/" class="external text" title="http://www.badboy.com.au/" rel="nofollow" target="_blank"&gt;&lt;b&gt;"BadBoy"&lt;/b&gt;&lt;/a&gt; из интернета (я пользуюсь 2.0.7).&lt;/p&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J7ub5O0rI/AAAAAAAAABM/b_XHzWk-3QY/s1600-h/BadBoy_1.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 158px;" src="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J7ub5O0rI/AAAAAAAAABM/b_XHzWk-3QY/s320/BadBoy_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5436543737881612978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2. Устанавливаем.&lt;br /&gt;3. Запускаем &lt;i&gt;Start &gt;&gt; Programs &gt;&gt; BadBoy&lt;/i&gt;. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J74idjexI/AAAAAAAAABU/Pe3Wdd0ddRM/s1600-h/BadBoy_2.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 253px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J74idjexI/AAAAAAAAABU/Pe3Wdd0ddRM/s320/BadBoy_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5436543911443266322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4. Вводим в адресную строку &lt;i&gt;&lt;a href="http://jakarta.apache.org/jmeter/index.html" class="external free" title="http://jakarta.apache.org/jmeter/index.html" rel="nofollow" target="_blank"&gt;http://jakarta.apache.org/jmeter/index.html&lt;/a&gt;&lt;/i&gt;.&lt;br /&gt;выполняем те действия, которые нужны в тесте. Например:&lt;br /&gt;5. Кликаем &lt;b&gt;User Manual&lt;/b&gt; ссылку.&lt;br /&gt;6. Кликаем &lt;b&gt;Download Realeses&lt;/b&gt; ссылку.&lt;br /&gt;7. Нажимаем &lt;b&gt;Record off&lt;/b&gt; кнопку и изучаем записанный скрипт.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J8H2OS-8I/AAAAAAAAABc/OMXEYSlqEKU/s1600-h/BadBoy_3.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J8H2OS-8I/AAAAAAAAABc/OMXEYSlqEKU/s320/BadBoy_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5436544174446017474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;8. Нажав три раза на Play, видим как проигрывается скипт.&lt;br /&gt;9. Теперь сохраним скипт для использования в JMeter. Кликаем &lt;i&gt;File &gt;&gt; Export to JMeter...&lt;/i&gt;&lt;br /&gt;10. Открываем JMeter.&lt;br /&gt;11. В JMeter кликаем &lt;i&gt;File &gt;&gt; Open&lt;/i&gt; и открываем сохраненный на 9 шагу скрипт.&lt;br /&gt;12. &lt;b&gt;Badboy Test Plan&lt;/b&gt; готов к модификации и использованию. Хочу обратить внимание, что в подавляющем большинстве случаев скрипт требует доработки до полной готовности.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J8RezwWaI/AAAAAAAAABk/ofFmPAD2Dos/s1600-h/BadBoy_4.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 226px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J8RezwWaI/AAAAAAAAABk/ofFmPAD2Dos/s320/BadBoy_4.jpg" alt="" id="BLOGGER_PHOTO_ID_5436544339959372194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="mw-headline"&gt;3. Доработка скрипта&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;a name=".D0.9F.D0.BE.D1.81.D0.BB.D0.B5_.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B8_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_.D0.BF.D1.80.D0.BE.D0.BA.D1.81.D0.B8" id=".D0.9F.D0.BE.D1.81.D0.BB.D0.B5_.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B8_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_.D0.BF.D1.80.D0.BE.D0.BA.D1.81.D0.B8" target="_blank"&gt;&lt;/a&gt;&lt;h3&gt; &lt;span class="mw-headline"&gt;3.1. После записи через прокси&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;1. Записываем скрипт используя прокси-методов, предложенных в пункте &lt;b&gt;"Запись скрипта"&lt;/b&gt;.&lt;br /&gt;2. Часто для корректной работы записанного скрипта необходимо использовать cookie. Для этого в JMeter предусмотрен &lt;b&gt;HTTP Cookie Manager&lt;/b&gt;. Его добавяем после &lt;b&gt;HTTP Request Defaults&lt;/b&gt;. Клик правой клавишей по &lt;b&gt;Thread Group&lt;/b&gt;, выбрать &lt;b&gt;A&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;dd -&gt; Config Element -&gt; HTTP Cookie Manager&lt;/b&gt;.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J8gjZ3CAI/AAAAAAAAABs/mNYf91OWOBc/s1600-h/Cookie_manager_1.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 183px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J8gjZ3CAI/AAAAAAAAABs/mNYf91OWOBc/s320/Cookie_manager_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5436544598890973186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3. Так же добавим &lt;b&gt;HTTP Header Manager&lt;/b&gt;.&lt;br /&gt;4. Теперь добавим пару &lt;b&gt;Listener&lt;/b&gt;. В &lt;b&gt;View Results Tree&lt;/b&gt; можно наблюдать какое место скрипта сейчас выполняется, все ли запросы посланы корректно и получены ли корректные ответы. В &lt;b&gt;Aggregate Report&lt;/b&gt; можно увидеть много интересного, но об этом позже.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="mw-headline"&gt;3.2. После записи через BadBoy&lt;/span&gt;&lt;/h3&gt; смотрите в следующем сообщении&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="mw-headline"&gt;4. Нагрузка баз данных&lt;/span&gt;&lt;/h2&gt;Оригинал - &lt;a href="http://www.npolive.net/doc/jmeter/User%27s%20Manual_%20Building%20a%20Database%20Test%20Plan.pdf" class="external text" title="http://www.npolive.net/doc/jmeter/User's%20Manual_%20Building%20a%20Database%20Test%20Plan.pdf" rel="nofollow" target="_blank"&gt;User's Manual_Building a Database Test Plan&lt;/a&gt; - сейчас почему то ссылка не работает.  Я поищу ее потом.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="mw-headline"&gt;5. Нагрузка веб-сервисов&lt;/span&gt;&lt;/h2&gt;  &lt;p&gt;Создать нагрузку для веб сервисов довольно быстро и просто. Пожалуйста вам ссылочка на &lt;a href="http://jakarta.apache.org/jmeter/usermanual/build-ws-test-plan.html" class="external text" title="http://jakarta.apache.org/jmeter/usermanual/build-ws-test-plan.html" rel="nofollow" target="_blank"&gt;оригинал&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;А вот мой вариант по-русски: &lt;/p&gt;&lt;p&gt;1. Добавляем &lt;b&gt;Thread Group&lt;/b&gt; в наш &lt;b&gt;Test Plan&lt;/b&gt;.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;2. Добавляем &lt;b&gt;WebService(SOAP) Request&lt;/b&gt; в &lt;b&gt;Thread Group&lt;/b&gt;. Правой клавишей по Thread Group , далее Add --&gt; Sampler --&gt; WebService(SOAP) Request&lt;br /&gt;3. Еще добавим парочку листенеров, таких как, например, &lt;b&gt;Summary Report&lt;/b&gt; и &lt;b&gt;View Results Tree&lt;/b&gt;.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J8wJ1_CRI/AAAAAAAAAB0/TGqRi4kC24E/s1600-h/Ws_test_plan_1.png" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 247px; height: 306px;" src="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J8wJ1_CRI/AAAAAAAAAB0/TGqRi4kC24E/s320/Ws_test_plan_1.png" alt="" id="BLOGGER_PHOTO_ID_5436544866907523346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;NOTE!!! Заметьте, что JMeter поддерживает только SOAP 1.1, а SOAP 1.2 - нет!&lt;br /&gt;NOTE!!! Для того, что бы заработал &lt;b&gt;WebService(SOAP) Request&lt;/b&gt; необходимо скачать две jar-ки activation.jar и mail.jar (к сожалению под рукой ссылки нет) и перезагрузить JMeter.&lt;br /&gt;NOTE!!! Необходимо отослать смс на номер 454526567953 для активации услуги (шутка).&lt;br /&gt;4. Узнайте WSDL URL (вот пример &lt;a href="http://ws1.xxx.com/yyy/LWebService?wsdl" class="external free" title="http://ws1.xxx.com/yyy/LWebService?wsdl" rel="nofollow" target="_blank"&gt;http://ws1.xxx.com/yyy/LWebService?wsdl&lt;/a&gt;) и вставьте ее/его в поле WSDL URL в &lt;b&gt;WebService(SOAP) Request&lt;/b&gt;.&lt;br /&gt;5. Нажмите кнопку &lt;b&gt;Load WSDL&lt;/b&gt;. --&gt; В поле &lt;b&gt;Web Wethods&lt;/b&gt; должны подгрузиться все доступные методы для этого веб-сервиса. Если этого не произошло то, что-то пошло не так.&lt;br /&gt;6. Теперь жмем кнопку &lt;b&gt;Configure&lt;/b&gt; --&gt; Автоматически должны заполнится поля &lt;b&gt;Protocol&lt;/b&gt;, &lt;b&gt;Server Name or IP&lt;/b&gt;, &lt;b&gt;Port Number&lt;/b&gt;, &lt;b&gt;Path&lt;/b&gt; и &lt;b&gt;SOAPAction&lt;/b&gt;.&lt;br /&gt;7. Осталось совсем не много. Теперь необходимо составить сам запрос. Если не разбираетесь в этом, то попросите это сделать того человека кто писал этот веб сервис.&lt;br /&gt;8. Если чекнуть галочку &lt;b&gt;Read SOAP response&lt;/b&gt;, то в &lt;b&gt;View Results Tree&lt;/b&gt; листенере можно будет увидеть ответы от веб сервисов, что довольно полезно.&lt;br /&gt;9. Получаем примерно следующий sample:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J92YvoWuI/AAAAAAAAACE/obVwLgFZ-zY/s1600-h/Ws_test_plan_2.png" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 282px; height: 320px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J92YvoWuI/AAAAAAAAACE/obVwLgFZ-zY/s320/Ws_test_plan_2.png" alt="" id="BLOGGER_PHOTO_ID_5436546073498245858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;10. Все готово к работе. Теперь можно комбинировать разные запросы на веб сервис и выстраивать логику.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="mw-headline"&gt;6. JMeter для регрессии и стресс-тестирования&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;При использовании JMeter для регрессии, необходимо использовать &lt;b&gt;Response Assertion&lt;/b&gt; элементы в &lt;b&gt;Test Plan&lt;/b&gt;. &lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J92gtHk5I/AAAAAAAAACM/icmIKIgDoOg/s1600-h/Response_Assertion.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 202px;" src="http://2.bp.blogspot.com/_soWF2Hci_Rc/S3J92gtHk5I/AAAAAAAAACM/icmIKIgDoOg/s320/Response_Assertion.jpg" alt="" id="BLOGGER_PHOTO_ID_5436546075635192722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;При использовании JMeter для стресс-тестирования, необходимо отключить все опции в используюмых &lt;b&gt;Listener&lt;/b&gt;, так как это может повлиять на результат. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3J920cHg9I/AAAAAAAAACU/pQVpWuF5yFE/s1600-h/Configure_in_listener.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 254px;" src="http://3.bp.blogspot.com/_soWF2Hci_Rc/S3J920cHg9I/AAAAAAAAACU/pQVpWuF5yFE/s320/Configure_in_listener.jpg" alt="" id="BLOGGER_PHOTO_ID_5436546080932594642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="mw-headline"&gt;7. Полезные ссылки и литература по теме:&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;1. &lt;a href="http://jakarta.apache.org/jmeter/" class="external text" title="http://jakarta.apache.org/jmeter/" rel="nofollow" target="_blank"&gt;Официальный сайт&lt;/a&gt; JMeter&lt;br /&gt;2. &lt;a href="http://jakarta.apache.org/jmeter/usermanual/index.html" class="external text" title="http://jakarta.apache.org/jmeter/usermanual/index.html" rel="nofollow" target="_blank"&gt;User's Manual&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.npolive.net/doc/jmeter/" class="external text" title="http://www.npolive.net/doc/jmeter/" rel="nofollow" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6054811090145614616-8427702316804047781?l=easyjmeter.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TbJkJiWhoDdEspiwhl_vq9MEvTQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TbJkJiWhoDdEspiwhl_vq9MEvTQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TbJkJiWhoDdEspiwhl_vq9MEvTQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TbJkJiWhoDdEspiwhl_vq9MEvTQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JmeterFromBelarus/~4/pgeiH7BSOwM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://easyjmeter.blogspot.com/feeds/8427702316804047781/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://easyjmeter.blogspot.com/2010/02/jmeter-1st-page.html#comment-form" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/8427702316804047781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6054811090145614616/posts/default/8427702316804047781?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JmeterFromBelarus/~3/pgeiH7BSOwM/jmeter-1st-page.html" title="JMeter 1st page" /><author><name>Георгий</name><uri>http://www.blogger.com/profile/16674745289063123962</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_soWF2Hci_Rc/S3J434DgONI/AAAAAAAAAAM/TMrJPNIkihM/s72-c/Hands_record_1.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://easyjmeter.blogspot.com/2010/02/jmeter-1st-page.html</feedburner:origLink></entry></feed>

