<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>iramind</title>
  <link>http://iramind.livejournal.com/</link>
  <description>iramind - LiveJournal.com</description>
  <lastBuildDate>Thu, 10 Dec 2009 08:12:49 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>iramind</lj:journal>
  <lj:journalid>18251566</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
<item>
  <guid isPermaLink='true'>http://iramind.livejournal.com/2485.html</guid>
  <pubDate>Thu, 10 Dec 2009 08:12:49 GMT</pubDate>
  <title>про мастерство тестировщика</title>
  <link>http://iramind.livejournal.com/2485.html</link>
  <description>Прочитала вот эту статью. Как будто свои мысли.&lt;br /&gt;&lt;a href=&quot;http://blog.openquality.ru/proactive-skills/&quot;&gt;http://blog.openquality.ru/proactive-skills/&lt;/a&gt;</description>
  <comments>http://iramind.livejournal.com/2485.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://iramind.livejournal.com/2267.html</guid>
  <pubDate>Mon, 16 Nov 2009 03:27:24 GMT</pubDate>
  <title>Зачем нужны тестовые сценарии (Test cases)?</title>
  <link>http://iramind.livejournal.com/2267.html</link>
  <description>&lt;p style=&quot;margin: 0cm 0cm 10pt&quot;&gt;Недавно столкнулась с ситуацией, когда на вопрос руководителю проекта &lt;strong&gt;&amp;laquo;Что вам полезнее знать, прошли ли тесты или стабильна ли функциональность, которую они проверяют?&amp;raquo; &lt;/strong&gt;в ответ получила замешательство.&lt;/p&gt;&lt;p style=&quot;margin: 0cm 0cm 10pt&quot;&gt;Сам по себе тестовый сценарий, это способ проверки чего-либо. Когда мы составляем сценарии тестирования, то, по сути, определяемся, как мы поймём, что функциональность работает, работает так, как надо, работает стабильно.&lt;/p&gt;&lt;p style=&quot;margin: 0cm 0cm 10pt&quot;&gt;Выходит, что сценарий &amp;ndash; это лишь инструмент. Очень важный инструмент, но не изначальный. Вначале всё-таки должны быть требования и здравый смысл. &lt;em&gt;(Добавляю последний дабы допустить возможность ошибки в формализованных требованиях.)&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0cm 0cm 10pt&quot;&gt;Вот и выходит, что предоставлять руководителю срез по тестовым сценариям это не так хорошо, как срез по требованиям. Конечно, тестеровщик должен понимать, что в этом случае, он несет больше ответственности за вероятные ошибки. Но ответсвенность &amp;ndash; это хорошо.&lt;/p&gt;&lt;p style=&quot;margin: 0cm 0cm 10pt&quot;&gt;Пример:&lt;br /&gt;Тестеровщик говорит: &amp;laquo;всё проверил, все тест-кейсы пройдены успешно&amp;raquo;. Можем ли мы сказать, что функциональность готова? Нет! Точнее можем, но для этого нам подтребуется удостовериться в том, что используемый набор тестов полностью покрывал тестируемую область.&lt;br /&gt;или так:&lt;br /&gt;Тестеровщик говорит: &amp;laquo;всё проверил, функционирование системы возможно, но в стрессовых словиях возможны сбои и потери данных&amp;raquo;.&lt;/p&gt;&lt;p style=&quot;margin: 0cm 0cm 10pt&quot;&gt;Если честно, до сих пор не понимаю, зачем руководителю проекта нужно состояние тест-кейсов, без информации об их достаточности и полноте.&lt;/p&gt;</description>
  <comments>http://iramind.livejournal.com/2267.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://iramind.livejournal.com/1954.html</guid>
  <pubDate>Mon, 13 Jul 2009 01:56:52 GMT</pubDate>
  <title>Тест должен быть простым</title>
  <link>http://iramind.livejournal.com/1954.html</link>
  <description>&lt;p&gt;&lt;br /&gt;Почему возникает необходимость задуматься об этом? Да просто потому, что это необходимо помнить постоянно.&lt;br /&gt;Это относится и к тестам, проводимым вручную, и к автоматизированным тестам.&lt;/p&gt;&lt;p&gt;Главная цель теста - это диагностика, иными словами, ответ на вопрос - работает ли. Очень важно, чтобы тест отвечал только на один вопрос в один момент. Очень важно, чтобы этот вопрос был ясен всем заинтересованым лицам.&lt;/p&gt;&lt;p&gt;Не редка ситуация, когда тестировщик, увлеченный процессом, строит всё новые и новые сложные тесты, упуская при этом проверку простых действий. А ведь между тем все сложные действия строятся на простых.&lt;br /&gt;Я ни в коем случае не отрицаю необходимости тестов, состоящих из большого количества действий. Лишь ставлю им приоритет ниже тех, которые проверяют простые базовые действия. &lt;br /&gt;&lt;br /&gt;Зачем проверять, поместится ли в кастрюлю 5 литров воды, если у кастрюли дна нет?&lt;/p&gt;</description>
  <comments>http://iramind.livejournal.com/1954.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://iramind.livejournal.com/1669.html</guid>
  <pubDate>Thu, 14 May 2009 02:51:59 GMT</pubDate>
  <title>Как эффективнее группировать тесты</title>
  <link>http://iramind.livejournal.com/1669.html</link>
  <description>&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Автоматизация тестирования делиться на два этапа &amp;ndash; создание тестов и их использование. При этом хорошая работа на первом этапе стремится упростить работу на втором. Не только упростить, но и сделать её эффективнее.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Не секрет, что полный прогон тестов не нужен постоянно. Главным правилом должна быть своевременность.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;i style=&quot;mso-bidi-font-style: normal&quot;&gt;Примечание: &lt;/i&gt;&lt;/font&gt;&lt;/font&gt;&lt;i style=&quot;mso-bidi-font-style: normal&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;font-family: Wingdings; mso-ascii-font-family: &amp;#39;Times New Roman&amp;#39;; mso-hansi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;span style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;J&lt;/span&gt;&lt;/span&gt;&lt;font face=&quot;Times New Roman&quot;&gt; если есть желание прогонять все тесты постоянно, нужно хотя бы менять их порядок в соответствии с текущими приоритетами.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Итак, обо всем по порядку.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;При планировании авто-тестов мы в первую очередь можем сделать простую выборку того, что нужно проверить &amp;ndash; просто &amp;laquo;кучу&amp;raquo; тестов. Этого уже должно быть достаточно для того, чтобы начать их реализацию. &lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;В процессе реализации (если мы таки не сделали этого ранее) мы так или иначе группируем тесты по отношению к той или иной функциональности (модулям, окнам и пр.).&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Но далее нам понадобится определиться с тем, в каком порядке эти тесты нужно запускать. Очень удобным будет зафиксировать разные варианты последовательностей запуска тестов. Сделать списки наподобие PlayList в программе winamp.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Приведу пару примеров:&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 39pt; text-indent: 0in; mso-list: l1 level1 lfo1; tab-stops: list 71.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;&amp;bull;&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;Необходимо быстро получить информацию об общей стабильности приложения на простейших действиях с ней. Так сказать, провести автоматизированное дымовое тестирование. И только по получению результатов этого прогона принять решение о целесообразности и глубине дальнейшего тестирования.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 39pt; text-indent: 0in; mso-list: l1 level1 lfo1; tab-stops: list 71.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;&amp;bull;&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;Тестируемая программа состоит из нескольких модулей. Один из которых подвергается длительной и серьезной реконструкции. Тестировать его не имеет смысла, в то время как тестирование других модулей необходимо в полной или ограниченной мере.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Накопленный опыт позволяет предложить следующий вариант &lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/span&gt;группировки тестов.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 1in; text-indent: -0.5in; mso-list: l0 level1 lfo2; tab-stops: list 71.4pt&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;font size=&quot;3&quot;&gt;&amp;bull;&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;Smoke&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;Группа тестов для быстрого прогона-диагностики общей работоспособности системы. Чаще всего такая группа включает в себя тесты на доступность необходимых опций. Проще говоря, чтобы все основные окошки открывались, а кнопочки нажимались без страшных ошибок.&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 1in; text-indent: -0.5in; mso-list: l0 level1 lfo2; tab-stops: list 71.4pt&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;font size=&quot;3&quot;&gt;&amp;bull;&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;Functional &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;Это&lt;span style=&quot;mso-ansi-language: EN-US&quot;&gt; &lt;/span&gt;основная&lt;span style=&quot;mso-ansi-language: EN-US&quot;&gt; &lt;/span&gt;группа&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;. &lt;/span&gt;Группа&lt;span style=&quot;mso-ansi-language: EN-US&quot;&gt; &lt;/span&gt;функциональных&lt;span style=&quot;mso-ansi-language: EN-US&quot;&gt; &lt;/span&gt;тестов&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;. &lt;/span&gt;Тесты в этой группе проверяют правильность выполнения операций при запланированном поведении пользователя.&lt;br /&gt;Группа это большая и рекомендуется разбивать её на подгруппы в соответствии с тестируемыми модулями системы.&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 107.4pt; text-indent: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 107.4pt&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-ansi-language: EN-US&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;o&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Module 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 107.4pt; text-indent: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 107.4pt&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-ansi-language: EN-US&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;o&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Module 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 107.4pt; text-indent: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 107.4pt&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-ansi-language: EN-US&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;o&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&amp;hellip;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 1in; text-indent: -0.5in; mso-list: l0 level1 lfo2; tab-stops: list 71.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;&amp;bull;&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;Functional&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;board&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;and&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;out&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;of&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;board&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;/b&gt;Это аналог предыдущей группы, но в условиях некорректного поведения пользователя. Например, попытками сохранить недопустимые значения или выполнить недопустимую операцию и т.п.&lt;br /&gt;Иногда эти тесты могут проводиться совместно с описанными выше функциональными тестами.&lt;br /&gt;Группа это также большая и рекомендуется разбивать её на подгруппы в соответствии с тестируемыми модулями системы.&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 107.4pt; text-indent: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 107.4pt&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-ansi-language: EN-US&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;o&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Module 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 107.4pt; text-indent: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 107.4pt&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-ansi-language: EN-US&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;o&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Module 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 107.4pt; text-indent: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 107.4pt&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-ansi-language: EN-US&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;o&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&amp;hellip;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 1in; text-indent: -0.5in; mso-list: l0 level1 lfo2; tab-stops: list 71.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;&amp;bull;&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;#39;Times New Roman&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;Load&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;and&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;Performance&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;Тесты проверяющие поведение системы под нагрузкой. Выделение их в отдельную группу самое обоснованное и логичное.&lt;br /&gt;Возможны даже ситуации, когда функциональные тесты проводятся на одной машине (конфигурации машин), а тесты с нагрузкой на специально выделенном компьютере.&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;</description>
  <comments>http://iramind.livejournal.com/1669.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://iramind.livejournal.com/1300.html</guid>
  <pubDate>Thu, 14 May 2009 02:48:16 GMT</pubDate>
  <title>Требования к автоматизированным функциональным тестам</title>
  <link>http://iramind.livejournal.com/1300.html</link>
  <description>&lt;br /&gt;&lt;h3 style=&quot;margin: 12pt 0in 3pt&quot;&gt;Атомарность проверяемых действий&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;Правило: Один тест должен проверять одно действие&lt;/b&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;И соответствие теста проверяемому действию должно быть однозначным. Иными словами, и тот, кто пишет тест, и тот, кто его использует должны четко представлять себе, что именно проверяется этим тестом. Идеальным (и скорее всего необходимым) будет условие, чтобы для каждого теста существовал такой вопрос, на который этот тест всегда мог дать ответ &amp;laquo;Да&amp;raquo; или &amp;laquo;Нет&amp;raquo;.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Приведу анти пример: Пусть некоторый тест включает в себя проверку&lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/span&gt;действий:&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 71.4pt; text-indent: -0.25in; text-align: justify; mso-list: l1 level1 lfo1; tab-stops: list 71.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;1.&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;нажать кнопку, чтобы открыть форму создания объекта, &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 71.4pt; text-indent: -0.25in; text-align: justify; mso-list: l1 level1 lfo1; tab-stops: list 71.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;2.&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;заполнить её, &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 71.4pt; text-indent: -0.25in; text-align: justify; mso-list: l1 level1 lfo1; tab-stops: list 71.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;3.&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;нажать кнопку сохранить, &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 71.4pt; text-indent: -0.25in; text-align: justify; mso-list: l1 level1 lfo1; tab-stops: list 71.4pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;4.&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;проверить, что новый объект отображается в нужном списке.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 0.5in; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Тест может быть не пройден во многих случаях. Как то &amp;ndash; не открылась форма, кнопка Сохранить исчезла с пользовательского интерфейса, объект не появился в нужном списке и т.п. Значит, потребуется повторно выполнить этот тест вручную, чтобы получить описание необходимое ошибки.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 0.5in; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Здесь хочу заметить, что проверки могут осуществляться разными способами и в некоторых системах автоматизации тестом может называться совокупность нескольких проверок. Естественно в этом случае нужно правильно соотносить термины и понимать, что &lt;u&gt;цель любого теста &amp;ndash; это четкое описание ошибки, настолько детальное, насколько необходимо для её исправления.&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;h3 style=&quot;margin: 12pt 0in 3pt&quot;&gt;Независимость тестов&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Правило: Тест должен быть независим в некотором контексте.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Независимость тестов, работающих в одном контексте, друг от друга подразумевает под собой независимость возможности их воспроизведения от порядка воспроизведения.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Приведу пример. Предположим нам необходимо написать тесты для приложения, состоящего из двух логических частей (например, работа со списком объектов и работа внутри одного объекта). Все тесты у нас непременно разделятся как минимум на две группы: тесты для списка объектов и тесты для одного объекта. Назовём эти группы контекстами. Так работая в одном контексте (например, со списком объектов) мы должны составить несколько тестов, которые должны иметь возможность запускаться не зависимо от того, какой тест был запущен ранее. &lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Для этого &lt;u&gt;полезным будет выбрать некоторое состояние контекста, с которого начинает работу каждый тест и которым он заканчивает&lt;/u&gt;.&lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/span&gt;В нашем примере это может быть: &amp;laquo; форма, отображающая список запущена; список отсортирован в некотором порядке (если это необходимо), никаких других активных окон нет&amp;raquo;.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Для чего это нужно? В первую очередь для сохранения стабильности тестов в случае ошибок в тестируемом приложении.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Например, есть три теста &amp;ndash; Первый, Второй, Третий. И случается так, что тестируемая система страшно падает на Втором (без возможности простого восстановления). Исправление этой ошибки длительно и не входит в следующую сборку, которую необходимо проверить этими же тестами. Если тесты независимы, то можно отключить Второй тест и работать без него. В противном случае нам придется отключить Второй тест и все тесты, следующие за ним.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Другой пример, снова есть много тестов &amp;ndash; Первый, Второй, &amp;hellip;. Пятый, &amp;hellip; Все они работают корректно (ошибки тестируемой системы на одном из них не влияют на последующие тесты), но их выполнение занимает слишком много времени. Необходимо составить другой набор тестов, проверяющий только базовые действия. В случае независимости тестов &amp;ndash; это не сложно. Иначе &amp;ndash; скорее всего, это потребует модификации тестов.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;h3 style=&quot;margin: 12pt 0in 3pt&quot;&gt;Стабильность тестов&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Правило: Тесты должны быть стабильнее тестируемого приложения.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Это означает две вещи: &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;во-первых, тест не должен падать там, где не падает тестируемое приложение (в том числе не должен врать),&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;во-вторых, тест не должен падать там, где падает тестируемое приложение (т.е. корректно реагировать на возникающие незапланированные события)&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;h3 style=&quot;margin: 12pt 0in 3pt&quot;&gt;Модифицируемость тестов&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Правило: Изменение тестов после изменения тестируемого приложения должно занимать как можно меньше времени и усилий.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Это требование стоит учитывать и при разбиении действий в тесты и при их реализации.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Приведу примеры&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 53.25pt; text-indent: -0.25in; text-align: justify; mso-list: l0 level1 lfo2; tab-stops: list 53.25pt&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font size=&quot;3&quot;&gt;1)&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;В тестируемой системе изменился набор данных. А тесты проверяли какой-нибудь поиск по некоторому значению. Если это некоторое значение вынесено в специальный файл (или любое другое легко доступное хранилище), затраты на модификацию теста будут минимальны.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt 53.25pt; text-indent: -0.25in; mso-list: l0 level1 lfo2; tab-stops: list 53.25pt&quot;&gt;&lt;span style=&quot;mso-list: Ignore&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;font size=&quot;3&quot;&gt;2)&lt;/font&gt;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Предположим, в тестируемой системе несколько модулей имеют одинаковый интерфейс поиска элементов. Авто-тесты могли быть реализованы для каждого модуля отдельно, или при помощи одного специального шаблона.&lt;br /&gt;Предположим, в некоторый момент (уже после создания тестов) этот интерфейс кардинально меняется.&lt;br /&gt;Скорее всего один шаблон поменять будет проще, чем тест для каждого модуля.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;h3 style=&quot;margin: 12pt 0in 3pt&quot;&gt;Мобильность тестов&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Правило: Зависимость тестов от условий окружения должна быть минимально возможной.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Это в первую очередь означает возможность переноса тестов с одного компьютера на другой, с реальной машины на виртуальную и наоборот.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Причины переноса могут быть разные, и все, пожалуй, не учтешь. Но пример привести можно.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Во-первых написание авто-тестов может быть делом длительным, и делать его лучше на своём рабочем месте.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Во-вторых, запускать тесты (имею в виду, рабочий запуск, а не в запуск в целях отладки тестов) лучше на выделенной машине. Запуск их на рабочей машине тестера либо затормозит работу тестера, либо вовсе остановит её.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Кроме того стоит быть готовыми и к разного рода форс-мажорам, как то поломка тестового компьютера, появление новой мощной замены ему и т.п.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;span class=&quot;3&quot;&gt;&lt;span style=&quot;font-size: 13pt&quot;&gt;&lt;strong&gt;Результаты тестов&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;Правило: Результаты тестов должны быть информативны и удобны.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Результат &amp;ndash; это цель теста, итог его работы. Тест запускается для того, чтобы получить результат. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Times New Roman&quot;&gt;&lt;span style=&quot;mso-tab-count: 1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Необходимо стремиться к тому, чтобы результат теста включал полную информацию о том, как прошла проверка. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Если проверка была успешной, это должно быть отражено в результате теста. &lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Если проверка выявила ошибку, необходимо дать как можно более детальное её описание (конечно, без фанатизма). Например, если ошибка в том, что некоторая операция просто не выполняется, стоит просто об этом и написать. А если при выполнении некоторой операции появляется сообщение об ошибке, необходимо не только описать операцию, но и сохранить текст (картинку) ошибки. И в любом случае полезным будет запомнить точное время ошибки. Оно может понадобиться при анализе, например, системных логов.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Ещё одно требование к описанию результатов тестов &amp;ndash; это удобство. Нужно свести к минимуму вероятность того, что при прочтении списка сообщений об успешных проверках, сообщение об ошибке останется не замеченным.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-indent: 35.4pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;table class=&quot;MsoTableGrid&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes&quot;&gt;&lt;td valign=&quot;top&quot; width=&quot;638&quot;&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;Заметка&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Arial Black&amp;quot;&quot;&gt;!&lt;/span&gt;&lt;/b&gt;&lt;font face=&quot;Times New Roman&quot;&gt; &lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;Работа с готовыми тестами должна быть как можно проще.&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 1; mso-yfti-lastrow: yes&quot;&gt;&lt;td valign=&quot;top&quot; width=&quot;638&quot;&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;Дело не только в том, что в период проведения тестирования времени на осмысливание самих авто-тестов должно уходить по минимуму, но и в том, что тестер, который использует готовые авто-тесты, не всегда является тем человеком, который их написал.&lt;/font&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; text-align: justify&quot;&gt;&lt;font face=&quot;Times New Roman&quot; size=&quot;3&quot;&gt;К простоте должны стремиться и описание результатов(лог), и способ запуска тестов, и возможности модификации тестов.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
  <comments>http://iramind.livejournal.com/1300.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://iramind.livejournal.com/1213.html</guid>
  <pubDate>Fri, 27 Mar 2009 03:01:45 GMT</pubDate>
  <title>Почему так трудно долго работать над одним проектом?</title>
  <link>http://iramind.livejournal.com/1213.html</link>
  <description>&lt;p&gt;Я часто сталкиваюсь с ситуацией, когда затянувшаяся работа над одним проектом не просто перестает приносить&amp;nbsp;радость, а даже вносит огромную долю негатива в отношение к работе в целом. Что стоит делать в такой ситуации? Что приводит к ней? Как её предупредить?&lt;/p&gt;&lt;p&gt;Что к ней приводит?&lt;/p&gt;&lt;p&gt;Однообразие! Однообразие! и ещё раз Однообразие!&lt;br /&gt;Человек, наверное, так устроен, что абсолютный покой - это то, к чему он часто стремится, и то, в чем он жить не может. Если выполняя одну задачу, я не буду знать, что за ней следует другая, отличная от текущей, полезная и интересная, работать я буду без особого стремления.&lt;br /&gt;Замечено: после того, как человек теряет направление развития в одном деле (на работе), он находит его в другом (дом, хобби...). В этом случае первое выполняется как необходимая традиция, без лишнего энтузиазма.&lt;br /&gt;Помните сказку &amp;quot;дудочка и кувшинчик&amp;quot;? &amp;quot;Одну ягодку беру, на другую смотрю, третью замечаю, а четвертая&amp;nbsp;мерещится&amp;quot;. Смысл тот же самый. Только ягодки - это задачи, которые перед нами стоят.&lt;/p&gt;&lt;p&gt;Есть и противоположная причина - перегрузка.&lt;br /&gt;Что я имею ввиду? Ситуацию, когда человек долго работает &amp;quot;на пределе&amp;quot; своих возможностей. Это могут быть&amp;nbsp;различные пределы - интеллектуальный, эмоциональный, физический.&lt;br /&gt;&lt;u&gt;Голова:&lt;/u&gt; Если перед человеком постоянно стоят задачи, решение которых ему дается не легко, есть вероятность, что ему&amp;nbsp;рано или поздно придёт в голову светлая мысль послать всё это подальше. Я не призываю не ставить таких&amp;nbsp;задач вообще, они очень нужны. Но между ними обязательно должен быть заполненный перерыв. Причем именно&amp;nbsp;заполненный - пусть это будет задача полегче.&lt;br /&gt;&lt;u&gt;Эмоции:&lt;/u&gt; Если человек долго работает на грани нервного срыва, пользы его работе это не принесет. Я согласна, что&amp;nbsp;периодические &amp;quot;встряски&amp;quot; организму необходимы. Да и для дела спортивная злость полезна. Но держать человека&amp;nbsp;в таком состоянии нельзя. Конечно, можно сказать, что у сотрудников есть отпуска, в них они и обязаны&amp;nbsp;отдыхать и приводить себя, так сказать, в боевую готовность. Но это подход формальный, и даже, если хотите,&amp;nbsp;бюрократический. Задачи на проекте должны планироваться с учетом и этого фактора тоже.&lt;br /&gt;&lt;u&gt;Тело:&lt;/u&gt; Физическая нагрузка в ИТ индустрии не так явна, но тем не менее заметна. Это могут быть рабочие задачи,&amp;nbsp;часто требующие от человека боевой готовности рано утром и поздно вечером, которые не могут не оставить своего следа на работоспособности.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Как предупреждать усталость от проекта?&lt;/p&gt;&lt;p&gt;Во-первых разнообразить деятельность. Причем переключение с одной задачи на другую должно быть полным. Для&amp;nbsp;этого нужно завершать задачу в момент, когда она сделана, а не когда пришел срок выполнять другую. Иначе&amp;nbsp;остается огромная вероятность, что недоделанная часть просто не даст голове покоя.&lt;br /&gt;Во-вторых, делать разумные перерывы между нагрузками.&lt;br /&gt;В-третих, поддерживать положительных эмоциональный климат в коллективе.&lt;/p&gt;&lt;p&gt;Что делать если уже устал?&lt;/p&gt;&lt;p&gt;Сделать перерыв,&lt;br /&gt;Найти позитив,&lt;br /&gt;Поменять задачу (на время выключиться или запланировать ближайшее время, когда можно будет выключиться).&lt;/p&gt;Я стараюсь сама так поступать. Надеюсь, может бытьполезно ещё кому-нибудь.</description>
  <comments>http://iramind.livejournal.com/1213.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://iramind.livejournal.com/969.html</guid>
  <pubDate>Sun, 01 Feb 2009 16:10:32 GMT</pubDate>
  <title>Стоит ли автоматизироват тесты ПО?</title>
  <link>http://iramind.livejournal.com/969.html</link>
  <description>&lt;p&gt;Тем, кто хоть сколько-нибудь серьезно сталкивался &amp;nbsp;с тестироанием ПО, не раз приходилось задавать себе этот вопрос. И ответ на него далеко не всегда однозначен. Почему?&lt;/p&gt;&lt;p&gt;На мой взгляд, это зависит от множества параметров. И уровень подготовки тестировщика тут далеко не первостепенный, хотя ставить его в конец я бы тоже не торопилась. Вероятно, основными будут:&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;Что включают в себя тесты?&lt;/li&gt;&lt;p&gt;(дело в том, что даже этот простой термин, часто понимается по-разному тестером, программистом и руководителем)&lt;br type=&quot;_moz&quot; /&gt;&amp;nbsp;&lt;/p&gt;&lt;/ul&gt;&lt;ul&gt;    &lt;li&gt;Зачем предполагается автоматизировать?&lt;/li&gt;&lt;p&gt;(иногда авто-тесты пытаются рассматривать как замену живого тестера, что мне кажется, просто невежетсвом)&lt;br type=&quot;_moz&quot; /&gt;&amp;nbsp;&lt;/p&gt;&lt;/ul&gt;&lt;ul&gt;    &lt;li&gt;Как представляется сам процесс автоматизации?&lt;br type=&quot;_moz&quot; /&gt;    &amp;nbsp;(время и трудозатраты - сколько их нужно, в какой момент, как это зависит от разработки ... и пр.)&lt;br type=&quot;_moz&quot; /&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br type=&quot;_moz&quot; /&gt;&lt;br /&gt;&lt;br type=&quot;_moz&quot; /&gt;</description>
  <comments>http://iramind.livejournal.com/969.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
