tag:blogger.com,1999:blog-43718066257566042482024-02-06T20:46:58.155-08:0033 тестераwdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.comBlogger44125tag:blogger.com,1999:blog-4371806625756604248.post-70042297603227719372017-09-07T08:48:00.002-07:002017-09-07T08:48:49.451-07:00О тест кемпе на SQA Days-21После долгого перерыва - всем привет, ребят!<br />
<br />
Несмотря на то, что после SQA Days-21 в Москве прошло уже несколько месяцев, я бы хотел рассказать об интересном формате, который мы попробовали провести на этой конференции - Test Camp. Мы не собираемся останавливаться на этом единичном случае, поэтому хотелось бы провести что-то вроде ретроспективы: сделать выводы о том, что получилось, что - нет. Тех ребят, которым удалось поучаствовать в Test Camp (а я точно знаю, что некоторые участники читают мой блог :)) - очень прошу оставить обратную связь в комментариях.<br />
<a name='more'></a><b><br /></b>
<b>Предыстория</b><br />
<br />
Давайте начнем с предыстории.<br />
<br />
В зарубежном сообществе формат тест кемпа известен и используется уже довольно давно, но под другим названием - test lab (тестовая лаборатория). Тестовые лаборатории были организованы на нескольких конференциях (к примеру, на <a href="https://www.youtube.com/watch?v=-qubBGJ_SBs&feature=youtu.be">Eurostar</a>). Сообществу очень понравился этот формат, о чем свидетельствует множество положительных отзывов (например, почитайте короткий <a href="http://www.developsense.com/blog/2009/12/eurostars-test-lab-bravo/">отзыв Майкла Болтона</a>).<br />
<br />
Идея о проведении тестовой лаборатории на SQA Days возникла довольно давно, но, как часто бывает, ей не хватало импульса. В нашем случае тем самым импульсом, который помог реализовать эту идею, стало посещение Алексеем Федоровым тестовой лаборатории на Eurostar. Все-таки лучше один раз увидеть, чем много раз услышать :)<br />
<br />
<b>Формат</b><br />
<br />
Пару слов о самом формате.<br />
<br />
Тестовая лаборатория (или, по нашему, тест кемп) - место, где любой желающий может попрактиковаться непосредственно в тестировании или в других активностях, направленных на развитие полезных для тестировщика навыков.<br />
<br />
Обычно (по опыту зарубежных коллег) для тестовой лаборатории выбирается одна или несколько тем. Например, темой может быть исследовательское тестирование или тестирование мобильных приложений. Дальше идет подготовка практических заданий, с помощью которых эта тема будет раскрываться в рамках тестовой лаборатории: выбирается продукт для тестирования, придумываются активности, идет работа над вводной информацией, необходимой для участников. Внешне тестовая лаборатория выглядит как некоторое пространство с несколькими столами, флип чартами, ноутбуками. Вот как это выглядело на SQA Days:<br />
<iframe allowtransparency="true" frameborder="0" height="338" scrolling="no" src="https://www.facebook.com/plugins/post.php?href=https%3A%2F%2Fwww.facebook.com%2Fsqadays%2Fphotos%2Fa.815162008648615.1073741851.247977782033710%2F815193661978783%2F%3Ftype%3D3&width=500" style="border: none; overflow: hidden;" width="500"></iframe><br />
<br />
В общем, на словах все достаточно просто.<br />
<br />
<b>Содержание</b><br />
<br />
Не буду рассказывать о технической стороне организации (но скажу спасибо компании Luxoft за предоставленные ноутбуки, ручки и тетрадки!), а расскажу о содержании.<br />
<br />
После долгих размышлений мы выбрали 2 темы:<br />
<br />
<ol>
<li>Тестирование API.</li>
<li>Тестирование Internet Of Things.</li>
</ol>
<br />
<div>
Эти две темы мы собирались чередовать в течение дня. В перерывах мы решили проводить игровые активности - для того, чтобы разогреться, переключиться и, в общем-то, отдохнуть. Так выглядело расписание работы тест кемпа в первый день конференции:<br />
<iframe allowtransparency="true" frameborder="0" height="503" scrolling="no" src="https://www.facebook.com/plugins/post.php?href=https%3A%2F%2Fwww.facebook.com%2Fsqadays%2Fphotos%2Fa.815162008648615.1073741851.247977782033710%2F815185225312960%2F%3Ftype%3D3&width=500" style="border: none; overflow: hidden;" width="500"></iframe><br />
<br />
Дальше я расскажу подробнее о выбранных темах.<br />
<br />
<b>Тестирование API</b><br />
Выбор этой темы был сделан потому, что, на наш взгляд, это перспективное направление. Во-первых, API становится все больше. Во-вторых, существует куча интересных инструментов для API тестирования, которые можно попробовать. И, наверное, каждый тестировщик со временем столкнется с API тестированием (если еще не столкнулся). Поэтому полученные в рамках тест кемпа навыки, как мы планировали, пригодятся участникам.<br />
<br />
Участникам было предложено выполнить несколько практических заданий (на выбор), в рамках которых предлагалось использовать инструменты Fiddler, OWASP ZAP, Postman. В качестве продукта для тестирования использовался Tracks API. Продукт, как и некоторые идеи для практических заданий, был заимствован из очень хорошей книги по тестированию API - Automating and testing a REST API (автор Alan Richardson).<br />
<br />
Задания хранились на сайте, который был специально создан для тест кемпа. Участники могли помечать пройденные задания и тем самым получать доступ к более сложным заданиям (тут мы решили использовать простой механизм gamification). Кроме того, на сайте был таймер - для отслеживания времени выполнения задания. В любой момент участник мог остановить таймер и вернуться к заданию через какое-то время. Мы не рассчитывали, что каждый участник будет безвылазно сидеть в тест кемпе, все-таки главное на конференции - это доклады.<br />
<br />
Так выглядели задания на сайте:<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjthPK1BYqHrKeRh8AHqIRM9OLmNWLAX9JjL5hLgW_UqLfWYCL6qAG2eD9hwiY5d2VbI7XwtJpy_r4Wyv7XaRrsEnvfvj4DTO8SiF1R1ph8twhVBnGVQBGzk373AxQkXBzSKlY4biht37Ac/s1600/api_tasks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="626" data-original-width="535" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjthPK1BYqHrKeRh8AHqIRM9OLmNWLAX9JjL5hLgW_UqLfWYCL6qAG2eD9hwiY5d2VbI7XwtJpy_r4Wyv7XaRrsEnvfvj4DTO8SiF1R1ph8twhVBnGVQBGzk373AxQkXBzSKlY4biht37Ac/s400/api_tasks.png" width="340" /></a></div>
<br />
Могу сказать, что тема тестирования API была интересна пришедшим на конференцию людям: практически все ноутбуки были заняты, у участников возникали вопросы, шел активный обмен опытом. Некоторые участники, потестировав сами, приводили своих коллег, усаживали их за стол, помогали с выполнением заданий. Кто-то тестировал свой рабочий проект вместо предложенного в рамках тест кемпа :) В общем, шла активная работа / обучение / общение, что не могло не радовать нас, как организаторов. <br />
<br />
<b>Тестирование Internet Of Things</b><br />
На выбор этой темы повлиял <a href="http://sqadays.com/ru/talk/33748">доклад Пола Джеррарда на одной из SQA Days</a>. В докладе Пол рассказывал о том, что скоро все окружающие нас предметы будут подключены к сети: наступит время не только умных домов, но и умных городов, умных кафе, умного транспорта. И что нам, как тестировщикам, нужно быть к этому готовыми. Поэтому мы решили организовать тестовый стенд с реальными устройствами, чтобы участники конференции могли прикоснуться к тестированию IoT.<br />
<br />
Тут я хочу сказать огромное спасибо Диме Федорову из компании EPAM! Дима привез из Питера кучу интересных устройств, которые используются для отслеживания времени при проведении раллийных гонок: различные виды датчиков, соединительных кабелей, отражателей, пультов. Из этого всего мы собрали тестовый стенд, который был призван симулировать типичную ситуацию во время гонок: машина при прохождении круга пересекает сначала стартовые датчики, потом датчики финиша, при этом отсечка по времени показывается на ноутбуке.<br />
<br />
Жалко, что фоток тестового стенда не осталось, но все вместе это напоминало серверную или какую-то физическую лабораторию: провода, железки, ноутбуки :)<br />
<br />
Как мне показалось, участники несколько настороженно отнеслись к тестированию IoT. Желающих было заметно меньше, чем во время тестирования API. И многие приходили просто порулить машинкой на радиоуправлении, что немного нас расстроило. На вопросы: а как бы вы тестировали эти датчики, какие сценарии тестирования вы можете придумать - отвечали единицы.. Наверное, тут была недоработка с нашей стороны, как организаторов. Нужно было придумать конкретные задания, добавить интерактивности. Но лично мне, как человеку, который практически не тестировал ничего подобного, было очень интересно.<br />
<br />
<b>Игровые активности</b><br />
В промежутках между тестированием API и IoT мы проводили игровые активности, которые, на мой взгляд, прошли на ура. Например, мы играли в:<br />
<ul>
<li><b>Данетки</b>. Для тех, кто не знает, игра заключается в том, что ведущий описывает какую-то ситуацию (например, машины по шоссе двигаются без ограничений в одну сторону, а в другую - намного медленнее). Дальше участники должны отгадать, что произошло, задавая вопросы. При этом ведущий может отвечать только да и нет. Эта игра помогает развить навык задавания вопросов, который так необходим в работе тестера. В среднем, на отгадывание одной загадки уходило минут 30. Очень любопытно было наблюдать за тем, какую тактику выбирают разные участники: кто-то задавал рандомные вопросы, кто-то двигался по продуманной цепочке вопросов. Видно было, что все мы разные и задаем вопросы, основываясь на своем опыте, характере. И интерпретируем ответы мы все по-разному. В этой игре, на мой взгляд, полезно уметь придумывать гипотезы (что произошло) и затем задавать вопросы, ответы на которые либо подтверждают гипотезу (тогда нужно копать гипотезу глубже), либо опровергают (тогда нужно придумывать новую гипотезу). Игра выглядела вот так: </li>
</ul>
<iframe allowtransparency="true" frameborder="0" height="338" scrolling="no" src="https://www.facebook.com/plugins/post.php?href=https%3A%2F%2Fwww.facebook.com%2Fsqadays%2Fphotos%2Fa.815162008648615.1073741851.247977782033710%2F815189261979223%2F%3Ftype%3D3&width=500" style="border: none; overflow: hidden;" width="500"></iframe><br />
<br />
<ul>
<li><b>Кубики</b>. В зарубежном сообществе эта игра известна под названием dice game. И до конференции я начитался восторженных отзывов о ней :) В результате мои ожидания оправдались: очень интересно было как самому играть, так и быть ведущим. Суть в том, что берется набор разных игральных кубиков (разного цвета, с разным числом граней). Ведущий выкладывает кубики на стол и про себя загадывает алгоритм, по которому он будет считать эти кубики (например, самое простое, число кубиков с чётными числами на гранях). Дальше участники переворачивают кубики, после чего ведущий называет число, которое получилось при этой комбинации граней. Цель игры - отгадать алгоритм, по которому идет расчет числа. На отгадывание простых алгоритмов у нас уходило минут 5-10, на сложные паттерны - минут по 40-45. Эта игра (вернее, полученные навыки) тоже способна помочь тестировщику в работе. Варьирование входных переменных, наблюдение поведения продукта, построение модели поведения продукта в своей голове - все это очень полезно при тестировании черного ящика. Поэтому советую всем попробовать эту игру! </li>
</ul>
<br />
<b>Итоги</b><br />
В целом, я остался доволен тем, как прошел первый тест кемп.<br />
<br />
Во-первых, было довольно много участников (по нашим прикидкам, каждый 20-й участник конференции зашел к нам на огонек). Во-вторых, участники вели себя активно: задавали вопросы, общались, делились опытом (а это именно то, на что мы надеялись, затевая тест кемп). В третьих, лично я узнал много нового, познакомился со многими ребятами, получил полезный опыт организации подобных мероприятий (то есть, свои цели я выполнил).<br />
<br />
В следующий раз нужно уделить больше внимания проработке заданий (как показала практика, некоторые задания, сформулированные слишком широко, могут ставить участников в ступор). Кроме того, нужно поработать над развлекательной частью (задания должны быть интересными, веселыми, включать работу в командах; можно попробовать посоревноваться). <br />
<b><br />
</b> <b>Благодарности</b><br />
В заключение, я хотел бы сказать отдельное большое спасибо:<br />
<br />
<i>Лёше Федорову</i> - за импульс в проведении тест кемпа, поддержку и помощь во время конференции.<br />
<i>Диме Федорову</i> - за то, что привез кучу различных устройств, терпеливо отвечал на вопросы участников - тем самым оказал огромную помощь в теме тестирования Internet of Things.<br />
<i>Всем участникам тест кемпа</i> - за активность, интересные вопросы, горящие глаза, желание узнать что-то новое.<br />
<i>Организаторам SQA Days</i> - за то, что дали добро на проведение тест кемпа в рамках конференции.<br />
<br />
Я все еще с нетерпением жду вашу обратную связь в комментариях :)</div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com1tag:blogger.com,1999:blog-4371806625756604248.post-47978057158856748242016-04-19T04:17:00.002-07:002016-04-19T04:17:55.893-07:00Wanted: инженер по нагрузочному тестированиюВсем привет!<br />
Сегодня будет необычный пост, раньше по этому поводу я в своем блоге не писал. Но нам действительно очень нужны хорошие специалисты по нагрузочному тестированию.<br />
<br />
<b>Сразу оговорюсь, что у нас в компании за рекомендацию специалистов выплачиваются бонусы (при успешном устройстве на работу), так что у меня есть материальный интерес в том, чтобы найти подходящего человека.</b><br />
<br />
В данный момент у нас в Luxoft есть вакансии специалистов по нагрузочному тестированию. Заказчик - крупный российский банк, проекты - разные и, на мой взгляд, интересные. Скорее всего придется работать в офисе заказчика в Москве (в данный момент наша команда работает в трех различных локациях), но есть и другие варианты. По навыкам: необходимо знание jMeter и/или Load Runner; пригодится опыт самостоятельной разработки методики нагрузочного тестирования; плюсом будет хотя бы поверхностное знание одного из языков программирования.<br />
<br />
Кто заинтересовался - пишите в skype: romko.3313. <br />
<br />
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-38972566505180857262015-10-31T10:47:00.000-07:002015-10-31T10:47:03.639-07:00Отчет по 10-й сессии Weekend testing: Техника туровСегодня состоялась 10-я, юбилейная сессия викенд тестирования. На этот раз мы обсуждали использование техники туров для тестирования и исследования продукта. Было много практики, которую решено было разбить на 2 части по полчаса: 2 разных тура, 2 разных продукта, 2 разных отчета. И получилась хорошая тренировка по переключению контекста. Хотелось бы поблагодарить участников за хорошую работу, потому что за отведенное время они успели сделать довольно много и подготовили хорошие отчеты. Ниже я расскажу о том, чем мы обычно занимаемся на сессиях и поделюсь материалами сегодняшней сессии.<br />
<br />
<a name='more'></a>Меня попросили рассказать о формате сессий. Тем, кто участвует первый раз, он может быть не знаком.<br />
<br />
Обычно за неделю до предполагаемой даты сессии в моём блоге публикуется анонс (спасибо Леше Федерову, который обычно делает репост в <a href="https://www.facebook.com/groups/int.qa.comm/">группе тестировщиков на Facebook</a>). Чтобы зарегистрироваться для участия, необходимо заполнить несложную форму: имя, логин в skype, e-mail для посылки напоминания за день до сессии.<br />
<br />
В день сессии создается скайп чат, в который добавляются все желающие. Обычно нужно еще написать в скайп weekend_testing_russia, чтобы подтвердить участие. Связаться напрямую с большим количеством зарегистрировавшихся участников не всегда получается, поэтому я всегда прошу писать мне хотя бы за 10 минут до начала сессии.<br />
<br />
Сами сессии в данный момент проходят в скайп чате. В скайпе ведется обсуждение темы, предлагается задание на практику, обсуждаются результаты. Быть может со временем формат будет меняться - например, часть обсуждения будет вестись голосом.<br />
<br />
График сессии выглядит как (пример сегодняшней сессии):<br />
<br />
<ul>
<li>12:00-12:15 - знакомство и короткое обсуждение темы</li>
<li>12:15-12:45 - практика (первая задача)</li>
<li>12:45-13:15 - практика (вторая задача)</li>
<li>13:15-13:30 - подготовка отчетов</li>
<li>13:30-14:00 - обсуждение результатов, обратная связь, выбор следующей темы</li>
</ul>
За временем нужно следить очень внимательно. Были моменты, когда я решал не прерывать обсуждение в запланированное время. Но от этого страдали другие части сессии. В том числе и самая главная часть - практика.<br />
<br />
Итак, вводная часть включает в себя обсуждение темы сессии. Обычно я задаю вопросы, участники отвечают. Главное на этом этапе - убедиться, что у всех участников есть понимание темы. Но часто из-за неустоявшейся терминологии нашей профессии мы воспринимаем многие понятия по-разному. И для того, чтобы синхронизироваться, иногда требуется много времени.<br />
<br />
Дальше участникам предлагается задание на практику. Обычно как объект тестирования выбирается сайт или веб-приложение. Например, в рамках сегодняшней сессии мы тестировали сайт aviasales.ru и Skype. В течение следующего часа (иногда больше) мы его тестируем. Иногда в течение этого времени ведется обсуждение в чате. Иногда - нет. Что лучше - вести обсуждение или нет - я пока и сам не понял. Это во многом зависит от темы и от задачи на практику. И от уровня участников тоже.<br />
<br />
Практика обычно включает составление отчета. В нем нужно коротко (на 1-2 страницах) рассказать о том, что было сделано, какие проблемы были найдены, какие вещи были проверены. Приветствуются mind maps, таблички, схемы. Для примера вы можете посмотреть материалы внизу - во время сегодняшней сессии ребята успели подготовить очень крутые отчеты.<br />
<br />
Я обычно прошу участников составлять отчет, потому что считаю умение показывать результаты своей работы очень важным для тестировщика. Ведь мы собираем информацию о продукте и доносим её до других. И от того, как хорошо мы это делаем, многое зависит.<br />
<br />
Что нужно для того, чтобы успешно выполнить задание на практику:<br />
<br />
<ul>
<li>Умение все делать быстро. Как ни странно, это достигается практикой. Первый раз может быть непривычно, потом становится легче.</li>
<li>Умение варьировать глубину и ширину тестирования. Так как времени всегда мало, нужно уметь расставлять приоритеты. Ведь если потратить все время на исследование одной проблемы, то не успеешь дойти до конца и выполнить задачу. Но иногда необходимо наоборот исследовать проблему до конца.</li>
<li>Умение переключаться. Опять же, из-за ограничений по времени, переключение между разными задачами должно быть быстрым. Пересекается с умением все делать быстро.</li>
<li>Умение рассчитывать свои силы и время. Тайм менеджмент - великая штука, которая не всем дается легко. И в рамках сессии мы стараемся сделать так, чтобы успеть многое за короткое время. Это тоже навык, который важен в жизни.</li>
<li>Умение фокусироваться. Для того, чтобы не уйти в сторону от поставленной задачи, нужна концентрация. Для сегодняшней сессии это умение было особенно актуальным, потому что мы старались выбирать тур и по-минимуму отвлекаться от него.</li>
</ul>
До конца практики и составления отчетов "доживают" не все. Заметил, что обычно это даже не половина от всех участников. Поэтому я часто задумываюсь о том, чтобы упростить задачу, увеличить время на практику, растянуть практику на несколько сессий. Но тем ценнее тот факт, что некоторые участники все-таки доделывают задание до конца, готовят отчеты, выслушивают фидбэк по своей работе. К этому и нужно стремиться.<br />
<br />
После практики мы обычно обсуждаем результаты (на это отводится примерно полчаса). Сюда входит обратная связь по подготовленным отчетам, общие выводы по практике и по теме сессии, выбор следующей темы. Это тоже важная часть сессии. Потому что обратная связь важна как для организаторов, так и участников. Поэтому меня всегда радует, когда участники смотрят отчеты друг друга, делятся своим мнением, высказывают предложения по улучшению будущих сессий. После таких сессий хочется двигаться вперед.<br />
<br />
Итак, надеюсь моё сообщение поможет понять, чем мы обычно занимаемся :) Увидимся в следующий раз! Темой будет т<span style="background-color: white; font-family: arial, sans, sans-serif; font-size: 13px; line-height: 13px; white-space: pre-wrap;">естирование различий в двух наборах данных.</span><br />
<br />
Материалы сегодняшней сессии:<br />
<br />
<ul>
<li><a href="http://33testers.blogspot.ru/2015/10/wt10.html">Анонс сессии с материалами по турам</a></li>
<li><a href="https://dl.dropboxusercontent.com/u/52313532/ET_dynamics_Google_3_06.pdf">Классный документ от Джона Баха по исследовательскому тестированию</a>. Да, этому можно и нужно учиться :)</li>
<li><a href="https://drive.google.com/file/d/0BwP6rJYT-D1fTWVydkpSLTVuYlk/view?usp=sharing">Табличка со списком туров</a>, которую можно использовать в качестве шпаргалки и напоминалки (она составлена на основе <a href="http://okiseleva.blogspot.ru/2015/01/blog-post_64.html">блога Ольги Киселевой</a>, <a href="http://www.software-testing.by/blog/exploratory-testing-exploratory-tours/">статьи Натальи Савастюк</a>, <a href="http://testingeducation.org/BBST/testdesign/Kelly_Taking_a_Tour_Through_Test_Country.pdf">статьи Майкла Келли</a>)</li>
<li><a href="https://docs.google.com/document/d/15KHSXBToJxdIZkRdYau2L_fmuydUnuJrZ78QoVhGbMc/edit?usp=sharing">Отчет Леши Федорова</a> - тур по aviasales.ru</li>
<li><a href="https://docs.google.com/document/d/1sVvhVRwmgV3akzYS8kZdSM6L_WtSjspnu9kvQJERw9A/edit?usp=sharing">Отчет Дианы Пинчук</a> - тур по Skype</li>
<li><a href="https://docs.google.com/document/d/1mAmjfohteMRbKyS9KgYJaIwDW7HEQeF4sYeWsaJJXyg/edit?usp=sharing">Отчет Дианы Пинчук</a> - тур по aviasales.ru</li>
<li><a href="https://dl.dropboxusercontent.com/u/81883673/WT10-AL.docx">Отчет Андрея Ладутько</a> - по двум турам сразу</li>
<li><a href="https://docs.google.com/document/d/155x6bpScxU5oipBdWdzDWuerseY9xtRj0vBzPWX2w98/edit?usp=sharing">Отчет Леши Федорова</a> - тур по Skype</li>
<li><a href="http://blog.zhariy.com/2012/07/ffmpeg-screen-capture-recorder.html">О записи видео</a> - пригодится в рамках сессий по тестировани</li>
<li>Книга "<span style="font-family: "Calibri","sans-serif"; font-size: 11.0pt; line-height: 115%; mso-ansi-language: RU; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Психбольница в руках пациентов</span>" - о различных ролях пользователей (пригодится в рамках тура по пользователям)</li>
<li><a href="http://sqagroup.spb.ru/report-agile-testing-workshop-01/">Отчет по тренингу</a> <span style="background-color: white; color: #3a3a3a; font-family: inherit; line-height: 1.2em;">Agile Testing Workshop #01: Personas</span></li>
<li><a href="https://drive.google.com/file/d/0BwP6rJYT-D1fN1Y3VlU1NFVfbjg/view?usp=sharing">Лог сессии</a> (переписка в Skype)</li>
</ul>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-1855736901680608682015-10-24T02:32:00.003-07:002015-10-27T12:18:59.663-07:00Анонс WT10: Техника туров для исследования продукта<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg15W-zFWkn2NHDc8jz4OXXq78a1Aq0WgA8ddWC8J2CbvHARDnYwOwDMQdBrMMHrg0yByvA98Pz2lT2zsYG2RTaQyfv4N6Ui_ao3lemPZv7iaRSK8epntO80sZ9OYePpwttNTjZKpq4f1h5/s1600/wt10_tours.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg15W-zFWkn2NHDc8jz4OXXq78a1Aq0WgA8ddWC8J2CbvHARDnYwOwDMQdBrMMHrg0yByvA98Pz2lT2zsYG2RTaQyfv4N6Ui_ao3lemPZv7iaRSK8epntO80sZ9OYePpwttNTjZKpq4f1h5/s200/wt10_tours.png" width="200" /></a></div>
Всем привет!<br />
<br />
31 октября состоится 10-я сессия викенд тестирования, тема которой - техника туров для исследования продукта.<br />
<br />
Желающим поучаствовать нужно заполнить <a href="http://goo.gl/forms/9vGtKwZkMy">форму</a>.<br />
<br />
Далее - небольшое вступление по теме и материалы, которые полезно будет почитать перед сессией.<br />
<br />
<a name='more'></a>В последнее время туры в тестировании стали очень популярными. Наверное, произошло это благодаря книге<br />
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
<span class="a-size-extra-large" id="productTitle" style="box-sizing: border-box; line-height: 1.2 !important; text-rendering: optimizeLegibility;"><span style="font-family: inherit;">Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design <span style="font-family: inherit;">(</span></span></span><span style="color: #333333;"><span style="font-family: inherit;">James Whittaker</span></span><span style="font-family: inherit; line-height: 1.2;">). Можете почитать отличный перевод фрагментов этой книги в <a href="http://okiseleva.blogspot.ru/search/label/%D0%98%D1%81%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5%20%D1%82%D1%83%D1%80%D1%8B">блоге Ольги Киселёвой</a>.</span></div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
<span style="font-family: inherit; line-height: 1.2;"><br /></span></div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
<span style="font-family: inherit; line-height: 1.2;">Но я познакомился с этой техникой в <a href="http://testingeducation.org/BBST/testdesign/">материалах курса BBST</a>, которые можно найти в свободном доступе. В частности, <a href="http://testingeducation.org/BBST/testdesign/Kelly_Taking_a_Tour_Through_Test_Country.pdf">статья Майкла Келли</a> дает очень хорошее вступление по теме. В ней рассказывается о нескольких полезных турах, предназначенных не столько для поиска багов, но для изучения продукта. Майкл структурировал свои идеи в мнемонике FCC CUTS VIDS, которой был посвящен <a href="http://michaeldkelly.com/blog/2005/9/20/touring-heuristic.html">отдельный пост в его блоге</a>. Эта мнемоника может служить как эвристика при исследовании продукта. </span></div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
<span style="font-family: inherit; line-height: 1.2;"><br /></span></div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
<span style="font-family: inherit; line-height: 1.2;">Майкл Болтон <a href="http://www.developsense.com/blog/2009/04/of-testing-tours-and-dashboards/">в своем блоге</a> рассказывает о истории возникновения концепции туров в тестировании. Хороший материал для тех, кто хочет понять, откуда растут корни. И, кстати, хороший пример развития какого-то понятия в нашей профессии. Можно проследить, как каждый, кто исследовал туры, добавлял что-то своё.</span></div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
<span style="font-family: inherit; line-height: 1.2;"><br /></span></div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
На мой взгляд, особая ценность туров состоит в том, что они позволяют переключать фокус тестирования. Например, я могу выполнить тур по фичам, чтобы познакомиться с продуктом, новым для меня. Или тур по данным, чтобы уделить особое внимание тому, как продукт хранит информацию. Такой фокус важен, он помогает нам не распыляться по многим вещам, которые можно протестировать. Выполняя разные типы туров, мы как будто смотрим на продукт с разных сторон, с разными целями. И в результате у нас в голове складывается более полная картинка продукта.</div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
<br /></div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
Напоследок, рекомендую <a href="http://www.software-testing.by/blog/exploratory-testing-exploratory-tours/">статью Натальи Савастюк</a>, в которой подчеркивается, что туры - это хороший способ структурирования исследовательского тестирования. Также в этой статье вы найдете множество полезных ссылок, типичные типы багов, которые позволяет найти тот или иной тур (основано на реальном опыте использования туров). Отдельное спасибо Алексу Р (Lurk) за наводку на эту статью!</div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
<br /></div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
Чем мы будем заниматься на сессии викенд тестирования:</div>
<div style="background-color: white; box-sizing: border-box; color: #111111; line-height: 1.2; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px; text-rendering: optimizeLegibility;">
</div>
<ul>
<li><span style="line-height: 1.2;">Обсудим, что такое туры</span></li>
<li><span style="line-height: 1.2;">Потренируемся использовать различные туры</span></li>
<li><span style="line-height: 1.2;">Потренируемся в оформлении результатов выполнения туров</span></li>
<li><span style="line-height: 1.2;">Проанализируем, в чем плюсы и минусы туров, когда их можно использовать, когда - нет</span></li>
</ul>
<div>
Еще раз: 31 октября, 12:00, записываться <a href="http://goo.gl/forms/9vGtKwZkMy">тут</a>. Пока пока!</div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-7341138474776930932015-10-06T13:17:00.002-07:002015-10-06T13:19:11.807-07:00Отчетик по 9-й сессии викенд тестирования<div>
<span style="font-size: small;"><span style="font-family: inherit;">На прошедшей в субботу сессии викенд тестирования мы обсуждали доменное
тестирование. Тема оказалась очень и очень непростой. Двух часов
времени не хватило, чтобы разложить всё по полочкам. Но обсуждение
было интересным и я сделал для себя несколько выводов. </span></span></div>
<div>
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div>
<span style="font-size: small;"><span style="font-family: inherit;">Один
из них - нужно написать подробное сообщение о доменном тестировании, с хорошим и жизненным примером. Это поможет структурировать мысли и сформулировать что-то вроде подхода к использованию этой техники.</span></span></div>
<div>
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<a name='more'></a></div>
<div>
<span style="font-size: small;"><span style="font-family: inherit;">Кроме
того, я сделал вывод, что сам термин доменное тестирование понимается нами по-разному. В
принципе, такое разное понимание одного термина встречается часто. И я
связываю это с тем, что терминология нашей профессии еще не устоялась.
Поэтому нужно держать в голове, что для другого человека конкретный
термин может означать что-то другое. Вспоминаю Болтона и Баха, которые
уделяют много времени, чтобы сформулировать некий набор терминов, которые имеют четкое недвусмысленное значение. Об этом можно почитать, например, в <a href="http://www.developsense.com/blog/2015/02/the-rapid-software-testing-namespace/">этом сообщении</a>.</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">Или насчет еще одного термина. Под pairwise я понимал технику, которая позволяет уменьшить
количество тестируемых комбинаций. Но некоторые участники включали в
это понятие намного больше: и анализ классов эквивалентности, и выбор
представителей из каждого класса.</span></span></div>
<div>
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div>
<span style="font-size: small;"><span style="font-family: inherit;">Трудности вызывает составление комбинаций значений. Многие хорошо справляются с разбиением на классы для конкретной переменной, с выбором нескольких значений для тестирования из каждого класса. Но когда дело доходит до комбинирования нескольких переменных вместе - мы не всегда понимаем, как это делать.
Наверное, нет золотого правила, которое говорит, что мы должны составлять комбинации каким-то определенным образом. Но для этого нужно как минимум понимать взаимосвязи переменных, нужно знать продукт,
знать значения, которые используются чаще других. Я думаю, можно сформулировать эвристики, которые могут помочь в комбинировании значений. Попробую это
сделать в одном из следующих сообщений.</span></span></div>
<div>
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div>
<span style="font-size: small;"><span style="font-family: inherit;">Напоследок, материалы сессии:</span></span><br />
<ul>
<li><span style="font-size: small;"><span style="font-family: inherit;"><a href="https://drive.google.com/file/d/0BwP6rJYT-D1fUEo2a0gwS0hQWUE/view?usp=sharing">Переписка в скайпе</a></span></span></li>
<li><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Обычная таблица";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]--><span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;"><a href="http://www.slideshare.net/spbsqagroup/domain-4780447">Презентация от Марины Широчкиной о доменном тестировании</a></span> </span></span></li>
<li><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Обычная таблица";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]--><span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">Practitioner's
guide to software test design (Lee Copeland)</span></span></span> </li>
<li><span style="font-size: small;"><span style="font-family: inherit;"><a href="http://software-testing.ru/forum/index.php?/topic/31629-poparnoe-testirovanie-pairwise-testing/">Полезные ссылки по pairwise</a></span></span> </li>
<li><span style="font-size: small;"><span style="font-family: inherit;">Тестирование программного обеспечения (Канер, Фолк, Нгуен)</span></span></li>
<li><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Обычная таблица";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]--><span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">Искусство тестирования программ (</span><span style="line-height: 115%;"><span style="line-height: 115%;">Майерс</span>)</span></span></span> </li>
<li><span style="font-size: small;"><span style="font-family: inherit;"><a href="http://33testers.blogspot.ru/2013/07/blog-post_27.html">Сообщение в моём блоге про классы эквивалентности и граничные значения</a> </span></span></li>
<li><span style="font-size: small;"><span style="font-family: inherit;">The domain testing workbook (Kaner, Padmanabhan, Hoffman)</span></span></li>
<li><span style="font-size: small;"><span style="font-family: inherit;">Тестирование черного ящика (Борис Бейзер)</span></span></li>
<li><span style="font-size: small;"><span style="font-family: inherit;">Тестирование программного обеспечения. Базовый курс (Куликов)</span></span></li>
<li><span style="font-size: small;"><span style="font-family: inherit;">Труды Кулямина</span></span></li>
</ul>
</div>
<div>
<span style="font-size: small;"><span style="font-family: inherit;">Темой следующей сессии выбрана <span style="color: black; font-style: normal; font-weight: normal; text-decoration: none;">техника туров для исследования продукта</span>. Так что ближайшее время я буду старательно изучать <a href="http://okiseleva.blogspot.ru/2015/01/blog-post_64.html">блог Ольги Киселёвой</a> :)</span></span></div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-86737519279189057342015-10-04T01:49:00.000-07:002015-10-04T01:55:46.247-07:00Мастер классы перед SQA days-18Всем привет! Если вы еще не знаете, организаторы SQA days -18 в этом году подготовили <a href="http://www.sqalab.ru/index/trainings/15170">серию мастер классов</a>. Они пройдут до основных дней конференции, 26 ноября, в Москве. Я хотел бы поддержать эту инициативу, потому что тренинги проводятся людьми, для которых тестирование - не пустой звук. Некоторых я знаю лично и уверен в том, что они подготовили качественный и полезный материал. Ниже я расскажу о том, какие тренинги для меня выглядят наиболее интересными.<br />
<br />
<a name='more'></a><br />
<h2>
<a href="http://www.sqalab.ru/ru/training/sqalab/trainings/15170/37587/37588"><span style="font-weight: normal;">Эмоциональный интеллект: конструктивная обратная связь</span></a></h2>
Тренер: <a href="http://it-conf.ru/ru/profile/14091">Сергей Атрощенков</a><br />
<br />
Коммуникации очень важны не только в нашей профессии, но и в жизни. В своё время я готовил <a href="http://sqadays.com/ru/talk/25789">доклад по теме коммуникаций в тестировании</a> и считаю коммуникативные навыки одними из основных для тестировщика.<br />
<br />
На данном мастер классе Сергей будет рассказывать о концепции эмоционального интеллекта и о том, как можно применять эти знания в нашей работе. В частности, участники смогут потренироваться в предоставлении обратной связи. Мне кажется, это будет особенно интересно менеджерам, для которых обратная связь - заметная часть работы. Но и тестировщикам тоже пригодится, потому что мы постоянно даем обратную связь и программистам, и авторам документации, и пользователям. Тут нужно чувство такта, чтобы никого не обидеть, но в то же время дать понять, что хорошо, а что - плохо.<br />
<br />
Для тех, кто желает получить представление об эмоциональном интеллекте - рекомендую послушать доклад Сергея, с которым он выступал на конференции SQA Days-16 в Питере - <br />
<a href="http://sqadays.com/ru/talk/25831">Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)</a>. Мне посчастливилось в живую его послушать :)<br />
<br />
<h2>
<span style="font-weight: normal;"><a href="http://sqalab.ru/ru/training/sqalab/trainings/15170/15176/37282">"Готовим стратегию тестирования" - поваренная книга тест-менеджера</a></span></h2>
Тренер: <a href="http://it-conf.ru/ru/profile/16498">Таисия Рыбак</a><br />
<br />
Если вы читаете мой блог, то наверное уже знаете, что мне интересна тема составления тестовой стратегии :) Об этом можно почитать <a href="http://33testers.blogspot.ru/2015/01/weekend-testing-01.html">тут</a>, <a href="http://33testers.blogspot.ru/2015/02/weekend-testing-01.html">тут</a> и <a href="http://33testers.blogspot.ru/2015/02/3.html">тут</a>. Кроме того, на прошлой конференции SQA Days я выступал с <a href="http://sqadays.com/ru/talk/35090">докладом</a>, родственным этой теме.<br />
<br />
Наверное, каждый тестировщик, какую бы позицию он не занимал, в определенный момент приходит к этому - к необходимости выбора тестовой стратегии. Огромную роль в этом процессе играет ваш опыт. Но все же есть общепринятые подходы и принципы, которые могут вам помочь.<br />
<br />
<h2>
<a href="http://sqalab.ru/ru/training/sqalab/trainings/15170/15174/37158"><span style="font-weight: normal;">Python Scripting in a Day</span></a></h2>
Тренер: <a href="http://it-conf.ru/ru/profile/33248">Paul Gerrard</a><br />
<br />
Пожалуй, это самый дорогой тренинг из моего must-see списка :) Но, все-таки, он длится целый день. И, конечно же, уровень тренера просто запредельный. Я думаю, что по своему уровню тренинги Пола Джеррарда можно сравнивать с тренингами, которые организуют Майкл Болтон и Джеймс Бах. Пол - заметная фигура зарубежного сообщества тестировщиков, автор книг и статей. И это очень круто, что такие люди к нам приезжают. По своей важности тренинг Пола в Москве я могу сравнить с переходом Халка в Зенит :) Это очень высокий уровень.<br />
<br />
Если говорить по теме тренинга, то я считаю её важной для любого тестировщика. Если помните, еще Роман Савин в своей книжке про тестирование (<a href="http://okiseleva.blogspot.ru/2013/01/dot-com.html">отзыв о книжке</a>) писал о своей любви к языку Python и о том, как он здорово помогает в работе. Вы можете не быть автоматизатором, но уметь писать небольшие программки, которые облегчают вашу работу и помогают в выполнении рутинных задач - это очень полезно. Я сам отношусь к числу людей, которые самостоятельно изучают Python. Это удобный и понятный язык, который можно использовать практически везде. Я думаю, тренинг Пола поможет сделать уверенный первый шаг в изучении Python. Но, надо понимать, что на этом тренинге изучение Python не заканчивается. Нужно очень много практики, чтобы научиться его использовать.<br />
<br />
Пока пока!wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com1tag:blogger.com,1999:blog-4371806625756604248.post-59675983262170456282015-09-21T21:18:00.001-07:002015-09-24T00:01:09.437-07:00Анонс WT09: Доменное тестирование<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwixsEA0Xu4NNGJ5H6-d225dlK4bVnnMC-V005Xz1a2ynY0_X-xSrUKJ-rhVoGAaSFeFI7v0ZZR-nUSJHdm0zO5SvPzN9o097Drf-sQdudQqueKXqyoeLM8s1MVH_Jz6fuwXSroZhBea8r/s1600/wt09_domain.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwixsEA0Xu4NNGJ5H6-d225dlK4bVnnMC-V005Xz1a2ynY0_X-xSrUKJ-rhVoGAaSFeFI7v0ZZR-nUSJHdm0zO5SvPzN9o097Drf-sQdudQqueKXqyoeLM8s1MVH_Jz6fuwXSroZhBea8r/s200/wt09_domain.png" width="200" /></a></div>
<div>
Всем привет! В <strike>воскресенье,</strike> <strike>27 сентября, в 12:00 по
московскому времени</strike> <span style="color: blue;"><u>субботу, 3 октября в 12:00 по московскому времени</u></span> состоится сессия викенд тестирования, посвященная
доменному тестированию. Чтобы зарегистрироваться для участия -
необходимо заполнить <a href="http://goo.gl/forms/08UKaOhfFb">форму</a>.</div>
<div>
<a name='more'></a><br />
</div>
<div>
Термин
"доменное тестирование" встречается не так часто в русскоязычных
ресурсах. Что это такое?</div>
<div>
</div>
<div>
Это техника, которая основана на разбиении
диапазона возможных значений переменной (или переменных) на
под-диапазоны (или, иначе, домены), с последующим выбором одного или
нескольких значений из каждого домена для тестирования. Целью применения
этой техники является сокращение количества проверяемых значений без
потери эффективности тестирования. То есть, правильное применение
техники приводит к уменьшению количества тестов
без ухудшения качества тестирования. Звучит как в сказке, правда? :)</div>
<div>
<br /></div>
<div>
Во
многом доменное тестирование пересекается с известными нам техниками
разбиения на классы эквивалентности и анализа граничных значений. Но
доменное тестирование не ограничивается перечисленными техниками. Оно
включает в себя и анализ зависимостей между переменными, и поиск тех
значений переменных, которые несут в себе большой риск (не только на границах).</div>
<div>
<br /></div>
<div>
На следующей сессии:</div>
<div>
<ul>
<li>Мы потренируемся в разбиении на классы эквивалентности и нахождении
граничных значений </li>
<li>Попрактикуемся в нахождении зависимостей между переменными </li>
<li>Попробуем различные форматы представления получившихся тестов </li>
<li>Обсудим плюсы и минусы техники доменного тестирования</li>
</ul>
</div>
<div>
До встречи!</div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com1tag:blogger.com,1999:blog-4371806625756604248.post-4427441557621544522015-09-19T14:26:00.001-07:002015-09-19T14:26:52.153-07:00WT06, WT08: Отчет по прошедшим сессиямПришло время проводить новую, сентябрьскую сессию викенд тестирования. Но перед этим мне нужно вернуть долги и рассказать о прошлых сессиях. Что я и сделаю в этом сообщении.<br />
<br />
<a name='more'></a><br />
<h2>
WT06: Регрессионное тестирование </h2>
6-я сессия прошла еще в июне и её темой было регрессионное тестирование. Сессия обещала быть интересной, потому что все мы так или иначе сталкиваемся с регрессионным тестированием. Так и получилось - в начале сессии было очень живое обсуждение, с множеством разных мнений и идей. Некоторые идеи участников были похожими и дополняющими друг друга, некоторые - противоположными. В общем, лично мне было интересно узнать о том, как проводится регрессионное тестирование в разных контекстах. Желающие почитать наше обсуждение могут найти лог сессии ниже, в материалах.<br />
<br />
В качестве практики мы составляли стратегию регрессионного тестирования продукта HipChat + план регрессионного тестирования конкретного релиза. В очередной раз удивился тому, что до конца сессии "доживают" немногие :) То есть, в обсуждении участвуют 15-20 человек, а до конца практики остается всего человек 7-8. А отчеты по практике успевают подготовить считанные единицы. Тем ценнее эти отчеты, потому что даются они нелегко.<br />
<br />
Есть несколько моментов, которые я хотел бы особенно отметить в этой сессии:<br />
<ul>
<li>Стратегию регрессионного тестирования от Кости Коваль. Костя очень нас удивил своей стратегией. Лично я нигде ничего подобного не видел и не слышал. Мы попросили Костю развить тему и описать свой подход в статье. И, забегая вперёд, Костя это сделал :) Советую вам посмотреть на то, что у него получилось - <a href="https://onedrive.live.com/view.aspx?resid=85D43F140CD7DB6!178&ithint=file%2cpptx&app=PowerPoint&authkey=!AJgVUdTl92IAxTE">Стратегия планирования регрессионного тестирования в Agile-проектах</a>.</li>
<li>Документ по теме регрессионного тестирования от Алекса Р (Lurk). Первый раз на моей памяти нашелся человек, который решил собрать в одном месте материалы по теме сессии, мнения участников, разные подходы к выполнению регрессии. На мой взгляд, получился <a href="https://docs.google.com/document/d/105XRU6RKX1DHUVMKDQmF12ukUgKjlbfW5t5ARFmvO30/edit">очень крутой и полезный документ</a>. </li>
</ul>
Другие материалы сессии:<br />
<ul>
<li><a class="contentpagetitle" href="http://software-testing.ru/library/testing/general-testing/992-heuristics-of-regression-testing">Эвристики ХРОНИЧеского регрессионного тестирования</a> </li>
<li><a href="https://drive.google.com/file/d/0BwP6rJYT-D1fNDVMWjlMYVpueTg/view?usp=sharing">Лог сессии 06</a></li>
<li><a href="https://onedrive.live.com/redir?resid=85d43f140cd7db6!174&authkey=!APWxYbmW8fmadOU&ithint=file%2cdocx">Стратегия регрессионного тестирования</a> от Кости Коваль и <a href="https://onedrive.live.com/redir?resid=85d43f140cd7db6!176&authkey=!AHfOtJAp0645vqM&ithint=file%2cdocx">план тестирования</a> </li>
<li><a href="https://docs.google.com/document/d/1HhZYcs2mAg5-ArE3dVBTyNL_Q2WFpeF_NwuP6OaEOo8/edit?usp=sharing">Стратегия и план</a> Леши Фёдорова</li>
</ul>
<h2>
WT08: Тестирование мобильных приложений</h2>
Восьмая (и последняя на данный момент сессия) была посвящена тестированию мобилок. Началась она в привычном ключе - с обсуждения темы. Многие из собравшихся уже тестировали мобильные приложения раньше. Причем у участников был очень разносторонний опыт: разные платформы и технологии, разные области применения, разная сложность продуктов, разные инструменты, используемые при тестировании. И я в очередной раз удивился, что в ходе обсуждения мы можем прийти к общему пониманию темы, с которым согласно большинство участников. Да, наш опыт может быть разным, но всегда есть общие вещи, которые справедливы для всех. <br />
<br />
Задание на практику было простым: найти побольше багов в мобильном приложении OneDrive и составить отчет по тестированию. Но у меня была еще одна задача - добиться от участников формулирования подхода к тестированию. Чтобы, проще говоря, они не искали баги бессистемно, а имели в голове какую-то идею, которая направляет их тестирование. И у некоторых участников это получилось! Не берусь утверждать, что системный подход к тестированию всегда правильный и уместный, но лично мне он нравится больше.<br />
<br />
Что запоминающегося было в 8-й сессии? <br />
<ul>
<li>Большое число отчетов по практике от участников. Этот момент меня очень порадовал. Это было так неожиданно, что времени сессии не хватило для обратной связи по всем отчетам :) Отчеты были разными, со своими плюсами и минусами. Смотрите список материалов внизу.</li>
<li>Большое число найденных багов. Да-да, участники сессии хорошо постарались и нашли много проблем в приложении OneDrive от Microsoft. Даже подумал про себя: "А продукт-то сыроват" :)</li>
</ul>
Материалы и отчеты участников:<br />
<ul>
<li><a href="https://drive.google.com/file/d/0BwP6rJYT-D1fdHA4Q1QzQ19HTFE/view?usp=sharing">Лог сессии 08</a></li>
<li><a href="https://onedrive.live.com/view.aspx?resid=50A781B8AE6197C9!49617&ithint=file%2cxlsx&app=Excel&authkey=!AB1B2oFEc0cGvWs">Отчет Александры Савитской</a></li>
<li><a href="https://docs.google.com/document/d/1Urf2CFDTUMBU9Sy98r9lDfTqDLIPreuA9exOaWT3HJA/edit">Список найденных проблем от Марины Колесник</a></li>
<li><a href="http://bit.ly/1gJpTR9">Отчет от Serj Gorlukovich</a></li>
<li><a href="https://onedrive.live.com/redir?resid=15DBAB3083E261BD!858&authkey=!AJp5IYUccIoYVFM&ithint=file%2cdocx">Отчет от Леши Федорова</a> </li>
<li><a href="https://www.dropbox.com/s/k4kzpxfvd2znxhm/OneDrive.docx?dl=0">Отчет от Виталия Дьяченкова</a></li>
<li><a href="https://docs.google.com/spreadsheets/d/1sdhw8l106il3rNnnYJMhEL6y1t3g_agt3tjBQCqh9Z4/edit?usp=sharing">Отчет Сергея Галунского</a></li>
<li><a href="https://dl.dropboxusercontent.com/u/81883673/Othcet.docx">Список проблем от Андрея Ладутько</a> </li>
</ul>
На этом пока всё. До встречи на следующих сессиях викенд тестирования!wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-15776029045537694632015-08-13T12:19:00.002-07:002015-08-13T12:19:19.822-07:00Тестирование мобильных приложений<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI2Xu5FUgzw8aTzwwQJNPCPjhoc9yjKJmMvjQjrfEl9oIjBPvSOFF-0mWCbsaFA78Nfq1lWcoQ0BmoA7rV171eIj8fYg8FzvCrQKuqUE9uEa5uwnZcQTiK14rZ01spELm0ddsmM1_WP0LC/s1600/snok3310_l.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI2Xu5FUgzw8aTzwwQJNPCPjhoc9yjKJmMvjQjrfEl9oIjBPvSOFF-0mWCbsaFA78Nfq1lWcoQ0BmoA7rV171eIj8fYg8FzvCrQKuqUE9uEa5uwnZcQTiK14rZ01spELm0ddsmM1_WP0LC/s320/snok3310_l.jpg" width="158" /></a></div>
<span style="font-family: inherit;">К счастью, о тестировании мобилок написано очень много - и в
русскоязычных, и в англоязычных ресурсах. Ниже - небольшая подборка ресурсов и мои размышления по теме.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Мобильные приложения - область, которая развивается очень быстро. Многие
компании выпускают мобильные версии своих продуктов. Например, у
меня на телефоне установлено приложение Facebook. Да, я могу зайти и через браузер, но это не так удобно и быстро.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Во время чтения советую вам держать под рукой свой телефон или планшет. Запустите какое-нибудь
приложение и присмотритесь к нему. Попробуйте понять, почему оно сделано
именно так, какие у него особенности в плане интерфейса, какие возможности оно вам даёт. Так будет интереснее.</span><br />
<span style="font-family: inherit;"></span><br />
<a name='more'></a></div>
<div>
<span style="font-family: inherit;">В тестировании мобильных приложений есть очевидная трудность - огромное количество платформ. Можно попробовать посчитать количество комбинаций таких переменных, как: ОС (Андроид, iOS, Windows Phone), версия ОС, разрешение и размеры экрана, емкость
батарейки, оператор, количество сим карт, наличие или отсутствие WiFi. Оно будет.. большим :)</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">В этой ситуации можно применять классы эквивалентности и
другие методы сокращения количества тестируемых конфигураций. Хороший пример, хоть и не относящийся к тестированию
мобилок, можно найти в книге Кема Канера - Тестирование программного обеспечения (переведена на русский язык и доступна для скачивания). Там на примере тестирования принтеров рассказывается о том, как выбрать несколько подопытных образцов и организовать тестовую лабораторию.</span><br />
<span style="font-family: inherit;"><br /></span>
Существует множество способов увеличить тестовое покрытие возможных устройств. Некоторые <span style="font-family: inherit;">компании наряду с внутренним тестированием проводят внешнее
тестирование (краудсорс или бета). К примеру, есть сервисы вроде <a href="http://www.utest.com/">utest</a> и <a href="https://testlio.com/">testlio</a>, где любая компания может найти тестировщиков с определенным
девайсами. Существуют удаленные лаборатории, в которой разработчики и тестировщики могут
получить доступ практически к любым устройствам. Чаще всего это, конечно, не бесплатно. Есть открытые лаборатории устройств, об организации которых можно почитать в <a href="http://www.smashingmagazine.com/2012/09/establishing-an-open-device-lab/">статье</a>. </span></div>
<div>
<br /></div>
<div>
<span style="font-family: inherit;">Но давайте поговорим о более приземленных вещах - о том, с чем сталкиваются тестировщики мобильных приложений каждый день. </span><span style="font-family: inherit;">Вот лишь некоторые из таких задач:</span><br />
<br />
<ul>
<li>Установка приложений</li>
<li><span style="font-family: inherit;">Сбор логов</span></li>
<li><span style="font-family: inherit;">Снятие снимков экрана и видео</span></li>
<li><span style="font-family: inherit;">Оценка интерфейса</span></li>
<li><span style="font-family: inherit;">Изучение компонентов приложения на диске устройства</span></li>
<li><span style="font-family: inherit;">Сбор показателей производительности</span></li>
<li><span style="font-family: inherit;">Эмуляция различных</span><span style="font-family: inherit;"> прерываний работы приложения (звонков, получения SMS, отключения устройства из-за севшей батарейки)</span></li>
<li><span style="font-family: inherit;">Моделирование различных уровней связи</span></li>
</ul>
<div>
Конечно, выбор инструментов, которые могут использоваться для этих задач, зависит от конкретного устройства и приложения. Для Android приложений существуют свои инструменты (к примеру, <a href="https://developer.android.com/sdk/index.html">Android SDK</a>), для iOS - свои (к примеру, <a href="https://developer.apple.com/library/mac/documentation/ToolsLanguages/Conceptual/Xcode_Overview/index.html#//apple_ref/doc/uid/TP40010215">XCode</a>). Информацию о новых инструментах можно найти на сайте у <a href="http://www.akhozya.com/">Александра Хози</a>. Поначалу всё это выглядит довольно сложно. Поэтому совет такой - ищите инструменты по мере необходимости, начинайте с простого (как сделать снимок экрана, как скачать файл с устройства на компьютер) и постепенно переходите к более сложным вещам (запуск приложения под отладчиком, сбор статистики его работы, анализ сетевого трафика).</div>
</div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
В плане внешнего вида - существуют специальные руководства, которые описывают, как должно выглядеть приложение на той или иной ОС. Например, для <a href="http://developer.android.com/design/index.html">Android</a> или для <a href="https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/index.html#//apple_ref/doc/uid/TP40006556-CH66-SW1">iOS</a>. Любители всего визуального (такие, как я :)) найдут для себя много интересного в этих документах. Насколько я знаю, и AppleStore, и Google Play при публикации приложений проводят проверку внешнего вида на соответствие правилам. И если вы заинтересованы в более быстром релизе вашего продукта - знание этих правил очень пригодится и на этапе дизайна, и на этапе тестирования.<br />
<br />
<b>Какие техники тест дизайна использовать? Или, по-простому, как придумывать тесты для мобильных приложений?</b><br />
<br />
Мне очень нравится статья <span style="background-color: white; color: #333333; font-family: inherit; line-height: 1.1em;"><a href="https://www.blogger.com/blogger.g?blogID=4371806625756604248#editor/target=post;postID=1577602904553769463">Mobile App Test Coverage Model : LONG FUN CUP</a> (спасибо Леше Федорову за наводку) - в ней дается модель, которая помогает в генерации идей тестов. Особенно понравились советы вроде: </span><span style="font-family: inherit;"><span style="background-color: white; color: #333333; line-height: 1.1em;">"</span><span style="background-color: white; color: #333333; line-height: 22px;">It’s a sin to test mobile app sitting at your desk, lie in the couch".</span></span><br />
<span style="background-color: white; color: #333333; font-family: inherit; line-height: 1.1em;"><br /></span>
<span style="background-color: white; color: #333333; font-family: inherit; line-height: 1.1em;">Также советую почитать бесплатную книжку <a href="https://enjoytesting.files.wordpress.com/2013/10/mobile_testing_ready_reckoner.pdf">Mobile testing: Ready reckoner</a>, это отличный сборник. Некоторые вещи мне даже в голову не приходили :) </span><br />
<br />
<b>Какие критерии качества проверять?</b><br />
<br />
Наверное, сложно придумать критерии качества, специфичные именно для мобильных приложений. Но в плане важности этих критериев, как мне кажется, есть некоторые отличия от обычных десктопных приложений. Для мобилок на первый план выходят удобство использования, портируемость, быстродействие. Ну и, конечно, функциональная полнота, её никто не отменял.<br />
<br />
Пытался придумать название для критерия качества, который означал бы, что мобильные приложения должны работать везде, в любых условиях. И в любых нештатных ситуациях (а их в жизни мобильных приложений бывает очень много) они должны работать корректно или хотя бы выдавать понятную ошибку. Давайте назовём это неубиваемостью или стойкостью. Хотя похоже и на надежность. В общем, мобильное приложение в любой ситуации должно сохранять pocker face, как будто ничего страшного не произошло :)<br />
<br />
<b>Еще немного интересных материалов по теме:</b><br />
<br />
<ul>
<li><a href="http://rinauzhevko.blogspot.ru/2015/06/sqa-days_27.html">Подборка докладов SQA Days по мобильному тестированию от Рины Ужевко</a></li>
<li><a href="http://vestfalka.blogspot.ru/2013/06/blog-post_21.html">Интервью с Александром Хозя в блоге Татьяны Зинченко</a></li>
<li><a href="https://leanpub.com/testmobileapps">Книжка Джонатана Кёля - <span style="background-color: white; font-family: inherit; line-height: 1.25;">Tap Into Mobile Application Testing</span></a>.<span style="background-color: white; line-height: 20px;"> Книжка небесплатная, но е</span>сть <a href="http://samples.leanpub.com/testmobileapps-sample.pdf">бесплатный отрывок</a>. </li>
<li><a href="http://m.habrahabr.ru/post/237499/">Статья с множеством разных инструментов для тестирования</a></li>
</ul>
Надеюсь сообщение получилось легким и не перегруженным информацией.<br />
<br />
Еще раз приглашаю всех <a href="http://33testers.blogspot.ru/2015/08/wt08.html">на сессию викенд тестирования, посвященную мобильному тестированию</a>. Увидимся!</div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com7tag:blogger.com,1999:blog-4371806625756604248.post-35373860565868629842015-08-09T12:39:00.001-07:002015-08-09T12:39:56.045-07:00Анонс WT08: Тестирование мобильных приложений<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAWoh-SIuRqP_4m-H7A87ZzfQmTvBgKhMILu_yIrD6FMwzehRg8ALqxuVzxZbL_SKuaa_uJh9OJ6qHvlzjNKeA-T8c6Y00p9gzaQcamltkf34hQNASsn9G7Hrt3uZdrJWU0ml117B87bcC/s1600/logo_08_mobile.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAWoh-SIuRqP_4m-H7A87ZzfQmTvBgKhMILu_yIrD6FMwzehRg8ALqxuVzxZbL_SKuaa_uJh9OJ6qHvlzjNKeA-T8c6Y00p9gzaQcamltkf34hQNASsn9G7Hrt3uZdrJWU0ml117B87bcC/s200/logo_08_mobile.png" width="200" /></a></div>
Всем большой привет!<br />
<br />
Внезапно я понял, что по разным причинам единственно возможная дата следующей сессии викенд тестирования - 15 августа, суббота. Поэтому спешу вас всех пригласить :)<br />
<br />
Для участия нужно зарегистрироваться по <a href="http://goo.gl/forms/d6njoio1sY">ссылке</a>. Начало в 12:00 по московскому времени.<br />
<br />
Тема будет такой: тестирование мобильных приложений.<br />
<br />
Ниже я коротко расскажу о том, чем мы будем заниматься.<br />
<br />
<a name='more'></a>Во-первых, мобильные приложения не просто пришли в нашу жизнь, они уже заняли в ней заметное место. И теперь почти все мы являемся постоянными пользователями этих приложений.<br />
<br />
Во-вторых, у мобильных приложений, очевидно, есть свои особенности. Они подразумевают использование на бегу, в различных условиях связи, в различных локациях. И поэтому они должны быть удобны, понятны, просты, быстры, безопасны.<br />
<br />
В-третьих, тестирование мобильных приложений может быть нелегкой задачей. Связано это с множеством возможных конфигураций для тестирования (разные операционные системы, разные устройства, разные условия использования). Но это не единственная трудность, с которой мы можем столкнуться.<br />
<br />
На следующей сессии викенд тестирования:<br />
<br />
<ul>
<li>Мы поговорим о том, какие мобильные приложения мы используем</li>
<li>Какие критерии качества являются важными для них</li>
<li>Как можно проверить эти критерии качества</li>
<li>Что нужно знать тестировщику мобильных приложений</li>
<li>Большая часть сессии будет посвящена практике, во время которой мы протестируем что-нибудь интересное</li>
</ul>
<div>
<br /></div>
<div>
Еще раз, приходите в субботу, 15 августа, в 12:00 по Москве.</div>
<div>
<br /></div>
<div>
Надеюсь каждый найдет для себя что-то полезное.</div>
<div>
<br /></div>
<div>
Всем хорошей и плодотворной рабочей недели :)</div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-31590776982144064872015-07-25T13:29:00.001-07:002015-07-25T13:29:54.748-07:00WT07: Отчетик о сессии, посвященной тестированию API<span style="font-family: inherit;"><span style="font-size: small;">По горячим следам напишу отчет о сессии викенд тестирования, прошедшей сегодня. Темой было тестирование API. Участников собралось довольно много - около 20 человек. Были ребята из Белоруссии, Украины, России, Германии. Что радует - были постоянные участники, которые приходили уже не раз. Давайте я расскажу о том, чем мы занимались.</span></span><br />
<a name='more'></a><span style="font-family: inherit;"><span style="font-size: small;">Начали мы с обсуждения - что такое API. Вот несколько определений, которые мы сформулировали:</span></span><ul>
<li><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>RU</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;">Дверь,
в которую можно постучаться и тебе ответят) (</span><span style="line-height: 115%;"><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>RU</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--></span><span style="line-height: 115%;"><span style="line-height: 115%;">Evgeniy
Nepsha</span>)</span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;">Ключ к
функционалу, или части функционала программы, чтобы использовать ее в других
приложениях (<span style="line-height: 115%;">Миша
Гречуха</span>)</span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;">То,
что нужно знать, чтобы взаимодействовать с каким-то ПО. если свое пишешь или
тестируешь (</span><span style="line-height: 115%;"><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>RU</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--></span><span style="line-height: 115%;"><span style="line-height: 115%;">Oleksandr
Velychko</span>)</span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;">Программный
интерфейс для интеграции программ между собой (</span><span style="line-height: 115%;"><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>RU</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--></span><span style="line-height: 115%;"><span style="line-height: 115%;">Koval,
Konstantin</span>)</span></span></span></li>
<li><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Обычная таблица";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]--><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;">Интерфейс
взаимодействия с ПО (</span><span style="line-height: 115%;"><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>RU</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--></span><span style="line-height: 115%;"><span style="line-height: 115%;">Nikita
Drok</span>)</span></span></span></li>
</ul>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;">После этого мы обсудили опыт работы с API у участников сессии. Некоторые ребята на своей работе только и занимаются, что тестированием API. Другие с ним иногда работают. А кто-то вообще с ним никогда не сталкивался.</span></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;"><br /></span></span></span>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;">Кроме того, мы пришли к выводу, что API способен помочь в тестировании продукта, для доступа к которому он используется. Например, с помощью API можно начинать тестирование продукта в том случае, когда GUI не готов. И автоматизировать тесты через запросы к API обычно намного легче - для этого достаточно несложных запросов на скриптовом языке или на bash.</span></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;"><br /></span></span></span>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;">Отдельная интересная тема, которую мы обсудили - аутентификация пользователей для использования API. Она бывает разной - к некоторым API доступ открыт, к другим нужен специальный ключ, к третьим нужно передавать логин и пароль. Доступ через API может быть источником уязвимостей приложения, потому что иногда про него забывают. И поэтому через API пользователи могут получить доступ к закрытому для них функционалу.</span></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;"><br /></span></span></span>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;">Дальше была самая крупная часть сессии - практика. Объектом тестирования был выбран <a href="https://tech.yandex.ru/translate/">API Яндекс переводчика</a>. И, надо сказать, участники нашли несколько интересных вещей - потенциальных багов:</span></span></span><br />
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">При запросе без указания необходимого параметра lang появляется не совсем корректная ошибка: "</span></span><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-4f1c4690-c6ca-b554-850e-cfc26d16ef05" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{"code":501,"message":"The specified translation direction is not supported"}</span>". Тестировщик: </span></span><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">Evgeniy Nepsha.</span></span></span></span></span><span style="font-family: "Calibri","sans-serif"; font-size: 11.0pt; line-height: 115%; mso-ansi-language: RU; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="font-family: inherit;"><span style="font-size: small;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-family: "Trebuchet MS"; font-size: 17.3333px; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><br /></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"></span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-946c8b93-c6cb-db1c-0ee2-8cc265f7a8f8" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">При запросе с html тегами во входящем тексте, варианты перевода отличаются при использoвании формата html и plain</span>, хотя сам исходник ничем не отличается. </span></span></span><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Тестировщик: </span></span> </span></span><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">Evgeniy Nepsha.</span></span></span> </span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span id="docs-internal-guid-946c8b93-c6ce-9723-2f74-aae95e5ba98a" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">При запросе перевода с параметром lang=ru-en, с параметром text, который содержит текст "Russian" , выходной текст содержит перевод "English". Что выглядит по меньшей мере странным, потому что слова Russian мы просить не переводили. </span></span><span style="font-size: small;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="font-family: inherit;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Тестировщик: </span></span> </span></span><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">Evgeniy Nepsha.</span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">Допустимы запросы с параметром text больше максимально допустимых документацией 10000 символов (без пробелов). Тестировщик: Maryna Kolesnik.</span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">При переводе с французского на испанский слово "</span></span></span><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>RU</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--></span></span><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span lang="EN-US" style="line-height: 115%;">Francais</span>" переводится как "</span></span></span><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>RU</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--></span></span><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="line-height: 115%;">inglés</span>". Откуда вдруг берется английский - непонятно :) Тестировщик: </span></span></span></span><span style="font-size: small;"><span style="line-height: 115%;"><span id="docs-internal-guid-4f1c4690-c6c9-d340-76b7-046531ca5ac7" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span id="docs-internal-guid-36e034dc-c6cb-65e4-79e1-758692730ae3" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="font-family: inherit;"><span style="line-height: 115%;">Oleksandr
Velychko.</span></span></span></span></span></span></span></li>
<li><span style="font-size: small;"><span style="font-family: inherit;">Непонятная логика транслитерации. При <a href="https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20150725T085623Z.d918b818df371f52.6b5eaf1e82870f720b9ef45126fc596ebd201b93&lang=en-ru&text=Lingua%20Latina%20non%20penis%20canina">запросе</a> возвращается "Лингва Латина нон пенис canina к", хотя ожидается, что все слова будут в транслите. Тестировщик: <span style="line-height: 115%;">Nikita
Drok.</span></span></span></li>
</ul>
<span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">Кроме того, несколько участников успели подготовить отчеты по проведенному тестированию. И все это всего лишь за час! Молодцы! Леша Федоров вообще зашел с другой стороны и подготовил файлик с запросами, который можно импортировать в Postman и потом протестировать все языки, доступные в функции <span style="font-family: inherit;">API </span></span></span></span><span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;"><span style="font-family: inherit;"><span id="docs-internal-guid-65208b0b-c6e1-1a4a-cd4b-90cdcb2b5bd8" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">getLangs.</span></span> </span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">После практики мы выбрали тему следующей сессии - ей будет "Тестирование мобильных приложений". А также подвели итоги:</span></span></span><br />
<ul>
<li><span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">Для тестирования API нужно знать специальные инструменты и уметь ими пользоваться. Это сильно облегчает тестирование.</span></span></span></li>
<li><span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">Ожидаемо пригодится знание функционала самого продукта и технологий, которые в нем используются.</span></span></span></li>
<li><span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">API тестирование - хороший кандидат для автоматизации.</span></span></span></li>
<li><span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">Умение программировать тоже пригодится в тестировании API - оно поможет взглянуть на API с точки зрения его основных пользователей.</span></span></span></li>
<li><span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">При тестировании Web API нужно знать основы HTTP (коды ошибок, методы GET-POST-PUT, и так далее)</span></span></span></li>
</ul>
<span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">В целом, сессия прошла здорово. Хотел еще раз поблагодарить всех участников! До встречи в следующий раз!</span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="line-height: 115%;">Всю переписку можно посмотреть в <a href="https://drive.google.com/file/d/0BwP6rJYT-D1fcU1abXhpSDhMSkE/view?usp=sharing">файлике</a>.</span></span></span><span style="font-family: "Calibri","sans-serif"; font-size: 11.0pt; line-height: 115%; mso-ansi-language: RU; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="font-family: inherit;"><span style="font-size: small;"></span></span><br /></span>wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com2tag:blogger.com,1999:blog-4371806625756604248.post-88202704245111523752015-07-23T13:39:00.002-07:002015-07-23T13:39:28.274-07:00Коротко о API и его тестировании<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRrxrXoe4QzcFqd6W9Ii5ooDGhtgWhmfEX3RoT9IJhi0wuSuafikGhH7MjdbSW44PwmhZQ0logZXxqZfoY2DCURcgYOZUBYh8utk_UqR1JfAJkVr7ZjR-f5fr-u6Mn1TryV4cEKF-3kdff/s1600/nerd.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRrxrXoe4QzcFqd6W9Ii5ooDGhtgWhmfEX3RoT9IJhi0wuSuafikGhH7MjdbSW44PwmhZQ0logZXxqZfoY2DCURcgYOZUBYh8utk_UqR1JfAJkVr7ZjR-f5fr-u6Mn1TryV4cEKF-3kdff/s200/nerd.png" width="116" /></a></div>
В этом сообщении я постарался собрать информацию, которая может пригодиться тестировщикам, желающим узнать, что такое API. Надеюсь что-то полезное для себя найдут и опытные в тестировании API люди. Ну или хотя бы помогут найти ошибки в моей статье :)<br />
<a name='more'></a><b>Что такое API</b><br />
<br />
API (Application Programming Interface) - набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах (<a href="https://ru.wikipedia.org/wiki/API">Wikipedia</a>).<br />
<br />
Своими словами, API предоставляет нам возможность использовать чужие наработки в своих целях. Впервые я столкнулся с API на примере Windows API. Это набор функций, которые может использовать любое приложение, запущенное на данной ОС. К примеру, оно может использовать стандартные функции для отрисовки интерфейса.<br />
<br />
Современные API часто принимают форму веб-сервисов, которые предоставляют пользователям (как людям, так и другим веб-сервисам) какую-то информацию. Обычно процедура обмена информацией и формат передачи данных структурированы, чтобы обе стороны знали, как взаимодействовать между собой.<br />
<br />
На сайте <a href="https://dev.hh.ru/">https://dev.hh.ru/</a> (а точнее, <a href="https://github.com/hhru/api/blob/master/docs/general.md">https://github.com/hhru/api/blob/master/docs/general.md</a>) вы можете найти описание того, как клиенты и сервисы HeadHunter API взаимодействуют между собой. Например, цитата с сайта:<br />
<ul>
<li>Всё API работает по протоколу HTTPS.</li>
<li>Авторизация осуществляется по протоколу OAuth2.</li>
<li>Все данные доступны только в формате JSON.</li>
<li>Базовый URL — <code>https://api.hh.ru/</code></li>
<li><a href="https://www.blogger.com/null" name="user-content-date-format"> Даты форматируются в соответствии с
</a><a href="http://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>: <code>YYYY-MM-DDThh:mm:ss±hhmm</code> </li>
</ul>
Вы можете почитать <a href="https://github.com/hhru/api">подробное описание</a> HH API - это хороший пример пользовательской документации. <br />
<br />
<b>Форматы передачи данных</b><br />
<br />
Существует множество форматов данных, с помощью которых пользователи взаимодействуют с API. Например, широко известный XML. Или <a href="https://ru.wikipedia.org/wiki/JSON">JSON</a> - легковесный и несложный формат, который выглядит как:<br />
<br />
<pre>{
"id": "0001",
"type": "donut",
"name": "Cake",
"image":
{
"url": "images/0001.jpg",
"width": 200,
"height": 200
}</pre>
<pre>}</pre>
<pre> </pre>
<span style="font-family: inherit;"><span style="font-size: small;">П<span style="font-family: inherit;">о сс<span style="font-family: inherit;">ылкам ниже вы можете посмотреть ответы, приходящие от <span style="font-family: inherit;"><a href="https://www.mediawiki.org/wiki/API:Main_page/ru">MediaWiki<span style="font-family: inherit;"> </span>API</a><span style="font-family: inherit;">, в разных формата<span style="font-family: inherit;">х<span style="font-family: inherit;">:</span></span></span></span></span></span></span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">JSON: </span></span></span></span></span></span></span></span><a href="https://en.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=jsonfm"><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">https://en.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=jsonfm</span> </span></span></span></span></span></span></span></span></a><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">XML: <a href="https://en.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=xmlfm">https://en.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=xmlfm</a></span></span></span></span></span></span></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">PHP: <a href="https://en.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=php">https://en.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=php</a> (<span style="font-family: inherit;">осторожно, <span style="font-family: inherit;">произ<span style="font-family: inherit;">ойдет <span style="font-family: inherit;">с</span>качивание </span></span>файла)</span></span></span></span></span></span></span></span></span><br />
<br />
<b><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">H<span style="font-family: inherit;">TTP г<span style="font-family: inherit;">лаголы</span></span></span></span></span></span></span></span></span></span></span></b><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Обычно</span> <span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">п<span style="font-family: inherit;">ри обращении к веб API </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">использу<span style="font-family: inherit;">ют</span>ся запросы H<span style="font-family: inherit;">TTP<span style="font-family: inherit;">.</span></span></span></span></span></span></span></span></span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"> Поэтому </span></span></span><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">нужно хотя бы коротко сказать о <span style="font-family: inherit;">стандартных методах, <span style="font-family: inherit;"><span style="font-family: inherit;">которые могут содер<span style="font-family: inherit;">жаться в </span></span>HTTP запросе<span style="font-family: inherit;"><span style="font-family: inherit;">. <span style="font-family: inherit;">Эти мето<span style="font-family: inherit;">ды <span style="font-family: inherit;">также </span>называют HTTP г<span style="font-family: inherit;">лаголами<span style="font-family: inherit;">:</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">GET. <span style="font-family: inherit;">Наверное, самый популярный тип<span style="font-family: inherit;"> запроса. Используется для получения или чтения данных.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">PUT. Обыч<span style="font-family: inherit;">н<span style="font-family: inherit;">о </span>и</span>спо<span style="font-family: inherit;">льзуется для обновления ре<span style="font-family: inherit;">сурса<span style="font-family: inherit;">.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">POST. Обычно используется для создания нового ресурса<span style="font-family: inherit;">.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">DELETE. Удаляет <span style="font-family: inherit;">данные.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">И другие </span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
</ul>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Если мы хотим получить информацию о ре<span style="font-family: inherit;">сурсе, </span></span></span></span></span></span></span></span></span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><a href="https://ru.wikipedia.org/wiki/URI">URI</a> <span style="font-family: inherit;">которого </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">http://www.example.com/customers/12345</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">, мы можем послать <span style="font-family: inherit;">запрос:</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<i><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">GET http://www.example.com/customers/12345</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></i><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Если мы хотим обновить ресурс<span style="font-family: inherit;"> - мы можем послать PUT-запрос:</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><i>PUT http://www.example.com/customers/12345/orders/98765</i> </span> </span></span></span></span> </span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;">Обычные GET запросы способен посылать
веб-браузер. Для посылки других типов запросов могут потребоваться скриптовые языки или специальные инструменты (об этом будет ниже). </span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">О H<span style="font-family: inherit;">TTP <span style="font-family: inherit;">методах</span> можно <span style="font-family: inherit;">подробнее </span>почит<span style="font-family: inherit;">ать <span style="font-family: inherit;"><span style="font-family: inherit;"><a href="https://ru.wikipedia.org/wiki/HTTP#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D1.8B">на W</a><span style="font-family: inherit;"><a href="https://ru.wikipedia.org/wiki/HTTP#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D1.8B">iki</a>.</span></span></span></span></span> </span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<b><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">HTTP <span style="font-family: inherit;">к</span>оды ответов</span></span></span></span></span></span></span></span></span></span></span></span></b><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span>Сервер
может посылать разные коды в ответ на запросы пользователей. Это могут быть коды ошибок или просто коды, информирующие пользователей о состоянии сервера. Подробное описание можно найти, опять же, на <a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP">вики</a>.</span></span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span>Наиболее известные коды - 4xx (проблемы на стороне клиента) и 5xx
(проблемы на стороне сервера). О том, какие коды возвращать в той или иной ситуации, решают разработчики самих API. Например, API сайта Одноклассники возвращает
коды, описание которых можно найти на странице <a href="https://apiok.ru/wiki/pages/viewpage.action?pageId=77824003">https://apiok.ru/wiki/pages/viewpage.action?pageId=77824003</a>. </span></span></span><br />
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span><br /></span></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span>Кроме того, советую послушать песню <a href="http://mp3.uz.cx/%D0%BD%D0%B0%D1%83%D1%87%D0%BD%D0%BE-%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9-%D1%80%D1%8D%D0%BF/">Реквест-респонс</a> - просто и понятно о кодах, возвращаемых в HTTP запросах (осторожно, репчик :)).</span></span></span></div>
<br />
<b><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">REST API</span></span></span></span></span></span></span></span></span></span></span></span></b><br />
<br />
<div class="txt_bottom_inset">
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><a href="https://ru.wikipedia.org/wiki/REST">REST API</a> - <span style="font-family: inherit;">э</span>то идеология пост<span style="font-family: inherit;">роения <span style="font-family: inherit;">API, которая расшифровывается как </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span lang="en">Representational State Transfer</span> <span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">API. Она основывается на следующих принц<span style="font-family: inherit;">ипах</span>, сформулированных ее создателем<span style="font-family: inherit;"><span style="font-family: inherit;">, Роем Филдинго<span style="font-family: inherit;">м</span></span>:</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> </div>
<ol>
<li>Клиент-серверная архитектура</li>
<li>Stateless сервер</li>
<li>Кешируемость</li>
<li>Многослойная структура</li>
<li>Единый интерфейс</li>
<li>Код по требованию
</li>
</ol>
Не буду углубляться в детали, желающим почитать по теме могу посоветовать <a href="http://secl.com.ua/article_rest_api_web.html">статью</a>.<br />
<br />
<div>
<b><span style="font-family: inherit;"><span style="font-size: small;"><span>Аутентификация</span></span></span></b></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span><br /></span></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span>Обычно
для использования API нужен специальный ключ, с помощью которого сервер
узнает пользователя. В открытых API ключ может отсутствовать или
предоставляться по запросу (например, после регистрации на
сайте).</span></span></span><span style="font-size: small;"><br /></span></div>
<span style="font-family: inherit;"><span style="font-size: small;"><span></span></span></span><div>
<span style="font-family: inherit;"><span style="font-size: small;"><span><br /></span></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span>Для интеграции сервисов друг с другом широко используется протокол
аутентификации OAuth (подробнее о нём можно почитать в статье </span></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><a href="http://m.geektimes.ru/post/77648/" target="_blank">http://m.geektimes.ru/post/<wbr></wbr>77648/</a>).
Например, он может использоваться онлайн игрой, которая импортирует список друзей из Facebook.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span><br /></span></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span></span></span></span></div>
<div>
<b><span style="font-family: inherit;"><span style="font-size: small;">Инструменты для работы с API</span></span></b></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Обычные GET запросы можно посылать при помощи браузера. Но существует
множество специальных инструментов, которые предназначены для разработки и
тестирования API. Они предоставляют возможность не только отправлять
различные типы запросов, но и сохранять запросы, показывать результаты в различных форматах, выступать в роли proxy сервера. И многое многое другое. </span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Среди таких инструментов:</span></span><br />
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><a href="https://www.getpostman.com/">Postman</a>. Расширение для Google Chrome, которое в бесплатной версии позволяет посылать запросы, записывать их, показывать историю. Удобно и понятно.</span></span><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><a href="http://jmeter.apache.org/">jMeter</a>. Инструмент, получивший известность прежде всего благодаря нагрузочному тестированию, которое можно проводить с его помощью. Но это лишь одно из множества его применений.</span></span></li>
<li><span style="font-family: inherit;"></span><span style="font-family: inherit;"><span style="font-size: small;"><a href="http://www.telerik.com/download/fiddler">Fiddler</a>. Позволяет просматривать посылаемые HTTP запросы. И много чего еще.</span></span><span style="font-family: inherit;"></span><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><a href="http://sourceforge.net/projects/soapui/">SoapUI</a>. Мощный продукт для разработки и тестирования веб приложений. Сам я его не использовал, но слышал много отзывов - и хороших, и плохих.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><a href="https://www.runscope.com/">Runscope</a>. Подробнее об этом инструменте - в статье на <a href="http://qahelp.net/instrument-dlya-testirovaniya-api-runscope/">QAHelp</a> и <a href="http://habrahabr.ru/company/redmadrobot/blog/253777/">Хабрахабре</a>.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><a href="https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo">Advanced REST Client</a>. Еще одно расширение для Chrome для работы с API (конструкция запросов, их показ в удобном виде и другое).</span></span></li>
</ul>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><b>Тестирование API</b></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">А теперь - очень коротко о том, как тестировать API.</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"> </span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;">Конечно, тут есть своя специфика, но мы можем использовать такие общепринятые техники, как:</span></span><br />
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">Анализ граничных значений. В API запросах в явном виде могут передаваться значения параметров. Это отличный повод выделить границы входных и выходных значений и проверить их.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Разбиение на классы
эквивалентности. Даже у небольшого API есть множество вариантов использования и множество комбинаций входных и выходных переменных. Поэтому мы можем лишний раз использовать наши навыки выделения эквивалентных классов.</span></span></li>
</ul>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Как мне кажется, при тестировании нужно
учитывать, что API создаются во многом для интеграции сервисов. И работают с ними часто не люди, а другие программные системы. Поэтому нужно
оценивать API с позиции удобства его использования другими продуктами, с позиции легкой интеграции с ним. Уважающий себя API должен также иметь понятную и подробную документацию.</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span>
<span style="font-family: inherit;"><span style="font-size: small;">Можно сделать вывод, что все виды тестирования, к которым мы привыкли - функциональное тестирование, нагрузочное, тестирование безопасности, юзабилити, тестирование документации - не чужды при тестировании API. В принципе, это не удивительно, потому что API является полноценным самостоятельным продуктом.</span></span></div>
<br />
<b>Дополнительные материалы</b><br />
<ul>
<li>(английский) <a href="http://blog.eviltester.com/2015/01/some-api-testing-basic-introductory.html?m=1">http://blog.eviltester.com/2015/01/some-api-testing-basic-introductory.html?m=1</a></li>
<li>(английский) <a href="http://testhuddle.com/forums/topic/api-testing-tools-and-tips/">http://testhuddle.com/forums/topic/api-testing-tools-and-tips/</a> </li>
<li><a href="http://sqadays.com/ru/talk/28689">http://sqadays.com/ru/talk/28689</a> - отличный доклад о том, как API может помочь в улучшении testability приложения</li>
<li><a href="http://www.programmableweb.com/">http://www.programmableweb.com/</a> - огромный сборник открытых API, на которых можно потренироваться</li>
</ul>
Всем спасибо! Еще раз приглашаю всех на <a href="http://33testers.blogspot.ru/2015/07/weekend-testing-07-api.html">сессию Weekend testing</a>, где мы будем тестировать API.wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com23tag:blogger.com,1999:blog-4371806625756604248.post-67383416158200020912015-07-18T04:54:00.000-07:002015-07-18T04:54:36.059-07:00Анонс Weekend testing #07: Тестирование API<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1GiIzOMEo4OnxZ6DqgATLy-CUTnZrGspnc30peb3oG43xMCynmmYXRvp2AykUARYHhl-rA8upGr0sSvJvhTK2Y8xj1DVe53n8YKJwmoAUCUs52JfVTmyBKWa1vAzw_N47HvsEnyJgHtFw/s1600/logo_07_api.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1GiIzOMEo4OnxZ6DqgATLy-CUTnZrGspnc30peb3oG43xMCynmmYXRvp2AykUARYHhl-rA8upGr0sSvJvhTK2Y8xj1DVe53n8YKJwmoAUCUs52JfVTmyBKWa1vAzw_N47HvsEnyJgHtFw/s200/logo_07_api.png" width="200" /></a></div>
Наконец-то я добрался до своего блога :) За месяц своего отсутствия я научился рисовать колонну дорического ордера, заработал 30 баксов на <a href="https://testlio.com/">Testlio</a>, прослушал все выпуски <a href="http://radio-qa.com/">Radio QA</a>. А теперь пришло время вернуться к нашему Weekend testing и научиться чему-то новому.<br />
<br />
Приглашаем всех вас поучаствовать в следующей (седьмой по счёту) сессии, посвященной <b>тестированию API</b>.<br />
<br />
Сессия начнётся <b>25 июля 2015 года в 12:00</b> по Москве и займет 2 часа. Для участия необходимо <b>зарегистрироваться</b> по <a href="http://goo.gl/forms/H77F2HqMA9">ссылке</a>.<br />
<br />
Ниже - коротко о содержании самой сессии. <br />
<br />
<a name='more'></a>Тестирование API - новая для меня тема. Да, я много об этом слышал, читал статьи, интересовался. Но так получилось, что тестированием API я практически не занимался. Поэтому предстоящая сессия интересна для меня не только как для организатора, но и как для человека, который хочет чему-то научиться сам.<br />
<br />
Что мы будем делать:<br />
<ul>
<li>Поговорим о том, что такое API и как с ним можно работать</li>
<li>Обсудим инструменты для работы с API</li>
<li>Протестируем общедоступный API (этому будет посвящена бОльшая часть сессии)</li>
<li>Подведем итоги - как можно тестировать API, какие особенности у этого вида тестирования, какие навыки и знания нужны от тестировщика</li>
</ul>
Приходите, будет интересно! <br /><br />
P.S. На следующей неделе в помощь участникам я планирую выложить в свой блог материалы (статьи, доклады с конференций и так далее), которые покрывают тему API тестирования.wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com6tag:blogger.com,1999:blog-4371806625756604248.post-13890339802124187902015-06-17T22:05:00.000-07:002015-06-17T22:06:00.236-07:00Регрессионное тестирование<span style="font-size: small;"><span style="font-family: inherit;">Я давно хотел написать о <span style="font-family: inherit;">р</span>егрессионно<span style="font-family: inherit;">м</span> тестировани<span style="font-family: inherit;">и.</span> А тут и случай представился - 20 июня <span style="font-family: inherit;">мы <span style="font-family: inherit;">провед<span style="font-family: inherit;">ём</span></span> <a href="http://33testers.blogspot.ru/2015/06/weekend-testing-06.html">сесси<span style="font-family: inherit;">ю</span> </a></span><a href="http://33testers.blogspot.ru/2015/06/weekend-testing-06.html">Weekend testing<span style="font-family: inherit;"> по этой теме</span></a>. </span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><br />
</span></span></span> <span style="font-size: small;"><span style="font-family: inherit;">Что <span style="font-family: inherit;">это такое</span>? <span style="font-family: inherit;">Суть регрессионного тестирования в том, чтобы </span><span style="font-family: inherit;">найти проблемы, возникшие в результате изменений продукта. Для тех, кто заинтересован в более формальном опре<span style="font-family: inherit;">делении<span style="font-family: inherit;"><span style="font-family: inherit;">,</span> </span>могу посоветоват<span style="font-family: inherit;">ь <a href="https://en.wikipedia.org/?title=Regression_testing">Wikip<span style="font-family: inherit;">edia</span></a>,<span style="font-family: inherit;"> <a href="https://msdn.microsoft.com/en-us/library/aa292167%28v=vs.71%29.aspx">MSDN</a><span style="font-family: inherit;">, <a href="http://istqbexamcertification.com/what-is-regression-testing-in-software/">ISTQB</a></span></span>.</span></span></span></span></span><br />
<br />
<a name='more'></a><br /><br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Предположим, есть продукт, сост<span style="font-family: inherit;">оящий из множества частей:</span></span></span></span></span></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixkkQvqlfVB0Yyx7dKUE0ebHIAlp3W323QbNaQZDA53svsQjrhI0VrJBapxSAcnLcOFloImin6qII8_-OI30zJdE_9P7hu05q0RJV0KrTZcnrckbNcOBrU8ZU1RCEvjTIkxQ-yHJpQ9oKv/s1600/product.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="310" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixkkQvqlfVB0Yyx7dKUE0ebHIAlp3W323QbNaQZDA53svsQjrhI0VrJBapxSAcnLcOFloImin6qII8_-OI30zJdE_9P7hu05q0RJV0KrTZcnrckbNcOBrU8ZU1RCEvjTIkxQ-yHJpQ9oKv/s320/product.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">При изменении одной из его частей могут возникнуть проблемы в других частях<span style="font-family: inherit;">:</span></span></span></span></span></span></span></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2cTkivsnmYvkQGsjzVRmj4SgXB62tmH_BYlvMcynrDJ6Cp9arEMMoV-cgn1rDhFgGvmjJh1pmaFCtMmhaaS8HcZIZa6_R_hZbamJhGRf9trgwoEGGTEDW_GKHr5C7O90-txmPC_m-iaZh/s1600/product_changes.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2cTkivsnmYvkQGsjzVRmj4SgXB62tmH_BYlvMcynrDJ6Cp9arEMMoV-cgn1rDhFgGvmjJh1pmaFCtMmhaaS8HcZIZa6_R_hZbamJhGRf9trgwoEGGTEDW_GKHr5C7O90-txmPC_m-iaZh/s320/product_changes.png" width="320" /></a></div>
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"> </span></span></span></span></span></span></span></span></span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Либо добавление н<span style="font-family: inherit;">ового функционала приведет к ошибка<span style="font-family: inherit;">м в старом:</span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6SwcTdsD2uZL0-muBC9jPepdnNkUW7LjTbqBCTmbUUegoATW-o-G_MvJy0vhJ_0xAVe2YvmCMoN1xNaue0XqKeHA9lRsGPC-4pOB9vX12kaq33KMfrEP9W7ayiP03Nmic9DjRYY7fpnrY/s1600/product_new_features.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6SwcTdsD2uZL0-muBC9jPepdnNkUW7LjTbqBCTmbUUegoATW-o-G_MvJy0vhJ_0xAVe2YvmCMoN1xNaue0XqKeHA9lRsGPC-4pOB9vX12kaq33KMfrEP9W7ayiP03Nmic9DjRYY7fpnrY/s320/product_new_features.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Зачем нам проводить данный вид тестирования? <span style="font-family: inherit;">Одна из очевидн<span style="font-family: inherit;">ых </span>причин</span> <span style="font-family: inherit;">- </span>минимизировать регрессионные риски. То<span style="font-family: inherit;"> </span>есть<span style="font-family: inherit;">, риски того, что при очередно<span style="font-family: inherit;">м </span>изменении продукт <span style="font-family: inherit;">перестанет выполнять свои функции.</span></span> Кстати, я не наш<span style="font-family: inherit;">е<span style="font-family: inherit;">л термина "регрессионный риск"ни в <span style="font-family: inherit;">англоязычной, ни в русскоязычной литературе<span style="font-family: inherit;"><span style="font-family: inherit;">. А мне <span style="font-family: inherit;">он</span> кажется удобным и <span style="font-family: inherit;">"говорящим<span style="font-family: inherit;">", как говорящи<span style="font-family: inherit;">е фа<span style="font-family: inherit;">милии <span style="font-family: inherit;">у писателей.</span></span></span></span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><br />
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> <span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">С р<span style="font-family: inherit;">егрессионным тестированием плотно связана другая активность<span style="font-family: inherit;"> - импакт анали<span style="font-family: inherit;">з (<span style="font-family: inherit;">или иначе, анализ влияния изменени<span style="font-family: inherit;">й)</span></span>. <span style="font-family: inherit;">Обычно</span> под <span style="font-family: inherit;">импакт анализом<span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"> имею<span style="font-family: inherit;">т в виду </span>одно из следующих</span></span>:<span style="font-family: inherit;"> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">1) <span style="font-family: inherit;">П</span>опытк<span style="font-family: inherit;">у</span> оценить регрессионные риски <span style="font-family: inherit;">е<span style="font-family: inherit;">щ<span style="font-family: inherit;">ё</span> на этапе планирования</span> изменений (этим <span style="font-family: inherit;"><span style="font-family: inherit;">опре<span style="font-family: inherit;">делением, по <span style="font-family: inherit;">моему опыту, чаще поль<span style="font-family: inherit;">зуются менеджеры и разработчики</span></span></span></span></span>);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">2) <span style="font-family: inherit;">Попытку </span>определить объем регрессионно<span style="font-family: inherit;">го</span> тестировани<span style="font-family: inherit;">я с учетом измен<span style="font-family: inherit;">ений, которые уже произошли (это определение чаще использ<span style="font-family: inherit;">уют сами</span> тестировщики).</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">В этом сообщении<span style="font-family: inherit;">, говоря об импакт анализ<span style="font-family: inherit;">е,</span> я буду им<span style="font-family: inherit;">еть в ви<span style="font-family: inherit;">ду второе определение. <span style="font-family: inherit;">Кстати, <span style="font-family: inherit;">у</span></span> Пола Джеррар<span style="font-family: inherit;">да <span style="font-family: inherit;">есть </span>сери<span style="font-family: inherit;">я</span> статей<span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">, г<span style="font-family: inherit;">де более детально раскрывается понятие импакт анализа, причем не тольк<span style="font-family: inherit;">о с позиции тестировщика (с<span style="font-family: inherit;">м. список материалов внизу</span></span></span></span>)<span style="font-family: inherit;">.</span> </span></span></span></span></span></span></span> </span></span> </span></span> </span></span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><br />
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> Очевидно, что от эффективности импакт анализа зависит эффективность регрессионного тестирования. Но не всегда тщательно проведенный импакт анализ позволяет сократить затраты на последующее тестирование. Проще вообще не проводить импакт анализ и выполнять одни и те же регрессионные тесты из релиза в релиз :) Но это довольно смелое решение.<br />
<br />
В табличке внизу я показал 3 разных случая - соотношение затрат на импакт анализа, на регрессионное тестирование и связанные с ними регрессионные риски:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXhsMnK_SdPrNvneOgLnTwo7upNOeegRnTjeb1Ijp9KeaCIF1KsKJvYyhYli3_BqJJJNccNSlkIA4njDMijS_WnlTyipbaqB5hT_f-hU6Rn2U9OBtj9-8TAfkMvaJATE9T3-H2zb_EbQhy/s1600/3_%25D1%2581%25D0%25BB%25D1%2583%25D1%2587%25D0%25B0%25D1%258F.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXhsMnK_SdPrNvneOgLnTwo7upNOeegRnTjeb1Ijp9KeaCIF1KsKJvYyhYli3_BqJJJNccNSlkIA4njDMijS_WnlTyipbaqB5hT_f-hU6Rn2U9OBtj9-8TAfkMvaJATE9T3-H2zb_EbQhy/s1600/3_%25D1%2581%25D0%25BB%25D1%2583%25D1%2587%25D0%25B0%25D1%258F.png" /></a><span style="font-family: inherit;"><span style="font-size: small;">Обычно мы выбираем второй вариант, средний между двумя крайностями: регрессионным тестированием без импакт анализа (тем самым мы подвергаемся большим регрессионным рискам) и регрессионным тестированием со сверх тщательным импакт анализом (который отнимает много времени, но теоретически позволяет минимизировать регрессионные риски). Тем более импакт анализ, способный предвидеть все регрессионные баги, вряд ли вообще возможен, учитывая сложность современных продуктов.</span></span><br />
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;">В данном сообщении я хотел бы помочь коллегам, столкнувшимся с</span></span> задачей выбора стратегии регрессионного тестирования.<br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;">Во многом это напоминает другую задачу - составление тестовой стратегии в целом. Или просто я склонен находить параллели между этими задачами, потому что много писал про тестовую стратегию зимой (<a href="http://33testers.blogspot.ru/2015/01/weekend-testing-01.html">пост 1</a>, <a href="http://33testers.blogspot.ru/2015/02/weekend-testing-01.html">пост 2</a>, <a href="http://33testers.blogspot.ru/2015/02/3.html">пост 3</a>) и мой <a href="http://sqadays.com/ru/talk/35090">доклад на SQA days</a> тоже был связан со стратегией тестирования :) </span></span></div>
<span style="font-family: inherit;"><span style="font-size: small;"><br />
</span></span> <span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">П</span>роцесс организации регрессионного тестирования выглядит для меня примерно так:</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><br />
</span></span></div>
<span style="font-family: inherit;"><span style="font-size: small;">1. <b>Сбор информации</b><span style="font-family: inherit;">.</span> <span style="font-family: inherit;">Мы <span style="font-family: inherit;">изучаем про<span style="font-family: inherit;">д</span></span></span><span style="font-family: inherit;">укт и его окружени<span style="font-family: inherit;">е</span>. Собираем информацию </span>о релизах, о типичных измен<span style="font-family: inherit;">ениях</span> в продукте, о критериях качества, о пропущенных в прошлом регрессионных багах.</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;">2. <b>Формирование стратегии</b>. <span style="font-family: inherit;">Мы п</span>рин<span style="font-family: inherit;">има</span>е<span style="font-family: inherit;">м</span> решени<span style="font-family: inherit;">я</span> по стратегии регрессионного тестирования, которая <span style="font-family: inherit;">является </span>общей для всех релизов.</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;">3. <b>Сбор информации о конкретном релизе</b><span style="font-family: inherit;">.</span> <span style="font-family: inherit;">Мы опускаемся <span style="font-family: inherit;">на <span style="font-family: inherit;">более низкий уровен<span style="font-family: inherit;">ь, на урове<span style="font-family: inherit;">н<span style="font-family: inherit;">ь рели<span style="font-family: inherit;">зов, и </span></span></span></span></span></span><span style="font-family: inherit;">изуч<span style="font-family: inherit;">аем</span></span></span><span style="font-family: inherit;"> изменения в конкретном рели<span style="font-family: inherit;">зе</span></span>.</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;">4. <b>Составление тест плана по регрессии</b><span style="font-family: inherit;">.</span> Мы при<span style="font-family: inherit;">нимаем решения </span>по тестированию конкретного релиза. <span style="font-family: inherit;">Э</span>тот шаг включае<span style="font-family: inherit;">т в себя и </span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-size: small;">импакт анализ изменений</span></span></span>.</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;">5<span style="font-family: inherit;">. <b>Выпол</b><span style="font-family: inherit;"><b>не</b><span style="font-family: inherit;"><b>н</b><span style="font-family: inherit;"><b>ие регрессии</b>.</span></span></span></span> Во время вып<span style="font-family: inherit;">олнения регрессионных тестов мы следим за процессом и анализируем<span style="font-family: inherit;"> </span>найденные <span style="font-family: inherit;">проблемы</span> (или отсутствие <span style="font-family: inherit;">проблем</span>)<span style="font-family: inherit;">. П<span style="font-family: inherit;">олученн<span style="font-family: inherit;">ая информация используется для корректировки <span style="font-family: inherit;">плана регрессии.</span></span></span></span></span></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">6. <b>Работа над ошибками</b>. <span style="font-family: inherit;">После <span style="font-family: inherit;">проведения тестирова<span style="font-family: inherit;">ния мы анали<span style="font-family: inherit;">зируем регрессионные проблемы, которые прошли ми<span style="font-family: inherit;">мо на<span style="font-family: inherit;">с<span style="font-family: inherit;">, </span>делаем выво<span style="font-family: inherit;">ды. Если у нас есть регрессионная библиотека тестов, то обновляем е<span style="font-family: inherit;">ё с уч<span style="font-family: inherit;">етом последних изменений про<span style="font-family: inherit;">дукта</span></span>.</span> </span></span></span></span></span></span></span> </span> </span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;">Давайте рассмотрим <span style="font-family: inherit;">эти</span> шаг<span style="font-family: inherit;">и подробнее.</span></span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><b><span style="font-family: inherit;">1 шаг<span style="font-family: inherit;">: </span></span>Сбор информации</b> </span></span><br />
Активности, которые мы проводим (или можем проводить) на данном этапе:<br />
<ul>
<li>Сессии исследовательского тестирования. <u>Цель</u>: изучить продукт.</li>
<li>Составление структуры приложения. Мы можем проводить декомпозицию по фичам, структурную декомпозицию по модулям, из которых состоит продукт, а также другие типы разбиения продукта. <u>Цель</u>: изучить продукт и подготовить основу для импакт анализа и оценки покрытия.</li>
<li>Построение модели приложения. Практически любой, даже очень сложный продукт, можно представить в виде рисунка, наглядно показывающего взаимодействие отдельных модулей. <u>Цель</u>: подготовить основу для импакт анализа.</li>
<li>Составление списка критериев качества, важных для продукта.</li>
<li>Изучение статистики регрессионных ошибок.</li>
<li>Изучение типичных изменений продукта в среднестатистическом релизе.</li>
<li>Изучение графика будущих релизов. </li>
</ul>
<span style="font-family: inherit;"><span style="font-size: small;">Отталкиваясь от информации, собранн<span style="font-family: inherit;">ой на это<span style="font-family: inherit;">м шаге, </span></span>мы принимаем решения <span style="font-family: inherit;">по стратегии регрессии</span>.</span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-size: small;"><b><span style="font-family: inherit;"><span style="font-family: inherit;">2</span> шаг<span style="font-family: inherit;">: </span>Формирование страте<span style="font-family: inherit;">гии</span></span></b></span></span> </span></span></div>
</div>
</div>
</div>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Р</span>ешения, ко<span style="font-family: inherit;">торые </span>мы мо<span style="font-family: inherit;">жем </span>принима<span style="font-family: inherit;">ть:</span></span></span></div>
</div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">Будем ли мы составлять набор регрессионных тестов, специфичный для <span style="font-family: inherit;">конкретного</span> релиза, или у нас будет универсальный набор тестов<span style="font-family: inherit;">.</span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Кто будет проводить импакт анализ и на каких уровнях<span style="font-family: inherit;">. Подробнее об уровня<span style="font-family: inherit;">х импакт анализа - в <span style="font-family: inherit;">статьях<span style="font-family: inherit;"> П<span style="font-family: inherit;">ола Джеррарда (см. материалы внизу)<span style="font-family: inherit;">.</span></span></span></span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Насколько полным и тщательным будет импакт анализ<span style="font-family: inherit;">.</span></span></span><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Нужна ли нам библиотека регрессионны<span style="font-family: inherit;">х </span>тестов<span style="font-family: inherit;">.</span></span></span><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Если да, то <span style="font-family: inherit;">к</span>ак и когда мы будем обновлять <span style="font-family: inherit;">эту</span> библиотеку<span style="font-family: inherit;">.</span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Как мы будем измерять эфф<span style="font-family: inherit;">ективность рег<span style="font-family: inherit;">рессионного тестирования<span style="font-family: inherit;">.</span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">В частности, к<span style="font-family: inherit;"><span style="font-family: inherit;">акие виды </span>тестово<span style="font-family: inherit;">го</span> покрыти<span style="font-family: inherit;">я будут для нас <span style="font-family: inherit;">важны</span></span>. А различных <span style="font-family: inherit;">видов покрытия оче<span style="font-family: inherit;">нь мн<span style="font-family: inherit;">ого :)</span></span></span></span> </span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">К<span style="font-family: inherit;">огда мы будем начинать регрессионное тестирование.</span> </span></span></span> </span></span></span></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<span style="font-family: inherit;"><span style="font-size: small;">Когда эти высокоуровневые решения приняты, <span style="font-family: inherit;">мы можем использовать<span style="font-family: inherit;"> эту </span>стратегию для всех релизов</span>. Для каждого <span style="font-family: inherit;">релиза мы будем уточнять ее и <span style="font-family: inherit;">дополнять необходимыми деталями, получая план регрессионного тестирования. Итак, мы опускаемся <span style="font-family: inherit;">с высокого уров<span style="font-family: inherit;">ня (общего для всех релизов) на уровень конкретного релиза.</span></span></span></span></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><b>3 ш<span style="font-family: inherit;">аг: </span>Сбор информации о конкретном релизе</b></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Какая информация нам будет нужна<span style="font-family: inherit;">:</span></span></span></span></div>
</div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">С</span>писок изменений, <span style="font-family: inherit;">как минимум</span>.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Дата релиза.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Доступность тестовых стендов / окружений в ходе тестирования. </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">И д<span style="font-family: inherit;">ругие вещи, <span style="font-family: inherit;">важные при соста<span style="font-family: inherit;">влении тест плана для конкретного рели<span style="font-family: inherit;">за<span style="font-family: inherit;">.</span></span></span></span></span> </span></span></li>
</ul>
</div>
</div>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Собранная информация будет исполь<span style="font-family: inherit;">зована дальше, когда мы будем составлять детальный план регрессионного тестирования.</span></span><br />
</span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><b>4 ш<span style="font-family: inherit;">аг: </span></b></span></span><span style="font-family: inherit;"><span style="font-size: small;"><b>Составление тест плана по регрессии</b></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;">Как<span style="font-family: inherit;">ие решения мы принимае<span style="font-family: inherit;">м на этом ш<span style="font-family: inherit;">аге:</span></span></span></span></span><br />
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Как <span style="font-family: inherit;">и когда пров<span style="font-family: inherit;">одить импакт анализ, кто будет это делать<span style="font-family: inherit;">.</span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Для каких изменений мы будем пров<span style="font-family: inherit;">одить импакт анализ.</span> </span></span></span></span></span></span></span><b><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"> </span></span></span></span></b></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Каким будет список тестов для регрессион<span style="font-family: inherit;">ного тестирования<span style="font-family: inherit;">. Формирует<span style="font-family: inherit;">ся в результате <span style="font-family: inherit;">импакт анализа.</span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Ка<span style="font-family: inherit;">кими будут приоритеты тестов.</span></span></span></span></span></span></span><b><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"> </span></span></span></span></span></span></b></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">В ка<span style="font-family: inherit;">ком <span style="font-family: inherit;">формате мы будем хранить тесты (чеклисты<span style="font-family: inherit;">, тест кейсы</span></span></span></span>, тест идеи, другие).</span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Каким будет график регрессионного тестирования<span style="font-family: inherit;">.</span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Как мы будем оценивать тестов<span style="font-family: inherit;">ое покрытие.</span></span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Какой уровень тестового покр<span style="font-family: inherit;">ыти<span style="font-family: inherit;">я будет для нас достаточным.</span></span> </span></span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">И другие. </span> </span></span> </span></span></span></span></span></span><b><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"> </span></span></span> </span></span></span> </b></span></span></li>
</ul>
<span style="font-family: inherit;"><span style="font-size: small;">Решений на это<span style="font-family: inherit;">м э<span style="font-family: inherit;">тапе много.<span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"> <span style="font-family: inherit;"><span style="font-family: inherit;">М</span>ы ч</span>асто действуем на опыте<span style="font-family: inherit;"> и</span> испо<span style="font-family: inherit;">льзу<span style="font-family: inherit;"><span style="font-family: inherit;">ем</span> реш<span style="font-family: inherit;">ения, которые<span style="font-family: inherit;"> </span>уже принимали в прошлом </span></span></span></span></span></span></span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">для похожих релизов</span></span></span></span></span></span></span></span></span></span></span>.</span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Н</span>а следу<span style="font-family: inherit;">ющем шаге мы должны быть достаточно гибки<span style="font-family: inherit;">ми<span style="font-family: inherit;"> и уметь подстраиваться под ситуацию. <span style="font-family: inherit;">М</span>ы должны быть готовы к <span style="font-family: inherit;">корректировке плана регрессии.</span></span></span></span></span></span></span></span></span></span></span></span></span><br />
</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><b>5 <span style="font-family: inherit;">шаг: </span>Выпол</b><span style="font-family: inherit;"><b>не</b><span style="font-family: inherit;"><b>н</b><span style="font-family: inherit;"><b>ие регрессии</b></span></span></span></span></span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;">Что мы делаем во вре<span style="font-family: inherit;">мя выполнения регрессионны<span style="font-family: inherit;">х тестов:</span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"> </span></span><br />
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Анализируем </span>найденн<span style="font-family: inherit;">ые</span> ошибк<span style="font-family: inherit;">и<span style="font-family: inherit;">.</span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Л</span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;">огичным будет уделить больше внимание тестированию <span style="font-family: inherit;">той</span> ч<span style="font-family: inherit;">асти </span>системы, где возникает ошибка, и тех частей, что с ней связан<span style="font-family: inherit;">ы</span>.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Анализируем <span style="font-family: inherit;">другие сигналы. <span style="font-family: inherit;"><span style="font-family: inherit;">Наприме<span style="font-family: inherit;">р, </span></span>отсутствие найденных ошиб<span style="font-family: inherit;">ок может быть полезной информацией для размышления.</span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Оцен<span style="font-family: inherit;">иваем тестовое покр<span style="font-family: inherit;">ытие.</span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Пр<span style="font-family: inherit;">едоставляем отчетность по ст<span style="font-family: inherit;">атусу регрессионного тестирования.</span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Оценивае<span style="font-family: inherit;">м</span> реальность г<span style="font-family: inherit;">рафика регрессион<span style="font-family: inherit;">ного </span>тестирования.</span></span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Меняем приоритеты тест<span style="font-family: inherit;">ов</span>. <span style="font-family: inherit;">Я <span style="font-family: inherit;">я</span>вно указал эту актив<span style="font-family: inherit;">ность как пример измен<span style="font-family: inherit;">ения плана, соста<span style="font-family: inherit;">вленного раньше.</span></span></span></span></span> </span></span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Участвуем в триа<span style="font-family: inherit;">же багов. Найденные пр<span style="font-family: inherit;">облемы нужно <span style="font-family: inherit;">либо исправить в текущем ре<span style="font-family: inherit;">лизе, либо перенести в будущий релиз. Обычно в триа<span style="font-family: inherit;">же <span style="font-family: inherit;">багов<span style="font-family: inherit;"> тестировщики принимают участи<span style="font-family: inherit;">е наря<span style="font-family: inherit;">ду с другими стейкхолдерами</span>.</span></span></span></span></span></span></span></span> </span> </span></span></span> </span></span> </span></span></span></span></span></li>
</ul>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">П</span>осле окончания цикла регрессионного тестирования<span style="font-family: inherit;"> по<span style="font-family: inherit;">лезно выполнить еще один этап<span style="font-family: inherit;">.</span></span></span><br />
</span></span></div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><b>6 <span style="font-family: inherit;">шаг: </span></b></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><b>Работа над ошибками</b></span></span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;">Что он в себя включает<span style="font-family: inherit;">:</span></span> </span></span></span><br />
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;">Анализ ошибок, к<span style="font-family: inherit;">оторые были пропущены<span style="font-family: inherit;">. Особенное внимани<span style="font-family: inherit;">е уделяется регрессионным ошибкам, то<span style="font-family: inherit;"> есть проблемам в стар<span style="font-family: inherit;">ом функциона<span style="font-family: inherit;">ле, возникшим в результате свежих измен<span style="font-family: inherit;">ений.</span></span></span></span></span></span></span></span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Возможные <span style="font-family: inherit;">и</span>зменени<span style="font-family: inherit;">я стратегии регрессионного тестирования.</span></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;">Обновление би<span style="font-family: inherit;">блиотеки регрессионны<span style="font-family: inherit;">х тестов<span style="font-family: inherit;"><span style="font-family: inherit;">.</span> Ес<span style="font-family: inherit;">ли такая имеется. <span style="font-family: inherit;">Обычно свежий функци<span style="font-family: inherit;">онал добавляется в регрессионную библиотеку, <span style="font-family: inherit;">т<span style="font-family: inherit;">ак как</span></span> начиная со следующего цикла регрессии этот функционал <span style="font-family: inherit;">будет <span style="font-family: inherit;">уже</span> старым.</span></span></span></span></span></span></span></span></span></span></span></li>
</ul>
<br />
<b><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Заключение</span></span></span></span></span></span></span></span></span></span></span></b><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">В<span style="font-family: inherit;">от <span style="font-family: inherit;"><span style="font-family: inherit;">такой <span style="font-family: inherit;">план :)</span> П</span>олучилось <span style="font-family: inherit;">не так м<span style="font-family: inherit;">ного информаци<span style="font-family: inherit;">и, как я ожидал.<span style="font-family: inherit;"> <span style="font-family: inherit;">Я</span> сознательно опустил такие крупные темы как: автоматизация регрессии, виды тестового покрытия.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></div>
<div>
</div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;">Н</span>емного</span> не <span style="font-family: inherit;">хватает живого практического примера <span style="font-family: inherit;"><span style="font-family: inherit;">по использован<span style="font-family: inherit;">ию</span> описанны<span style="font-family: inherit;">х </span><span style="font-family: inherit;">шаг<span style="font-family: inherit;">ов</span></span></span>.<span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: inherit;"> П</span></span></span>риходите на сессию вик<span style="font-family: inherit;">енд тестирования -<span style="font-family: inherit;"><span style="font-family: inherit;"> та<span style="font-family: inherit;">м п<span style="font-family: inherit;">отренируемся!</span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Материалы (<span style="font-family: inherit;">на английском</span>):</span></span></span><br />
<ul>
<li><span style="font-weight: normal;"><span style="font-weight: normal;">Paul Gerrard:</span></span> </li>
</ul>
<ul><ul>
<li><a href="http://gerrardconsulting.com/?q=node/550">Anti-Regression
Approaches: Impact Analysis and Regression Testing Compared/Combined -
Part I: Introduction & Impact Analysis</a></li>
<li><a href="http://gerrardconsulting.com/?q=node/552">Anti-Regression Approaches - Part II: Regression Prevention and Detection Using Static Techniques</a></li>
<li><a href="http://gerrardconsulting.com/?q=node/553"><span style="font-weight: normal;"><span style="font-weight: normal;">Anti-Regression Approaches: Impact Analysis and Regression Testing Compared and Combined: Part III: Regression Testing</span></span></a></li>
</ul>
</ul>
<ul>
<li><div class="entry-title">
<a href="http://mavericktester.com/archive/recession-testing-is-the-new-regressiontesting/" rel="bookmark">Recession Testing is the new RegressionTesting</a></div>
</li>
</ul>
</div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com6tag:blogger.com,1999:blog-4371806625756604248.post-67102904420741746052015-06-14T04:18:00.000-07:002015-06-14T04:18:54.093-07:00Анонс Weekend testing 06: Регрессионное тестирование<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYtk3hHuO4bgCyAZBIXkUUN5BXC-fRHI1gw7QcyfbJZ1Of0X4xSNt7sDOwoLJw8VFGN4SKt8LNMOHC6gKQFMIEJo1TR-B0J86KTsGrJjvQbvS-J8hAeII5SZkcADbu6jvBJOQEC1LYxGv7/s1600/logo_06_regression.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYtk3hHuO4bgCyAZBIXkUUN5BXC-fRHI1gw7QcyfbJZ1Of0X4xSNt7sDOwoLJw8VFGN4SKt8LNMOHC6gKQFMIEJo1TR-B0J86KTsGrJjvQbvS-J8hAeII5SZkcADbu6jvBJOQEC1LYxGv7/s320/logo_06_regression.png" width="320" /></a></div>
Регрессионное тестирование. Как много в этих словах для сердца тестировщика слилось. На мой взгляд, это довольно большAя часть нашей работы. Примерно половина, если не больше.<br />
<br />
И, как мне кажется, с регрессионным тестированием у многих из нас связаны негативные чувства. Вспоминаются надоевшие тест кейсы, которые нужно выполнять каждый релиз. Или вопросы руководства насчет тестового покрытия. Или неприятная необходимость обновлять регрессионную библиотеку после каждого релиза. Или проблемы, пропущенные во время ретеста исправленных багов.<br />
<br />
На следующей сессии викенд тестирования мы поговорим о регрессионном тестировании и потренируемся в его организации. Подробности - ниже.<br />
<br />
<a name='more'></a><b>Тема</b> <b>сессии:</b> Регрессионное тестирование<b> </b><br />
<b>Когда</b>: суббота, 20 июня, 12:00 (московское время).<br />
<b>Как зарегистрироваться:</b> <a href="http://goo.gl/forms/TRSYQRijm3">заполните форму</a> (<a href="http://goo.gl/forms/TRSYQRijm3">http://goo.gl/forms/TRSYQRijm3</a>).<br />
<br />
План сессии будет примерно таким:<br />
<ol>
<li>Обсуждение понятия регрессионного тестирования.</li>
<li>Обсуждение типичных проблем и задач, связанных с ним:</li>
<ul>
<li>Импакт анализ</li>
<li>Создание регрессионной библиотеки</li>
<li>Оценка тестового покрытия</li>
<li>Обновление регрессионных тестов</li>
<li>Приоритизация тестов</li>
<li>Автоматизация тестов</li>
</ul>
<li>Практика по организации регрессионного тестирования:</li>
<ul>
<li>В качестве объекта тестирования мы будем использовать небольшой сайт</li>
<li>Для него мы попробуем составить стратегию регрессионного тестирования</li>
</ul>
<li>Обсуждение результатов:</li>
<ol>
<li>Какие выводы можно сделать по организации регрессионного тестирования?</li>
<li>Как мы можем улучшить этот процесс?</li>
<li>Как мы можем оценить его эффективность? </li>
</ol>
</ol>
Сессия будем насыщенной, нам нужно будет уместить в 2 часа то, что в реальных проектах занимает месяцы работы. Чтобы помочь участникам, я собираюсь написать небольшую статью про регрессионное тестирование и выложить ее в своем блоге в среду-четверг. Так что следите за обновлениями :) Увидимся!wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-61748558842281126462015-06-13T05:32:00.000-07:002015-06-13T05:32:03.611-07:00Мои впечатления от SQA days - 17<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXWQaZreP21hznbJuu_dFCmdTWSLuY-bJ3HPRiq8iLF7LSzPZGQa74qt4JKZUBP6n2UZYkuPHnj_7qNXDkr3Nk-7a9NFyb6ty_Qn3ITGFwmvhdF0KodRAmEnGYgUp5Eozv3hR5T4mnBOXs/s1600/o5yjprA5Jyk.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXWQaZreP21hznbJuu_dFCmdTWSLuY-bJ3HPRiq8iLF7LSzPZGQa74qt4JKZUBP6n2UZYkuPHnj_7qNXDkr3Nk-7a9NFyb6ty_Qn3ITGFwmvhdF0KodRAmEnGYgUp5Eozv3hR5T4mnBOXs/s320/o5yjprA5Jyk.jpg" width="240" /></a></div>
Привет всем! Не так давно отгремела 17-я конференция SQA days. Хотел о ней рассказать и поделиться своими впечатлениями. Это уже 4-я конференция SQA days, которую я посещаю, поэтому мне было, с чем сравнивать. И, собираясь на эту конференцию, у меня были какие-то ожидания, были планы. Все ли сбылось - об этом ниже :)<br />
<br />
<a name='more'></a><br />
Свой рассказ я начну с подготовки, которая у докладчиков обычно начинается за несколько месяцев до конференции.<br />
<br />
<b>Подготовка</b><br />
Каждый раз, когда я готовлю доклад, вспоминаю, как это нелегко. Причем
это ощущение забывается через некоторое время после конференции. И, когда начинается
отбор докладов на следующую конференцию, думаешь: "Почему бы не поучаствовать и в этот раз?". Ох уж это свойство памяти,
помнить только хорошее :)<br />
<br />
Ощущения при подготовке доклада похожи на подготовку к экзаменам в универе: ты знаешь, что тебе нужно
подготовить презентацию (к определенной дате), потом каждую неделю-две
нужно проводить репетиции с куратором и дорабатывать презентацию, где-то
далеко маячит дата Х, когда ты будешь выступать (как сама неизбежность). Но в
универе было попроще, потому что мы примерно знали, что нас ждет. А тут - ты очень смутно представляешь, что у
тебя в итоге получится. И регулярно в голове всплывают мысли:<br />
<br />
<div dir="\'auto\'" name="\'BB10\'">
<span name="\'BB10\'">- Как я мог выбрать эту тему? Здесь же нечего рассказывать.</span></div>
<div dir="\'auto\'" name="\'BB10\'">
<span name="\'BB10\'">- Это будет ооочень скучно.</span></div>
<div dir="\'auto\'" name="\'BB10\'">
<span name="\'BB10\'">- Может забить?</span></div>
<br />
Бывают моменты, когда сидишь и смотришь в презенташку, и не
знаешь, как сделать ее лучше. И начинаешь
сдвигать картинки на пару миллиметров вверх-вниз, меняешь шрифт
покрупнее-поменьше :)<br />
<br />
Но, несмотря ни на что, подготовка
доклада - интересный и творческий процесс. Этого творчества лично мне часто не хватает в работе. Потому что на работе я знаю, чего от меня ждут,
что я буду делать. Есть какая-то определенность, к которой привыкаешь.
А подготовка к докладу - это неопределенность, которая заставляет выйти из
привычного состояния. Как докладчик, понимаешь, что должен рассказать
что-то интересное. Как это сделать - большой-большой
вопрос. Иногда это
получается, иногда нет. Советую попробовать - это очень интересный процесс :)<br />
<br />
Далее я немного расскажу про город Минск, в котором проходила конференция. <br />
<br />
<b>Минск</b><br />
Город встретил нас летней погодой, чистыми улицами. И люди были доброжелательными. Как сказал мой друг, мы попали в Минск именно в то время, когда в него и нужно приезжать.<br />
<br />
До этого я не был в Белоруссии и ожидал увидеть что-то похожее на Москву, Питер. А в итоге увидел город со своей атмосферой, не похожий на то, что я видел раньше. И мне понравилась эта атмосфера, хотелось бы еще сюда приехать.<br />
<br />
<b>Конференция</b><br />
В этот раз я не буду рассказывать обо всех докладах, которые я посещал. Я не делал заметок, поэтому сложно будет теперь это сделать :) Но о наиболее запоминающихся докладах я напишу. Прощу прощения за недостаток деталей о содержании доклада. Прежде всего, со своей колокольни, я обращал внимание на интересность темы, на подачу доклада, на структурность изложения.<br />
<br />
<a href="http://sqadays.com/ru/talk/33823">Сергей Атрощенков. Моделирование угроз для приложений.</a><br />
<div dir="\'auto\'" name="\'BB10\'">
Сергей
рассказал про основы тестирования безопасности. Для меня, как для человека, не имеющего опыта в этой области, информация была полезной. Для продвинутых товарищей, наверное, было много очевидных вещей.</div>
<div dir="\'auto\'" name="\'BB10\'">
</div>
<div dir="\'auto\'" name="\'BB10\'">
<br />
Во время доклада у сотрудников отеля (конференция проходила в Президент отеле) долго и навязчиво
звонил телефон. На что Сергей вообще не отреагировал.
Респект и уважуха, я бы не сдержался :)</div>
<div dir="\'auto\'" name="\'BB10\'">
<br name="\'BB10\'" /></div>
<div dir="\'auto\'" name="\'BB10\'">
Понравилось то, как Сергей вовлек слушателей в диалог. Для меня это признак
мастерства докладчика. Ведь нужно и за временем доклада следить, и дать людям подумать, довести мысль до конца.<br />
<br />
В целом, не жалею, что пожертвовал докладом Рекса Блека в параллельной сессии и пришел послушать выступление Сергея. Молодцом!<br />
<br />
<div dir="\'auto\'" name="\'BB10\'">
<div class="program-talk-author">
<div class="talk-author">
<a href="http://sqadays.com/ru/talk/33748">Paul Gerrard. How to Test the Internet of Everything.</a></div>
<div class="talk-author">
Доклад
оставил очень хорошее впечатление. Чувствовался огромный опыт Пола как
докладчика и как профессионала в тестировании. Его рассказ был ненавязчивым,
дружеским, перемежался шутками и историями из жизни.
Такой подход мне импонирует :)<br />
</div>
<div class="talk-author">
Пол
рассказал о Internet of Everything - о том, что в будущем многие
окружающие нас вещи будут подключены к интернету (бытовая техника, машины, люди). И это повлияет как на разрабатываемые приложения, так и на
то, как мы их тестируем.Тут я нашел пересечения со своим докладом - я тоже
хотел рассказать про возрастающую сложность тестирования.</div>
</div>
</div>
<br />
Очень здорово, что к нам приезжают такие люди,
как Пол. Хотя до этого я про него мало что знал - он был в тени Майкла Болтона, Джеймса Баха, Кема Канера и прочих. Теперь вот собираюсь почитать его книжку (которую бесплатно давали на конференции) и вообще следить за его работой.<br />
<br />
<div class="talk-author">
<a href="http://sqadays.com/ru/talk/34766">Александра Волкова. 10 принципов автоматизации, которые я не предам.</a></div>
<div class="talk-author">
Доклад,
понравившийся мне своей структурностью. Он начался с распространенных проблем в проектах по автоматизации. Дальше Саша рассказала о том, как можно решить эти проблемы, используя 10 несложных принципов. Каждый принцип понравился своей практичностью - его можно было брать и использовать прямо сейчас. Многие из проблем были мне знакомы и пересекались с моим опытом, что добавило докладу интересности.</div>
<div class="talk-author">
<br /></div>
<div class="talk-author">
На конференции во Львове (SQA days - 14) доклад Саши занял второе
место. А теперь она заняла первое место! Ура, поздравляю!</div>
<div class="talk-author">
</div>
<div class="talk-author">
<div class="program-talk-author">
<div class="talk-author">
<a href="http://sqadays.com/ru/talk/34783">Алексей Виноградов. О чем никто не говорит, а Google не находит? - нюансы Severity и Priority.</a></div>
<div class="talk-author">
Леша вынес на обсуждение очень интересную тему. Здесь сталкиваются разные понимания роли тестировщика, роли тестирования. Как мне кажется, в каждой компании это понимание отличается. И разные школы тестирования смотрят на Severity и Priority по-разному (о чем было рассказано в докладе).</div>
<div class="talk-author">
</div>
<div class="talk-author">
В результате у Леши получился живой и интересный доклад. И еще более интересными были вопросы и споры после него. Это было настоящее шоу :) Так что Лёша теперь не только DJ на Radio QA, но и настоящий MC.</div>
<div class="talk-author">
</div>
<div class="talk-author">
<a href="http://sqadays.com/ru/talk/35086">Илья Сунцов. Истина где-то рядом или как правильно писать код.</a></div>
<div class="talk-author">
К этому докладу мне тяжело относиться объективно, потому что Илья - мой друг. И он выступал на конференции первый раз. На мой взгляд, получилось круто - живо, интересно, с хорошим оформлением презенташки и грамотной подачей.</div>
<div class="talk-author">
<br /></div>
<div class="talk-author">
Мне понравилась идея доклада - рассказать о первых шагах в автоматизации и написании кода. То есть, не было такого: "Слушайте, ребятки, сейчас я расскажу, как надо правильно писать код и делать автоматизацию". Нет, все было искренне, по-дружески. Может быть поэтому доклад был принят очень хорошо. Я серьёзно думал, что Илюха займет одно из призовых мест :)</div>
<div class="talk-author">
<br /></div>
<div class="talk-author">
<div class="program-talk-author">
<div class="talk-author">
<a href="http://sqadays.com/ru/talk/34887">Никита Налютин. Миграция JIRA - безобразие или безрассудство.</a></div>
<div class="talk-author">
Доклады Никиты стараюсь не пропускать. Его стиль рассказа неподражаем :) Информация как-будто попадает напрямую в мозг.</div>
<div class="talk-author">
</div>
<div class="talk-author">
На этот раз Никита рассказал о трудностях, связанных с миграцией JIRA. По своей наивности я думал, что это несложно. Так получилось, что в компаниях, где я работал, миграция делалась где-то на фоне, другими людьми. Поэтому я и не подозревал, что с ней может быть связано так много проблем. Если вдруг в будущем мне придется этим заниматься - вернусь к докладу Никиты.</div>
<div class="talk-author">
</div>
<div class="talk-author">
<div class="program-talk-author">
<div class="talk-author">
<a href="http://sqadays.com/ru/talk/34990">Андрей Ладутько. Как оценить процесс тестирования на проекте.</a></div>
<div class="talk-author">
Еще один доклад, где все было разложено по полочкам - отличный пример того, как нужно структурно представлять информацию и ее подавать. Тема доклада была очень близка для меня, потому что, как и Андрей, я работаю в outsource тестировании. И задачи аудита и оценки процессов у нас тоже бывают.</div>
<div class="talk-author">
</div>
<div class="talk-author">
Хочу отметить то, как Андрей общался с аудиторией в процессе доклада. Повторюсь, это очень круто, когда успеваешь и рассказывать то, что запланировал, и обмениваться репликами с залом. Это очень здорово повышает вовлеченность слушателей.</div>
<div class="talk-author">
<br /></div>
<div class="talk-author">
Из всех докладов, что я посетил, этот доклад мне понравился больше всего: тема была для меня интересной, подача доклада, оформление - всё на пять баллов.</div>
<div class="talk-author">
<br /></div>
<div class="talk-author">
<b>Концерт</b></div>
<div class="talk-author">
Не могу не сказать пару слов о мероприятии, которое организаторы устроили для нас после первого дня конференции. Тут мне понравилось всё: и беларусское пиво, и танцоры, и, особенно, выступление группы Трубецкой. Музыканты в этот вечер выложились по полной!</div>
<div class="talk-author">
<br /></div>
<div class="talk-author">
<b>Саммари</b></div>
<div class="talk-author">
В целом, конференция SQA days - 17 заняла в моем рейтинге прошедших конференций почетное второе место (после SQA days - 16 в Питере).</div>
<div class="talk-author">
</div>
<div class="talk-author">
Из плюсов - хотел бы отметить очень хорошую работу с докладчиками, приглашение зарубежных специалистов (таких как Пол Джеррард и Рекс Блек), концерт, хорошо отлаженную работу волонтеров. Ну и сам город Минск как место проведения конференции понравился. </div>
<div class="talk-author">
<br /></div>
<div class="talk-author">
Из минусов - лично мне немного не хватило практических докладов, где рассказывается о своем опыте, о своих ошибках, о своих решениях. Да, они были, но мне хотелось бы больше :) </div>
<div class="talk-author">
</div>
<div class="talk-author">
Кроме того, у меня сложилось впечатление, что нам нужно что-то новое. Может быть, это новый формат докладов. Или тестовая лаборатория, в которой каждый желающий может попрактиковаться в тестировании. Или какое-нибудь соревнование по тестированию, встроенное в саму конференцию.</div>
<div class="talk-author">
</div>
<div class="talk-author">
Вообще, могу сказать, что лично я получил от этой конференции все, что хотел: рассказал свой доклад (прежде всего), пообщался с ребятами, познакомился с новыми интересными людьми, получил заряд мотивации для развития в своей профессии. Так что, эти 2 дня конференции и пару месяцев подготовки были потрачены не зря :) </div>
<div class="talk-author">
<b> </b></div>
<div class="talk-author">
<b>Благодарности</b></div>
<div class="talk-author">
Хотел бы еще раз сказать спасибо моему куратору, Наташе Савастюк, за её многочисленные замечания и советы, которые помогли улучшить доклад, а также за поддержку на самой конференции.</div>
<div class="talk-author">
<br /></div>
<div class="talk-author">
Спасибо организаторам за еще одну хорошую и запоминающуюся конференцию!</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-49121875227933863302015-05-11T02:14:00.000-07:002015-05-11T02:16:16.767-07:00Weekend testing 05: Тестирование белого ящика<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAsJbaX2cwOBgRUptJ7mAV3sblMsVwCHCZ-YzgPTfmvjJwRpCFmyJydBreHKcVL9wy1hyb_PB8UVm8f1hQrKcSP24p4aBl6czUyovF2cv2qgz5CXvANvLtXR5sotEsoB-LbePwiFPRBr20/s1600/logo_wjute_box.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAsJbaX2cwOBgRUptJ7mAV3sblMsVwCHCZ-YzgPTfmvjJwRpCFmyJydBreHKcVL9wy1hyb_PB8UVm8f1hQrKcSP24p4aBl6czUyovF2cv2qgz5CXvANvLtXR5sotEsoB-LbePwiFPRBr20/s200/logo_wjute_box.png" width="200" /></a></div>
Всем привет!<br />
<br />
Прежде всего, поздравляю всех с прошедшими праздниками! Всем - мир, труд и май!<br />
<br />
Следующая сессия Weekend testing состоится 16 мая в 12:00 по Москве. На этот раз тема такая: тестирование белого ящика.<br />
<br />
Для участия необходимо зарегистрироваться на <a href="http://goo.gl/forms/if8qWNdxHe">формочке</a> и написать в skype weekend_testing_russia о своем желании участвовать.<br />
<br />
Ниже я расскажу о том, чем мы будем заниматься в следующую субботу.<br />
<br />
<a name='more'></a>Очень часто продукт, который мы тестируем, является черным ящиком для нас. Мы изучаем его поведение, варьируя входные параметры и наблюдая, что происходит. Мы строим модели продукта - упрощенное и схематичное понимание его работы. Мы тестируем продукт, используя техники, свойственные тестированию черного ящика.<br />
<br />
Что если в определенный момент внутреннее устройство продукта открывается для нас? Например, мы получаем доступ к конфигурационным файлам или, после разговора с программистом, узнаем какую-то информацию о его архитектуре. Способны ли эти знания помочь нам в тестировании?<br />
<br />
Конечно да. Чем больше мы знаем о продукте - тем лучше мы можем построить процесс тестирования. Открывая черный ящик, мы как-будто переходим на новый уровень, на котором становятся доступны новые техники тестирования и новые инструменты. Мы открываем новые возможности, которые способны принести большую пользу.<br />
<br />
В следующую субботу мы потренируемся в тестировании белого ящика - продукта, исходный код которого открыт. Мы попробуем ответить на вопросы:<br />
<ul>
<li>Насколько знание кода помогает нам в локализации багов?</li>
<li>Какие инструменты можно применять, когда исходный код открыт?</li>
<li>Какие методы определения покрытия мы можем использовать?</li>
<li>Как изменяются привычные нам техники анализа классов эквивалентности и граничных значений, когда мы можем заглянуть в код?</li>
</ul>
Приходите, будет интересно! <br />
<br />
<br />wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com1tag:blogger.com,1999:blog-4371806625756604248.post-33978133288241402632015-04-19T03:10:00.000-07:002015-04-19T03:10:59.773-07:00Weekend testing 04: Легкая автоматизация<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2blNDO_QX_7Jvb_lrjdG5VfWlcNskyEGKyb4DNZbzJ3QXN8oJEk0OSZLsiYP-9xE4eVK-nyJh9xj4RvRdY7EH55g6koV4fdcGO0-D28gH7dUqmRN6srqd-z8yFsN5wzcPfAs59qcSUckr/s1600/logo_light_auto.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2blNDO_QX_7Jvb_lrjdG5VfWlcNskyEGKyb4DNZbzJ3QXN8oJEk0OSZLsiYP-9xE4eVK-nyJh9xj4RvRdY7EH55g6koV4fdcGO0-D28gH7dUqmRN6srqd-z8yFsN5wzcPfAs59qcSUckr/s1600/logo_light_auto.png" height="200" width="200" /></a></div>
Всем привет! Сегодня я хочу анонсировать следующую сессию викенд тестирования. Она состоится 26 апреля (в воскресенье) в 12:00 по московскому времени и будет посвящена легкой автоматизации.<br />
<br />
Для участия необходимо зарегистрироваться через <a href="http://goo.gl/forms/kpTGAzU2uj">форму</a>.<br />
<br />
По просьбам участников мы подготовили новые фичи: добавление события в Google календарь (по <a href="https://www.google.com/calendar/event?action=TEMPLATE&tmeid=NGw5ZTBmMWVocGJ2czlpdm1lMmtmZnVib3Mgci5zaGV5a29AbQ&tmsrc=r.sheyko%40gmail.com">ссылке</a>) и рассылка напоминаний за один день до сессии (для этого нужно указать e-mail при заполнении формы).<br />
<br />
Далее я расскажу о теме сессии и дам короткий обзор того, чем мы будем заниматься.<br />
<br />
<a name='more'></a>В наше время автоматизация тестирования приобрела огромную популярность. Мы хотим автоматизировать как можно больше тестов. Иногда мы даже верим, что скоро наступит тот день, когда нам не нужно будет выполнять скучную и рутинную работу. Ни одну тестерскую конференцию уже нельзя представить без докладов про инструменты автоматизации и про success story использования автотестов.<br />
<br />
Но сегодня я буду говорить не об автоматизации в традиционном понимании (серьезные и дорогие продукты, Continious Integration, ROI, фреймворки и т.п.), а о легкой автоматизации. Этим термином я буду называть все те методы, которые помогают нам сократить объем рутинной работы при минимальных затратах на их использование.<br />
<br />
Для использования этих методов не надо быть крутым автоматизатором, иногда даже не требуется уметь программировать. Да, без знания основ программирования написать даже несложный скрипт на Python или VBScript может быть тяжелой задачей. Но некоторые инструменты обеспечивают такой уровень абстракции, что тестировщику не нужно работать с кодом.<br />
<br />
В первой книжке по тестированию, которую я прочитал - "Тестирование dot com" Романа Савина - автор рассказывает о том, как грамотные тестировщики умеют писать маленькие утилиты, способные заметно облегчить их работу. В других книгах, например, в "How we test software at Microsoft", тоже говорится о том, как использование несложных инструментов может серьезно нам помочь. И этот навык - умение сократить рутинную и повторяющуюся работу, умение оптимизировать хотя бы часть того, что мы делаем - я считаю необходимым для хорошего тестировщика.<br />
<br />
На следующей сессии Weekend Testing мы обсудим:<br />
<ul>
<li>Какие инструменты могут использоваться для легкой автоматизации</li>
<li>В чем их плюсы и минусы</li>
<li>В каких ситуациях их можно использовать</li>
<li>Какие навыки требуются от тестировщиков, чтобы использовать легкую автоматизацию</li>
<li>Как развить эти навыки</li>
</ul>
Мы потренируемся в использовании таких инструментов как Selenium IDE и Sikuli, а также попробуем написать несложные скрипты.<br />
<br />
Следующая сессия будет отличаться от предыдущих - в ней будет много интенсивной практики. От участников не требуется умение программировать, но оно, безусловно, вам может пригодиться.<br />
<br />
До встречи в следующее воскресенье в 12:00 по Москве!wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com1tag:blogger.com,1999:blog-4371806625756604248.post-39654775291136398652015-04-04T02:33:00.001-07:002015-04-04T02:34:00.761-07:00Оракулы на практике<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFAIu1doaUqj7xIhvYrMl90HAK-Q7gpDL7VO9YxgwfwgDAUdTMP9hVT-0kEiBTv8MneZmLPJBumxiqp6dYnttxEJyp-yo9MJ_qGzk0HZITgzpCQAjFXUjzZaBIUFX1zz0o742LkVRFllvT/s1600/infius.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFAIu1doaUqj7xIhvYrMl90HAK-Q7gpDL7VO9YxgwfwgDAUdTMP9hVT-0kEiBTv8MneZmLPJBumxiqp6dYnttxEJyp-yo9MJ_qGzk0HZITgzpCQAjFXUjzZaBIUFX1zz0o742LkVRFllvT/s1600/infius.png" /></a></div>
<span style="font-family: inherit;">В прошлую субботу прошла очередная сессия викенд тестирования
(здесь можно посмотреть <a href="http://33testers.blogspot.ru/2015/03/weekend-testing-03.html">анонс</a> и <a href="http://33testers.blogspot.ru/2015/03/blog-post.html">вводную</a> по теме). Участников собралось
меньше, чем обычно (возможно, это связано с некоторой задержкой в
выкладывании анонса, каюсь :( ), но сессия получилась интересной и
продуктивной.</span><br />
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Мы начали с обсуждения темы
и пришли к выводу, что в своих компаниях мы используем немного разные
оракулы, и их приоритет может быть разным. Например, для кого-то важнее
оракул истории (или версий), который основан на сравнении текущей версии
с предыдущими. Для кого-то спецификации служат главным механизмом, с
помощью которого обнаруживаются ошибки. Еще один оракул, который нам нравится использовать - здравый смысл. Правда, как показывает
практика, здравый смысл у разных людей может быть очень разным :) Но
если в вашей компании есть человек с "эталонным" здравым смыслом, то
почему бы его не использовать как оракул?</span></div>
<div>
<span style="font-family: inherit;"></span><br />
<a name='more'></a><span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Дальше
была практика, в рамках которой мы тестировали робота-консультанта Инфиуса на
сайте <a href="http://www.nanosemantics.ru/">Наносемантики</a>. Для каждого бага или проблемы,
которую мы находили, мы старались понять, с помощью какого оракула мы
нашли эту проблему. Сам объект тестирования был интересным. Инфиус должен быть помощником для пользователей и
рассказывать им об услугах, помогать найти нужную информацию и даже
морально поддерживать (да да, он сам так сказал). В общем, это довольно
симпатичный персонаж, с которым получались довольно забавные (и, кстати, вполне
разумные) диалоги вроде:</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">- (Человек) А что ты делаешь когда тебе нечего сказать?</span></div>
<div>
<span style="font-family: inherit;">- (Робот) Всегда по-разному получается.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">- Например?</span></div>
<div>
<span style="font-family: inherit;">- Не могу привести пример.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">- Жаль</span></div>
<div>
<span style="font-family: inherit;">- Но Вы сильно уж не расстраивайтесь!</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">- У меня депрессия</span></div>
<div>
<span style="font-family: inherit;">- Наверно, Вам нужен отпуск, коллега</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Или:</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">- почему ты профессор?</span></div>
<div>
<span style="font-family: inherit;">- Я профессор, потому что я эксперт по инфам.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">- эксперт?</span></div>
<div>
<span style="font-family: inherit;">- Я эксперт в области искусственного интеллекта.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">- искусственный интеллект?</span></div>
<div>
<span style="font-family: inherit;">-
Это то, что позволяет нам, роботам, общаться с вами, людьми. Но уровень
нашего искусственного интеллекта, как это ни обидно, только от вас
зависит.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">- почему?</span></div>
<div>
<span style="font-family: inherit;">- Потому что инфов обучают люди.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Мы нашли несколько потенциальных проблем и проанализировали, какие оракулы мы использовали при этом:</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<ol>
<li><span style="font-family: inherit;">Фразы, которые строит Инфиус, не всегда правильные и стройные - с точки
зрения человека, который с ним говорит. Обнаружить эту проблемы мы
смогли при помощи оракула "сравнимые продукты", где в рамках продукта
для сравнения выступает человек :)</span><span style="font-family: inherit;"> </span></li>
<li><span style="font-family: inherit;">Имеет
место разное поведение робота в примерно одинаковых ситуациях. Например,
иногда робот запоминает имя собеседника, иногда - нет. Иногда он выдает
ответ на вопрос, но если его сформулировать немного иначе - теряется.
Если ссылаться на конкретный оракул, который тут использовался, то можно
упомянуть "product" из мнемоники FEW HICCUPPS, который говорит о том,
что разные части продукта должны соответствовать друг другу.</span><span style="font-family: inherit;"> </span></li>
<li><span style="font-family: inherit;">Кроме того, мы обнаружили, что Инф не выполняет одну из главных своих
функций - он практически не советует обратиться в "человеческую" службу
поддержки, даже если не знает ответ на вопрос. Тут использовался оракул "purpose" - продукт должен соответствовать своему назначению.</span><span style="font-family: inherit;"> </span></li>
<li><span style="font-family: inherit;">Были еще проблемы вроде обрезания текста, перекрывания окном приложения
текста страницы, странных глюков с вводом длинного текста. Многие из
этих проблем были найдены при помощи оракула "схожести", когда мы
пытаемся найти проблемы, встречавшиеся нам раньше (в других продуктах).
Можно также назвать этот оракул опытом.</span></li>
</ol>
</div>
<div>
<span style="font-family: inherit;">Материалы сессии (лог скайп чата) можно посмотреть <a href="https://drive.google.com/file/d/0BwP6rJYT-D1fQUtmai1VQVlWZVE/view?usp=sharing">тут</a>.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">В
самом конце мы решили провести голосование за тему следующей сессии.
Большинством голосов была выбрана "Легкая автоматизация". Так что в
следующий раз мы поговорим о способах автоматизации рутинных задач. До
встречи! И еще раз спасибо всем принявшим участие!</span></div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-48695769888393868732015-03-26T14:57:00.000-07:002015-03-26T15:00:05.563-07:00Оракулы в тестировании<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzNbMMkOah4xJs20xMUuwUKmT_vkTf07AhGzHZqS1WmW80TD2zKVOCSiDRany3M4-gJJGC37X8er8Y2KbJmArmG7rPvaKwrsEPCyzYGptFQBvuG0YPCG5kCkzyNLffxQ8RjxTG2tx76D03/s1600/logo_%D0%BE%D1%80%D0%B0%D0%BA%D1%83%D0%BB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzNbMMkOah4xJs20xMUuwUKmT_vkTf07AhGzHZqS1WmW80TD2zKVOCSiDRany3M4-gJJGC37X8er8Y2KbJmArmG7rPvaKwrsEPCyzYGptFQBvuG0YPCG5kCkzyNLffxQ8RjxTG2tx76D03/s1600/logo_%D0%BE%D1%80%D0%B0%D0%BA%D1%83%D0%BB.png" height="200" width="200" /></a></div>
<span style="font-family: inherit;">В эту субботу состоится сессия викенд тестирования, посвященная оракулам (<a href="http://33testers.blogspot.ru/2015/03/weekend-testing-03.html">подробнее об участии</a>). Это сообщение является чем то вроде вводной к этой сессии.</span><br />
<br />
<span style="font-family: inherit;">Лично для меня эта тема очень интересна. Пару лет назад на конференции во Львове я даже выступал с <a href="http://sqadays.com/talk/12389">докладом про оракулы</a>. Так что когда я говорю про оракулы - я вспоминаю про Львов, а когда говорю про Львов - вспоминаю про оракулы. Так и живу :)</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Вряд ли найдется тестировщик, который не сталкивался с оракулами. Если вы находили баг - вы имело с ними дело, если бы писали тест кейс - тоже. Это одна из вещей, которые мы используем каждый день, но не всегда знаем, как она называется.</span><br />
<span style="font-family: inherit;"></span><br />
<a name='more'></a><br />
<br />
<span style="font-family: inherit;">Оракул - это эвристический механизм, который помогает нам определить проблему. Это первое определение, которое мы рассмотрим. Прилагательное "эвристический" указывает на то, что этот механизм, как и любая другая <a href="http://www.developsense.com/blog/2012/04/heuristics-for-understanding-heuristics/">эвристика</a>, подвержен ошибкам. То есть, он помогает, но не всегда. Зато его сравнительно легко использовать - еще одно свойство, характерное для эвристики.</span><br />
<br />
<span style="font-family: inherit;">Еще одно определение оракула - второе в этом сообщении - говорит о том, что это - способ генерации ожидаемого результата теста.</span><br />
<br />
<span style="font-family: inherit;">Эти два определения похожи, они оба связаны с определением результата теста и распознаванием правильного и неправильного поведения продукта. Но есть в них и принципиальное различие: первое используется в основном в контексте обнаружения проблем, второе - в контексте разработки тестов (я имею в виду придумывание тестов).</span><br />
<br />
<span style="font-family: inherit;">Существует две популярные классификации оракулов: <a href="http://www.developsense.com/blog/2012/07/few-hiccupps/">FEW HICCUPPS</a> Майкла Болтона и Джеймса Баха и <a href="http://kaner.com/?p=190">таксономия оракулов Дуга Хоффмана</a> (см. раздел Doug Hoffman’s Approach). Как мне кажется, первое определение оракулов удобнее и логичнее употреблять в контексте классификации Болтона и Баха, второе - в рамках классификации Хоффмана.</span><br />
<br />
<span style="font-family: inherit;">Если коротко, то FEW HICCUPPS - что-то вроде сборника универсальных типов оракулов для обнаружения проблем, а таксономия Хоффмана - сборник разных типов оракулов в помощь при тест дизайне (автор составлял ее с прицелом на автоматизацию). </span><br />
<br />
<span style="font-family: inherit;">Давайте рассмотрим 2 примера использования оракулов.</span><br />
<br />
<span style="font-family: inherit;">1. Представьте, что вы тестируете приложение по обмену мгновенными текстовыми сообщениями. Вы на автомате нажимаете Ctrl + Enter, чтобы отправить сообщение, но ничего не происходит. В спецификации об этом ни слова. Но что-то говорит вам о том, что тут есть проблема. Это - оракул, то есть механизм, с помощью которого вы обнаруживаете ошибку. В этом случае, используя классификацию FEW HICCUPPS, вы видите проблему из-за явного несоответствия поведения вашего продукта и сравнимых с ним продуктов (оракул несоответствия Comparable product). Возможно, отсутствие посылки сообщений по Ctrl + Enter является своеобразной фичей вашего продукта (тогда мы можем сказать, что оракул не сработал, ведь реальная ошибка не найдена). Но скорее всего это все-таки проблема. Похоже, что про реализацию этой фичи просто забыли.</span><br />
<br />
<span style="font-family: inherit;">2. Представьте, что вы автоматизируйте тест по проверке построения графика синуса в вашем математическом продукте. Как вы можете проверить правильность графика:</span><br />
<ul>
<li><span style="font-family: inherit;">Сравните его с графиком, сгенеренным предыдущей версией программы на тех же данных. Таким образом вы используете оракул регрессии из классификации Дуга Хоффмана. Он не всегда работает (например, когда в предыдущей версии программы был баг), но может вам пригодиться.</span></li>
<li><span style="font-family: inherit;">Построите график в другой программе и сравните свой график с ним. Такой оракул называется оракулом образцовой программы в таксономии Хоффмана. Он очень похож на оракул соответствия сравнимому продукту в FEW HICCUPPS (Comparable product).</span></li>
<li><span style="font-family: inherit;">Вы можете ограничиться проверкой ключевых точек: sin(0), sin(</span><span style="font-family: inherit;"><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>RU</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Обычная таблица";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]--></span>π/2), ... Это довольно легко сделать (по сравнению с другими вариантами), но гарантий правильности графика в других точках не дает. Этот метод проверки можно отнести к оракулу вычислений из таксономии Хоффмана (Calculation oracle). <br /><span style="font-family: inherit;"></span></li>
</ul>
<span style="font-family: inherit;">Материалы по оракулам:</span><br />
<ul>
<li><a href="http://sqadays.com/ru/talk/25831">Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта).</a> Запись доклада Сергея Атрощенкова на SQA days - 16.</li>
<li><a href="http://www.developsense.com/blog/2011/10/confusion-as-an-oracle/">Confusion as an Oracle</a>. Сообщение в блоге Майкла Болтона, любопытное рассуждение о том, как тестеры могут прислушиваться к себе для обнаружения проблем.</li>
<li><a href="http://www.developsense.com/blog/2011/09/the-cooking-detector/">The Cooking Detector</a>.</li>
<li><a href="http://softwarequalitymethods.com/html/papers.html">http://softwarequalitymethods.com/html/papers.html</a>. Множество материалов Дуга Хоффмана по теме оракулов.</li>
<li>Также смотрите ссылки на материалы в теле сообщения. </li>
</ul>
На сегодня -все :)<span style="font-family: inherit;"></span><span style="font-family: inherit;"></span><span style="font-family: inherit;"></span><span style="font-family: inherit;"></span><span style="font-family: inherit;"></span><span style="font-family: inherit;"></span><span style="font-family: inherit;"></span>wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-88933219506641738182015-03-24T13:36:00.001-07:002015-03-26T12:47:25.254-07:00Weekend testing 03: Оракулы<div dir="auto" name="BB10" style="color: #262626;">
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="color: black; font-size: small; white-space: pre-wrap;">Дорогие друзья! Приглашаем вас принять участие в третьей сессии</span></span></div>
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">Weekend testing, посвященной оракулам в тестировании!</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><br caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;" /></span></span>
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">Сессия пройдет в субботу 28 марта в 12:00 (МСК).</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><br caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;" /></span></span>
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">Для участия необходимо:</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">- Зарегистрироваться: </span><span style="font-size: small;"><a href="http://goo.gl/forms/lXREtBGqH0"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="color: #0073bc; white-space: pre-wrap;">http://goo.gl/forms/lXREtBGqH0</span></a></span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">- Подтвердить, что вы будете участвовать, написав в skype</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">weekend_testing_russia не позднее чем за 10 минут до начала сессии.</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><br caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;" /></span></span>
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">По теме сессии:</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><br caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;" /></span></span>
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">Оракулы - это одно из основополагающих понятий в тестировании. Так</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">называют механизм, с помощью которого мы определяем наличие проблемы.</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">Часто мы пользуемся ими интуитивно и даже не отдаем себе в этом</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">отчета. Но осознанное использование оракулов способно улучшить процесс</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-size: small; white-space: pre-wrap;">обнаружения ошибок. Этому стоит поучиться.</span></span><br />
<br />
<a name='more'></a><br caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="font-family: sans-serif; white-space: pre-wrap;" /><br />
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;">Существует несколько классификаций оракулов - FEW HICCUPPS от</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;">Майкла Болтона и Джеймса Баха, таксономия оракулов Дуга Хоффмана. В</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;">этих классификациях вы найдете универсальные типы</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;">оракулов. Но вы не должны ограничиваться ими, придумывайте свои - в зависимости от контекста вашего продукта.</span></span><br />
<span style="font-family: inherit;"><br caretmarkerset="INVALID" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;" /></span>
<span style="font-family: inherit;"><span caretmarkerset="" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;">На следующей сессии Weekend testing мы потренируемся в использовании</span></span><br />
<span style="font-family: inherit;"><span caretmarkerset="" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;">оракулов.</span><span caretmarkerset="" class="markedForCaretMarkerRemoval" name="BB10" style="white-space: pre-wrap;"> Приглашаем всех желающих! Даже если вы раньше не слышали об оракулах - приходите, мы расскажем, обсудим, попробуем!</span></span>wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-10671528087582604192015-02-19T20:22:00.002-08:002015-02-19T20:22:47.854-08:00Weekend testing #02: Исследовательское тестирование<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2UtufkQg0ojRZNVDg0n551qYBGfgTNeePnLMz_ZMaGZNAhusHLo37mq8MPsq4m8vYY0AbK8joxHDV0TQ4WlakvB_FXjcC9-x43D3mW_b1siUb0qRygpwdE3_lCd8KzEyOT_5B-zcdnrEQ/s1600/logo_masl.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2UtufkQg0ojRZNVDg0n551qYBGfgTNeePnLMz_ZMaGZNAhusHLo37mq8MPsq4m8vYY0AbK8joxHDV0TQ4WlakvB_FXjcC9-x43D3mW_b1siUb0qRygpwdE3_lCd8KzEyOT_5B-zcdnrEQ/s1600/logo_masl.png" height="200" width="200" /></a></div>
<span style="font-family: inherit;">Следующая сессия Weekend testing будет посвящена исследовательскому
тестированию. Подробнее об участии - на сайте <a href="http://sqagroup.spb.ru/announces/weekend-testing-02/">http://sqagroup.spb.ru/announces/weekend-testing-02/</a>. 22 февраля в 12:00 по
Москве ждем вас!</span><br />
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Не нужно лишний раз
рассказывать о том, что такое исследовательское тестирование (ИТ,
Exploratory testing, ET). Существует множество источников, где это
понятие описано достаточно хорошо. Вы можете почитать книги <a href="https://pragprog.com/book/ehxta/explore-it">Элизабет Хендриксон</a>, <a href="http://www.amazon.com/Exploratory-Software-Testing-Tricks-Techniques/dp/0321636414">Джеймса Виттекера</a>, блоги <a href="http://www.developsense.com/blog/">Майкла Болтона</a>, <a href="http://www.satisfice.com/blog/">Джеймса Баха</a>, <a href="http://kaner.com/">Кема Канера</a>.</span></div>
<div>
<span style="font-family: inherit;"><br name="BB10" /></span></div>
<div>
<span style="font-family: inherit;">В этом сообщении я расскажу о плюсах и минусах ИТ - как я их вижу. И о том, как можно сделать минусы не такими серьезными.</span></div>
<div>
<span style="font-family: inherit;"><a name='more'></a><br name="BB10" /></span></div>
<div>
<span style="font-family: inherit;">Исследовательское
тестирование делает нашу работу интереснее. Оно добавляет больше
креатива и больше индивидуальности в то, что мы делаем. Успех
исследовательского тестирования в большой степени зависит от мастерства
самого тестировщика. Этот подход предъявляет к человеку, использующему
его, повышенные требования. Исследовательское тестирование учит нас
думать: на каждом шаге мы прислушиваемся к себе, задаем вопросы,
принимаем решения. Это большая нагрузка и большая ответственность. И это
очень здорово - для нашего развития как тестировщиков.</span></div>
<div>
<span style="font-family: inherit;"><br name="BB10" /></span></div>
<div>
<span style="font-family: inherit;">При
своих плюсах исследовательское тестирование не используется
повсеместно. Могу сказать по своему опыту: ни в одной из компаний, где я
работал, тестирование не было полностью исследовательским. Та или иная
часть тестов была повторяемой и описанной по шагам - от и до. Всегда
было что-то, что заставляло подстраховываться и использовать старый
добрый подход, основанный на тест кейсах.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Думаю,
исследовательское тестирование - довольно рискованный подход, которому
не хватает прозрачности, прогнозируемости и измеримости - в глазах
руководства.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Сравните
с процессом, использующим тест кейсы: есть 10 тест кейсов для
функционального тестирования, которые занимают 10 дней, есть 20 тест
кейсов для регрессионного тестирования, которые занимают 15 дней. Всего
25 дней на один цикл тестирования. Да, могут быть баги, которые заставят
повторить некоторые тесты несколько раз. Да, есть риск не закончить
тестирование вовремя из-за других проблем. Но начальство имеет
определенную долю уверенности в том, что тестирование действительно
закончится на этих 30 тестах. Скоуп тестирования прозрачен и измерим.
Любой желающий может посмотреть описание тестов и понять, что
проверяется и как.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Другое
дело - исследовательское тестирование. Мы не можем измерить его в тест
кейсах. И по прозрачности оно проигрывает - редко мы готовим отчеты по
ИТ, которые по детализации сравнимы с тест кейсами. Прогнозируемость
тоже как правило ухудшается - нам сложнее сказать, когда закончится
тестирование. По-хорошему, не дело тестировщиков это решать, но это
другой разговор :)</span></div>
<div>
<span style="font-family: inherit;"><br name="BB10" /></span></div>
<div>
<span style="font-family: inherit;">Не каждому
менеджеру понравится такой гибкий и креативный подход. Иногда лучше
пожертвовать гибкостью и получить стабильный результат через
прогнозируемый промежуток времени. Другое дело, что результат
тестирования по тест кейсам будет таким: выполнено 30 тестов, критичных
багов не найдено. Все запланированные тест кейсы выполнены - что может
быть лучше? :)</span></div>
<div>
<span style="font-family: inherit;"><br name="BB10" /></span></div>
<div>
<span style="font-family: inherit;">Может поэтому компаний, в которых преобладает исследовательское тестирование, не так много?</span></div>
<div>
<span style="font-family: inherit;"><br name="BB10" /></span></div>
<div>
<span style="font-family: inherit;">Нам стоит подумать о том, как сделать исследовательское тестирование измеримее и понятнее.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">1.
Одно из возможных решений, которое напрашивается - <i>ограничение скоупа</i>
исследовательского тестирования и <i>разделение его на измеримые части</i>.
Если мы можем сказать, что, к примеру, на выполнение самых приоритетных
тестов у нас уйдет 5 дней - уже хорошо. В этом случае нам нужно уметь
контролировать исследовательское тестирование, если оно выходит за
рамки.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">2. В улучшении
прозрачности ИТ нам могут помочь <i>грамотные отчеты</i>. В случае
тестирования по тест кейсам сам тест кейс может быть отчетом: нужно
просто расставить passed/failed напротив шагов. Чтобы подготовить отчет
об исследовательском тестировании - нужно больше времени и нужно умение
выразить множество информации в короткой и понятной форме.</span></div>
<div>
<span style="font-family: inherit;"><br name="BB10" /></span></div>
<div>
<span style="font-family: inherit;">3.
<i>Улучшение скилов команды</i>. Как мы сказали, исследовательское
тестирование - очень требовательный подход. Поэтому нам нужно учиться
его использовать. У тестировщиков должен быть опыт использования разных
техник, должна быть интуиция и опыт, накопленные при работе с разными
продуктами и в разных командах. Кроме того, нам нужно привыкнуть
постоянно думать и анализировать то, что мы делаем - без этого
исследовательское тестирование теряет свою силу.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">В
области улучшения управляемости и измеримости ИТ есть готовые
фреймворки. Например, <a href="http://www.satisfice.com/articles/sbtm.pdf">SBTM</a> от братьев Бах. В основе этой модели:</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">- Тест сессии - ограниченные промежутки времени, в рамках которых происходит тестирование. Каждая сессия имеет тему (charter).</span></div>
<div>
<span style="font-family: inherit;">- Отчеты по результатам сессий, которые оформляются в специальной форме, пригодной для парсинга и сбора статистики.</span></div>
<div>
<span style="font-family: inherit;">- Обсуждение результатов (Debriefings). Тим лид и тестировщик обсуждают каждую проведенную сессию.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Я не встречал компаний, в которых использовалась эта модель. А вы? Но отдельные фрагменты этой модели встречались.</span></div>
<div>
<span style="font-family: inherit;"><br name="BB10" /></span></div>
<div>
<span style="font-family: inherit;">В общем, я считаю ИТ полезным подходом. Мне нравится, что ИТ зависит от самого тестировщика и учит его думать над тем, что он делает. </span></div>
<div>
<span style="font-family: inherit;"><br name="BB10" /></span></div>
<div>
<span style="font-family: inherit;">На
след сессии Weekend testing мы поговорим о том, как выполнять ИТ, как
готовить отчеты по результатам, как делать заметки в процессе
тестирования. Приходите :)</span></div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com0tag:blogger.com,1999:blog-4371806625756604248.post-80440981935343281592015-02-16T12:23:00.002-08:002015-02-16T12:28:02.930-08:00Тестовая стратегия - часть 3<span style="font-family: inherit;"><span style="font-size: small;">Тестовая стратегия не отпускает меня так просто. Уже третье сообщение на эту тему. В предыдущих двух (<a href="http://33testers.blogspot.ru/2015/01/weekend-testing-01.html">первое</a>, <a href="http://33testers.blogspot.ru/2015/02/weekend-testing-01.html">второе</a>) я рассказал о подготовке и проведении сессии Weekend testing, посвященной составлению тестовой стратегии. Сегодня я хотел бы рассказать о создани<span style="font-family: inherit;">и</span> стратегии для тестирования одного крупного сайта (<a href="http://lingualeo.com/">http://lingualeo.com</a>). Кор<span style="font-family: inherit;">отко: э</span>то онлайн-платформа для желающих изучить английский язык.</span></span><br />
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span>
<span style="font-family: inherit;"><span style="font-size: small;">Цель у меня такая: не показать результат, а в первую очеред<span style="font-family: inherit;">ь </span>рассказать о самом процессе составления стратегии. Мне было интересно проследить, как и что я делаю. Это <span style="font-family: inherit;">напомина<span style="font-family: inherit;">ет</span></span> работ<span style="font-family: inherit;">у</span> над ошибками и самопроверк<span style="font-family: inherit;">у</span>. <span style="font-family: inherit;">Кроме того,</span> это попытка объяснить свою работу. <span style="font-family: inherit;">Н</span>е всег<span style="font-family: inherit;">да э<span style="font-family: inherit;">то </span></span>просто сделать, потому что часто мы работаем интуитивно. Для меня умение объяснить свою работу означает способность понять свои ошибки (что <span style="font-family: inherit;">я</span> дела<span style="font-family: inherit;">ю</span> неправильно) и свои достижения (что я делаю правильно). </span></span><br />
<a name='more'></a><span style="font-family: inherit;"><span style="font-size: small;">Итак, я расскажу о процессе составления стратегии и постараюсь сделать это в структурированной форме<span style="font-family: inherit;">, по порядку</span>. <span style="font-family: inherit;">Как вы понимаете, н</span>е каждый процесс структурирован сам по себе. Поэтому не факт, что у меня получится разложить все по полочкам.</span></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="font-size: small;">1. Хождение по сайту (блиц-экскурсия). </span></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="font-size: small;">Начал я с обычного исследования сайта <a href="http://lingualeo.com/">http://lingualeo.com</a>. Можно назвать это упражнение туром по сайту (про туры совсем недавно было хорошее <a href="http://okiseleva.blogspot.ru/2015/01/blog-post_64.html">сообщение</a> в блоге Ольги Киселевой, а еще раньше я читал про них в <a href="http://www.testingeducation.org/BBST/testdesign/Kelly_Taking_a_Tour_Through_Test_Country.pdf">статье</a> Майкла Келли). <span style="font-family: inherit;">М</span>ожно назвать это позитивным тестированием, цель которого - не найти баги, а изучить продукт. В целом, я потратил на него всего 20-30 минут. Поэтому предлагаю назвать это упражнение коротким погружением или блиц-экскурсией. Могу сказать, что упражнение было полезным - благодаря ему у меня в голове сложились основ<span style="font-family: inherit;">ы </span>будущей тестовой стратегии.</span></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="font-size: small;">Что я заметил:</span></span><br />
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">Сразу же на главной странице сайта </span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-size: small;"><a href="http://lingualeo.com/">http://lingualeo.com</a></span></span> - ссылки на <span style="font-family: inherit;">расширения для браузеров и</span> мобильные приложения. *** <span style="color: blue;">Ага, значит это многообразие платформ потенциально нужно проверять в рамках тестирования.</span> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Множество контента (курсы в текстовом формате, видео, подготовка к сдаче экзаменов, звукозаписи). *** <span style="color: blue;">Это тоже нужно тестировать</span>. </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Gamification движок сайта (поинты, медальки, забавный помощник по обучению - львенок Лео). *** <span style="color: blue;">Это тоже нужно тестировать, насколько это возможно.</span> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Монетизация и связь с платежными системами (внутренняя валюта сайта - так называемые фрикадельки). *** <span style="color: blue;">Тоже важная часть, от которой зависит доход компании.</span> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Локализации сайта (как минимум, бразильский и турецкий языки). *** <span style="color: blue;">Еще один параметр конфигурации системы, влияющий на объем тестирования.</span></span></span></li>
</ul>
<span style="font-family: inherit;"><span style="font-size: small;">В процессе блиц-экскурсии по сайту у меня не было плана-путеводителя, но у меня была цель - выхватить основы продукта, его концепцию. И все это - с прицелом на дальнейшее тестирование. Поэтому я подсознательно замечал те вещи, которые влияют на объем тестирования и на его сложность: интеграция с внешними системами, многообразие платформ, крупные функциональные части (механизм монетизации, социальная интеграция и другие). Во время экскурсии я оставлял короткие заметки (всегда боюсь что-то забыть).</span></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="font-size: small;">Кроме того, я заметил интересную вещь: увидев, что сайт имеет подобие игры (в нем очень активно используются механизмы gamification), я довольно много времени уделил исследованию элементов игры. У меня есть к этому склонность: я интересуюсь использованием элементов игры в работе, в жизни; пару лет назад я прошел <a href="https://www.coursera.org/course/gamification">курс по Gamification</a> на coursera.org. Поэтому я пробовал оценить, насколько реализация игры на сайте <a href="http://lingualeo.com/">http://lingualeo.com</a> может заинтересовать пользователей и мотивировать их к изучению английского. Ведь привлечение новых пользователей - это одно, а поддержание постоянного интереса, стимулирование внутренней мотивации внешними средствами, внедрение эффективных механизмов социализации - это другое. От продукта, построенного на gamification, ожидаешь чего-то особенного, какой-то харизмы. И большой вопрос - как эту харизму в будущем тестировать?</span></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="font-size: small;">Сделаю заметку: я уделил </span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-size: small;">механизму gamification </span></span>много времени потому, что в принципе интересуюсь игровыми элементами. Другой человек при исследовании сайта уделил бы внимание другим вещам. Поэтому нужно быть внимательным: нужно контролировать <span style="font-family: inherit;">свои</span> склонности. Они не всегда приводят к важным открытиям и правильным решениям.<span style="font-family: inherit;"> </span>О склонностях в тестировании написано много - например, <a href="http://blog.smartbear.com/test-automation/bias-and-the-human-side-of-software-testing/">Bias and the Human Side of Software Testing</a> и <a href="http://www.mkltesthead.com/2013/09/reduce-biases-99-ways-workshop-83.html">Reduce Biases</a>.</span></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="font-size: small;">2. Серфинг.</span></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="font-size: small;">Что было потом? Я стал искать информацию о проекте в интернете: <a href="http://yandex.ru/clck/jsredir?from=yandex.ru%3Byandsearch%3Bweb%3B%3B&text=&etext=599.jMfdMF9MSDzx_KOKZM3dIEHzEU8e3ErU2lfU0GrneDk.e0c7b9cd61536c5b6577e912610ec283deffe402&uuid=&state=AiuY0DBWFJ4ePaEse6rgeAjgs2pI3DW9Iuwyq9ogZlJhKxtAVowVHmtDFxDlnhMwu0EYAyZg-gS3XyzPbE25aUkqYITXWvTS9AK6VlX0LIA7uY7ewHzMgPbonuuV0htUSi2S5imMfDI52pXdPzvSTma6UvqCBJgUeMTmI6BE1pXWaOP_yhZlsj_3Q719ZWT6SSVcdZOrFsQGtPMMOh-BlAmcxO1DBQd71thTkB11ecD4GjetGdNSQrcMGEr7wDldo3VdnNg_S7dFaKADnCWbgyD1zEwlRuWL&data=UlNrNmk5WktYejR0eWJFYk1LdmtxamVnNEJRWnJseWwyX0JzSlhyc2l1YUpDWmZVRlU4RUVMSGtUZzFieTNLRXd5dm1mNUpBZnQyWWNqUVo5ZUk5TWJTT3Q5Y0pYLUo0UTZhQkY5VWpaNHRvamJvZnNMMEJObWV1dXlrdEY4LTI&b64e=2&sign=bfe5341d5fc030c277755a40b9b29ea6&keyno=0&ref=orjY4mGPRjk5boDnW0uvlpAgqs5Jg3qugxMaS29Lcl7I2rYYZcILdctyDYpVIqUkhAgfdDbsAmpmVa0AHcW2xRH76F16_hpCddFM8bdj4i0&l10n=ru&cts=1423936939919&mc=2.75">википедии</a> и на официальной <a href="http://habrahabr.ru/company/lingualeo/">хабра-страничке</a>. Назовем этот процесс серфингом по открытым источникам информации. В рамках этого упражнения я пытался собрать разнообразные заявления и утверждения, которые делаются о компании и которые делаются самой компанией. Кроме того, можно сказать, что я изучал контекст продукта - окружение, в котором происходит его разработка и в котором он существует. Здесь я могу сослаться на часть <a href="http://www.satisfice.com/tools/htsm.pdf">модели HTSM</a> - Project Environment<span style="font-family: inherit;"> -</span> ее исследованием я в основном и занимался на этом этапе. </span></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">У</span>меня <span style="font-family: inherit;">п</span>олучилось собрать следующие факты:</span></span><br />
<div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">У проекта около 10 млн пользователей. *** <span style="color: blue;">Необходимо нагрузочное тестирование? Сложность поддержки большого числа пользователей посильна для компании? </span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Проект расширяется и захватывает новые страны. *** <span style="color: blue;">Локализации нужно будет тестировать, опять же.</span> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">При разработке используется вывоз команды в другие страны - на короткий промежуток времени. *** <span style="color: blue;">Тут от тестировщиков нужно будет умение подключаться на ранних этапах разработки и выдавать необходимую информацию о качестве продукта как можно раньше. Этот метод требует определенной гибкости от тестировщиков: умени<span style="font-family: inherit;">я</span> жертвовать документацией, умени<span style="font-family: inherit;">я</span> проводить исследовательское тестирование без тест кейсов, умени<span style="font-family: inherit;">я</span> автоматизировать регрессионные проверки для сокращения итераций тестирования. Я немного забегаю вперед :)</span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="color: blue;"><span style="color: black;">В</span> </span>команде около 60 человек. *** <span style="color: blue;">Значит, на вскидку, тестировщиков человек 5-8.</span> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">У компании были трудные времена, не получалось найти инвесторов. В данный момент необходимые для развития ресурсы найдены и компания растет. *** <span style="color: blue;">С молодостью компании можно связать молодость процесса разработки. Это очень даже не плохо, но это может означать, что процессы еще не совсем налажены. Это <span style="font-family: inherit;">п</span>редположение, которое еще нужно подтвердить.</span></span></span></li>
</ul>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Для тестирования, как мы видим, большая часть собранной информации полезна. Но есть и информация, которая носит ознакомительный характер<span style="font-family: inherit;">:</span> <span style="font-family: inherit;">и</span>нтересно, но не совсем понятно, как <span style="font-family: inherit;">такая</span> и<span style="font-family: inherit;">нформация</span> может повлиять на стратегию тестирования. </span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">3. Глубокое погружение (полноценная экскурсия).</span></span></div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;">Я зарегился и решил пройти несколько
упражнений на сайте. Обнаружил интересные для тестирования фичи, такие
как:</span></span></div>
<div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">Социальная интеграция. Можно найти людей, так же изучающих
английский на сайте, и добавить их в свой прайд - то есть, создать своеобразную книгу
контактов. Кроме того, можно собрать группу и обучать ее
английскому - выступить в роли преподавателя. </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Платные возможности. Чтобы пройти курс по изучению
времени Future perfect, предлагалось заплатить N-ное количество
фрикаделек. Это валюта, используемая на сайте. Фрикадельки можно
получить, например, если пригласить друзей на сайт. Они расходуются на
новые слова, курсы. *** <span style="color: blue;">Нужно тестировать монетизацию, доступность различных курсов</span>.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Звукозаписи хранятся в Sound cloud. При прохождении урока была запись, проигрываемая из этого сервиса. *** <span style="color: blue;">А значит, интеграцию с этими сервисом тоже нужно проверять</span>.</span></span></li>
</ul>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">В общем,
я продолжил погружение в детали и узнавал все новые подробности некоторых фич.</span></span><br />
<br /></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">4. Остановка исследования продукта. </span></span></div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;">Дальше я подумал о том, что <span style="font-family: inherit;">тот</span> уровень детализации, которого я достиг - <span style="font-family: inherit;">детали </span>конкретны<span style="font-family: inherit;">х</span> фич продукта - это скорее следующий этап, к которому нужно приступать, когда тестовая
стратегия уже составлена. Я <span style="font-family: inherit;">понял</span>, что <span style="font-family: inherit;">готов</span> обрисовать основные идеи тестирования уже сейчас.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">5. Составление стратегии.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Дальше началось самое интересное - мне нужно было придумать с чего начать формулирование стратегии, как перейти от информации, которую я собрал, к выводу и принятию решений.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Уже имея очертания тестовой стратегии в голове, я стал думать о том, как
сделать эту стратегию логичной для себя и для потенциальных
стейкхолдеров. Я мысленно начал готовить презентацию стратегии. Возвращаясь назад, я
понимаю, что у меня еще не было достаточно четкой формулировки стратегии, когда я начал думать о ее
презентации. Если бы меня в тот момент спросили о стратегии, я бы долго
рассказывал о том, как на мой взгляд надо тестировать продукт. Но не
уверен, что я смог б<span style="font-family: inherit;">ы </span>обосновать все это. Мне не хватало логической цепочки,
где каждая идея тестирования из чего-то вытекает. Но одно я знал точно: собранная информация - о продукте, о бизнес целях, о проблемах и
трудностях компании - должна подкреплять и подтверждать мою стратегию тестирования. Мне нужно
было связать интересы компании со стратегией.</span></span><br />
<br /></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">5.0. Цели продукта и компании.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Я решил начать с потребностей компании. Перечислил их для себя как:</span></span></div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">Экспансия в новые страны</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Монетизация и увеличение прибыли</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Привлечение новых пользователей</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Расширение контента</span></span></li>
</ul>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Для упрощения я решил оставить две обобщенные п<span style="font-family: inherit;">отребнос<span style="font-family: inherit;">ти</span></span>:</span></span></div>
<div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">Привлечение новых пользователей</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Поддержка
старых пользователей</span></span></li>
</ul>
</div>
<div>
<br />
<br />
<span style="font-family: inherit;"><span style="font-size: small;">5.1. Логическая цепочка стратегии тестирования.</span></span></div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;">Дальше я решил действовать в такой
последовательности:</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Бизнес цели (потребности компании) -> Критерии качества (какие критерии качества продукта для компании важны) -> Техники
тестирования (как мы будем тестировать) -> Cтратегия тестирования.</span></span></div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;">Потом я решил добавить challenges (или трудности, с которыми компания сталкивается в процессе достижении своих целей), но убрать
явное упоминание техник тестирования (можно коротко упомянуть их в самой
стратегии). То есть, логическая цепочка стала такой:</span></span></div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;"><b>Цели > Challenges > Критерии качества > Стратегия</b></span></span><br />
<br /></div>
<div>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">5.2. Challenges. </span></span></div>
<div>
<br />
<span style="font-family: inherit;"><span style="font-size: small;">Итак, цели были уже сформулированы (см. выше). Поэтому я стал думать о том, какие
испытания и трудности могут встречаться на пути у компании, ставящей подобные цели. Очевидно, это трудности роста и развития, возникающие с необходимостью
поддержки огромного числа пользователей, платформ, локализаций. Отсюда вытекают:</span></span></div>
<div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">Огромное число требований, запросов на новые фичи, которыми нужно грамотно управлять</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Огромное количество конфигураций приложения, которые нужно поддерживать</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Огромный объем контента, который нужно хранить и постоянно пополнять</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Сложная инфраструктура продукта, которая должна быть быстрой и производительной - для поддержки комфортной работы старых и новых пользователей </span></span></li>
</ul>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">5.3. Критерии качества.</span></span><br />
<br />
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Дальше в логической цепочке идут критерии качества, важные для данного продукта.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Я выделил следующие критерии: </span></span></div>
<div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><b>Расширяемость</b>. Способность продукта приобретать новые фичи,
новые модули, новые части - с малым риском влияния на старые части. Я
считаю это важным для данного продукта, потому что одна из его основных
фишек - это новый и интересный контент, новые фичи, способные вдохнуть в
процесс gamification что-то новое. </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><b>Функциональная полнота</b>. Все фичи должны работать, потому что кто-то их
использует. Огромное число пользователей означает, что мы не можем
просто забить на некоторые фичи. Из 10 млн юзеров кто-то точно использует
самую забытую и маленькую фичу. </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><b>Локализованность</b>. Способность продукта поддерживать разные
языки, легкость добавления новых языков. Этот критерий вытекает из
потребностей компании расширяться в новые страны. </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><b>Нагрузоустойчивость и производительность</b>. Большое число пользователей - серьезные требования к стабильности, быстродействию и безотказности системы.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><b>Харизма</b>. В <a href="http://www.satisfice.com/tools/htsm.pdf">модели HTSM</a> не зря упоминается этот
критерий качества. В данном случае он применим. Почему? Продукт игровой и добровольный, он
должен привлекать, заинтересовывать, затягивать. Это не офисный
продукт, с которым так или иначе людям приходится работать. </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><b>Юзабилити</b>. Этот пункт можно включить как в харизму, так и в производительность.</span></span></li>
</ul>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">5.4. Как будем тестировать?</span></span><br />
<br /></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Дальше - нужно было решить, как проверять критерии качества (см. выше 5.3), учитывая известные трудности и цели компании (см. выше 5.2 и 5.0).</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">В это<span style="font-family: inherit;">м сообщении </span></span>я просто хотел
написать <span style="font-family: inherit;">т</span>о, что у меня в получилось. Но <span style="font-family: inherit;">это нечестно</span>, потому что тем самым я ставлю перед фактом, а не объясняю, как к этому пришел.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Доминирующая <span style="font-family: inherit;">проблема</span>, которая <span style="font-family: inherit;">засела</span> у меня в голове - как можно справиться с
множеством платформ для тестирования. Как можно ее решить?</span></span></div>
<div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">Первое, что пришло в голову - <b>автоматизация</b>. Если организовать
грамотную автоматизацию, она способна покрыть смоук проверки для основных частей продукта на множестве платформ. Тут есть
связанная проблема: чем больше
платформ, на котор<span style="font-family: inherit;">ых</span> ранятся автоматические проверки, тем сложнее поддержка автоматизации. Поэтом<span style="font-family: inherit;"> </span>нужно быть осторожным - не увлекаться проверкой интерфейса, стараться большую часть тестов держать на более низком уровне. Тем более,
продукт часто меняется, поэтому автоматизацию через интерфейс продукта придется часто переделывать (хотя это<span style="font-family: inherit;"> </span>зависит от <span style="font-family: inherit;">хара<span style="font-family: inherit;">ктера и качества</span></span> автоматизаци<span style="font-family: inherit;">и</span>). </span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Второе,
что может помочь в тестировании множества девайсов, браузеров и
локализаций - <b>бета тестирование и краудсорс тестирование</b>. Таким образом мы можем получить большее покрытие, чем мы способны обеспечить в рамках внутреннего тестирования.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;">Еще
одна важная вещь для сокращения числа
тестируемых платформ - <b>разбиение на классы
эквивалентности</b>. <span style="font-family: inherit;">С</span> одной стороны,это очевидно. Но это
нетривиальная задача. Из всего многообразия платформ
(браузеров, мобильных устройств, плагинов) нам нужно выбрать эквивалентные классы, а затем выбрать по 1-2 представителя от каждого класса. Их
мы и будем покрывать в рамках регулярного функционального и
регрессионного тестирования (здесь я не имею в виду краудсорс и бета
тестирование - оно будет использоваться для покрытия специфичных
платформ). <u>Note</u>: под функциональным тестированием я имею в виду
тестирование конкретных изменений - новых фич. Это понятие используется
для разделения тестирования новых фич и тестирования старого функционала (регрессионного тестирования). </span></span> </li>
</ul>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Другая проблема - нужно справиться с частыми релизами и тестированием большого числа новых фич. Как поступить?</span></span></div>
<div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;">Чтобы
оптимизировать скоуп тестирования - я предлагаю проводить импакт
анализ<span style="font-family: inherit;">.</span> <span style="font-family: inherit;">Т</span>о есть, анализ тех изменений, которые были сделаны, и выдвижение предположений
о том, какие части продукта могли отвалиться. Этот пункт
подразумевает, что тестирование каждого релиза будет интеллектуальным, что
разработчики будут участвовать в импакт анализе как
основные носители знаний о новых фичах и их взаимосвязях со старыми фичами. <span style="font-family: inherit;">П</span>ростого
копирования скоупа тестирования из релиза в релиз не будет. Это дополнительный расход по времени - на анализ изменений.
Но я рассчитываю, что он окупится за счет тестирования самых рисковых частей продукта в первую очередь. </span></span></li>
</ul>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Кроме
того, специфика проекта говорит о том, что мы не сможем обойтись без
нагрузочного тестирования и без тестирования
быстродействия. Проект растет очень быстро и мы рискуем потерять
пользователей, если система не будет хорошо выдерживать нагрузку. Но,
имхо, это не первоочередная задача, ее можно проводить раз в несколько
релизов.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Тоже
самое можно сказать про другие виды тестирования - безопасности,
юзабилити. Их можно либо включать, либо не включать в релизный цикл. Опять же, тут должен работать импакт анализ, чтобы мы могли понять, в каких случаях нужны эти виды тестирования, а в каких - не нужны.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Итак,
когда я собрал все идеи вместе, у меня получился такой список:</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; text-align: left; unicode-bidi: embed; word-break: normal;">
<span style="font-family: inherit;"><span style="font-size: small;"><span style="color: #006600;">1) </span><span style="color: #006600;">Scope </span><span style="color: #006600;">тестирования зависит от конкретного релиза</span></span></span></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; text-align: left; unicode-bidi: embed; word-break: normal;">
<span style="font-family: inherit;"><span style="font-size: small;"><span style="color: #006600;">2) Для определения </span><span style="color: #006600;">скоупа</span><span style="color: #006600;"> используется анализ
изменений</span></span></span></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; text-align: left; unicode-bidi: embed; word-break: normal;">
<span style="font-family: inherit;"><span style="font-size: small;"><span style="color: #006600;">3) Каждый релиз обычно включает</span><span style="color: #006600;"> </span><span style="color: #006600;">функциональное
тестирование (проверка новых изменений)</span><span style="color: #006600;"> </span><span style="color: #006600;">и регрессионное
тестирование (проверка старого функционала)</span></span></span></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; text-align: left; unicode-bidi: embed; word-break: normal;">
<span style="font-family: inherit;"><span style="font-size: small;"><span style="color: #006600;">4) Опционально проводится нагрузочное и другие виды тестирования (</span><span style="color: #006600;">usability,</span><span style="color: #006600;"> безопасности, локализации)</span></span></span></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; text-align: left; unicode-bidi: embed; word-break: normal;">
<span style="font-family: inherit;"><span style="font-size: small;"><span style="color: #006600;">5) Регрессионное тестирование по максимуму автоматизировано</span></span></span></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; text-align: left; unicode-bidi: embed; word-break: normal;">
<span style="font-family: inherit;"><span style="font-size: small;"><span style="color: #006600;">6) Платформы разбиты на классы эквивалентности</span><span style="color: #006600;">, </span><span style="color: #006600;">тестируется минимум один представитель каждого класса</span></span></span></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; text-align: left; unicode-bidi: embed; word-break: normal;">
<span style="font-family: inherit;"><span style="font-size: small;"><span style="color: #006600;">7) Для покрытия большего числа платформ используется </span><span style="color: #006600;">crowdsource</span><span style="color: #006600;"> </span><span style="color: #006600;">тестирование и бета тестирование</span></span></span></div>
</div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">5.5. Недостатки стратегии.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-size: small;">Такая вот получилась стратегия. </span></span>Какие недостатки я вижу?</span></span></div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Д</span>остаточно общие и очевидные фразы, без каких-то серьезных деталей.<span style="font-family: inherit;"><br /></span></span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Н</span>е хватает конкретики в плане автоматизации. "Регрессия по-максимуму
автоматизирована<span style="font-family: inherit;"><span style="font-family: inherit;">"</span> -</span> <span style="font-family: inherit;">б</span>ез дополнительных пояснений фраза кажется
поверхностной.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Н</span>е покрываются некоторые важные моменты<span style="font-family: inherit;">: </span>состав команды тестирования,
необходимые для тестирования навыки, порядок репортинга по статусу
тестирования. </span></span></li>
</ul>
<span style="font-family: inherit;"><span style="font-size: small;">Эти вещи - уже проработка следующего уровня, для
формулировки стратегии я решил оставить их за рамками.</span></span><br />
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">5.6. Выгоды при использовании стратегии.</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">На
составлении стратегии я не закончил. Я добави<span style="font-family: inherit;">л</span> еще
несколько пунктов - <span style="font-family: inherit;">о том</span>, какую выгоду может получить компания от
использования этой тестовой стратегии. Эти пункты б<span style="font-family: inherit;">уд<span style="font-family: inherit;">ут</span></span> полезны во
время презентации тестовой стратегии<span style="font-family: inherit;">, они <span style="font-family: inherit;">потенциально могут заинтересовать стейкхолдеров:</span></span></span></span></div>
<ul>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Н</span>аиболее рисковые области тестируются в первую очередь (благодаря
импакт анализу) - это позволяет ограничить скоуп и оптимизировать
тестирование.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Р</span>елизный цикл уменьшается за счет большого числа автоматизированных <span style="font-family: inherit;">проверок</span>.</span></span></li>
<li><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">О</span>беспечивается большее покрытие платформ - за счет разбиения на классы эквивалентности <span style="font-family: inherit;">и</span> использовани<span style="font-family: inherit;">я</span> краудсорс тестирования.</span></span></li>
</ul>
<div>
<span style="font-family: inherit;"><span style="font-size: small;">Выводы</span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: inherit;">Ч</span>то я могу сказать по процессу составления стратегии в целом<span style="font-family: inherit;">?</span>
Конечно, <span style="font-family: inherit;">э</span>то <span style="font-family: inherit;">т</span>ворческий процесс, но мне было интересно его структурировать.<span style="font-family: inherit;"> </span>В процессе работы меня не покидало ощущение, что я читерю<span style="font-family: inherit;">:</span> основные
идеи родились <span style="font-family: inherit;">интуитивно и</span> я пытался логически
их обосновать<span style="font-family: inherit;"> <span style="font-family: inherit;">:<span style="font-family: inherit;">)</span></span></span>
Наверное, это нормально, если вы собираетесь объясн<span style="font-family: inherit;">я</span>ть свои ре<span style="font-family: inherit;">шения </span>другим
людям. Но для выбора между возможными альтернативами ин<span style="font-family: inherit;">т</span>уитивная
склонность к одному из решений может быть вредной.</span></span></div>
<br />
<span style="font-size: small;"><span style="font-family: inherit;">В завершение - вот, <a href="https://drive.google.com/file/d/0BwP6rJYT-D1fYVdEQVBDZEU5SmM/view?usp=sharing">что у меня получилось</a><span style="font-family: inherit;">.</span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;">Спасибо за внимание<span style="font-family: inherit;">!<span style="font-family: inherit;"> Респ<span style="font-family: inherit;">ект, что дочитали!</span></span></span></span></span></span>wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com3tag:blogger.com,1999:blog-4371806625756604248.post-47579532886578404132015-02-07T01:10:00.001-08:002017-07-25T01:09:16.758-07:00Weekend testing #01: Впечатления и материалы<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil53idnoWqecxTKg9FuX9bou1l3QfmU9IEIx46_WLqSNM03gLHB_cCGUmLg0wI0MBghj1GBM27WAdEk2ruPGkXohJEJia7d02Kb5kCoqINmI20pNiMSXSh5Cjo2AXAn-xGiRNDn7PYxiqA/s1600/logo_big.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil53idnoWqecxTKg9FuX9bou1l3QfmU9IEIx46_WLqSNM03gLHB_cCGUmLg0wI0MBghj1GBM27WAdEk2ruPGkXohJEJia7d02Kb5kCoqINmI20pNiMSXSh5Cjo2AXAn-xGiRNDn7PYxiqA/s1600/logo_big.png" width="200" /></a></div>
<br />
Всем привет! По просьбам участников Weekend testing выкладываю короткий отчет о нашей первой сессии + материалы.<br />
<div>
<br /></div>
<div>
В сессии участвовало 15 человек - ребята из России, Украины и Германии.
Надо начать с того, что они совершили небольшой подвиг - пожертвовали 2
часами своего выходного дня для того, чтобы поговорить о тестовой
стратегии. Спасибо! Если честно, перед сессией думал о том,
что будет очень круто, если 3-4 человека придет :)</div>
<div>
<br /></div>
<div>
Мы начали с обсуждения того, что такое тестовая
стратегия и для чего она нужна. Далее мы поговорили о том, как создать
тестовую стратегию: полезно начинать со сбора информации, а потом уже
принимать решения. Дальше была практика - составление тестовой стратегии
и представление ее на бумаге (смотрите материалы внизу).</div>
<div>
<a name='more'></a><br /></div>
<div>
Выводы и заметки по результатам сессии:</div>
<div>
<br name="BB10" /></div>
<div>
1. Стейкхолдеры нормально воспринимают стратегии в форме mind maps, только нужно рассказать и пояснить, что к чему.</div>
<div>
2. Более распространенный вариант представления стратегии - презентация, этим уже никого не удивишь.</div>
<div>
3. Стейкхолдеры могут по-разному отвечать на вопросы о продукте и о приоритетах. Неудивительно, но факт.</div>
<div>
4. Стейкхолдеры не все знают о продукте. И тестерам нужно получать недостающую информацию самим.</div>
<div>
5.
Риски имеют значение. И тестовую стратегию, которая их не учитывает -
вполне возможно придется переделывать при первом случившемся риске.</div>
<div>
6. Полезно иметь при себе план Б - запасную стратегию, если первый вариант не сработает.</div>
<div>
7.
Хорошая тестовая стратегия имеет цену - мы готовы были заплатить пару
долларов за стратегию, написанную Алексеем Виноградовым во время сессии
:)</div>
<div>
8. Один час на создание тестовой стратегии даже для
несложного сайта - маловато, участникам пришлось постараться,
чтобы успеть.</div>
<div>
9. Для увеличения скорости создания стратегии (и вообще, при работе на подобных сессиях <br />
Weekend
testing) полезно иметь под рукой нужные инструменты - для создания mind
maps, для расшаривания документов и для совместной работы над ними (google
docs, dropbox).</div>
<div>
<br /></div>
<div>
Участники создали документы: </div>
<div>
- <a href="https://dl.dropboxusercontent.com/u/2450812/%D0%A1%D1%82%D1%80%D0%B0%D1%82%D0%B5%D0%B3%D0%B8%D1%8F%20%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F.pdf">Стратегия тестирования</a> (Алексей Виноградов)</div>
<div>
-<a href="http://www.mindmeister.com/470329386/sqagroup"><span lang="EN-US" style="color: blue; font-family: "times new roman" , "serif"; font-size: 12.0pt;"> http://www.mindmeister.com/470329386/sqagroup</span></a><span lang="EN-US" style="font-family: "times new roman" , "serif"; font-size: 12.0pt;"></span> (Сергей Атрощенков)</div>
<div>
- <a href="https://docs.google.com/document/d/1fJv4GN33-ISlG7SKRvapUQkGX16XI2qzrA2NpNNsMy8/edit">https://docs.google.com/document/d/1fJv4GN33-ISlG7SKRvapUQkGX16XI2qzrA2NpNNsMy8/edit</a> (командная работа Наталии Узенцовой, Екатерины Зайцевой, Данилы Бирюкова-Романова). <u>Документ в ограниченном доступе, думаю не все смогут открыть.</u> </div>
<div>
- <a href="https://drive.google.com/file/d/0BwP6rJYT-D1fT3VrZ0hHS3lET0k/view?usp=sharing">Стратегия тестирования сайта</a> (Константин Коваль). Костя, выложил твой файл в Google Диск, просто так pdf к посту нельзя было прикрепить. </div>
<div>
</div>
<div>
Кроме того, выкладываю нашу <a href="https://drive.google.com/file/d/0BwP6rJYT-D1fMVdFQnRLUVQ1UWs/view?usp=sharing">skype-переписку</a>.</div>
<div>
<br /></div>
<div>
Следующую сессию мы планируем провести 22 февраля. Подробности - немного попозже, следите за анонсами. Увидимся :)</div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.comtag:blogger.com,1999:blog-4371806625756604248.post-68455680280010360252015-01-27T12:19:00.002-08:002015-01-27T12:19:19.804-08:00Weekend testing #01: Тестовая стратегияВ субботу 31 января пройдет первая сессия<br />Weekend testing на
русском языке. Подробнее об участии - на сайте SPB
SQA сообщества - <a href="http://sqagroup.spb.ru/announces/weekend-testing-01/">http://sqagroup.spb.ru/announces/weekend-testing-01/</a>. Приходите, мы будем вам рады!<br />
<div>
<br /></div>
<div>
В этом сообщении я хотел бы рассказать о своем понимании тестовой cтратегии и поделиться опытом ее создания.</div>
<div>
<a name='more'></a><br /></div>
<div>
Тестовая
стратегия определяет то, как мы тестируем продукт. Это набор мыслей и
идей, которые направляют процесс тестирования. В разных компаниях, а
также в разных источниках это понятие может звучать по-разному
- например, как подход к тестированию или высокоуровневый тест план.
Я считаю, что разница между тестовой стратегией и тест планом заключается в
покрытии и <span style="font-family: Calibri,'Slate Pro',sans-serif;">уровне
детализации. Стратегия покрывает процесс тестирования
продукта в целом, а тест план обычно покрывает какую-то часть тестирования или
отдельный релиз. Уровень детализации у тест плана как правило выше, он в
своем роде уточняет тестовую стратегию, наполняет ее необходимыми
деталями. Но граница между этими понятиями - условна и размыта. В тестовой
стратегии могут покрываться в деталях некоторые важные моменты, в тест плане могут быть обобщения. </span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">Формирование
тестовой стратегии - интересный процесс, который часто выполняется нами
на уровне интуиции, когда мы сами не до конца осознаем, почему мы решили
делать так или иначе. Часто после своего формирования где-то
на уровне интуиции стратегия так и продолжает жить там, в области
неосознанного. Давайте попробуем достать её оттуда.</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">Для этого - разложим по шагам процесс формирования стратегии. Я вижу его примерно так:</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">1 шаг.
<b>Сбор информации</b>. На этом этапе мы изучаем продукт и его контекст. Мы
получаем информацию из разных источников: разговоры со стейкхолдерами,
исследовательское тестирование (или туры, цель которых - изучить
продукт, а не найти его проблемы), чтение документации.</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"> </span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">2 шаг.
<b>Анализ информации</b>. На следующем этапе мы из всей кучи информации
пытаемся выбрать важное, чтобы на основе этого сформировать
стратегию. Мы фильтруем собранную информацию и оставляем самое
необходимое.</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"> </span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">3 шаг.
<b>Принятие решений</b>. После того, как у нас есть база знаний о продукте и
его контексте - мы готовы к формированию стратегии. На данном этапе
происходит ее рождение. Мы принимаем решения относительно того, как мы
будем тестировать продукт. Набор этих решений и будет составлять основу
тестовой стратегии.</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"> </span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">4 шаг.
<b>Презентация</b>. До этого этапа доходит не всегда. Иногда вас просто не
спрашивают о том, как вы тестируете и почему. Но если спросят - вы
должны быть готовы объяснить ваши решения и обосновать их правильность.
Если вы умеете выражать стратегию на бумаге - это вам здорово поможет.</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">Границу
между этими 4-мя шагами не всегда просто найти. Например, мы не всегда
отдаем себе отчет, когда переходим от сбора информации к анализу. Мы не всегда двигаемся последовательно от 1-го шага к 4-му, а, например, часто делаем прямой переход от 1-го сразу к 3-му. Мы также можем возвращаться
назад - от принятия решений обратно к сбору информации. Это
творческий процесс.</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">При
создании тестовой стратегии я иногда использую HTSM (Heuristic Test Strategy Model - <a href="http://satisfice.com/tools/htsm.pdf">http://satisfice.com/tools/htsm.pdf</a>), созданную Джеймсом Бахом. У этой
модели есть интересная особенность - она явно не говорит, что вам нужно
делать. Эта модель дается как подсказка-эвристика, которая помогает вам думать в определенном направлении. Она помогает вам принимать решения, но не делает их за вас. Это как своеобразная стратегия для создания тестовой стратегии :)</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">HTSM состоит из следующих частей:</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><b>Project Environment</b>. Я понимаю это как контекст продукта, то есть все, что его окружает: команда, график релизов, ресурсы, артефакты, репорты.</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><b>Product Elements</b>. То, из чего состоит продукт. В модели HTSM дается полезная мнемоника SFDIPOT (San Francisco Depot) для того, чтобы структурировать подход к изучению элементов продукта. Просто пройдитесь по расшифровке этой мнемоники - и получите готовые идеи разбиения продукта на части. </span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><b>Quality criteria</b>. Какие критерии качества будут важны для нас? В модели перечисляются как основные и общеизвестные критерии (Security, Compatibility, Reliability), так и менее ожидаемые (лично для меня), такие как Charisma. Внутри этих крупных критериев качества вы найдете более мелкие критерии, которые тоже являются своеобразными идеями того, что продукт может уметь в принципе.</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><b>Test techniques</b>. Техники тестирования, которые вы можете применять. Опять же, в этой части модели перечисляются основные и общеизвестные техники (функциональное тестирование, доменное тестирование, тестирование, основанное на рисках), которые дают вам некоторую наводку, вроде: "Функциональное тестирование. Подумайте в этом направлении. Тестирование потока данных и операций. Применимо ли это к вашему продукту? А важно ли для вас выполнить тестирование со стороны пользователей? Решать, конечно, вам."</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"> </span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><b>Perceived Quality</b>. Это результат работы нашей тестовой стратегии. Возможно я не совсем понимаю смысл этой части, но мне непонятно, как эта часть помогает думать о тестовой стратегии :)</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">Можно проследить, какие части HTSM мы используем во время выполнения шагов по формированию тестовой стратегии. Картинка:</span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUHPifMeDFjfzlsoBnwN1FE92m4M8PfVVlnJeqJK749JMltgVrYWR0J5sQPTWHx8k_Uc8o74x7asjyJRCBM7TxNFArai7L1Mb8rnJPXK4CeF4Q-diZXxIumCnBZEuL66vvGDB9u2-7tggu/s1600/htsm_test_strategy_mapping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUHPifMeDFjfzlsoBnwN1FE92m4M8PfVVlnJeqJK749JMltgVrYWR0J5sQPTWHx8k_Uc8o74x7asjyJRCBM7TxNFArai7L1Mb8rnJPXK4CeF4Q-diZXxIumCnBZEuL66vvGDB9u2-7tggu/s1600/htsm_test_strategy_mapping.png" height="221" width="400" /></a></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">При сборе информации и её анализе нам пригодятся в основном части модели, посвященные элементам продукта (Product Elements), критериям качества (Quality Criteria) и окружению продукта (Project Environment). При принятии решений - нам пригодится часть модели, описанная в техниках тестирования (Test Techniques). А вот с этапом презентации мы будем разбираться без помощи HTSM :) </span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;"><br /></span></div>
<div>
<span style="font-family: Calibri,'Slate Pro',sans-serif;">Конкретная реализация описанных шагов, использование HTSM как подсказки - вопрос практики и тренировки. Я попробовал предложить только некоторую структуру - последовательность действий, которая вам может помочь. Приходите на сессию <a href="http://sqagroup.spb.ru/announces/weekend-testing-01/">Weekend testing</a>, потренируемся!</span></div>
wdasdhttp://www.blogger.com/profile/15965441249402769887noreply@blogger.com2