<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4027263932695413933</id><updated>2011-12-01T15:02:40.872+04:00</updated><category term='стратегия'/><category term='QTP'/><category term='MBT'/><category term='БД'/><category term='юз кейс'/><category term='плотность'/><category term='тестирование'/><category term='Управление конфигурациями'/><category term='документация'/><category term='тест план'/><category term='вакансия'/><category term='CDT'/><category term='скрипт'/><category term='автотест'/><category term='цели'/><category term='собеседование'/><category term='работа'/><category term='тесткомплит'/><category term='перевод'/><category term='тестрование'/><category term='дефект'/><category term='фикс'/><category term='клиент'/><category term='тест кейс'/><category term='правила'/><category term='автотесты'/><category term='Спецификация'/><category term='Bach'/><category term='VisualStudio'/><category term='TFS'/><category term='шаблон'/><category term='схема'/><category term='линк'/><category term='модель'/><category term='тестировщик'/><category term='тест'/><category term='статья'/><category term='репорт'/><category term='регламент'/><category term='автоматизация'/><category term='Exploratory Testing'/><category term='приоритет'/><category term='отдел'/><category term='разработчик'/><category term='Bugzilla'/><category term='сервер'/><category term='глоссарий'/><category term='правило'/><category term='TestComplete'/><category term='баг'/><category term='отчет о тестировнии'/><category term='задачи'/><category term='срипт'/><title type='text'>Airguru</title><subtitle type='html'>"Ни надежность, ни функциональность программы не могут быть абсолютными, и ее качество в конечном счете означает разумный баланс между этими двумя характеристиками..." Сем Канер и др.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-1997180059681782051</id><published>2011-11-29T13:51:00.004+04:00</published><updated>2011-11-29T14:05:28.786+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='вакансия'/><category scheme='http://www.blogger.com/atom/ns#' term='работа'/><category scheme='http://www.blogger.com/atom/ns#' term='тестировщик'/><title type='text'>Wanted: QA Lead</title><content type='html'>Коллеги, наша компания (labs.mind.com) все еще (уже как полтора года) стремительно растет и развивается. &lt;br /&gt;&lt;br /&gt;Поэтому, &lt;br /&gt;&lt;br /&gt;Если вам понятно, что написано в этом блоге;&lt;br /&gt;Если вы с этим согласны или считаете, что что-то можно сделать лучше;&lt;br /&gt;Если вы обладаете опытом работы в тестировании и автоматизации сего процесса (обязательно) более 2 лет;&lt;br /&gt;Если вы знаете как минимум 2 скриптовых языка (один из которых JScript) и 1 высокоуровневый;&lt;br /&gt;Если у вас есть опыт проведения нагрузочного тестирования (не только сторонними средствами, но и самописными (+допиливание оных));&lt;br /&gt;Если вы можете подробно рассказать о тестировании на русском и английском языках;&lt;br /&gt;Если вы прочитали более 5 книг по тестированию;&lt;br /&gt;Если вы еще не устали учиться и добывать знания;&lt;br /&gt;Если в голове полно креатива);&lt;br /&gt;&lt;br /&gt;а также:&lt;br /&gt;Если вам нравятся сверхинтересные, сложные проекты (например, imind.com, e.mind.com), работа в высокопрофессиональном коллективе, возможности безграничного обучения;&lt;br /&gt;(sal. from 70kRUR);&lt;br /&gt;&lt;br /&gt;Пишите- будем общаться) ибо &lt;br /&gt;&lt;br /&gt;Открыта вакансия на позицию ведущего тестировщика (впрочем, вакансий открыто несколько).&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/4027263932695413933-1997180059681782051?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/1997180059681782051/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2011/11/wanted-qa-lead.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/1997180059681782051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/1997180059681782051'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2011/11/wanted-qa-lead.html' title='Wanted: QA Lead'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-4975915331660821655</id><published>2010-09-15T17:47:00.003+04:00</published><updated>2010-09-15T17:56:57.779+04:00</updated><title type='text'>Розыск еще одного тестировщика</title><content type='html'>Коллеги, наша компания стремительно растет и развивается. Поэтому, &lt;br /&gt;&lt;br /&gt;Если вам &lt;span style="font-weight:bold;"&gt;понятно&lt;/span&gt;, что написано в этом блоге;&lt;br /&gt;Если вы с этим согласны или считаете, что что-то можно сделать лучше;&lt;br /&gt;Если вы обладаете &lt;span style="font-weight:bold;"&gt;опытом&lt;/span&gt; работы &lt;span style="font-weight:bold;"&gt;в тестировании&lt;/span&gt; и &lt;span style="font-weight:bold;"&gt;автоматизации&lt;/span&gt; сего процесса (обязательно) более 2 лет;&lt;br /&gt;Если вы &lt;span style="font-weight:bold;"&gt;знаете&lt;/span&gt; как минимум 2 скриптовых языка (один из которых JScript) и 1 высокоуровневый;&lt;br /&gt;Если у вас есть &lt;span style="font-weight:bold;"&gt;опыт &lt;/span&gt;проведения &lt;span style="font-weight:bold;"&gt;нагрузочного тестирования&lt;/span&gt; (не только сторонними средствами, но и самописными (+допиливание оных));&lt;br /&gt;Если вы можете подробно рассказать о тестировании на русском и английском языках;&lt;br /&gt;Если вы прочитали более&lt;span style="font-weight:bold;"&gt; 5&lt;/span&gt; книг по тестированию;&lt;br /&gt;Если вы еще &lt;span style="font-weight:bold;"&gt;не устали учиться&lt;/span&gt; и добывать знания;&lt;br /&gt;Если в голове полно &lt;span style="font-weight:bold;"&gt;креатива&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;а также:&lt;br /&gt;Если вам нравятся сверхинтересные, сложные проекты, работа в высокопрофессиональном коллективе, и офис гугла);&lt;br /&gt;(sal. from 70kRUR)&lt;br /&gt;&lt;br /&gt;Пишите- будем общаться) ибо &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/4027263932695413933-4975915331660821655?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/4975915331660821655/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/09/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4975915331660821655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4975915331660821655'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/09/blog-post.html' title='Розыск еще одного тестировщика'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-8855070549526944407</id><published>2010-05-28T16:39:00.002+04:00</published><updated>2010-05-28T16:42:14.825+04:00</updated><title type='text'>система управления требованиями</title><content type='html'>Тем, кто в поисках такой системы предлагаю списочек:&lt;br /&gt;&lt;br /&gt;Requirements Management Software&lt;br /&gt;&lt;br /&gt;Accompa &lt;br /&gt; Accept 360&lt;br /&gt;Active!Focus&lt;br /&gt;AnalystPro&lt;br /&gt;Caliber-RM  &lt;br /&gt;Clariys&lt;br /&gt;CORE &lt;br /&gt;Cradle&lt;br /&gt;DOORS &amp; DOORSrequireIT  &lt;br /&gt;Enterprise Architect&lt;br /&gt;GatherSpace  &lt;br /&gt;GMARC&lt;br /&gt;IRqA  &lt;br /&gt;Jama Contour&lt;br /&gt;Leap SE  &lt;br /&gt;Lighthouse RM&lt;br /&gt;Mac A&amp;D and Win A&amp;D  &lt;br /&gt;MKS Requirements&lt;br /&gt;objectiF  &lt;br /&gt;Open Source RM&lt;br /&gt;Optimal Trace &lt;br /&gt;PACE&lt;br /&gt;PixRef Pro &lt;br /&gt;Polarion Reqs&lt;br /&gt;Projectricity &lt;br /&gt;Rally&lt;br /&gt;RaQuest  &lt;br /&gt;Reconcile&lt;br /&gt;Reqtify  &lt;br /&gt;Requirement Tracing System&lt;br /&gt;Requisite Pro  &lt;br /&gt;RMTrak&lt;br /&gt;RTM Workshop  &lt;br /&gt;SoftREQ&lt;br /&gt;SpiraTest  &lt;br /&gt;Teamcenter&lt;br /&gt;TestTrackRM  &lt;br /&gt;TopTeam Analyst&lt;br /&gt;Tracer (free)  &lt;br /&gt;TRUEreq (free)&lt;br /&gt;XTie-Requirements Tracer&lt;br /&gt;&lt;br /&gt;Взято отсюда:&lt;br /&gt;&lt;br /&gt;http://www.jiludwig.com/Requirements_Management_Tools.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-8855070549526944407?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/8855070549526944407/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/05/blog-post.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/8855070549526944407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/8855070549526944407'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/05/blog-post.html' title='система управления требованиями'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-5585103074229737588</id><published>2010-04-15T15:28:00.003+04:00</published><updated>2010-04-16T15:56:10.001+04:00</updated><title type='text'>Внимание: розыск тестировщика</title><content type='html'>Если вам &lt;span style="font-weight:bold;"&gt;понятно&lt;/span&gt;, что написано в этом блоге;&lt;br /&gt;Если вы с этим согласны или считаете, что что-то можно сделать лучше;&lt;br /&gt;Если вы обладаете &lt;span style="font-weight:bold;"&gt;опытом&lt;/span&gt; работы &lt;span style="font-weight:bold;"&gt;в тестировании&lt;/span&gt; и &lt;span style="font-weight:bold;"&gt;автоматизации&lt;/span&gt; сего процесса (обязательно) более 2 лет;&lt;br /&gt;Если вы &lt;span style="font-weight:bold;"&gt;знаете&lt;/span&gt; как минимум 2 скриптовых языка (один из которых JScript) и 1 высокоуровневый;&lt;br /&gt;Если у вас есть &lt;span style="font-weight:bold;"&gt;опыт &lt;/span&gt;проведения &lt;span style="font-weight:bold;"&gt;нагрузочного тестирования&lt;/span&gt; (не только сторонними средствами, но и самописными (+допиливание оных));&lt;br /&gt;Если вы можете подробно рассказать о тестировании на русском и английском языках;&lt;br /&gt;Если вы прочитали более&lt;span style="font-weight:bold;"&gt; 5&lt;/span&gt; книг по тестированию;&lt;br /&gt;Если вы еще &lt;span style="font-weight:bold;"&gt;не устали учиться&lt;/span&gt; и добывать знания;&lt;br /&gt;Если в голове полно &lt;span style="font-weight:bold;"&gt;креатива&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;а также:&lt;br /&gt;Если вам нравятся сверхинтересные, сложные проекты, работа в высокопрофессиональном коллективе, и офис гугла);&lt;br /&gt;(sal. from 60kRUR)&lt;br /&gt;&lt;br /&gt;Пишите- будем общаться) ибо &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/4027263932695413933-5585103074229737588?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/5585103074229737588/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/04/blog-post.html#comment-form' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/5585103074229737588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/5585103074229737588'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/04/blog-post.html' title='Внимание: розыск тестировщика'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-3086858861614518541</id><published>2010-03-24T22:18:00.001+03:00</published><updated>2010-03-24T22:25:52.317+03:00</updated><title type='text'>идеальный тест?</title><content type='html'>оцениваем:&lt;br /&gt;&lt;br /&gt;http://www.computerpowertest.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-3086858861614518541?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/3086858861614518541/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/03/blog-post_24.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/3086858861614518541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/3086858861614518541'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/03/blog-post_24.html' title='идеальный тест?'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-3885303377535150644</id><published>2010-03-12T14:28:00.002+03:00</published><updated>2010-03-12T14:32:13.524+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='тестирование'/><category scheme='http://www.blogger.com/atom/ns#' term='автоматизация'/><title type='text'>440 Web Test Tools</title><content type='html'>Очень внушительная подборка инструментов (440 штук!) для автоматизированного тестирования.&lt;br /&gt;&lt;br /&gt;зы: Не все краткие описания совпадают с действительностью.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://www.softwareqatest.com/qatweb1.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-3885303377535150644?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/3885303377535150644/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/03/440-web-test-tools.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/3885303377535150644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/3885303377535150644'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/03/440-web-test-tools.html' title='440 Web Test Tools'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-1642657766076927209</id><published>2010-03-12T13:41:00.002+03:00</published><updated>2010-03-12T13:47:16.933+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='собеседование'/><title type='text'>Опять про собеседования</title><content type='html'>Очень понравилась статья Владимира Антонова "Собеседование специалистов или интервью как игра". Читая, вспоминал, как сам набирался опыта в этом плане..Особенно интересно, когда побывал на нескольких описанных позициях, например, на трех или больше.&lt;br /&gt;&lt;br /&gt;К предыдущему моему посту очень кстати)&lt;br /&gt;&lt;br /&gt;Взято отсюда:&lt;br /&gt;http://www.protesting.ru/qa/interview_game.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-1642657766076927209?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/1642657766076927209/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/03/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/1642657766076927209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/1642657766076927209'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/03/blog-post.html' title='Опять про собеседования'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-2849030130729081235</id><published>2010-02-27T11:28:00.007+03:00</published><updated>2010-03-12T11:36:37.111+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='тестирование'/><category scheme='http://www.blogger.com/atom/ns#' term='собеседование'/><category scheme='http://www.blogger.com/atom/ns#' term='тестировщик'/><title type='text'>как собеседовать кандидата на вакансию тестировщика?</title><content type='html'>"оЧень осторожно" &lt;a href="http://habrahabr.ru/blogs/hr/85427/"&gt;примеры&lt;/a&gt;:)&lt;br /&gt;главное-  выявить нужного\подходящего из всего потока и сделать ему предложение, от которого он не откажется. &lt;br /&gt;&lt;br /&gt;вот и задача сформулировалась.&lt;br /&gt;&lt;br /&gt;теперь- к  условиям.&lt;br /&gt;&lt;br /&gt; необходимые:&lt;br /&gt;1. кандидат должен быть способен выполнять его обязанности.&lt;br /&gt;2. выполнять пункт 1 за плату, которая укладывается в рамки бюджета на позицию\отдел.&lt;br /&gt;3. выполнять пункт 1 за время, которое укладывается в отведенные для этого сроки.&lt;br /&gt;&lt;br /&gt; дополнительные:&lt;br /&gt;здесь рассмотрим 2 варианта, обусловленных культурой процесса разработки в компании (отмечу, что оба приведенных варианта являются экономически оправданными на текущий момент, в условиях нашей действительности): &lt;br /&gt;&lt;br /&gt;А- компания заинтересована в профессиональном росте своих сотрудников. Компания не заинтересована в "утечке мозгов", в текучке.&lt;br /&gt;Б- компания выбрала путь содержания "конвейера", когда существует некий постоянно обновляемый коллектив низкопрофессиональных сотрудников.&lt;br /&gt;(пункты НЕ сортированы по значимости или как-то еще)&lt;br /&gt;&lt;br /&gt;для типа А:&lt;br /&gt;&lt;br /&gt;1. обучаемость и желание учиться;&lt;br /&gt;2. способность находить стандартные и нестандартные решения вопросов в заданных рамках (временных, информационных, компетенции, лояльности);&lt;br /&gt;3. умение применять полученные знания;&lt;br /&gt;4. умение работать как в команде, так и самостоятельно;&lt;br /&gt;5. инициативность;&lt;br /&gt;6. понимание процессов (смысла, целей и методов) тестирования и разработки вцелом.&lt;br /&gt;&lt;br /&gt;для типа Б:&lt;br /&gt;&lt;br /&gt;1. способность четко выполнять поставленные задачи и соответствовать правилам и шаблонам;&lt;br /&gt;2. внимательность;&lt;br /&gt;3. исполнительность;&lt;br /&gt;4. понимание процесса (смысла, целей и методов) тестирования;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Итак, сформулированы условия, удовлетворение которым нам и потребуется проверить.&lt;br /&gt;&lt;br /&gt;В принципе, не так уж и важно, как именно будут производиться эти проверки. Хоть на &lt;a href="http://seljava.blogspot.com/2010/02/blog-post_8314.html"&gt;омлетах&lt;/a&gt; с &lt;a href="http://bugtrack-online.blogspot.com/2010/02/blog-post_15.html"&gt;кружками&lt;/a&gt;, &lt;a href="http://www.it4business.ru/forum/topic13738.html"&gt;чашками&lt;/a&gt;, &lt;a href="http://it4business.ru/forum/topic16551.html?mode=threaded&amp;pid=73619"&gt;прочим&lt;/a&gt; и &lt;a href="http://bugtrack-online.blogspot.com/2010/02/blog-post_16.html"&gt;шнурками&lt;/a&gt; (это все ссылки), хоть на реальных приложениях на принесенном ноуте и т.п. Важно, чтобы все они были проверены. Важно не путать одну проверку с другой и не делать поспешных ошибочных выводов. Если кандидат успешно справился с приложением на ноуте- преждевременно делать вывод, что он также справится с тестированием сложной незнакомой программы, в условиях ограниченного времени, ограниченных знаний (о продукте, о принятых правилах описания дефекта, о принятом глоссарии, например). Будь он трижды распрекрасным тестировщиком стандартных прог, мне не нужно, чтобы он тупил в ситуации, когда не ясно что вообще делать, а принимал какие-то (очень желательно- верные) действия, искал, узнавал, спрашивал и т.д. Мы калькуляторы не пишем, как и большинство других компаний. Стандартный тест даст (максимум) стандартные результаты (действия).  Вам часто приходится тестировать стандартные вещи? Тест поля ввода даст понять, что кандидат умеет тестировать поля ввода. Не более. Как узнать может ли он придумывать и создавать сложные комбинации действий при тестировании? Как узнать может ли он делать выводы на основе полученной информации о том, где найденный баг может проявиться еще? Или какими действиями "дополнить" некий трабл до полного "crash"? Или что откинуть из действий, чтобы выявить саму суть бага? &lt;br /&gt;А теперь думаем, какие вопросы надо задать, чтобы выявить эти умения и навыки. Без наводящих.&lt;br /&gt;&lt;br /&gt;Теперь по пунктам.&lt;br /&gt;Необходимые:&lt;br /&gt;1. сначала (до собеседования) составляем &lt;a href="http://psyfactor.org/personal/personal15-08.htm"&gt;проффесиограмму&lt;/a&gt; (ссыль). А затем думаем, какие вопросы нужно задать, чтобы узнать, в состоянии ли кандидат выполнять круг его прямых обязанностей.&lt;br /&gt;2. есть лимиты на позицию (хотя бы в головах). оцениваем кандидата, "торгуемся", смотрим на получившуюся цифру и сравниваем ее с лимитами. Если лимитов нет- можно загуглить. Проблема в том, что почти все кандидаты завышают свой уровень (&lt;a href="http://www.slideshare.net/Cartmendum/traininglabs09-part-4-of-4"&gt;"персики и лимоны"&lt;/a&gt; у Дорофеева (ссыль)). Вопрос 1- на сколько. Вопрос 2- на сколько завышенный уровень мы можем себе позволить.&lt;br /&gt;3. прямые вопросы (сколько времени занимало то или иное ("простое и сложное") действие на прошлом месте работы), косвенные (попросить выполнить какую-то активность (составить набор тестов (юз кейсов), протестировать, решить задачу и т.д.).&lt;br /&gt;&lt;br /&gt;дополнительные:&lt;br /&gt;&lt;br /&gt;для типа А:&lt;br /&gt;1. поставить задачу, сказать как искать решение.&lt;br /&gt;2. поставить задачу, НЕ сказать как искать решение.&lt;br /&gt;3. применить пункт 1 на практике.&lt;br /&gt;4. прямые и косвенные вопросы (как было, как хотелось, что нравилось, что- нет).&lt;br /&gt;5. сколько и каких вопросов задал в пункте 2?&lt;br /&gt;6. :)&lt;br /&gt;&lt;br /&gt;для типа Б:&lt;br /&gt;1. поставить задачу, посмотреть на результат выполнения. &lt;br /&gt;2. добавить в пункт 1 хитрое условие.&lt;br /&gt;3. опыт прошлого.&lt;br /&gt;4. :)&lt;br /&gt;&lt;br /&gt;Очень думаю, что перечислил далеко не все. Со временем дополню. &lt;br /&gt;&lt;br /&gt;Не забываем вести беседу так, чтобы кандидат в ужасе не убегал с собеседования, перекрещиваясь пяткой (относится к части о предложении).:&lt;br /&gt; А предлагать надо только то, что сможешь выполнить. Никогда не нужно обещать того, чего не сможешь выполнить (&lt;a href="http://motivateme.ru/book/"&gt;"не мешайте мне работать" Стас Давыдов&lt;/a&gt; (ссыль)). Тем более возможно твоему будущему сотруднику.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://xage.ru/upload/marks/0808/questions/2765642306_fb64f6c3d7_o.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 450px; height: 308px;" src="http://xage.ru/upload/marks/0808/questions/2765642306_fb64f6c3d7_o.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-2849030130729081235?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/2849030130729081235/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/02/blog-post_27.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/2849030130729081235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/2849030130729081235'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/02/blog-post_27.html' title='как собеседовать кандидата на вакансию тестировщика?'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-21054135084680174</id><published>2010-02-11T11:22:00.008+03:00</published><updated>2010-02-11T12:50:05.823+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Спецификация'/><category scheme='http://www.blogger.com/atom/ns#' term='шаблон'/><title type='text'>Спецификация на ПО (шаблон)</title><content type='html'>Для тех, кто еще не знает, зачем пишутся спецификации- http://russian.joelonsoftware.com/PainlessSpecs/1.html  &lt;br /&gt;&lt;br /&gt;Для тех кому лень- вкратце это выглядит так:&lt;br /&gt;&lt;br /&gt;Наиболее важная функция спецификации – проектирование программы (design the program). Даже если вы работаете один, и пишете спецификацию исключительно для себя, процесс ее написания – описание того, как работает программа до мельчайших подробностей – заставит вас непосредственно проектировать программу.&lt;br /&gt;&lt;br /&gt;Спецификации сокращают информационные потоки. Когда вы пишете спецификацию, вы должны только один раз выяснить, как программа работает. Каждый член команды может потом просто почитать спецификацию и выяснить интересующие его моменты.&lt;br /&gt;&lt;br /&gt;Без детальной спецификации невозможно составить план. Отсутствие плана не проблема, если вы пишете кандидатскую диссертацию и рассчитываете за ближайшие 14 лет ее закончить, или если вы программист, работающий над следующей версией игры Duke Nukem (мы выпустим ее, когда все будет готово и сделано на высшем уровне). Но почти в любой отрасли реального бизнеса вы просто обязаны знать, как долго все будет продолжаться, потому что разработка продукта стоит денег. Вы даже джинсы себе не купите, не узнав, сколько они стоят, так как же ответственный бизнесмен может принять решение, создавать или не создавать продукт, без информации о том, сколько это займет времени, и, следовательно, сколько это будет стоить?&lt;br /&gt;&lt;br /&gt;Написание спецификации – прекрасный способ точно выразить все раздражающие вопросы разработки, большие и маленькие, которые захлестнут вас, если у вас нет спецификации.&lt;br /&gt;&lt;br /&gt;Спецификации – это мать всего!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Теперь непосредственно о форме и содержании:&lt;br /&gt;(за основу взят шаблон "A Software Design Specification Template" by Brad Appleton. найти можно здесь: http://www.cmcrossroads.com/bradapp/docs/sdd.html)&lt;br /&gt;&lt;br /&gt;Введение:&lt;br /&gt;Завершенная спецификация на ПО должна отвечать следующим критериям:&lt;br /&gt;Она должна быть в состоянии адекватно служить в качестве учебного материала для новых участников проекта, давая им достаточно информации и понимания о ходе реализации проекта, с тем чтобы они могли понимать, что говорится о дизайне на собраниях и не почувствовать себя так, как будто они "тонут", когда им впервые предложат создать или изменить исходный код.&lt;br /&gt;Она должна служить "объективным доказательством" того, что дизайнеры и/или программисты выполняют свои обязательства по реализации функций, описанных в спецификации требований.&lt;br /&gt;Она должна быть как можно более подробной, но в то же время не быть слишком обременительной для дизайнеров и/или разработчиков, то есть не становится слишком трудной для создания и поддержки.&lt;br /&gt;&lt;br /&gt;Схема шаблона:&lt;br /&gt;&lt;br /&gt;Введение;&lt;br /&gt;Обзор системы;&lt;br /&gt;Вопросы проектирования:&lt;br /&gt;-Предположения и зависимости;&lt;br /&gt;-Основные ограничения;&lt;br /&gt;-Цели и руководства;&lt;br /&gt;-Методы разработки;&lt;br /&gt;Архитектурные стратегии:&lt;br /&gt;Стратегия-1 название или описание;&lt;br /&gt;Стратегия-2 Название или описание;&lt;br /&gt;...&lt;br /&gt;Архитектура системы:&lt;br /&gt;Компонент-1 Название или описание;&lt;br /&gt;Компонент-2 Название или описание;&lt;br /&gt;...&lt;br /&gt;Политики и правила:&lt;br /&gt;policy/tactic-1 название или описание;&lt;br /&gt;policy/tactic-2 название или описание;&lt;br /&gt;...&lt;br /&gt;Детальное описание системы:&lt;br /&gt;Модуль-1 Название или описание;&lt;br /&gt;Модуль-2 Название или описание;&lt;br /&gt;...&lt;br /&gt;Глоссарий;&lt;br /&gt;Библиография.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Порядок разделов этого документа соответствует порядку, в котором должны рассматриваются вопросы проектирования, и в котором принимаются решения  в ходе самого процесса проектирования. Конечно, понятно, что проектирование программного обеспечения часто (а зачастую и к счастью) не всегда происходит в таком порядке (или в любом линейном или даже просто в предсказуемом порядке). Однако полезно для понимания структуры системы, представить их, как если бы они были сделаны так.&lt;br /&gt;&lt;br /&gt;Рекомендуется сохранять все обсуждения принятия тех или иных решений (в том числе истории переписки, логи и т.д., так как они являются единственным достоверным источником информации о принятых решениях).&lt;br /&gt;&lt;br /&gt;Далее по разделам:&lt;br /&gt;&lt;br /&gt;Введение:&lt;br /&gt;&lt;br /&gt;Предоставление обзора всего документа:&lt;br /&gt;-описание назначения дока;&lt;br /&gt;-границы\область действия;&lt;br /&gt;-целевая аудитория;&lt;br /&gt;-определение системы, используя подходящие имена, версии и т.д.;&lt;br /&gt;-ссылки на другие используемые документы;&lt;br /&gt;-взаимосвязанные документы;&lt;br /&gt;-предпосылки;&lt;br /&gt;-документы, описывающие фреймворк;&lt;br /&gt;-документы, которые будут писаться на основе этого документа;&lt;br /&gt;-определение важных понятий, сокращений, аббревиатур;&lt;br /&gt;-краткое содержание.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Обзор системы:&lt;br /&gt;&lt;br /&gt;Дать общее описание системы, включая ее функциональность и вопросы, связанные с системой в целом и ее структурой (возможно, в том числе обсуждение основных подходов к проектированию и организации). Вы можете разделить это описание на подразделы и тд.&lt;br /&gt;&lt;br /&gt;Вопросы проектирования:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;В этом разделе описываются многие из вопросов, которые должны быть заданы или решены, прежде чем пытаться разработать комплексное решение дизайна.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; -предположения и зависимости:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Похожие программное или аппаратное обеспечение;&lt;br /&gt;Операционные системы;&lt;br /&gt;Характеристики конечного пользователя;&lt;br /&gt;Возможные и/или вероятные изменения в функциональности.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; -основные ограничения:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;HW и SW окружение;&lt;br /&gt;окружение конечного пользователя;&lt;br /&gt;наличие ресурсов;&lt;br /&gt;соответствие стандартам;&lt;br /&gt;требования совместимости;&lt;br /&gt;требования интерфейсов и протоколов;&lt;br /&gt;требования БД и транспортов;&lt;br /&gt;требования безопасности;&lt;br /&gt;ограничения памяти и производительность;&lt;br /&gt;быстродействие;&lt;br /&gt;сеть;&lt;br /&gt;требования тестирования, тестопригодность;&lt;br /&gt;другие значения требований качества;&lt;br /&gt;другие требования.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; -Цели и руководства:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;описываются любые цели, правила, руководства, приоритеты, которые влияют на структуру системы. Такие цели могут быть такими:&lt;br /&gt;&lt;br /&gt;(Сохранить это максимально простым и понятным;&lt;br /&gt;(акцент на скорости работы, вместо ограничения выделения памяти;&lt;br /&gt;(работать, выглядеть, ощущать продукт, как готовый;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Для каждой такой цели пишутся причины ее указания тут и причины принятия (если необходимо- в отдельном подразделе).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; -Методы разработки:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Краткое описание методов и подходов для проектирования и разработки системы. Если один или несколько официальных/опубликованных методов были приняты или адаптированы- необходимо включить ссылку на более подробное описание таких методов. Если несколько методов, были серьезно пересмотрены, то каждый из таких методов следует отметить, наряду с кратким объяснением того, почему все или часть его используется или не используется.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Архитектурные стратегии:&lt;br /&gt;&lt;br /&gt;Указываются любые проектировочные решения и стратегии, которые влияют на общую организацию системы и на ее структуру высшего уровня . Эти решения должны дать представление о ключевых вопросах и механизмах, используемых в архитектуре системы. Описываются рассуждения  для каждого решения (возможно, ссылаясь на ранее определенные цели и принципы). Описываются причины принятия тех или иных решений, их изменения или отказ от них. Такие решения могут касаться (но не ограничиваются ими) вещей, вроде следующих:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;использование частных (сторонних) продуктов и инструментов- язык программирования, БД, библиотеки и т.д.;&lt;br /&gt;повторное использование существующих компонентов системы;&lt;br /&gt;планы на расширение и доработки;&lt;br /&gt;используемые образцы интерфейсов (модели ввода\вывода);&lt;br /&gt;примеры взаимодействия HW, SW;&lt;br /&gt;обнаружение ошибок и восстановление после сбоев;&lt;br /&gt;использование памяти;&lt;br /&gt;внешние БД и СУБД;&lt;br /&gt;распределенные данные и контроль над всей сетью распределения;&lt;br /&gt;основные подходы к контролю;&lt;br /&gt;распараллеливание и синхронизация;&lt;br /&gt;механизмы взаимодействия;&lt;br /&gt;управление другими ресурсами.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Каждое значительное решение, вероятно, следует обсуждать в своем собственном подразделе либо (если оно достаточно сложное) в отдельном документе проектирования (с соответствующей ссылкой отсюда, конечно). Убедитесь, что при описании проектного решения вы также обсуждаете любые другие значительные альтернативы,  и ваши причины для отказа от них указаны (а также ваши причины для принятия альтернативных решений, которые  вы окончательно утвердили к принятию)&lt;br /&gt;&lt;br /&gt;Архитектура системы:&lt;br /&gt;&lt;br /&gt;Этот раздел должен предоставить общий (высокоуровневый) обзор того, как весь функционал системы был разделен, а затем назначен в подсистемы или компоненты. Не нужно вдаваться в подробности об  отдельных компонентах (есть раздел для последующего подробного описания всех компонент). Основной целью является получение общего понимания того, каким образом и почему система разбита на отдельные части, и как отдельные части работают вместе, чтобы обеспечить требуемую функциональность.&lt;br /&gt;На самом верхнем уровне описывается  основной функционал. Что программное обеспечение должно выполнять и различные роли, которые система (или некая часть системы) должна играть. Описывается, каким образом эта система была разбита на ее компоненты/подсистемы (с указанием каждого  компонента (подсистемы) верхнего уровня и распределения функций, возложенных на него). Описывается, как на более высоком уровне компоненты взаимодействуют друг с другом в целях достижения необходимых результатов. Не забудьте предоставить  обоснования для выбора данного разбиения системы (возможно обсуждение других предлагаемых разбиений и описания, почему они были отклонены). Не стесняйтесь использовать шаблоны проектирования либо в описании части архитектуры (в формате шаблона ), либо в виде отдельных элементов архитектуры, которые их используют.&lt;br /&gt;Если есть какие-либо схемы, модели, диаграммы, документированные сценарии или юз-кейсы поведения системы и/или структуры, они могут быть включены сюда (если вы не чувствуете, что они достаточно сложны, чтобы НЕ находиться в подробном разделе "Детальное описание системы"). Диаграммы, схемы описывающие конкретный компонент или подсистему должны быть включены в подраздел, описывающий этот компонент или подсистему.&lt;br /&gt;Примечание: Этот раздел (и его подразделы) на самом деле относится только к новым разрабатываемым (или  которые  еще предстоит разработать) частям системы. Если есть части системы, которые уже существуют к началу разработки новых, то вам нужно  описать только те уже существующие части, от которых  новые части системы будут зависеть, и только в достаточной детализации, достаточной для описания взаимосвязей и взаимодействий между старыми и новыми частями. Прежние части, которые были изменены или расширены должны быть описаны лишь в той степени, которая необходима читателю, чтобы получить достаточное понимание характера изменений, которые были сделаны.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Архитектура подсистем:&lt;br /&gt;&lt;br /&gt;Если есть какой-то компонент, который заслуживает более подробного обсуждения, чем это было представлено в разделе "Архитектура системы", предусматривается, что более подробное описание будет  в соответствующем подразделе раздела "Архитектура системы" (или даже может быть в более подходящем для описания компонента в своем собственном документе). Если необходимо, то опишите, как компонент был разделен на подкомпоненты, а также взаимосвязи и взаимодействия между этими подкомпонентами (аналогично тому, что было сделано для верхнего уровня компонентов в разделе "Архитектура системы").&lt;br /&gt;Если какой-либо подкомпонент считается также заслуживающим дальнейшего обсуждения,- опишите его в отдельном подразделе этого раздела (таким же образом). Добавляйте столько уровней/подразделов, сколько необходимо для того, чтобы читателю получить более высокий уровень понимания всей системы или подсистемы (но не забудьте оставить  подробности для раздела "Описание системы").&lt;br /&gt;Если этот компонент является очень большим и/или сложным, вы можете рассмотреть вопрос о документировании его структуры в виде отдельного документа и просто, в том числе, ссылки на него в этом разделе.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Политики и правила:&lt;br /&gt;&lt;br /&gt;Описываются любые политики, правила, тактические решения, которые не несут за собой архитектурных изменений.  Т.е. они не будут существенно влиять на общую организацию системы и ее структуру высшего уровня, но которые тем не менее, влияют на детали интерфейса и/или осуществление различных аспектов системы. Такие решения могут касаться (но не ограничиваются ими) вещей, вроде этих:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;выбор специфических продуктов- компилятор, интерпретатор, БД, библиотеки и т.д;&lt;br /&gt;инженерные компромиссы;&lt;br /&gt;стандарты и правила кодирования;&lt;br /&gt;протоколы подсистем, модулей, процедур;&lt;br /&gt;выбор алгоритмов, паттернов;&lt;br /&gt;планы по обеспечению отслеживаемости реализуемых требований;&lt;br /&gt;планы тестирования;&lt;br /&gt;планы поддержки системы;&lt;br /&gt;нтерфейсы для конечных пользователей, программного обеспечения, оборудования и коммуникации;&lt;br /&gt;иерархическая организация исходников по файлах, директориям, компонентам;&lt;br /&gt;компиляция, сборка и т.д.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Каждое конкретное правило или набор правил должны быть вероятно обсуждены в конкретном разделе или (при случае большого или комплексного набора правил) в отдельном документе (с соответствующей ссылкой из этого документа, конечно). Убедитесь, что пока вы описываете решение по архитектуре, дизайну, вы также не забываете рассматривать и описывать альтернативные варианты и причины для отказа от них.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Детальное описание системы:&lt;br /&gt;&lt;br /&gt;Большинство компонентов, описанных в разделе "Архитектура системы" потребует более детального обсуждения и описания. Другие  компоненты (нижних уровней) и подкомпоненты возможно, необходимо будет также описать . Каждый подраздел этого раздела будет ссылаться или содержать подробное описание программных компонентов системы. В ходе обсуждения должны быть  охвачены следующие атрибуты компонентов программного обеспечения:&lt;br /&gt;&lt;br /&gt;классификация: вид компонента, такого как подсистема, модуль, класс, пакет, функция, файл и т.д.;&lt;br /&gt;определение: специфическое назначение и значение компонента в системе. Может понадобиться ссылка на спецификацию требований;&lt;br /&gt;функции и поведение компонента: Что должен выполнять этот компонент? Какие роли он играет? Какие виды сервисов он предоставляет для клиентов\пользователей? Для некоторых компонентов здесь может быть необходима ссылка на требования;&lt;br /&gt;Ограничения: Любые уместные ограничения, лимиты для этого компонента. Здесь должны быть указаны ограничения по времени, объему данных, состояниям компонента, может включать в себя правила для взаимодействия с этим компонентом (охватывающие предварительные условия, постусловия, инварианты, другие ограничения на входе или выходе, форматы (типы) данных и доступ к данным, синхронизация, исключения и т.д.);&lt;br /&gt;Состав: описание использования и важности субкомпонентов, которые являются частью этого компонента;&lt;br /&gt;Использование\взаимодействие: описание взаимодействия с другими компонентами. Какие другие компоненты используются этим компонентом? какие используют данный компонент (здесь необходимо включить описание влияния на другие части и компоненты, которое может иметь данный компонент). Объектно-ориентированный дизайн должен содержать описание любых известных или предполагаемых подклассов, суперклассов и метаклассов;&lt;br /&gt;Ресурсы: описание всех управляемых, находящихся под влиянием этого компонента, а также необходимых ресурсов. Ресурсы являются внешними элементами при проектировании, например, память, процессоры, принтеры, БД или библиотеки. Здесь должно быть включено обсуждение всех возможных условий и возможных блокирующих проблем, а также пути их решения;&lt;br /&gt;Обработка: описание того, как компоненты действуют, выполняя функционал, который они должны выполнять. Это должно включать в себя описание всех алгоритмов, изменения состояний; соответствующие временные или пространственные сложности; параллельность, методы создания, инициализации, а также очистку; обработку исключений;&lt;br /&gt;Интерфейсы\экспорт: набор сервисов (ресурсы, данные, типы, ограничения, процедуры и исключения), которые предоставляются этим компонентом. Четкое определение и объявление каждого такого элемента должно быть актуальным, с комментариями и аннотациями, описывающими значения величин, параметров и т.д. для каждого сервиса;&lt;br /&gt;&lt;br /&gt;Значительная часть информации, которая появляется в этом разделе не обязательно должна содержаться отдельно от исходного кода. В самом деле, большую часть информации можно почерпнуть из самих исходников (особенно, если они адекватно комментированы). Данный раздел не должен копировать или воспроизводить информацию, которую можно легко получить из чтения исходного кода (было бы нежелательно дублировать усилия, также  будет очень трудно быть в курсе послених изменений). Рекомендуется, чтобы большая часть этой информации  содержалась в исходниках (с соответствующими комментариями по каждому компоненту, подсистеме, модулю, и подпрограмме). Таким образом, ожидается, что этот раздел будет в значительной степени состоять из ссылок (выдержки из аннотированных схем) и исходного кода.&lt;br /&gt;&lt;br /&gt;Глоссарий:&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/4027263932695413933-21054135084680174?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/21054135084680174/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/02/blog-post_11.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/21054135084680174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/21054135084680174'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/02/blog-post_11.html' title='Спецификация на ПО (шаблон)'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-4581125947255063603</id><published>2010-02-10T11:27:00.001+03:00</published><updated>2010-02-10T11:31:12.531+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Управление конфигурациями'/><title type='text'>Управление конфигурациями</title><content type='html'>Все разложили по полочкам авторы   Новичков Александр, Лапыгин Дмитрий:&lt;br /&gt;&lt;br /&gt;http://anovichkov.msk.ru/?p=598&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;А также "Конфигурационное управление&lt;br /&gt;(Software Configuration Management по SWEBOK)":&lt;br /&gt;&lt;br /&gt;http://swebok.sorlik.ru/6_software_configuration_management.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-4581125947255063603?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/4581125947255063603/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/02/blog-post_10.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4581125947255063603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4581125947255063603'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/02/blog-post_10.html' title='Управление конфигурациями'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-6784848468534556924</id><published>2010-02-04T15:11:00.004+03:00</published><updated>2010-02-05T10:25:52.776+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='тестрование'/><category scheme='http://www.blogger.com/atom/ns#' term='перевод'/><category scheme='http://www.blogger.com/atom/ns#' term='статья'/><title type='text'>свободное время тестировщиков</title><content type='html'>свободное время тестировщиков&lt;br /&gt;    &lt;br /&gt;Болтон предлагает использовать его так:&lt;br /&gt;1. неописанные тесты (небольшие);&lt;br /&gt;2. рискованные значения (негативные тесты, граничные условия);&lt;br /&gt;3. сделать ошибку и вернуться на шаг или больше назад.  пользователи совершают ошибки. обработка ошибок и восстановление являются наиболее уязвимой частью программы;&lt;br /&gt;4. посветить время просмотру справочной информации, относящейся к проекту;&lt;br /&gt;5. вести блог, вики (профессиональные);&lt;br /&gt;6. продакшн баги и предложения переводим в тестовые идеи и непосредственно ТС;&lt;br /&gt;7. написание простых программ, которые позволят сэкономить в будущем время, повышение опыта программирования (вот оно- слияние автоматизации и ручного тестирования);&lt;br /&gt;8. помочь коллегам:)&lt;br /&gt;9. осмотреть свое тестовое окружение, определить новые риски, записать новые тестовые идеи, сделать предложения..&lt;br /&gt;10. самообучение -&gt; применение новых знаний к проекту, оформление отчета в виде вики.&lt;br /&gt;&lt;br /&gt;ЗЫ:&lt;br /&gt;Рекс (Rex Black, www.rbcs-us.com) упомянул мой пробный перевод в ньюслеттере:  &lt;br /&gt;" Critical Testing Processes Introduction - in Russian!&lt;br /&gt; &lt;br /&gt;We receive frequent requests from all over the globe to translate our articles, publications and Rex Black's books into other languages.  Most recently Andrey Punin requested that he translate the introduction to Rex Black's acclaimed book, Critical testing Processes, into Russian. &lt;br /&gt; &lt;br /&gt;Andrey works as a test lead in a large software company in Moscow, Russia. His  experience covers test automation, test team planning and management, development of test strategy, test department creation, coaching, and transfer of test activities from one country to another (within one large software company).  He has written several articles on software testing. He also enjoys translating software testing articles from English to Russian.&lt;br /&gt; &lt;br /&gt;To see the translation, visit our Basic Library page."&lt;br /&gt;Скоро закончу перевод очередной статьи.&lt;br /&gt;Также на подходе много новых статей и заметок.&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/4027263932695413933-6784848468534556924?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/6784848468534556924/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2010/02/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/6784848468534556924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/6784848468534556924'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2010/02/blog-post.html' title='свободное время тестировщиков'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-4224804829371381465</id><published>2009-12-03T17:46:00.002+03:00</published><updated>2009-12-03T17:47:53.435+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='тестирование'/><title type='text'>Кто тестировал год назад</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UXbl6mgC86E/SxfPZWxRPRI/AAAAAAAAAcw/Bhc7PDfz2js/s1600-h/stat2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 343px;" src="http://4.bp.blogspot.com/_UXbl6mgC86E/SxfPZWxRPRI/AAAAAAAAAcw/Bhc7PDfz2js/s400/stat2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5411021511824850194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Занятные результаты.&lt;br /&gt;Взято опять с http://habrahabr.ru/blogs/testing/45899/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-4224804829371381465?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/4224804829371381465/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/12/blog-post_03.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4224804829371381465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4224804829371381465'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/12/blog-post_03.html' title='Кто тестировал год назад'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UXbl6mgC86E/SxfPZWxRPRI/AAAAAAAAAcw/Bhc7PDfz2js/s72-c/stat2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-9059879739087596478</id><published>2009-12-03T17:25:00.003+03:00</published><updated>2009-12-03T17:28:27.845+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='тестирование'/><category scheme='http://www.blogger.com/atom/ns#' term='тест кейс'/><title type='text'>Где хранят ручные ТС</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_UXbl6mgC86E/SxfKnVFnIzI/AAAAAAAAAco/mpGWr9aY_qg/s1600-h/stat.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 343px;" src="http://2.bp.blogspot.com/_UXbl6mgC86E/SxfKnVFnIzI/AAAAAAAAAco/mpGWr9aY_qg/s400/stat.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5411016254333330226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Такие вот любопытные результаты.&lt;br /&gt;Взято с хабра: http://habrahabr.ru/tag/test%20management/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-9059879739087596478?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/9059879739087596478/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/12/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/9059879739087596478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/9059879739087596478'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/12/blog-post.html' title='Где хранят ручные ТС'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_UXbl6mgC86E/SxfKnVFnIzI/AAAAAAAAAco/mpGWr9aY_qg/s72-c/stat.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-365708634014350056</id><published>2009-11-16T04:11:00.005+03:00</published><updated>2009-11-16T15:29:04.091+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='перевод'/><category scheme='http://www.blogger.com/atom/ns#' term='статья'/><title type='text'>Переводы статей по тестированию</title><content type='html'>С любезного согласия Рекса Блэка (Rex Black, www.rbcs-us.com) буду публиковать переводы его статей по тестированию. Очень много полезной и важной информации.&lt;br /&gt;&lt;br /&gt;Первая статья, как вступление:&lt;br /&gt;&lt;br /&gt; Критичные процессы в тестировании программного обеспечения (ПО)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Рэкс Блэк: Президент и главный консультант компании&lt;br /&gt;                     RBCS, Inc., Bulverde, TX&lt;br /&gt;Ключевые слова (теги): Тестирование ПО, критичный процесс тестирования,&lt;br /&gt;                                             управление тестированием, проекты разработки ПО,&lt;br /&gt;             проекты сопровождения и поддержки ПО, &lt;br /&gt;             автоматизация тестирования, ручное тестирование.&lt;br /&gt;Аудитория: Руководители тестировщиков, ведущие тестировщики, менеджеры проектов,&lt;br /&gt;                        тестировщики, руководители разработчиков, менеджеры конфигураций.&lt;br /&gt;Перевод с английского: Андрей Пунин (anairguru@gmail.com).&lt;br /&gt;Оригинал: http://www.rbcs-us.com/software-testing-resources/library/basic-library&lt;br /&gt;&lt;br /&gt;Введение&lt;br /&gt;&lt;br /&gt;Как профессионалу в области тестирования с почти двадцатилетним опытом в области компьютерных технологий, мне приятно видеть новую статью, посвященную нашей области, в журнале “Journal of Software Testing Professionals”, и я имею честь внести свой вклад, как редактор. Первой задачей в этой роли мне было предложено написать самому , а также сотрудничать с другими специалистами в области тестирования, чтобы получить цикл статей, отвечающих на вопрос: “Что мы подразумеваем под  критичными процессами в тестировании, которыми профессионалы в этой области должны владеть и управлять, чтобы добиться успеха?”. В каждой из этих статей мы будем подробно рассматривать один такой критичный процесс, предлагать практические советы:  что уже работает и предостерегать от того, что может создать проблемы.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Содержание цикла&lt;br /&gt;&lt;br /&gt;Давайте начнем с определения: что такое этот цикл статей, и чем он не является?,- рассмотрим понятие “критичные процессы тестирования”. Процесс- это набор задач и активностей (действий для решения этих задач), некоторые из которых могут происходить одновременно, а некоторые- последовательно, друг за другом. Задачи и активности связаны желаемыми результатами, но в то же время не обязательно  связаны с   необходимыми техниками и требуемыми знаниями и навыками. Например, процесс автоматизации тестирования включает оценку объема работ, оценку и выбор инструментов и автоматизацию самих тест кейсов (написание скриптов). Одна их предстоящих статей будет посвящена этому процессу. Конкретные активности, посвященные автоматизации, думаю, оставим для других статей в этом журнале.&lt;br /&gt;&lt;br /&gt;Как я уже упоминал выше, критичный процесс-  это процесс, которым вы, как профессионал в области тестирования, должны владеть для достижения успеха. Процесс становится критичным когда:&lt;br /&gt;Вы часто повторяете этот процесс. Определенная, формализованная обработка повторяющихся процессов приводит к  последовательному и эффективному выполнению ваших повседневных обязанностей. Например, процесс записи дефекта в баг трекинговую систему происходит постоянно, во время выполнения тестирования.&lt;br /&gt;В процесс вовлечены коллеги или кто-либо из руководства организации. Успешная работа над хорошо видимым коллегам или руководству процессом, создает репутацию компетентного, надежного сотрудника, которому можно доверить ответственное дело. На примере процесса автоматизации тестирования мы должны предоставить оценку объема работ, которая убедит руководство  потратить тысячи доллларов на инструменты автоматизации тестирования, вместо выделения сотен человеко-часов на эти же объемы работ при ручном тестировании.&lt;br /&gt;Последствия невыполнения процесса неприемлимы. Успешный профессионал в области тестирования является экспертом в управлении рисками качества. Например, для определения потенциальных неудач проекта, кто-то должен анализировать риски качества, которые могут оказывать критическое влияние на реакцию заказчика, и корректировать  надлежащим образом процессы тестирования. &lt;br /&gt;&lt;br /&gt;В заключении, чтобы получить этот цикл практичным и содержательным, я выделю процессы, которые большинство профессионалов, определит как часть их текущей работы. Специализированные темы, разумеется, найдут свое место в журнале, но мы будем сохранять эти темы и статьи в центре общих интересов.&lt;br /&gt;Я также буду использовать этот критерий при определении, какие из критичных процессов относятся к области тестирования ПО и поэтому находятся в рамках содержания этого цикла. Прежде чем дискутировать об определениях “процесса тестирования ПО”, давайте согласимся, что некоторые критичные процессы, которые “противостоят” многим из наших коллег, занятых тестированием, обязаны быть, в некотором смысле, критичными для  процесса тестирования. Тем не менее давайте исключим процессы, общие для всех профессионалов, участвующих в разработке ПО. Под этим определением я буду включать статьи об измерении покрытия кода тестами и об управлении передачей релизов в тестирование, но я буду исключать описание поддержания хороших взаимоотношений с вашим менеджером или равномерного применения корпоративных персональных политик. Хорошая мысль- вероятно критичный процесс для тест менеджера не является критичным процессом для всего процесса тестирования ПО.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Типы и зависимости критичных процессов&lt;br /&gt;&lt;br /&gt;Я классифицирую процессы тестирования ПО как внутренние (в которые вовлечены люди только из команды тестирования) и совместные (в которые вовлечена еще одна или более команд). Я использую слово “совместные” вместо ”внешние” потому, что команды в эффективных компаниях принимают чужую работу, как позитивное “руки прочь”. Они не подбрасывают незавершенные или  некачественные результаты работы через “организационные стены”. Совместные процессы могут заключать в себе принятие результатов работы от другой команды, предоставить результаты своей работы другой команде или и то и другое. Совместные процессы могут  повлечь за собой последовательность  работ, соединяющую множество команд. &lt;br /&gt;&lt;br /&gt;Например (см. Рисунок 1), на котором изображено упрощенное количество процессов (стрелок) и команд (окружностей), вовлеченных в процесс разработки ПО. На этой иллюстрации выполняемые тесты- внутренний процесс, так же как и запись их результатов. Предоставление отчетов об ошибках- совместный процесс, при котором осуществляется доставка данных команде разработки от  команды тестирования посредством выполнения процесса тестирования (выполнения тестов). Предоставление результатов о ходе тестирования (статусе процесса)- совместный процесс, в ходе которого тест менеджер сообщает команде менеджмента о ходе тестирования и оцененное с помощью чартов и метрик, понятных для команды менеджмента,  качество продукта на текущий момент. В конце, выделим многостадийный совместный процесс, предоставления ПО команде тестирования, который я разбил ниже на несколько совместных подпроцессов, показанных круглыми скобками (стрелками) (имеется ввиду нижняя ветвь- Прим. перевод).&lt;br /&gt;Так как организация тестирования представляет собой организацию, где сходится множество результатов и где достигнута независимость оценки качества,  я предполагаю, что совместные процессы наиболее критичны с точки зрения организации.&lt;br /&gt;&lt;br /&gt;Также необходимо отметить, что множества независимых процессов, влияют друг на друга. Например, качество результатов процесса сообщения об ошибках влияет на качество результатов всего процесса тестирования, предоставляемых для менеджмента. Качество таких отчетов, в том смысле, что они добавляют свою погрешность в организации и формируют восприятие тестирования, как хорошего вложения средств, влияет на способность тест менеджера в будущем обосновывать запрошенные для выполнения работ ресурсы. Эти ресурсы-  необходимые условия для работ по  обеспечению качества при  выполнения тестирования, включая отчеты об ошибках. На данном рисунке процесс включает все пять команд и показывает, как результаты тестирования определенного релиза могут влиять на внутреннее содержание последующих релизов. Возникает большое количество таких отчетов-петель, и мы посмотрим, как ими управлять.&lt;br /&gt;&lt;br /&gt;Рисунок 1.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UXbl6mgC86E/SwFFHfSrrqI/AAAAAAAAAcg/Y6aN8PqgboM/s1600/Figure+1.jpeg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_UXbl6mgC86E/SwFFHfSrrqI/AAAAAAAAAcg/Y6aN8PqgboM/s400/Figure+1.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5404677022782566050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Выбор критического процесса&lt;br /&gt;&lt;br /&gt;Разрешите мне предположить несколько критических процессов, в качестве анонса следующих статей, которые будут содержать несколько следущих ежеквартальных изданий журнала.&lt;br /&gt;&lt;br /&gt;Планирование и оценка объемов работ по тестированию. Планирование объема работ- это не то же  самое, что и написание тест кейсов. Тестирование включает много логистических и организационных факторов, о которых тест менеджер должен подумать до того, как тест кейсы будут написаны. Планирование также  включает сбор фактов от многих участников и оценку поддержки коллегами  и руководством вашего плана.  Мы посмотрим на различные процессы и стандарты, которые существуют для планирования тестирования и которые помогут подобрать правильные  для вашей организации.&lt;br /&gt;Риски оценок и риски управления качеством. Тестирование- это прежде всего задача управления рисками, но иногда мы не понимаем  критичных рисков качества, пока не начнем тестировать. В будущей статье мы поговорим о путях выстраивания наших систем тестирования совместно с заказчиками, пользователями, и другими заинтересованными сторонами, чтобы быть уверенными, что мы тратим наши ресурсы на правильное тестирование.&lt;br /&gt;Тестирование релизов сопровождения ПО. В то время, когда тестирование разработки получает больше всего обратной связи, процесс тестирования релизов сопровождения позоционируется как процесс с набором  труднореализуемых, но быстрых изменений. Срочный патч для критического бага требует больше различных методов, подходов тестирования, чем регулярный релиз по расписанию. Поэтому гибкие процессы обязательны. Мы представим наборы методов, включая дискуссии о сильных и слабых сторонах каждого их методов.&lt;br /&gt;Измерение и увеличение тестового покрытия. Как мы можем оценить контрольный показатель по достижении которого, можно будет судить о достаточном покрытии кода тестами? Мы обычно измеряем покрытие в строках кода, при помощи спецификаций, требований, но существуют другие показатели. Статья будет содержать опрос сообщества профессионалов в тестировании об их техниках.&lt;br /&gt;Распределение объема тестирования. С появлением аутсорсинга, офф-шор вендоров и многофункциональных ИТ практик, как частей разработки ПО (больших и маленьких), какая-либо организация имеет возможности увеличивать тестовые возможности своих партнеров и свои собственные. Также тестовые лаборатории, контракторы и консультанты предоставляют ресурсы для заполнения недостающих ваших собственных ресурсов. Статья будет содержать материалы о том, как координировать различные группы тестировщиков, вовлеченных в процесс и определенных для достижения результатов каждым из них, а также коммуникации и обмен информацией между ними.&lt;br /&gt;Динамическое распределение приоритетов в тестировании.  Большинство тестировщиков соглашаются, что они не могут выполнить все их тесты за отведенное время. Иногда слишком мало времени отведено на разработку тестов, приводящее к необходимости прокрытия многочисленных тестовых условий  малым количеством тест кейсов. Давайте посмотрим на пути разработки эффективных тест кейсов и приоритезируем эти пути для достижения высокоуровневого риск менеджмента независимо от сроков.&lt;br /&gt;Распределение ролей в команде тестировщиков, этапы их привлечения в тот или иной процесс в мастштабах всей организации. Процесс тестирования не должен напоминать собой “детский футбол”: когда множество людей бегает за мячем на большом поле и пытаются ударить по мячу. Благодаря использованию этапов (стадий) тестирования каждая команда занимает правильную позицию в тестировании продукта. Достигнув уверенности, что команда остается на правильных этапах (стадиях) тестирования (и только тестирования), заботливый тест менеджер сохранит свою команду эффективной. Статья будет содержать обсуждения фокусирования на нужных объемах работ тестирования, включая сложные межведомственные отношения и менеджерские рассуждения о том, как тест менеджер должен организовать остальных для выполнения определенных видов тестирования.&lt;br /&gt;Сбор требований и спецификаций. Вы когда-нибудь замечали, что тестируйте приложение при существенном или полном отсутствии информации о том, как приложение должно себя вести при различных условиях? Метод “научного тыка”, расспросы коллег, сравнение вашего приложения с конкурентными и прием во внимание пожеланий заказчика- это все части единого процесса решения  таких проблем. Мы посмотрим и на другие пути решения этих проблем.&lt;br /&gt;Развитие и поддержка тестовой системы. Статический набор тестов страдает от того, что доктор Борис Бейзер называет “парадоксом пестицида”: этот набор может стать менее эффективным, так как разработчики учаться избегать ошибок, которые находятся тестами (и, разумеется, исправляют существующие ошибки – Прим перевод.). Мы будем изучать процессы, которые постоянно улучшают наборы тестов, добаляют новые тесты, устраняют устаревшие тесты и апдейтят существующие тесты в соответствии с изменяемыми требованиями и условиями.&lt;br /&gt;Построение тестового репозитория. Тестовые системы состоят из тестовых условий, тест кейсов, тестовых инструментов, наборов тестов и других объектов. В неоднородных условиях эти объекты распростроняются на различные Ос`и, языки программирования и даже на различные команды тестирования. Вы можете построить или купить систему, которая бы позволила вам управлять этими разрозненными частями? Давайте посмотрим на техники построения и использования таких самописных инструментов и на коммерческий софт для управления тестированием.&lt;br /&gt;Управление релизами и конфигурациями в управлении тестированием. Тестируемый софт не должен просто появляться магическим образом в тестовом окружении, так же как и тестовые среды не должны магическим образом конфигурировать себя вокруг доставленного кода. Плавное течение софта от разработчиков к команде тестирования в лабораторию тестирования, с четким контролем результатов установок, требует тотального менеджмента и эффективных коммуникаций, часто в бытро меняющихся условиях. Будущая статья рассмотрит ключевые моменты в этих областях вместе с примерами менеджмента релизов и конфигураций, сделанных корректно и наоборот- недостаточно верно.&lt;br /&gt;&lt;br /&gt;Как я упоминал выше, вы можете не иметь ответственности за все эти процессы, но эти процессы имеют прямое влияние на успех вашей организации. Эти кросс-функциональные процессы имеют такое же влияние на менеджмент, как техническая подкованность и поэтому я рассматриваю их с особым интересом. Также у меня есть специально отобранные неприметные  и невзрачные процессы для примеров. Потому что скучный  - не значит не имеющий значения. Вы можете не  получить апплодисментов от вашего менеджера, что релизы по плану поступают в тестовые лаборатории, но отсутствие управления таким процессом должно заострить внимание на направильном подходе к процессу.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Обращение к участникам:&lt;br /&gt;&lt;br /&gt;Авторы этой серии статей, включая и меня, будут базировать свои эссе на реальных случаях, на опыте реальных проектов, а также на опросах сообщества профессионалов в области тестирования. Эта серия статей будет использовать коллективный опыт группы людей, работавших над сотнями проектов. Каждый проект учит чему-то профессионала в управлении критичными процессами. Более того, у некоторых из них имеются анекдотические случаи, а также множество данных, чтобы поделиться ими. Благодаря “руководящему” подходу каждая статья будет предоставлять набор действий, который вы можете применить, чтобы улучшить ваши процессы тестирования.&lt;br /&gt;&lt;br /&gt;Как и у ваших коллег- профессионалов в тестировании, у вас также может быть ваш собственный набор методов и идей. Как читатель этого журнала вы можете судить о том, какой же процесс является критичным.  Следуя руководствам и правилам журнала вы можете публиковать свои аннотации к статьям. Если вы “боретесь” с критичными процессами и хотите учиться у своих коллег- дайте мне знать. Я за всестороннее общение с читателями. Мой e-mail написан ниже.&lt;br /&gt;&lt;br /&gt;Эта серия статей о том, как мы, как профессионалы в тестировании, можем  быть успешными в наших наиболее важных ролях. Я призываю каждого к участию в дискуссиях, особенно если вы хотели бы поделиться мыслями, решениями и предупреждениями о критичных процессах.&lt;br /&gt;&lt;br /&gt;Об авторе:&lt;br /&gt;&lt;br /&gt;Рэкс Блэк (Rex_Black@RexBlackConsulting.com) – президент и главный консультант компании “Rex Black Consulting Services Inc.” (http://www.RexBlackConsulting.com) – международной консультационной компании в областях тестирования и обеспечения качества. Он и его компания предоставляет помощь их клиентам в применении, передаче знаний, а также наборе персонала для работы над процессами тестирования и обеспечения качества. Его книга “Управление процессами тестирования” была публикована в июне 1999 года издательством “Microsoft Press”.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-365708634014350056?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/365708634014350056/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/11/blog-post_16.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/365708634014350056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/365708634014350056'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/11/blog-post_16.html' title='Переводы статей по тестированию'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UXbl6mgC86E/SwFFHfSrrqI/AAAAAAAAAcg/Y6aN8PqgboM/s72-c/Figure+1.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-8414911976420329375</id><published>2009-11-03T09:43:00.000+03:00</published><updated>2009-11-03T09:44:28.969+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CDT'/><title type='text'>Статья про Контекстное тестирование</title><content type='html'>Алексей Лянгузов грамотно все описал http://www.software-testing.ru/library/testing/general-testing/847-context-driven-testing&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/4027263932695413933-8414911976420329375?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/8414911976420329375/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/11/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/8414911976420329375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/8414911976420329375'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/11/blog-post.html' title='Статья про Контекстное тестирование'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-2228109817772135602</id><published>2009-10-26T10:01:00.000+03:00</published><updated>2009-10-26T10:05:24.132+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exploratory Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Bach'/><title type='text'>Exploratory Testing Dynamics</title><content type='html'>James Bach опубликовал новый документ, описывающий Exploratory Testing. Очень интересный док. Чего только стоит: "Imagine a problem, then find it." &lt;br /&gt;Рекомендую к прочтению.&lt;br /&gt;&lt;br /&gt;http://www.satisfice.com/blog/wp-content/uploads/2009/10/et-dynamics22.pdf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-2228109817772135602?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/2228109817772135602/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/10/exploratory-testing-dynamics.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/2228109817772135602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/2228109817772135602'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/10/exploratory-testing-dynamics.html' title='Exploratory Testing Dynamics'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-6040466805947591996</id><published>2009-10-16T11:20:00.000+04:00</published><updated>2009-10-19T17:17:30.986+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='тестирование'/><category scheme='http://www.blogger.com/atom/ns#' term='правила'/><category scheme='http://www.blogger.com/atom/ns#' term='цели'/><category scheme='http://www.blogger.com/atom/ns#' term='документация'/><category scheme='http://www.blogger.com/atom/ns#' term='задачи'/><title type='text'>Постановка задачи тестирования</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_UXbl6mgC86E/Stxm5HD2ekI/AAAAAAAAAcA/hHGnVrTGcXw/s1600-h/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 312px;" src="http://1.bp.blogspot.com/_UXbl6mgC86E/Stxm5HD2ekI/AAAAAAAAAcA/hHGnVrTGcXw/s400/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5394299585016789570" /&gt;&lt;/a&gt;&lt;br /&gt;В очередной раз поставили задачу максимально некорректно. Типа: "У нас обновление такое-то. Потестируй там что-нибудь..".&lt;br /&gt;Нервы мои не выдержали, и я разразился очередным документом "Постановка задачи тестирования". Документ этот содержит список простых вопросов, ответы на которые необходимо получить перед началом тестирования. К сожалению, многие не понимают, что только корректная постановка задачи приводит к желаемому результату :(&lt;br /&gt;Вполне допускаю, что список не совсем полный, но по мере необходимости буду дополнять и корректировать. Замечу, что эти вопросы перекликаются с вопросами, размещенными в предыдущем посте, но цели у них разные.&lt;br /&gt;&lt;br /&gt;             Постановка задачи тестирования&lt;br /&gt;1. Что именно нужно тестировать? (дистрибутив, ссылки на веб клиенты).&lt;br /&gt;&lt;br /&gt;2. Вид тестирования (Функциональные (+уровни тестирования); Нефункциональные; Связанные с изменениями).&lt;br /&gt;&lt;br /&gt;3. Как тестировать? (что конкретно должно быть протестировано, что должно быть проверено обязательно, что дополнительно, что "если останется время").&lt;br /&gt;&lt;br /&gt;4. Где документация? (спецификация, требования).&lt;br /&gt;&lt;br /&gt;5. Когда и как долго тестировать? (сроки, время начала, если сразу нельзя начать)?&lt;br /&gt;&lt;br /&gt;6. Где тестировать? (адреса, ссылки, машины, ОСи, окружение)?&lt;br /&gt;&lt;br /&gt;7. Чем тестировать? (инструменты, файлы)?&lt;br /&gt;&lt;br /&gt;8. Где необходимые инструменты, артефакты? (файлы, базы, логины, пароли, учетные записи, сертификаты и т.д.).&lt;br /&gt;&lt;br /&gt;9. К кому обращаться за дополнительной информацией?&lt;br /&gt;&lt;br /&gt;11. Что делать с результатами?&lt;br /&gt;&lt;br /&gt;12. Необходим ли отчет? (если да- см. заявку на отчет).&lt;br /&gt;&lt;br /&gt;13. Критерии успешного (неуспешного) тестирования. (если необходимо дать оценку, заключение).&lt;br /&gt;&lt;br /&gt;10. Дополнительные инструкции.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-6040466805947591996?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/6040466805947591996/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post_16.html#comment-form' title='Комментарии: 16'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/6040466805947591996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/6040466805947591996'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post_16.html' title='Постановка задачи тестирования'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_UXbl6mgC86E/Stxm5HD2ekI/AAAAAAAAAcA/hHGnVrTGcXw/s72-c/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD1.jpg' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-1641746361147083195</id><published>2009-10-09T12:05:00.000+04:00</published><updated>2009-10-09T14:08:11.837+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='отчет о тестировнии'/><title type='text'>Заявка на получение отчета о тестировании.</title><content type='html'>Случай из жизни: руководитель группы разработчиков требует от отдела тестирования отчет о тестировании очередного небольшого проекта. Вроде бы стандартная ситуация, но:&lt;br /&gt;1. руководитель группы разработчиков не знает что туда включить, а что нет;&lt;br /&gt;2. непосредственно руководителю этот отчет не нужен (этот отчет хотят показать заказчику, чтобы снять с себя ответственность за неработающие вещи, к разработке которых наши разработчики не имеют отношения).&lt;br /&gt; &lt;br /&gt;То есть требуют "то, сами не знают что".&lt;br /&gt;Ну да- бывают ситуации, когда руководители (делают вид, что) не в курсе, что "если хочешь получить от коллег или подчиненных результат,- убедись что: все знают что сделать, как сделать, у них есть желание и средства для этого".  &lt;br /&gt;Опустим философию. Итак- есть проблема: чего-то требуют, чего именно не объясняют, на наводящие вопросы не отвечают\отвечают уклончиво. (причины этого тоже опустим.)&lt;br /&gt;Как решать?&lt;br /&gt;&lt;br /&gt;Основная задача- информировать меня о том, что мне нужно сделать. На уровне руководства решаем это внедрением утвержденного регламента запроса на отчет. Другими словами- формализуем процесс. Таким образом исключая ситуации взаимонепонимания. Тебе нужен нормальный результат вовремя?- поставь мне задачу корректно.&lt;br /&gt;&lt;br /&gt;Воспользовавшись ресурсами it4business.ru, статьей в блоге "255 ступеней" (http://blog.shumoos.com/archives/190) оформил вот такой список вопросов, ответы на которые нужно включить в постановку мне задачи о написании отчета о тестировании.&lt;br /&gt;&lt;br /&gt;Заявка на получение отчета о тестировании.&lt;br /&gt;Так как отчет о тестировании может быть сформирован множеством способов, зависящих от того, кому отчет? зачем? что на его основании будут делать?- при следующей необходимости написания отчета предлагаю вместе с постановкой такой задачи отвечать на вопросы:&lt;br /&gt;  кому отчет?&lt;br /&gt;  зачем? &lt;br /&gt;  что на его основании будут делать?&lt;br /&gt;  что  нужно показать?&lt;br /&gt;  указать, что работает или что не работает?&lt;br /&gt;  другие комментарии.&lt;br /&gt; А также следует ли отвечать на вопросы вида:&lt;br /&gt;1) Это можно продавать/устанавливать или нужно доработать/выкинуть?&lt;br /&gt;2) Какова степень уверенности?&lt;br /&gt;3) Как называется то, о чем идет речь?&lt;br /&gt;&lt;br /&gt;Обычно ответы на эти вопросы и хотят увидеть лица, принимающие решения.&lt;br /&gt;Постановка задачи в виде: «напиши отчет в таком виде, чтобы его заказчику можно было отправить..», «напиши какую-нить таблицу», «сделай красиво» и подобные будут требовать дополнительных потерь времени участниками процесса.&lt;br /&gt;&lt;br /&gt;Что именно тестировать?&lt;br /&gt;Как  тестировать (что должно быть проверено обязательно, что дополнительно)?&lt;br /&gt;Когда тестировать (сроки, время начала, если сразу нельзя начать)?&lt;br /&gt;Где  тестировать (адреса, ссылки)?&lt;br /&gt;Чем тестировать (инструменты, файлы)?&lt;br /&gt;Где необходимые приложения (файлы, базы, логины\пароли, учетки, сертификаты и т.д.)&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/4027263932695413933-1641746361147083195?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/1641746361147083195/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post_09.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/1641746361147083195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/1641746361147083195'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post_09.html' title='Заявка на получение отчета о тестировании.'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-508921040039247657</id><published>2009-10-06T15:31:00.000+04:00</published><updated>2009-10-06T16:52:24.974+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='дефект'/><category scheme='http://www.blogger.com/atom/ns#' term='правила'/><category scheme='http://www.blogger.com/atom/ns#' term='баг'/><category scheme='http://www.blogger.com/atom/ns#' term='фикс'/><category scheme='http://www.blogger.com/atom/ns#' term='репорт'/><category scheme='http://www.blogger.com/atom/ns#' term='разработчик'/><title type='text'>Корректность фиксов багов</title><content type='html'>Должны ли разработчики проверять корректность своих фиксов?&lt;br /&gt;Проблема обсуждалась неоднократно на форуме проекта it4business.ru , в блогах и т.д. Попробуем разобраться в ситуации. &lt;br /&gt;&lt;br /&gt;Априори предполагаем наличие здравого смысла в организации процесса и ясность смысла проверок всем ясна. Итак, если проверки необходимы, то их кто-то должен делать- либо сами разработчики, либо тестировщики. Рассмотрим 2 варианта: 1- тестировщиков на проекте не достаточно; 2- тестировщиков достаточно для того, чтобы смотреть еще и за результатами фиксов, несмотря на то, что времени на тестирование всегда не хватает. Второй утопический случай можно смело отбросить) и поставить вопрос так: должны ли разработчики сами проверять не только корректность конкретного фикса, но и некоторое минимальное окружение вокруг этого фикса (бага)? То есть ограничиваться ли автору фикса проверкой только лишь того конкретного бага\проявления бага, который указан в баг репорте? Или все-таки включить мозг, попробовать другие действия, окружение и т.д.  &lt;br /&gt;&lt;br /&gt;Понятно, что квалифицированный, профессиональный разработчик должен это делать, но часто приходится слышать такие вещи как "острая нехватка времени", "не приоритетная задача", "потом". &lt;br /&gt;В случае, когда тестировщиков на проекте более-менее достаточно для того, чтобы проверять каждый фикс более подробно, выход из ситуации можно обеспечить количеством. Чем больше количество тестировщиков,- тем больше времени (в среднем) можно уделить на проверку конкретного фикса бага. &lt;br /&gt;&lt;br /&gt;Но что делать, если тестировщикам итак катастрофически не хватает времени? Вариант- расширить проверку фиксов разработчиками. (Допустим, что нет возможности нанять еще тестировщиков, что часто случается в последнее время). Ежу понятно, что этим мы жертвуем временем на  разработку (кодирование). Но в целом, при подсчете общего затраченного времени (и того, которое я, как тестировщик, затрачу на поиск всех нюансов (проявлений) каждого бага, и на переоткрытие бага в баг трекинговой системе, и на объяснения с разработчиком и многое другое) картина будет выглядеть не столь ужасно, если не будет происходить тех действий, выполнение которых можно было бы предусмотреть и избежать. Я здесь не имею ввиду кривые баг репорты, нелокализованные дефекты и другие "косяки" тестировщиков. Имеется в виду только ограниченность проверки разработчиком. Если цель- иметь пусть "меньший", но проверенный, рабочий функционал, а не горы глючного кода, вполне можно организовать и обязательную проверку разработчиками своих собственных трудов. Я для этого  написал небольшой список требований к такой проверке, который (не без помощи начальства (а лучше- активного участия)) внедряли в рабочий процесс.&lt;br /&gt;&lt;br /&gt; Что получилось:&lt;br /&gt;&lt;br /&gt;Вобщем я решил, что такой регламент должен быть коротким, чтобы разработчикам было не лень его читать и применять. Также чтобы он описывал только основные моменты.&lt;br /&gt;Смысл его введения:&lt;br /&gt; 1. Разработчики дожны проверять, что то, что они сделали (написали\пофиксили), работает вообще.&lt;br /&gt; 2. Разработчики дожны проверять, что то, что они сделали, работает корректно.&lt;br /&gt; 3. Разработчики дожны проверять (хотя бы в минимальной степени), что то, что они сделали, не ломает существующий, корректно работающий функционал.&lt;br /&gt; Можно переложить почти все эти проверки на тестировщиков при условии, что как максимум на 4 разработчиков будет 1 тестировщик. В нашем случае это без вариантов.&lt;br /&gt;По опыту тестирования (конкретного софта) могу сказать, что очень много времени у меня уходило: на поиск существующих в системе баг трекинга баг репортов + их возвращение, комментирование; на запись похожих. При организации проверки фиксов разработчиками этого бы не понадобилось. А потраченное время я бы потратил на более серьезную проверку. &lt;br /&gt; &lt;br /&gt;Проверка фикса (не только):&lt;br /&gt;1. Время верификации каждого фикса не более 10-20 мин.&lt;br /&gt;2. В первую очередь производится попытка воспроизведения бага (по описанным шагам).&lt;br /&gt;3. Во вторую- анализ областей, в которых вероятно возникновение этого бага.(Например, если был обнаружен баг с фильтром, работающим при вызове какого-то меню, то имеет смысл проверить все схожие типы меню, работающих по такому же принципу.).&lt;br /&gt;4. Проверка этих областей.&lt;br /&gt;5. Анализ возможности вызова повторения бага другими методами (отличающимися от описанного в баг репорте (Например, если был обнаружен баг при удалении записи, имеет смысл проверить удаление группы записей и т.п.)).&lt;br /&gt;6. Проверка этих методов.&lt;br /&gt; Минимальное свободное тестирование (специфично для определенного софта):&lt;br /&gt;7. Проверка работы с некорректными данными (например, сохранение, поиск по ним).&lt;br /&gt;8. Повторяющиеся действия (например, попытка удаления уже удаленного объекта, двойной импорт).&lt;br /&gt;9. Проверка вывода обязательных сообщений (например, при сохранении с незаполненными&lt;br /&gt;обязательными полями).&lt;br /&gt;10. Если, например, теструется установка дистрибутива или импорт данных, имеет смысл&lt;br /&gt;использовать виртуальные машины для  одновременной проверки разного функционала или&lt;br /&gt;параллельной проверки при различных условиях (пример- при тестировании импорта\экспорта удобнее и быстрее на одной машине произвести импорт, затем экспорт, а на другой- импорт этих экспортированных данных; с последующей одновременной проверкой данных).&lt;br /&gt;&lt;br /&gt;Все это опять же- FYI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-508921040039247657?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/508921040039247657/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post_06.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/508921040039247657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/508921040039247657'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post_06.html' title='Корректность фиксов багов'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-4629051640819075191</id><published>2009-10-02T15:11:00.000+04:00</published><updated>2009-10-02T15:15:58.127+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='баг'/><category scheme='http://www.blogger.com/atom/ns#' term='модель'/><category scheme='http://www.blogger.com/atom/ns#' term='плотность'/><title type='text'>Относительная плотность багов</title><content type='html'>Окунемся в теорию.&lt;br /&gt;Рассмотрим такое теоретическое понятие как относительная плотность багов. количество багов на некоторую единицу, например, на единицу времени (неделя, итерация), на единицу разработки (фича, модуль), на рабочую единицу (тестировщик). Более всего интересно распределение количества по времени. Заметил, что с течением времени это количество не постоянно. Проанализировав, получил, что: значение плотности багов должно обычно изменяться с теченем времени, потому что:&lt;br /&gt; &lt;br /&gt; 1 низкая плотность в начале работы (обусловлено тем, что имеем новый продукт (софт\фича), вероятно, новые инструменты, новые люди); &lt;br /&gt;&lt;br /&gt; 2 выше в середине работы (процесс налажен, всё известно, все знают зачем, что и как делать, у всех есть желание и возможность сделать свою работу);&lt;br /&gt;&lt;br /&gt; 3 ниже к концу (известен предмет тестировани: проблема- примелькался продукт, к нему привыкли тестировщики; баги фиксятся+регрессионное тестирование дает свои плоды (позволяет разработчикам не повторять своих ошибок -это спорное утверждение, но именно с такой ситуацией я однажды столкнулся). &lt;br /&gt;&lt;br /&gt;Обозначились проблемы. Попробуем сделать выводы и найти решения проблем.&lt;br /&gt;выводы:&lt;br /&gt;1. четко регламентировать и описать процесс работы. (Что даст нам ускоренное знакомство с софтом, инструментами, людьми путем четкого распределения обязанностей (кто что делает и почему), источников информации (кто как делает, зачем делает и какими средствами). &lt;br /&gt;&lt;br /&gt;2. соблюдать инструкции и правила. (без этого предыдущий пункт можно вычеркнуть).&lt;br /&gt;&lt;br /&gt;3. как можно раньше ввести людей в курс дела, обучить. (Здесь имеется ввиду больше знакомство тестировщиков на ранних стадиях с требованиеями, с первыми версиями спека и т.д. А также знакомство новичков.).&lt;br /&gt;&lt;br /&gt;4. заранее продумывать пути совершенствования процесса, допустимые эксперименты. (Не лишним будет попробовать усовершенствовать тот или иной процесс (в пределах разумного) в рамках тестирования. Однако, такие эксперименты не всегда можно ставить- перед релизом, думаю, они чреваты:)) &lt;br /&gt;&lt;br /&gt;5. ревью тестов. (Изменяем\дополняем проверками, методами, которые раньше не проводились. Тут можно подумать, что первичный вариант тестов был не полным или неграмотным. Имеется ввиду- изменить проверки на аналогичные.). &lt;br /&gt;&lt;br /&gt;6. ротация людей по областям (не обязательно всех), взаимозаменяемость.&lt;br /&gt;&lt;br /&gt;7. смена типа, метода, подхода ручного тестирования (Прежде всего в области ad hoc, exploratory testing).&lt;br /&gt;&lt;br /&gt;8. контроль предпринятых мер и мониторинг результатов. (Незачем продолжать неэффективные способы).&lt;br /&gt;&lt;br /&gt;9. отслеживать % повторно открытых дефектов. (что позволит судить о таких вещах, влияющих на скорость разработки, как корректность баг репортов, корректность фиксов (ну должны же разработчики хоть немного смотреть на то, что они делают. В мое практике были случаи, когда баги фиксились методом лишь бы как-нибудь. Лечилось разговором с руководством и демонстрацией теряемого времени на возврат багов, заведение аналогичных, да и просто переводом с одного человека на другого)).&lt;br /&gt;&lt;br /&gt;Отдельно стоит заострить внимание на пунктах 6 и 7. Возможности их осуществления должны быть заложены при планировании работы всей группы тестрования над тем или иным проектом. Если вы, например, решаете зафиксировать деятельность отдельных тестировщиков в проекте, то будет затруднительно менять направление деятельности каждого. &lt;br /&gt;&lt;br /&gt;Рассмотрим сферического руководителя группы тетсирования в вакууме. В начале работы над некоторым проектом перед ним (и группой) стоят задачи: планирование тестов, дизайн тестов, разработка автотестов, выполнение тестов, предоставление результатов и оценка выполнения тестов. Вполне очевидно, что первые три задачи следует решить раньше других. Если учесть, что временные ограничения никто не отменял и делать это не собирается, то, чтобы добиться эффективной работы группы, необходимо на каждом этапе распределять работы так, чтобы максимально возможное количество сотрудников работало над теми задачами, которые необходимо решить в первую очередь. Например, на начальном этапе ставим задачу максимальному возможному большинству тестировщиков (здесь все-таки есть разумные ограничения- опыт в этой деятельности, другие задачи)- написание тест кейсов. Можно даже потерять немного времени на параллельное обучение тестировщиков, не имеющих опыта написания тест кейсов. Потери, конечно, должны быть разумными. А выигрыш в будущем за счет каждого нового обученного обеспечен (если он никуда не уйдет, но это уже совсем другая проблема). Далее. Когда большинство тест кейсов написано и готово к использованию- имеет смысл переключить часть сотрудников на непосредственно тестрование, а также на написание автотестов, если таковые предполагаются. Смысл в том, что появляется более приоритетная задача. Так как поддерживать тест кейсы в актуальном состоянии можно и не всем первоначальным составом.  Как определить момент переключения на другую задачу? Делаем просто- переключаем постепенно. То есть сначала некое минимальное количество, а затем смотрим на успеваемость. И потом при необходимости добавляем людей на следующую задачу. Обращаем внимание, что в данном случае все участники рано или поздно сменят вид тестовой деятельности (по крайней мере между написанием и выполнением тестов). Как мне кажется, жесткая фиксация вида деятельности тестировщика имеет смысл лишь в том случае, когда проекты поставлены на поток, когда в любой момент времени нужно писать тест кейсы, вполнять их и так далее. В случае же, когда приоритет каждой задачи меняется с течением времени, выгодно иметь группу проффесионалов, которые смогут участвовать и в написании тестов, и в выполнении, и в работе по автоматизации... Таким образом мы сможем построить максимально эффективный процесс в каждый момент времени, имея возможность оптимально выстраивать\распределять работу над актуальными задачами, предотвращать задержки каких-то направлений из-за болезней, уходов сотрудников, а также имея возможность исправить несерьезные ошибки планирования перераспределяя ресурсы. Еще один выигрышный момент- когда низкая плотность багов обусловлена такой проблемой- примелькался продукт, к нему привыкли тестировщики,- при смене деятельности (не радикальной, хотя и такое может быть реализовано) получаем "незамыленные", свежие глаза и руки :) на каждом из направлений. Смена области приложения чередуется со сменой вида деятельности. Например, 6 тестировщиков, 2 модуля приложения, 3 задачи- написание ТС, их выполнение, написание автотестов. решаем проблему методом "каждый на каждой позиции". Тут нужно не забыть, что каждому понадобится различное время на знакомство, переключение на новый тип деятельности, различное время на выход на "максимальную скорость работы", и различное время на "замылевание", привыкание. При небольших по срокам проектах такая смена деятельности не оправдана. А также стоит учесть предпочтения самих тестировщиков. &lt;br /&gt;А чтобы исключить взаимонепонимание, различные версии, интерпретации- необходимо воспользоваться первыми двумя пунктами выводов. &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/4027263932695413933-4629051640819075191?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/4629051640819075191/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post_02.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4629051640819075191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4629051640819075191'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post_02.html' title='Относительная плотность багов'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-4083468187670413370</id><published>2009-10-01T14:04:00.000+04:00</published><updated>2009-10-01T14:18:18.307+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='документация'/><category scheme='http://www.blogger.com/atom/ns#' term='схема'/><title type='text'>Круговорот документации</title><content type='html'>Примерно полгода назад получил задание создать (воплотить в картинке) примерную схему оборота (использования) документации при разработке. Дело было еще до внедрения TFS. Но могу сказать, что после ее внедрения радикальных изменений не стал бы вносить в эту схему. Вот что получилось: &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UXbl6mgC86E/SsSAs_nmPzI/AAAAAAAAAbY/xGycudBvm24/s1600-h/Documents_Exchange.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_UXbl6mgC86E/SsSAs_nmPzI/AAAAAAAAAbY/xGycudBvm24/s400/Documents_Exchange.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5387572564722073394" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-4083468187670413370?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/4083468187670413370/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4083468187670413370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/4083468187670413370'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/10/blog-post.html' title='Круговорот документации'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UXbl6mgC86E/SsSAs_nmPzI/AAAAAAAAAbY/xGycudBvm24/s72-c/Documents_Exchange.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-3726445774800958329</id><published>2009-09-30T11:02:00.000+04:00</published><updated>2009-09-30T12:17:37.106+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='правила'/><category scheme='http://www.blogger.com/atom/ns#' term='глоссарий'/><title type='text'>Заведите себе глоссарий (необходимость говорить на одном языке)</title><content type='html'>Есть такая поговорка: "С кем поведешься, от того и наберешься". Это к рассмотрению ситуации, когда в отдел, например, тестирования приходит новый сотрудник. Он начинает общаться с коллегами и в процессе работы начинает говорить, писать (описывая ситуации, возникающие во время тестирования) так, как принято среди тестировщиков. Это нормально. То же самое происходит и в отделе, например, разработки документации. В пределах одного отдела все друг друга понимают практически без проблем (опустим ситуации, когда новый сотрудник совсем новый:)). Но вот когда коммуникации затрагивают несколько отделов такого понимания может и не быть. Ничего удивительного. Просто одни привыкли называть так, а другие- иначе. И оба варианта используются сотрудниками различных отделов различных организаций, то есть никто ничего нового не выдумывал. Хорошо, если ситуаций, где можно найти такие варианты различий, не много. (ну, допустим, характер софта такой). А если только в пределах одного направления разработки таких вариантов масса? Да к тому же существует разбивка как минимум на 3 отдела (документации, разработки, тестирования), а часто больше чем на 3. Наложим на все это распределенную на несколько стран разработку. Соответственно добавляются варианты, которые предлагаются иностранным языком. Но ведь английский русских разработчиков и английский разработчиков, например, из индии- 2 большие разницы. В итоге получаем столько определений одних и тех же вещей, с которыми не так-то просто и разобраться, не говоря уже о том, что временных задержек на это не должно быть вообще. Не трудно представить, сколько лишнего времени уходит на то, чтобы разобраться с баг репортом, понять суть бага. Чтобы избегать таких ситуаций, необходимо вывести некий глоссарий и в соответствии с ним называть вещи своими "уникальными" именами. За основу можно взять общепринятые понятия, которые наиболее часто встречаются уже (в переписке, в системе баг репорта и тд), на данный момент. Если разработка распределенная- то на английском языке. Как правило, наборы готовых требований к разрабатываемому софту уже содержат большинство понятий и определений. Этим стоит воспользоваться и принять за основу. &lt;br /&gt;К чему это все? Коммуникации должны быть эффективными. С точки зрения тестирования это своевременный, точный, однозначный отчет\репорт о положении дел. Если это баг репорт- то он должен быть абсолютно понятен всем участникам разработки. Не должно быть отсылки бага обратно автору за подробностями. Пусть вновь пришедшие сотрудники сделают несколько репортов под присмотром более опытных. Пусть в открытом доступе хранится некий глоссарий, который можно использовать, редактировать. Это сэкономит кучу времени в будущем.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-3726445774800958329?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/3726445774800958329/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_30.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/3726445774800958329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/3726445774800958329'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_30.html' title='Заведите себе глоссарий (необходимость говорить на одном языке)'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-1521317484930608175</id><published>2009-09-29T14:58:00.000+04:00</published><updated>2009-09-30T14:23:51.838+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='правила'/><category scheme='http://www.blogger.com/atom/ns#' term='тест'/><category scheme='http://www.blogger.com/atom/ns#' term='тест кейс'/><category scheme='http://www.blogger.com/atom/ns#' term='приоритет'/><title type='text'>Расстановка приоритетов тест кейсов</title><content type='html'>Процесс тестирования предполагает своевременное донесение до необходимого количества заинтересованных лиц текущего состояния разрабатываемого софта. Я думаю, что всем понятно, что заказчик меньше всего ждет программу с идеальным интерфейсом, бантиками и т.д., но не выполняющую своих прямых обязанностей. Так же как и руководители разработки ожидают, что внедрение нового\ изменение существующего функционала не вредит, не портит основной функционал, ядро системы. Поэтому при составлении тест плана необходимо четко расставлять приоритеты тестирования тех или иных областей тестируемого приложения ввиду ограниченного срока разработки ПО и, соответственно, его тестрования. &lt;br /&gt;В зависимости от вида тестирования (модульное, системное, интеграционное) приоритеты могут изменяться, но суть- есть вещи, которые должны быть протестированы в первую очередь, и есть вещи, тестирование которых может (и должно) быть отложено, остается той же.&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/4027263932695413933-1521317484930608175?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/1521317484930608175/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_29.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/1521317484930608175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/1521317484930608175'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_29.html' title='Расстановка приоритетов тест кейсов'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-3119718864141530954</id><published>2009-09-28T12:25:00.000+04:00</published><updated>2009-09-30T14:21:49.380+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='дефект'/><category scheme='http://www.blogger.com/atom/ns#' term='правила'/><category scheme='http://www.blogger.com/atom/ns#' term='баг'/><category scheme='http://www.blogger.com/atom/ns#' term='репорт'/><title type='text'>Правила работы с багами (баг репортами).</title><content type='html'>В этом посте хочу поделиться с некоторыми устоявшимися у нас правилами и требованиями, которые необходимо соблюдать при постинге багов в багтрекнговые системы, при верификации фиксов и т.д. Не говорю, что они подойдут всем и во всем, но столкнувшись с проблемами, я решил превентировать их в будущем введением именно такого регламента.&lt;br /&gt;Вообще каждая багтрекинговая система содержит в себе достаточно всяких требований, условий и так далее. Но иногда, в чем я убедился, этого не совсем достаточно, особенно для новичков в тестировании.&lt;br /&gt;&lt;br /&gt;Работа с дефектами:&lt;br /&gt;&lt;br /&gt;1. Вся работа с дефектами должна быть в соответствии с требованиями TFS (Напомню, что это наш основной инструмент). 1. Каждый дефект репорт в багтрекинговой системе: 1) имеет уникальный номер ID; заголовок (краткий, но максимально информативный для поиска и ориентации по нему); важность; срочность; ссылки на связанные дефекты, ТС, требования (обязательно для дефектов требований, спека), документацию (при необходимости); описание (что, где и когда именно не работает(работает неправильно));набор шагов для воспроизведения (необходимо указывать максимально короткую последовательность из возможных, то есть проводить доподлинное выявление дефекта, его локализацию), если существуют другие способы появления этого же дефекта- необходимо их указать (например, в комментариях); к какому приложению и\или его области дефект относится, в каком билде найдет, в какой билд вошел фикс; статус (в каком состоянии он находится, кто в данный момент времени над ним работает, кто автор, кто ответственные);комментарии, историю изменений. 2) описывает уникальное состояние приложения (на данный момент времени). 3) должен содержать максимальное количество (уникальной) информации о дефекте (xml, скрины, графические файлы и тд).&lt;br /&gt;Остановлюсь на заголовке подробнее. Правильный заголовок должен отражать суть дефекта, быть таким, чтобы по нему можно было найти дефект поиском, в то же время- кратким и емким. Если это исключение, значит пишем, что "исключение при...", а не "появляется сообщение с исключением..". Второй вариант допустим при дефекте вывода не того сообщения, которое должно быть, например.&lt;br /&gt;&lt;br /&gt;2. При проверке фикса, помимо самого дефекта должно проверяться минимальное окружение (метод эд хок). Этим пунктом хотелось бы предотвратить ситуации, когда дефект пофиксен, но существует аналогичный\похожий дефект (или даже не один), которые легко находятся. Но не перебором граничных, "интересных" значений, например, а включением мозга. При котором строятся попытки, варианты того, в каких случаях можно еще получить схожее поведение программы и добиться получения дефекта. &lt;br /&gt;&lt;br /&gt;3. Недопустимо повторение дефектов в системе багтрекинга. Перед постингом необходимо убедиться в отсутствии такового же дефекта в системе, используя поиск.  При необходимости- открыть заново с соответствующим комментарием.&lt;br /&gt;&lt;br /&gt;4. Каждый дефект репорт должен содержать описание только одного дефекта. при отклонениях должен быть создан другой репорт (за исключением некоторых случаев, которые будут оговариваться отдельно). Здесь имеется ввиду то, что нельзя запихивать несколько дефектов в один репорт. Не путать с одним дефектом и несколькими путями (возможностями) его проявления.&lt;br /&gt;&lt;br /&gt;5.  В сложных ситуациях когда дефект "мигрирует" или "изменяется" (либо из одной области приложения в другую, либо изменяется поведение и тд) нужно закрыть старый дефект (с комментарием) и открыть новый. Иногда встречаются такие ситуации, когда шаги для воспроизведения дефекта становятся мало похожи на первоначальное описание.&lt;br /&gt;&lt;br /&gt;6.  Верификацию фикса проводит автор дефекта. Ad hok ("вокруг этого дефекта")- можно тестировать не обязательно автору. Довольно противоречивый пункт. Однако есть мнение, что никто кроме автора не знает сам дефект лучше, какие-то подробности, нюансы (хотя они должны бить прокомментированы). &lt;br /&gt;&lt;br /&gt;7. При нахождении дефекта необходимо проверить все возможные способы его получения и смежные области. То есть необходимо подумать и проверить- где этот дефект или его влияние) могут быть найдены еще.&lt;br /&gt;&lt;br /&gt;8. При описании дефекта следует иметь ввиду, что при проверке фикса следует проверять все возможные (логически реализуемые) варианты проявления дефекта (в зависимости от ОС, окружения и тд.). Но не следует перегружать описание дефекта перечислением этих вариантов. Достаточно указать на достаточно(!) различные варианты.&lt;br /&gt;&lt;br /&gt;9. Количество шагов для воспроизведения должно быть минимальным, но достаточным (дефект должен быть максимально локализован).  &lt;br /&gt;&lt;br /&gt;10. Необходимо проводить регулярные bug review, bug status review.&lt;br /&gt;&lt;br /&gt;11. Описание дефектов необходимо дополнять достаточным количеством скриншотов.&lt;br /&gt;&lt;br /&gt;12. Как правило каждый дефект имеет свое влияние на выполнение\невыполнение ТС\TS и др. Поэтому должен содержать ссылки на зависимые элементы.&lt;br /&gt;&lt;br /&gt;13. Что нужно проверять при проверке фикса\новой фичи: 1. проверять, что то, что сделали (написали\пофиксили) разработчики, работает вообще. 2. проверять, что то, что сделали (написали\пофиксили) разработчики, работает корректно. 3. проверять, что то, что сделали (написали\пофиксили) разработчики, не ломает существующий, корректно работающий функционал.&lt;br /&gt;&lt;br /&gt;14. Проверка фикса (и не только): 1. В первую очередь производится попытка воспроизведения бага (по описанным шагам). 2. Во вторую- анализ областей, в которых вероятно возникновение этого бага.(Например, если был обнаружен баг с фильтром, работающим при вызове какого-то меню, то имеет смысл проверить все схожие типы меню, работающих по такому же принципу.). 3. Проверка этих областей. 4. Анализ возможности вызова повторения бага другими методами (отличающимися от описанного в баг репорте (Например, если был обнаружен баг при удалении записи, имеет смысл проверить удаление группы записей и т.п.)). 5. Проверка этих методов. Минимальное свободное тестирование (сугубо специфично): 6. Проверка работы с некорректными данными (например, сохранение, поиск по ним). 7. Повторяющиеся действия (например, попытка удаления уже удаленного объекта, двойной импорт). 8. Проверка вывода обязательных сообщений (например, при сохранении с незаполненными обязательными полями). 9. Если, например, тестируется установка дистрибутива или импорт данных, имеет смысл использовать виртуальные машины для одновременной проверки разного функционала или параллельной проверки при различных условиях (пример- при тестировании импорта\экспорта удобнее и бытрее на одной машине произвести импорт, затем экспорт, а на другой- импорт этих экспортированных данных; с последующей одновременной проверкой данных).&lt;br /&gt;&lt;br /&gt;А так же читаем про управление дефектами на http://software-testing.ru/library/testing/bug-tracking?layout=default&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-3119718864141530954?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/3119718864141530954/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_28.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/3119718864141530954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/3119718864141530954'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_28.html' title='Правила работы с багами (баг репортами).'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-8744281396291914775</id><published>2009-09-25T09:13:00.000+04:00</published><updated>2009-09-30T14:20:19.179+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='правила'/><category scheme='http://www.blogger.com/atom/ns#' term='автотесты'/><category scheme='http://www.blogger.com/atom/ns#' term='тесткомплит'/><category scheme='http://www.blogger.com/atom/ns#' term='тест'/><category scheme='http://www.blogger.com/atom/ns#' term='срипт'/><title type='text'>Правила написания скриптов автотестов (TestComplete)</title><content type='html'>В дополнение к предыдущему посту, и для совместного (параллельного) использования этих постов.&lt;br /&gt;Обращаю сразу внимание, что правила в этом посте специфичны для конкретного проекта, конкретной организации и конкретных инструментов автоматизации и тестирования вообще. Поэтому основные мысли уловить можно, но перед использованием в других проектах\компаниях эти правила следует заточить под свою спецтфику. У нас инструмент автотестрования- TestComplete 6.52. Багтрекинг - TFS. ОС- Vista, WinSserv2003, WinSserv2008. Виртуализация- VMWare. MS VisualStudio2008.&lt;br /&gt;Итак сами правила:&lt;br /&gt;&lt;br /&gt;1. Правила создания тест кейсов. Без комментариев :)&lt;br /&gt;&lt;br /&gt;2. Инструкция к тесткомплиту. Без комментариев :) Хорошо, что есть на русском и на английских языках.&lt;br /&gt;&lt;br /&gt;3. Структура: нумерация и название ТС, идентичны ручным ТС. Иначе не поймешь, что проверяет тот или иной скрипт.&lt;br /&gt;&lt;br /&gt;4. Порядок выполнения может быть изменен. Так как часто создаются опреджеленные наборы скриптов, а не прогоняются все сразу.&lt;br /&gt;&lt;br /&gt;5.  Структура: первый проект (ТС) содержит скрипт (назовем его "Reference"), содержащий функции и методы, испотльзуемые в других ТС. Тут следует прокомментировать: оптимальным вариантом представлялось такая организация- тест кейс=проект (project) тесткомплита, набор тест кейсов=(project suite) съют. сам скрипт (script)= набор функций (function).&lt;br /&gt;Каждый ТС (проект) содержит несколько скриптов: Первый- ссылка на скрипт "Reference" первого проекта. &lt;br /&gt;&lt;br /&gt;6. Структура: первый проект (ТС) содержит скрипт ("Reference"), содержащий функции и методы, используемые в других ТС.&lt;br /&gt;&lt;br /&gt;7. Структура: остальные ТС (все кроме первого) содержат основные скрипты ТСа ("Main" и "Local _Reference"), и  "ссылку" на скрипт ("Reference") скрипт (выглядит эта ссылка просто как скрипт). Таким образом у нас имеется 3 скриптовых элемента в каждом проекте: 1)&lt;span style="font-weight:bold;"&gt;одно&lt;/span&gt; хранилище ("Reference") функций и методов, используемых в различных скриптах, находящееся (физически) в первом проекте и вызываемое из других проектов (ссылки); 2)"Main" скрипт в каждом проекте, в котором находятся наборы функций, необходимых для выполнения тест кейса; и 3)"Local _Reference" скрипт, в котором находятся "локальные" функции, которые сделаны для того, чтобы не загромождать "Main" скрипт, облегчать процесс "понимания" скрипта, облегчать модификацию и т.д.  Поясню зачем это нужно: при выполнении тестирования часто приходится повторять одни и те же действия по многу раз. Ясно, что иметь одинаковое описание этих действий (функцию или ее часть) во множестве скриптов совершенно неэффективно, тем более подумайте о процессе модификации такой функции при необходимости. Поэтому эта функция выносится в отдельное место (скрипт "Reference", или вообще в отдельную библиотеку, но пока не будем усложнять) и вызывается при необходимости. Таким образом, когда нужно будет исправить скрипт в этом месте работы, мы правим только одну вызываемую функцию и все. Далее: основной скрипт проекта ("Main") содержит основные функции проверки- например, 3 штуки: открыть форму, внести изменения, сохранить. Логично предположить, что 1 и 3 действия будут проделываться многократно при тестировании (хотя я заносил в скрипт "Reference" функции уже при однократном повторении). Поэтому выносим их. 2 действие выносить смысла нет, так как, допустим!, вносим какие-то уникальные изменения, для данной конкретной проверки.&lt;br /&gt;Однако расписывать эту функцию прямо в мейн скрипте не стоит- потом сложно будет разбираться в этом нагромождении (как правило функции содержат в себе множество вызовов других функций). Поэтому выносим ее в скрипт "Local _Reference". &lt;br /&gt;&lt;br /&gt;8. Структура: При написании функций и методов необходимо четко обозначать конечные действия:  необходимо оценивать специфику работы приложения в контексте того или иного скрипта (функции). Например, при редактировании свойств на одной из вкладок свойств какого-либо класса, возможны 2 различных направления продолжения действий: либо сохранить\отменить, либо перейти на другую вкладку и редактировать свойства там. В таком случае эффективнее, с точки зрения процесса, будет писать функцию редактирования свойств, которая будет лишь "редактировать" свойства, но не сохранять\отменять или переходить на другие вкладки, оставляя возможность выбора дальнейших действий и, соответственно,  возможность использования этой функции в максимальном количестве скриптов. &lt;br /&gt;&lt;br /&gt;9. Структура: все функции и методы должны иметь уникальные имена. В скрипте функций ("Reference")- "говорящее название" (например, function DeleteChildClass()). в основном скрипте ("Main")- неполный номер ТС после названия функции. (например, function DeleteChildClass11231(), где А0011231- номер ТС). Это нужно для того, чтобы не путать фукнкции из "Local _Reference" и "Reference" скриптов. А это возможно, потому что один скрипт может содержать в себе одинаковые проверки, но с, допустим, различными данными: в одном случае это будет стандартная проверка (вызов из "Reference"), в другом- специфическая (вызов из "Local _Reference"). Действия почти одни и те же,  имена функций похожи, но обязаны различаться. &lt;br /&gt;&lt;br /&gt;10. В функции первым комментом должно идти описание того, что эта функция делает. (например, "// Создание "testclass""). Чтобы не ломать голову читая сам скрипт.&lt;br /&gt;&lt;br /&gt;11. В "Main" скрипте также должно быть описание того, что этот ТС делает ("// создание класса ").&lt;br /&gt;&lt;br /&gt;12. Все скрипты, обращающиеся к другим скриптам должны иметь ссылки на них в начале скрипта. Особенность инструмента. Собственно, без этого ссылки работать не будут.&lt;br /&gt;&lt;br /&gt;13. Все функции должны иметь структуру "try-catch". Весь набор скриптов не должен останавливаться при выпадании исключения приложения.&lt;br /&gt;&lt;br /&gt;14. Скрипт должен быть написан в соответствии с ручным ТС. То есть с выделением и обозначением шагов (групп шагов), предустановок и постустановок. (допускается copy\paste &lt;span style="font-style:italic;"&gt;описания шага&lt;/span&gt; из ручного ТС).&lt;br /&gt;&lt;br /&gt;15. Отправляемые в лог сообщения и ошибки должны быть понятны всем участникам разработки. Не забываем, что результаты прогонов автотестов будут смотреть все желающие.&lt;br /&gt;&lt;br /&gt;16. Функции в скрипте должны быть разграничены: "\\***". Просто для облегчения восприятия. Отлично работает "сворачивание".&lt;br /&gt;&lt;br /&gt;17. Скрипт должен безопасно работать с приложением (метод "terminate()" недопустим в обычных тестах). &lt;br /&gt;&lt;br /&gt;18.  Верификация "внешнего" вида (GUI) должна быть сведена к минимуму. Тестирование основано на описании состояний системы.&lt;br /&gt;&lt;br /&gt;19. Чем большее количество свойств системы верифицируется- тем лучше&lt;br /&gt;&lt;br /&gt;20. Необходимо учитывать связанность выполнения съюта тесткомплитом. тем не менее должна быть возможность собирания отдельных съютов для тестирования тех или иных задач.&lt;br /&gt;&lt;br /&gt;21. Обращение к процессам и их объектам должно осуществляться через переменные ("w1 = p1.QAdminForm; w2 = w1.treeViewClass;").&lt;br /&gt;&lt;br /&gt;22. Скрипты и функции должны писаться с учетом того, что каждый из них может быть (и будет ) использован в другом скрипте или функции. Поэтому необходимо предусматривать варианты их апргрейда с выявлением зависимых ТС и их составляющих (методами занесения ошибок в лог, верификацией (в том числе дополнительной)). так же необходимо предусматривать обратную связь при внесении изменений. тесткомплит поддерживает ссылки на функции и ТС. таким образом при модификации и внесении изменений необходимо вносить их в целое дерево внутренней структуры. Начинать необходимо с внесения обязательных изменений (с решением и модификации или создании новых функций), двигаться строго в направлении от "ствола" дерева к его "ветвям". каждый случай должен обсуждаться отдельно. Идеальный вариант- определенный известный набор скриптов обращается к модифицированной функции, при этом не падают остальные скрипты и ТС. таким образом получаем минимальные затраты на модификацию. все функции в скрипте "Reference" должны быть актуальными в любой момент времени и соответствовать описанию работы приложения.&lt;br /&gt;&lt;br /&gt;23.  После выполнения каждого скрипта должны быть выполнены соответствующие действия по возврату к исходному сосоянию (за исключением оговоренных случаев).&lt;br /&gt;&lt;br /&gt;24. Все имена объектов и значения свойств, используемых в методах и функциях- из Object Brouser Тestcomplete методом copy\paste. Так как не все символы видимы в Object Brouser. (такие как пробел). Хотя тут нужно пинать разработчиков.&lt;br /&gt;&lt;br /&gt;25. Координатный клик допустим только в исключительных случаях.&lt;br /&gt;&lt;br /&gt;26. Структура скрипта должна быть удобна для понимания и выделения отдельных методов и вызовов функций.&lt;br /&gt;&lt;br /&gt;27. BuiltIn.Delay() допустим только в исключительных случаях. Пользуемся методами Wait...&lt;br /&gt;&lt;br /&gt;28.  В названии объекта (к которому обрщаемся) должно быть указано максимальное количество постоянных неизменяемых символов. Есть вероятность появления похожих по названию объектов.&lt;br /&gt;&lt;br /&gt;29.  Не допускается пропуск верификации отдельных функций, если они многократно проверены предыдущими скриптами в съюте. так как из этих скриптов могут быть собраны в будущем другие съюты.&lt;br /&gt;&lt;br /&gt;30. При удалении, модификации объектов метаданных, должна быть проведена дополнительная верификация работы с "нужным" объектом, где должны отразиться эти изменения (сугубо специфично).&lt;br /&gt;&lt;br /&gt;31. При блокировке выполнения скрипта, в лог должна отправляться ошибка с указанием номера бага.&lt;br /&gt;&lt;br /&gt;32. Недопустимо многократное повторение одних и тех же шагов. Необходимо использовать стандартные операторы, функции, методы, циклы языка JScript.&lt;br /&gt;&lt;br /&gt;33. Все новые скрипты должны добавляться в VSS (потом TFS). в конце дня- check in.&lt;br /&gt;&lt;br /&gt;34. Приоритеты: сначала поддержка скриптов в актуальном состоянии, потом - создание новых скриптов.&lt;br /&gt;&lt;br /&gt;35. При модификации скрипта, уже работавшего ранее, связанной с изменением в приложении, должно быть не более трех сохранений до получения рабочего скрипта. (количество прогонов после каждого сохранения не ограничено). если после 3го изменения и сохранения скрипт не работает-необходимо проинформировать руководителя тестировщиков (автоматизаторов).&lt;br /&gt;&lt;br /&gt;36. При "ссылочном" методе поиска функции, в которую необходимо внести изменения- необходимо убедиться в ее неактуальности; в том, что именно в нее должны быть внесени изменения.&lt;br /&gt;&lt;br /&gt;37. copy\paste кода скрипта недопустим! скорость создания скриптов обеспечивается использованием уже написанных функций, а не копированием кода.&lt;br /&gt;&lt;br /&gt;38. Допускается клонирование проектов, с незамедлительным внесением изменений в названия проекта, скриптов, функций, объектов и код скриптов. Рабочий скрипт (если таковой присутствует необходимо очищать от старого скопированного кода). Добавление новых проектов или элементов проектов к TFS- только после внесения описанных выше изменений.&lt;br /&gt;&lt;br /&gt;39. Все дополнительные приложения, вызываемые из скрипта, должны быть приведены к общему виду (например, во весь экран, масштаб 100%), а затем сравнены с эталоном.&lt;br /&gt;&lt;br /&gt;40. Все скрипты должны использовать только БД, созданную для автоматизированного тестирования. каждый вечер она автоматически бэкапится.&lt;br /&gt;&lt;br /&gt;41. Лучше чаще использовать возможности Object Brouser (свойства и методы), чем Recorder.&lt;br /&gt;&lt;br /&gt;42. Необходимо учитывать расположение исполняемых файлов, для запуска приложения. оптимальный вариант- использование установщика приложения и запуск из директории установки.&lt;br /&gt;&lt;br /&gt;43. Скрипт должен отправлять в лог такие сообщения\ошибки, чтобы были понятны причина возникновения исключения и его "местоположение" (во время выполнения). То есть, если, например, сравниваются свойства какого-либо объекта, и какое-то свойство имеет значение, не соответствующее ожидаемому, то сначала в лог должна отправиться ошибка с указанием на различие, а потом уже автоматическая ошибка, что ТС fails.&lt;br /&gt;&lt;br /&gt;44.  Структура скрипта должна предусматривать возможность запуска и выполнения скрипта под различными ОС (XP, Vista, Serv 03, 08) (первоначально- Vista и XP); То есть методы и функции должны быть написаны с учетов всех соответствующих различий в ОСах- необходимо максимально стремиться к унификации функций относительно различных ОС, в тех случаях, где это невозможно- должны быть написаны различные функции под все необходимые ОС, и взависимости от вида ОС, должны выбираться те или иные функции, методы, переменные и т.д.&lt;br /&gt;&lt;br /&gt;45. В скрипте должно содержаться максимально допустимое количество проверок свойств приложения. (У каждого объекта существует несколько свойств, пригодных для верификации, обычно существует большое количество таких объектов в любой момент времени). &lt;br /&gt;&lt;br /&gt;46.  В случаях, когда невозможно избежать применения схожих (повторяющихся) действий при работе с приложением, необходимо применять различные концептуальные подходы к описанию и, соответственно, к выполнению этих действий. Для более полного охвата тестируемого функционала и методов работы с ним.&lt;br /&gt;&lt;br /&gt;47. При выборе объектов, например, в дереве (tree) должен использоваться метод Select(), а не Click() там, где это возможно.&lt;br /&gt;&lt;br /&gt;48. Необходимо учитывать, что на разных ОСях, на виртуалках и при удаленном доступе могут быть задержки выполнения скрипта. Поэтому необходимо использовать "Wait*" методы при написании скрипта там, где это возможно.&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/4027263932695413933-8744281396291914775?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/8744281396291914775/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/testcomplete.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/8744281396291914775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/8744281396291914775'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/testcomplete.html' title='Правила написания скриптов автотестов (TestComplete)'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-5222305537637285339</id><published>2009-09-24T15:26:00.000+04:00</published><updated>2009-09-30T14:14:29.194+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='правила'/><category scheme='http://www.blogger.com/atom/ns#' term='тест кейс'/><category scheme='http://www.blogger.com/atom/ns#' term='регламент'/><title type='text'>Правила написания тест кейсов</title><content type='html'>Как и предполагал в предыдущих постах, выкладываю эти нехитрые правила. Своим созданием они обусловлены были достаточно большой вероятностью появления в нашей организации тестировщиков с небольшим опытом, либо без такового вообще. Поэтому постарался адаптировать простые истины под нашу специфику: &lt;br /&gt;&lt;br /&gt;1. у каждого тест кейса (ТС) уникальное имя и ID (Без этого никуда- ибо различать и не путать тест кейсы необходимо, а при наборе их в тестран такие вещи не исключение. Не забываем, что на один юз кейс может быть написано достаточно много очень похожих тест кейсов, но проверяющих совсем разные вещи или работающих в разных условиях. Необходимо их различать.) Напомню, что нумерацию тест кейсов я вводил на стадии формирования дерева юз кейсов. Делалось это примерно так: Уникальный номер тест кейса состоит из буквы (С- клиент(client), A -администратор (admin))и семи цифр. Если в указанном ниже номере присутствует менее семи цифр, необходимо добавить нужное количество нулей в конец номера. Например, тест кейс, где производится верификация количества попыток логина при неправильном пароле (первый в списке), имеет номер C1111100, второй C1112100:&lt;br /&gt;1. Общие тесты приложения:&lt;br /&gt;    1.1 Логин:&lt;br /&gt;         1.1.1 Некорректный:&lt;br /&gt;                 1.1.1.1 Некорректный пароль:&lt;br /&gt;                            1.1.1.1.1 Количество попыток;&lt;br /&gt;                 1.1.1.2 Корректный пароль:&lt;br /&gt;                            1.1.1.2.1 Количество попыток;&lt;br /&gt;В моем случае основной состав дерева был уже сформирован, когда пришло время браться за нумерацию. Поэтому прикинуть необходимое количество цифр для номера труда не составило. Однако необходимо помнить о вероятных перестановках структуры дерева и практически 99%ных добавлениях новых тест кейсов, и предусмотреть возможные перекомбинации номеров. &lt;br /&gt;&lt;br /&gt;2. Должен быть указан приоритет ТС (поговорим отдельно), цель (цель проверки- что именно проверяем), источник информации(спек, список требований (ссылки на требования в системе управления требованиями), и т.д.), категория (например, функциональный, юзабилити, стресс и др.), тип (ручной, автоматический), версия.&lt;br /&gt;&lt;br /&gt;3. Предустановки- обязательны. (как правило, каждый ТС должен быть доступен для выполнения как в составе съюта, так и в составе произвольного набора ТС; так и в отдельности от других ТС). Соответственно должны (могут) быть  описаны действия по завершению ТС, но не входящие в его тело- "постустановки" (особенно для автоматизированного тестирования). &lt;br /&gt;&lt;br /&gt;4. Версия ТС- обязательна для заполнения и отслеживания. Формируется от "0.01". Версии изменения самих шагов (непринципиальные): +0.01. Версии изменения последовательности шагов (наряду с изменениями внутри некоторых шагов): +0.1 (с округлением: 0.14-&gt;0.20).Версии глобальных изменений (или крупных и многочисленных изменений в соответствии с предыдущим вариантом) +1.00 (1.23-&gt;2.00).&lt;br /&gt;&lt;br /&gt;5.нумерация шагов- по порядку. Без комментариев :)&lt;br /&gt;&lt;br /&gt;6. Действие (Action)- конкретное описание конкретного действия (необходимо предусматривать возможность разностороннего получения одного и того же результата (в минимальных отступлениях, например, контекстное меню и выбор меню из тулбара), и предоставлять выбор при выполнении ТС. Для более полного охвата функционала от итерации к итерации тестирования.) Необходимо помнить, что чрезмерный разброс действий- крайне недопустим. Так же необходимо учитывать то обстоятельство, что по ручным ТС пишутся автоматические скрипты (TS). Поэтому необходимо учитывать инвариантность выполнения ТС скриптом. (То есть если в некотором скрипте была описана последовательность действий через, например, контекстное меню, то- в другом логично реализовать это через вызов меню из тулбара, и наоборот.). В отдельных случаях (например, при тестировании в ТС конкретно вызова функции\метода из меню тулбара) должна быть описана именно эта последовательность действий и никакая другая. Так же это должно быть отражено в названии и, главное, в цели самого ТС.&lt;br /&gt;&lt;br /&gt;7. Ожидаемый результат (Result)- конкретное описание состояния приложения или конкрентой его части. должно включать в себя не только описание текущего объекта(ов), но и окружающую среду. Например, при тестировании ввода текста в ворде должно быть описано не только то, что текст введен, но и то, что он имеет стандартный формат, не выделен, не курсив и т.д., а также, что ворд имеет стандартный вид (отображены стандартные кнопки\панели, и не имеет "специальных" "отклонений", которые могут быть вызваны дополнительными действиями пользователи или машины).&lt;br /&gt;&lt;br /&gt;8. В Любом корректном ТС должно быть не более 10-12 шагов. Отдельные исключительные случаи оговариваются отдельно.&lt;br /&gt;&lt;br /&gt;9. При написании ТС необходимо руководствовавться всей доступной информацией для отражения последних (и возможных!) изменений приложения. Необходимо закладывать на будущее вероятность изменений приложения и заранее обдумывать принцип построения ТС для последующей модификации (если таковая понадобиться) при наименьших временных и ресурсных затратах.&lt;br /&gt;&lt;br /&gt;10. Шаги в ТС должны быть описаны четко и понятно даже для неподготовленного человека, но тем не менее должны быть описаны в соответствии с принятым глоссарием, который формируется параллельно. При принятии решений о переименовании того или иного объекта или действия все ТС должны быть модифицированы централизованно.&lt;br /&gt;&lt;br /&gt;11. Модификация ТС осуществляется централизовано и только при необходимости внесения критичных изменений. (нет необходимости перебирать все ТС ради изменения названия кнопки). Некритичные изменения должны накапливаться, хранится в общем доступе и отслеживаться. Количество накапливаемых изменений ограничено и должно быть регулярно согласовано.&lt;br /&gt;&lt;br /&gt;12. Поиск шагов(слов, действий) в ТС должен осуществляться автоматическими средствами поиска (например, ctrl+F). Здесь есть, конечно, некая зависимость от среды, где хранятся ТС.&lt;br /&gt;&lt;br /&gt;13. При нахождении нужного места(шага) необходимо убедиться в его неактуальности и потребности изменений. (так как в ТС могут быть описаны специфические вызовы функций (например, вызов старого функционала)).&lt;br /&gt;&lt;br /&gt;14. Недопустим Copy\Paste и последующее сохранение ТС (при создании нового или модификации существующего ТС). Допустим вариант: создание, Copy\Paste, внесение изменений в атрибуты ТС (номер, название, цель, и тд), внесение изменений в тело ТС, и только потом сохранение. Хотя выгоднее писать каждый ТС с нуля, все мы помним о времени.&lt;br /&gt;&lt;br /&gt;15. Все ТС должны быть структурированы и сгруппированы по тестируемому функционалу.&lt;br /&gt;&lt;br /&gt;16. Допускается создание необходимого количества съютов, для регрессионного тестирования. Вопрос должен обсуждаться индивидуально для каждого случая. Помня о времени, затрачиваемом на разработку вообще и на тестирование в частности, правильнее будет  собрать набор только из ТС, которые необходимо протестировать, а не из всех подряд.&lt;br /&gt;&lt;br /&gt;17. ТС должны писаться в соответствии с расстановкой приоритетов- в начале должны быть описаны ТС "приемочного" типа. Таким образом будет производится дымовое тестирование приложения. Нет смысла тестировать неработоспособное приложение. Затем пишутся ТС, покрывающие основной функционал приложения и другие.&lt;br /&gt;&lt;br /&gt;18. Все баги, дефекты, недочеты должны быть сколлекционированы (баги в систему багтрекинга, по недочетам, неточностям- отсылка писем, сообщений, вопросов). ТС должен быть написан, даже если существует баг, непозволяющий его выполнить на данный момент. При этом в ТС ставится пометка, что он bloked by #### (номер бага) и незакончен для редактирования(в системе багтрекинга этому багу проставляются номера ТС, на которые он влияет, чтобы после фикса бага не искать их; теем не менее должен быть проведен автоматический поиск по ТС, так как на момент постинга бага в систему окончательно не известно- все ли ТС тестирующие эту область написаны.Могут быть написаны новые ТС.). Как только баг пофиксен- ТС должен быть закончен и включен в исполняемые съюты.&lt;br /&gt;&lt;br /&gt;19. план написания ТС- пополняемый и изменяемый. При открытии новых областей, которые должны быть протестированы, в начале корректируется план, вносятся изменения, характеризующие изменения и дополнения в съютах. А затем уже непосредственно пишутся и вносятся в систему новые ТС, изменяется старая структура. Все действия должны быть согласованы. Например, в тфс это делалось просто линками между соответствующими объектами тфс.&lt;br /&gt;&lt;br /&gt;20. Все существенные изменения должны быть задокументированиы автором изменений и хранится в связке с каждым ТС, который был модифицирован. То есть должны быть: дата , автор, характер изменений (или сами изменения). Можно взять за основу комментарий к чекину, но чекинить за один раз придется по одному модифицированному ТС.&lt;br /&gt;&lt;br /&gt;21. Все ТС должны быть в актуальном состоянии. Допускается "запаздывание" актуализации при неясном окончательном функционале. Не допускается начало работ по актуализации ТС при неясном окончательном функционале. Никому не нужна лишняя бесполезная работа.&lt;br /&gt;&lt;br /&gt;22. Все баги должны быть покрыты ТС-ами. Все требования должны быть покрыты ТС-ами. Весь описанный функционал должен быть покрыт ТС-ами. В идеале :)&lt;br /&gt;&lt;br /&gt;23. Все результаты выполнения тестирования должны хранится в системе учета и хранения результатов. Или в любом доступном, подходящем месте.&lt;br /&gt;&lt;br /&gt;24. Необходимо исключать повторение действий, уже описанных в других ТС. Там, где это невозможно, допустимо описывать необходимые действия в предустановках или в теле ТС. (например, приложение находится в таком-то состоянии, открыто такое-то окно, с такими-то свойствами, то есть без указания конкретных действий).&lt;br /&gt;&lt;br /&gt;25. Сначала должны быть описаны положительные ТС, потом отрицательные. Допускается одновременное внесение в план обоих типов ТС.&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/4027263932695413933-5222305537637285339?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/5222305537637285339/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_24.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/5222305537637285339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/5222305537637285339'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_24.html' title='Правила написания тест кейсов'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-2062508358207307044</id><published>2009-09-23T16:04:00.000+04:00</published><updated>2009-09-23T16:08:11.782+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='тестирование'/><category scheme='http://www.blogger.com/atom/ns#' term='автотест'/><category scheme='http://www.blogger.com/atom/ns#' term='правило'/><category scheme='http://www.blogger.com/atom/ns#' term='линк'/><category scheme='http://www.blogger.com/atom/ns#' term='регламент'/><category scheme='http://www.blogger.com/atom/ns#' term='скрипт'/><title type='text'>Проект одного тестировщика часть 4</title><content type='html'>Итак- конвейер заработал. Автотесты прогонялись, тест кейсы писались, скрипты автотестов совершенствовались, дополнялись и увеличивались в количестве. Конечно, это происходило не так быстро как хотелось бы, ведь были еще и задачи в рамках ручного тестирования, и в рамках других направлений. Поэтому, как и считается, лучше иметь выделенного тестировщика, который будет заниматься автотестами и только ими (ну может быть за редким исключением). Потому что даже просто переключиться между задачами по &lt;br /&gt;кодированию и, например, по ручному тестрованию одного из множества приложений- осуществить быстро практически невозможно, на это в любом случае необходимо время. Необходимо помнить об этом и во время планирования работ отдела тестрования, но.. опять я забегаю вперед... &lt;br /&gt;Примерно к этому моменту у нас появился TFS от всем известной конторы. Перенос багов, зарепорченных в старую систему, решено было не делать. Просто какое-то время использовались обе системы, а когда непофиксенных остались единицы (в старой системе)- перенес их ручками. Все проекты ТестКомплита перенес туда же- на хранение и отслеживание изменений в tfs. Очень удобно иметь систему, в которой можно залинковать все тестовые артефакты друг на друга. Есть встроенная система управления требованиями. Они линкуются на задачи, баги. Эти в свою очередь - на тест кейсы (скрипты автотестов) и т.д. Таким образом всегда можно увидеть почему те или иные автотесты не выполняются успешно; то есть посмотреть, какие баги необходимо пофиксить\задачи выполнить, для успешного прохождения тестрана, и, сответственно, для закрытия итерации разработки (если таковые венчаются успешным тестрованием). На основе этой же системы был организован билд сервер, который автоматически собирал билды после каждого чекина. Таким образом у нас уже имелся некоторый набор билдов, который можно было хранить и при необходимости на него ссылаться. Решено было хранить только релизные (итерационные) билды (итерация -  каждую неделю). По поводу необходимости- в баг репорте ставится ссылка на билд, в котором найден этот баг, и при необходимости всегда можно на этот баг посмотреть. А также плезно всегда иметь под рукой версии, которые были отданы (здесь обычно пишут- заказчику, но у нас все гораздо сложнее)(зарелизены). &lt;br /&gt;К этому моменту уже длительное время было ясно, что одному ворочать все это дело невозможно. Поэтому на начальство регулярно сыпались заявления, типа "сделаю по максимуму, но вот если бы у нас были еще тестировщики, мы бы такого наваяли, что  ух...". &lt;br /&gt;Когда стало ясно, что расширению быть, встал вопрос- как организовать свою работу так, чтобы и уделять время обучению новичков, введению их в курс дела, ответам на море вопросов, и успевать справляться с текущими делами. Были недолгие раздумия и воспоминания чего же мне было нужно самому, чтобы максимально быстро освоиться в новой компании и влиться в процесс разработки. Как результат- решил написать правила и регламенты по основным деятельностям в области тестирования. Лучше потратить немного времени на описание процесса, нежели несколько раз рассказать это нескольким людям, а потом еще и пересказывать по мере необходимости. Всегда проще и быстрее ткнуть туда, где можно прочитать. А потом при необходимости задать вопросы, причем  в нужное (оговоренное) время. Потом получилась очень приличная экономия. Эти правила в &lt;br /&gt;ближайшее время и выложу сюда. Но они будут достаточно специфичными, заточенными под конкретную организацию и конкретные инсрументы, хотя в их полезности не сомневаюсь. Может кому и сгодится. А вообще  эти посты в первую очередь для меня самого и моих коллег:) &lt;br /&gt;Правила разместил в общем доступе- в нашей вики. Там же разместил и список линков на инет источники, которые на мой взгляд содержат полезную информацию. Так как по тестированию вообще и по его частностям написано уже не мало литературы, решил не повторяться и создать на базе тфс библиотеку тестировщика, в которую вошли (и пополняются) произведения, подходящие под нашу специфику. В том числе и журналы по &lt;br /&gt;тестрованию ПО, коих сейчас выпускается в достаточном количестве. Некоторые линки: http://it4business.ru/forum/forum192.html&lt;br /&gt;http://software-testing.ru/&lt;br /&gt;http://www.qatutor.com/&lt;br /&gt;http://javascript.ru/tutorial/basic/types&lt;br /&gt;http://alexeybulat.blogspot.com/2008/05/dynat.html&lt;br /&gt;http://openquality.ru/news/&lt;br /&gt;http://www.sqaforums.com/postlist.php?Cat=0&amp;Board=UBB46&lt;br /&gt;http://blogs.msdn.com/micahel/archive/2004/06/09/151778.aspx&lt;br /&gt;http://www.satisfice.com/blog/&lt;br /&gt;http://www.satisfice.com/kaner/&lt;br /&gt;http://bugsclock.blogspot.com/&lt;br /&gt;http://www.protesting.ru/&lt;br /&gt;http://www.stsc.hill.af.mil/crosstalk/2002/04/leishman.html&lt;br /&gt;http://www.context-driven-testing.com/&lt;br /&gt;http://www.stickyminds.com/testandevaluation.aspObjectType=MIXEDTA&amp;function=Search&amp;newtopcat=SWTST&lt;br /&gt;http://googletesting.blogspot.com/&lt;br /&gt;http://www.linuxtopia.org/online_books/javascript_guides/javascript_faq/index.htm&lt;br /&gt;http://blog-of-roman.blogspot.com/2008/07/cmmi.html&lt;br /&gt;http://pankratov.org.ua/&lt;br /&gt;http://blogs.msdn.com/imtesty/default.aspx&lt;br /&gt;http://zibsun.livejournal.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-2062508358207307044?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/2062508358207307044/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/4.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/2062508358207307044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/2062508358207307044'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/4.html' title='Проект одного тестировщика часть 4'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-497708605080297264</id><published>2009-09-22T10:16:00.000+04:00</published><updated>2009-09-30T14:17:24.898+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='юз кейс'/><category scheme='http://www.blogger.com/atom/ns#' term='автотест'/><category scheme='http://www.blogger.com/atom/ns#' term='тесткомплит'/><category scheme='http://www.blogger.com/atom/ns#' term='MBT'/><category scheme='http://www.blogger.com/atom/ns#' term='стратегия'/><category scheme='http://www.blogger.com/atom/ns#' term='тест план'/><category scheme='http://www.blogger.com/atom/ns#' term='тест кейс'/><category scheme='http://www.blogger.com/atom/ns#' term='скрипт'/><title type='text'>Проект одного тестировщика часть 3</title><content type='html'>Следующей задачей решил поставить себе описание стратегии тестирования (в первом приближении). В первом потому, что очень много вопросов организации процесса тестирования были на тот момент без ответа. И поиск этих ответов мог занять достаточно продолжительное время. Поэтому оптимальным виделось набросать &lt;br /&gt;примерный вариант, а потом по мере необходимости дополнять и корректровать его. Разместил в вики для удобного доступа всем желающим. Вглядело это примерно так:&lt;br /&gt;&lt;br /&gt;1. Этап подготовки, включающий в себя создание выделенного тестового окужения. На данном этапе ограничился лишь выделением БД, которые больше никем использоваться не будут, а также необходимо было решить вопрос их восстановления на начальный уровень. (Все остальные задачи, такие как выделение тестовых машин, серверов и др. решались позже). Напомню, что при работе приложения с БД, при автоматизированном тестировании необходимо иметь стабильные, зафиксированные данные для обеспечения возможности верификации. Этот вопрос решил созданием 2 баз- основная и ее бекап, и добавил политики безопасности, чтобы работать с ними никто кроме меня не мог. Запуск автотестов решено было организовать в ночь, чтобы не занимать мою тестовую машину днем, а также чтобы не слишком грузить сервер в течение дня, потому как выполнение автотестов требует до 60% процессора. Таким образом оставалось лишь сделать автоматическое восстановление базы с ее бекапа, и, так как это тоже требовало времени (в моем случае около 2 часов), рассчитать время запуска восстановления. Чтобы оно завершилось к моменту запуска автотестов. Что и было с успехом выполнено.&lt;br /&gt;&lt;br /&gt;2. Написание тест кейсов по первым пунктам тест плана. Вернее сначала был написан сам тест план. Это было сделано следующим образом. Документация на тот момент уже имелась, работоспособное приложение- тоже. Поэтому решено было для начала выделить области приложения, которые будут содержать тесты одной функциональной группы. То есть сгруппировал юз кейсы (именно юз кейсы) по функциональным признакам. Юз кейсы писал используя спек и приложение. Таким образом получилось дерево юз кейсов. Примерный вид: &lt;br /&gt;1. Общие тесты приложения&lt;br /&gt;1.1 Логин:&lt;br /&gt;1.1.1 Корректный;&lt;br /&gt;1.1.2 Некорректный;&lt;br /&gt;Далее производилось необходимое уточнение, более мелкая разбивка. А потом на каждый юз кейс осталось написать необходимое количество тест кейсов. Что и было сделано. Тут же следует отметить, что когда было готово дерево юз кесов (ну почти готово, так как изменения все равно впоследствии вносились), решено было задать номера юз кейсов, как на примере. Таким образом выстроилась система нумерации тест кейсов, что позволило избежать путаницы в будущем и оптимально разбить группы по номерам. Причем это было сделано так, что просто по номеру сразу можно было определить принадлежность конкретного тест кейса к той или иной группе, и при невыполнении его сразу прикинуть какой функционал неработоспособен. Во время написания тест кейсов возник стандартный вопрос- где их лучше всего хранить. Причем сразу заинтересовала возможность хранить где-нибудь рядом и результаты их выполнения. Но так как ТестКомплит предоставляет &lt;br /&gt;отличный лог выполнения, который можно и экспортировать и отсылать на мыло автоматически, решено было хранить результаты все же отдельно от тест кейсов. (Обращу внимание, что ручного тестирования в больших количествах не предполагалось). Также хотелось сделать хранение в свободном доступе, с возможностью редактирования, журналирования. В результате остановился на той же вики. Были проблемы при размещении там таблиц, но они быстро решились установкой необходимых плагинов. А тест кейс у меня представляет собой таблицу с набором необходимых полей и их значений:&lt;br /&gt;Имя: Название тест кейса&lt;br /&gt;ID: С1312000             &lt;br /&gt;Приоритет: 1&lt;br /&gt;Цель:   верификация меню.&lt;br /&gt;Источник: спек, требования...        &lt;br /&gt;Категория:  Functional&lt;br /&gt;Предустановки:  Приложение запущено.   &lt;br /&gt;Type:  Manual      &lt;br /&gt;Version  0.01&lt;br /&gt;Исполнительная часть:&lt;br /&gt;Action  Expected Result&lt;br /&gt;&lt;br /&gt;3. В итоге на некоторый момент имелся набор тест кейсов. Не забываем, что чем раньше будет введено в эксплуатацию автоматическое тестирование, тем лучше (это  в моем конкретном случае). Поэтому решил выделить некоторую группу тест кейсов и написать по ним скрипты автотестов. О порядке формирования такой группы напишу отдельно, скажу сразу, что нужно было определиться с функционалом, который необходимо тестировать именно в первую очередь. Какие-то вещи могут и подождать.  По мере написания скриптов вырабатывались некие правила, стандарты, о которых тоже напишу отдельно. Это включало в себя  "стандартизацию" скриптовых элементов и вынесение этих элементов в отдельное хранилище для облегчения и укорения последующей модификации и ускорения написания новых скриптов. Это хранилище потом планировалось оформить в библиотеку длл. Затем была отладка скриптов, тестирование, анализ результатов, подготовка к автоматическому запуску.&lt;br /&gt;Так же при написании необходимо было учесть, что прогоняться автотесты планировалось на нескольких ОС, что накладывало свой отпечаток. Отмечу, что разные Windows имеют разные особенности в таких моментах, как пути до вроде бы стандартных папок и каталогов, и самое главное- различные пути до объектов на форме приложения. Поэтому приходится придумывать решения, которые позволяют обойти такие моменты.&lt;br /&gt;Еще один немаловажный фактор- я заранее знал, что интерфейсы наших приложений будут переделаны. Не уточнялось только- когда это будет. Тем не менее тестировать существующую реализацию тоже необходимо. Соответственно решено было писать скрипты так, чтобы при переделках интерфейса минимизировать апдейт скриптов ибо время-деньги, лень и т.д. Какое-то время раздумывал над возможностью такой реализации. Потом &lt;br /&gt;принял рещение использовать Model Based Testing - тестирования, основанного на описаниях состояний системы и их изменениях (абстрагируемся от GUI). Это позволило мне иметь в каждый конкретный момент времени большинство работающих скриптов и минимизировать время на отладку остальных из-за изменений приложения.&lt;br /&gt;В общем итоге - такой набор позволил мониторить состояние основных функций софта в каждый конкретный момент времени, что позволило постепенно переключаться на другие пункты тест плана, и другие задачи.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-497708605080297264?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/497708605080297264/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/3.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/497708605080297264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/497708605080297264'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/3.html' title='Проект одного тестировщика часть 3'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-2208197483413983259</id><published>2009-09-18T14:15:00.000+04:00</published><updated>2009-09-30T14:16:39.680+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='работа'/><category scheme='http://www.blogger.com/atom/ns#' term='цели'/><category scheme='http://www.blogger.com/atom/ns#' term='задачи'/><category scheme='http://www.blogger.com/atom/ns#' term='QTP'/><category scheme='http://www.blogger.com/atom/ns#' term='тестрование'/><category scheme='http://www.blogger.com/atom/ns#' term='автоматизация'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='TestComplete'/><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><category scheme='http://www.blogger.com/atom/ns#' term='Bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='разработчик'/><title type='text'>Проект одного тестировщика часть 2</title><content type='html'>Продолжая, вспоминаю, "как все начиналось".&lt;br /&gt;Поставил себе несколько целей на начальном этапе:&lt;br /&gt;&lt;br /&gt;1. Побыстрее перезнакомиться со всеми разработчиками и &lt;br /&gt;изменить их (существующее на тот момент) отношение к тестированию вообще и тестировщикам в частности. Благо некоторые из них все прекрасно понимали, некоторые получали команды сверху типа "оказывать всяческое содействие", ну а с некоторыми мы ходили пить пиво. Тут стоит упомянуть, что для этого необходимо было заранее заручиться 100% поддержкой сверху. Ибо если начальство не  заинтересовано в &lt;br /&gt;организации тестирования, если оно не видит в этом смысла или не может подсчитать ROI- ничего хорошего от внедрения процесса тестирования не получится.&lt;br /&gt; &lt;br /&gt;2. Второй задачей было собрать максимум информации о разрабатываемом софте. Тут без начальства тоже не обошлось. Но и активное общение приносило свои плоды. В итоге информация появлялась, и можно было разбираться непосредственно с софтом, логикой его работы. Это был еще, конечно, далеко не спек, но намного лучше, чем ничего. Примерно на этом этапе попутно решили создавать базу знаний на вики, в которую и решено было поместить прототип спецификации. К слову, там же решено было создать и базу знаний отдела тестирования, но об этом позже.&lt;br /&gt;&lt;br /&gt;3. Уделять достаточно времени на ручное тестирование отдельных модулей приложений. Здесь можно долго сокрушаться об отсутствии внутренних релизов, о внедрении которых напишу позже, но тем не менее разработка велась. Велась в бардаке... с элементами SCRUM. Поэтому периодически поступали задачи протестировать тот или иной функционал. И эти задачи должны были быть выполнены в независимости от остальных факторов. То есть бралась существующая документация по реализации задачи, брался ее разработчик, выяснялся "смысл жизни" (имею ввиду как оно должно работать и чего не должно делать) и проводилось тестирование. Тут сразу всплыл и пункт 4. &lt;br /&gt;&lt;br /&gt;4. Необходимо было определиться с багтрекинговой системой, попутно воюя со всеми, кто желал получить в результате тестирования файлик с багами. В этом направлении повезло в том, что в организации использовалась самописная система постановки, учета, выполнения задач для сотрудников, которая вполне сгодилась на первое время. Сгодилась потому, что все необходимые атрибуты дефект репорта вполне в ней &lt;br /&gt;нашлись и могли использоваться. Однако для объективной оценки возможностей и невозможностей этой самописной сисемы была попытка использовать Bugzilla для сравнения. То есть мы решили поднять у себя багзиллу и посмотреть на разницу между этими двумя системами. Про поднятие багзиллы можно очень долго рассказывать с использованием русских и английских идиоматических выражений в больших количествах. В принципе в инете есть описание сего процесса, есть решения сложностей, так что углубляться не стоит. В итоге на второй день поднял багзиллу и отдал на сравнение разному начальству. Тут имеет смысл сказать о том, что ни одна из этих двух систем не воспринималась как основная, на которой мы будем вести весь учет &lt;br /&gt;дефектов и т.д. Все потому, что на гаризонте уже маячил TFS со всеми его хвалеными возможностями и реалиями. И все потом планировалось завязывать на него. &lt;br /&gt;После сравнения мне сказали, что багзилла бедна функционально по сравнению со своей системой и мы ее юзать не будем. Сомнительно конечно, но... всегда сложнее переходить на что-то новое, чем использовать старое, проверенное, пусть даже и устаревшее. Идем дальше.&lt;br /&gt;&lt;br /&gt;5. Так как задумывалось регрессионное тестирование проводить в автоматическом режиме, необходимо было подобрать оптимальный инструмент для этого дела. Сразу скажу, что решение об использовании автоматизации принималось без меня. Но оно вполне обосновано, если учесть, что клиентских приложений второго типа (см. &lt;br /&gt;предыдущий пост) планировалось великое множество. Про выбор средств автоматизации написано достаточно много, есть тренинги. Чем я с удовольствием и воспользовался. Итак- на входе были следущие требования в инструменту: бесплатный или максимально дешевый (дело было в разгар кризиса, который наложил свой &lt;br /&gt;отпечаток :( ), обладал возможностью проведения тестирования Win приложений, web приложений, нагрузочного тестирования. Напомню, что требовалось тестировать: связка клиент-сервис-БД и 2 типа приложений (в первом &lt;br /&gt;можно создавать второй). Здесь куча всяческих ограничений, которые необходимо было учесть при выборе, которые при необходимости опишу позже. Также должна была быть возможность интеграции с VSS (и TFS в будущем), а также с Visual Studio 2008.Наверное не все вспомнил, но пусть так будет. В результате бесплатные инструменты как-то отпали по мере ознакомления, а из доступных платных остались TestComplete и &lt;br /&gt;QTP. Триальные версии обоих были успешно установлены и сравнивал уже непосредственно "в деле". К слову, у обоих достаточно понятная документация, некоторые вещи даже на русском языке есть, помог форум на ресурсе &lt;br /&gt;it4business.ru Это позволило достаточно быстро разобраться и пробовать применять инструменты в необходимых направлениях. По итогам выбран был TestComplete 6*.&lt;br /&gt;Завершилась эта задача намного позже, чем остальные. Все помнят простую истину- нельзя автоматизировать &lt;br /&gt;то, чего нет.&lt;br /&gt; &lt;br /&gt;Итак- в результате решения этих задач имелось то, что нужно тестировщику для работы, а именно: сам софт (я собирал сборки у себя, тогда, когда мне это было нужно); документация к нему (вики+отдельные доки); багтрекер; источники информации (я знал что, где, когда, у кого спросить\посмотреть\найти); одновременно с этим я уже мог планировать процессы и выстравать ряд задач по внедрению этих процессов. Здесь же &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/4027263932695413933-2208197483413983259?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/2208197483413983259/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/2.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/2208197483413983259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/2208197483413983259'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/2.html' title='Проект одного тестировщика часть 2'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-5680185473319418306</id><published>2009-09-17T12:47:00.000+04:00</published><updated>2009-09-30T14:15:57.896+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='тестирование'/><category scheme='http://www.blogger.com/atom/ns#' term='БД'/><category scheme='http://www.blogger.com/atom/ns#' term='сервер'/><category scheme='http://www.blogger.com/atom/ns#' term='автоматизация'/><category scheme='http://www.blogger.com/atom/ns#' term='отдел'/><category scheme='http://www.blogger.com/atom/ns#' term='клиент'/><title type='text'>Проект одного тестировщика</title><content type='html'>Жили-были в одной компании программисты. Были там и хорошие программисты, были и с небольшим опытом). Писали эти программисты хитрую и сложную софтину, которая представляла из себя клиент-сервис-БД связку. И вот однажды, когда объем стало невозможно не только тестировать самим (как могли), но и каждый программист стал понимать и помнить только ту часть, над которой он работал последнее время, руководство приняло решение- нужен тестировщик. Лучше- несколько. Но для начала один. Желательно чтобы не просто с опытом, а с опытом автоматизации тестирования дабы автоматизировать все и вся, и чтоб все само потом...&lt;br /&gt;&lt;br /&gt;Тут нужно прокомментировать особенность софта: клиентская часть представляла из себя: 1) толстого клиента, основная цель которого- создание прикладного ПО; и 2) толстого и веб клиентов, которые и представляли из себя это прикладное ПО, причем в неограниченном количестве приложений. Сервис представлял из себя сервис, через который работала вся эта прорва клиентов с другой прорвой-базами данных (реляционными и не реляционными, актуальными и не очень, популярными и редкими). Клиентов решили сделать кроссплатформными (Win\Unix).  А создание клиентов типа 2) доступным для непрограммистов (по крайней мере на высокоуровневых языках).  &lt;br /&gt;И вот на этапе, когда по всем направлениям ведется разработка, сделаны достаточно большие наработки. И даже написано немного документов, описывающих реализацию, пришел тестировщик...&lt;br /&gt;&lt;br /&gt;Я решил рискнуть. Да и проект показался мне интересным. Плюс ко всему был дан картбланш (ограниченный, конечно). Тем ценнее казался в перспективе полученный опыт организации тестирования в компании, создании отдела, автоматизации с нуля и т.д.&lt;br /&gt;Что из этого всего получилось- в серии следующих постов. В двух словах- процесс запущен, работает, приносит результаты.&lt;br /&gt;&lt;br /&gt;PS: Вообще думал написать статью, но опасаюсь ее размера. А "многа букаф", как известно, многие могут не осилить :) По частям и комментировать удобнее и обсуждать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-5680185473319418306?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/5680185473319418306/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_17.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/5680185473319418306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/5680185473319418306'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post_17.html' title='Проект одного тестировщика'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4027263932695413933.post-8830404404140159541</id><published>2009-09-17T12:20:00.000+04:00</published><updated>2009-09-17T12:47:18.098+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='тестирование'/><title type='text'>Время для первого сообщения</title><content type='html'>Вот кажется и нашлось оно... время. Время для ведения блога. &lt;div&gt;Как известно: "Найди время, а не оправдания." Я нашел.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Решил поделиться мыслями о тестировании ПО, но не только об этом. А также разбавить примерами из реального опыта одного тестировщика.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4027263932695413933-8830404404140159541?l=anairguru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anairguru.blogspot.com/feeds/8830404404140159541/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/8830404404140159541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4027263932695413933/posts/default/8830404404140159541'/><link rel='alternate' type='text/html' href='http://anairguru.blogspot.com/2009/09/blog-post.html' title='Время для первого сообщения'/><author><name>Andrey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_UXbl6mgC86E/SrIs4Et4yBI/AAAAAAAAAa0/WJexi7SvxoU/S220/112.jpg'/></author><thr:total>0</thr:total></entry></feed>
