воскресенье, 31 мая 2015 г.

Баги повсюду — Публикация блог-поста после даты из расписания

Когда я пишу блог-посты, я часто ставлю им дату и время публикации «из будущего»:
— через недельку, если собираюсь опубликовать сегодня-завтра;
— через пару месяцев, если собираюсь писать статью долго и нудно.

Зачем? Я могу случайно нажать комбинацию горячих клавиш или по привычке клацнуть «Publish» вместо «Save» → и черновик улетит в продакшен. Поэтому я перестраховываюсь, даже если ошибиться кнопкой, установив расписание, черновик останется черновиком. Можно спокойно его дописать, переставить время публикации на автоматическое определение и опубликовать.

Но бывают и казусы. Вот, например, дочитала я книжку «Вальсируя с медведями» месяц назад. Даже начала писать отзыв, но что-то меня отвлекло. Поэтому я поставила дату на недельку вперед, на «3 мая», и сохранила черновик.


Ведь отзыв → самый простой блог-пост, тут не надо придумывать историю или примеры, писать в инфостиле или делать что-то еще. Описал впечатления, добавил самые интересные выдержки — все! Исключения составляют книги, выдержки из которых хочется делать большими, на отдельные блог-посты. Но это был не тот случай, так что недели «хватит за глаза».

Но лень, прокрастинация и прочие причины заставили меня забыть о блоге. А когда я нашла в себе силы и время вернуться, было много более важных блог-постов...

И вот сегодня, 30 мая, я таки переборола лень и опубликовала свой отзыв на книжку. Я открыла черновик, дописала его, заменила в расписании пункт «Set date and time» на «Automatic» и опубликовала пост.

Но что я вижу? Его нет в верху списка., там по-прежнему красуется «Ошибка, дефект и сбой».



А где же «Вальсируя с медведями»? Правильно, опубликовано с датой 3 мая!



Попадаю на этот косяк уже не впервые. Если дата стоит из будущего и ее меняешь на автомат, то публикуется нормально. Если дата из прошлого, то публикуется старым днем. Видимо, надо вначале просто сохранить, потом снова открыть и тогда уже публиковать. В рамках одной сессии не осиливает.

Мне приходится в таких случаях переставлять дату из прошлого на будущее, публиковать, снова открывать, ставить автоматическую дату и опять публиковать. Чтобы уж наверняка!

Мне кажется, такие баги как раз из разряда интеллектуального тура и сложных вопросов. Раз есть автоматическая публикация и установка даты и времени, можно позадавать приложению сложные вопросы:
— А если дата из будущего, а я ставлю текущую, опубликуется?
— А если дата была из прошлого и ранее такой сохранена?
— А если в рамках одного редактирования поставить дату из прошлого и сразу автомат?
— А если в рамках одной сессии поставить автомат, потом дату из будущего?
— А если дата публикации уже наступила, а у меня был черновик в этот момент открыт и я ее еще сдвинула, что станет с опубликованным постом?

Когда тестируете приложение, не забывайте о реальных сценариях использования. Поставьте перед собой конкретную задачу и попробуйте ее решить разными способами. И не забудьте, что лежащие на поверхности баги может найти любой. А мы, как тестировщики, должны уметь задавать приложению не только простые вопросы, но и сложные тоже. Удачи в поисках!

пятница, 29 мая 2015 г.

Ошибка, дефект и сбой — чем отличаются

Сможете ли вы без подглядки в гугл ответить на вопрос — чем отличаются:
— Ошибка.
— Дефект.
— Сбой.

Практика показывает, что нет Smile :)

Три года назад (кошмар, сколько времени прошло!) я была в летней школе тестировщиков. Алексей Баранцев вел тренинг для продвинутых, как искать баги и исследовать приложение. Он задал простой вопрос → «Чем отличаются ошибка, дефект и сбой?». Предположения были самыми разнообразными, но уловить тонкую грань отличий никто не смог.

Алексей мог зачитать умные слова из справочника ISTQB, но предпочел рассказать историю. Три года прошло! Я помню историю до сих пор и могу назвать отличия без подглядывания в гугл :)

Вступление от Алексея — придумал историю не сам. На одном из тренингов я задал этот вопрос. Девочки посовещались между собой и сказали: «Мы не можем объяснить это с точки зрения ПО, но можем на примере шитья". Я удивился и сказал: «Давайте!».

Жил-был мастер. Он шил платья на заказ. Однажды он допустил ошибку — забыл прошить нижний край у кармана платья.


Результатом ошибки стал дефект. Платье висело на вешалке и выглядело абсолютно нормально, но оно было с дефектом.


Маленькая девочка увидела платье и сразу влюбилась. Она купила платье и носила его повсюду. И все было хорошо, платье сидело замечательно, дефект никак не проявлялся. Пока новая хозяйка не решила положить в карман ключ.

Девочка опустила руку в карман, отпустила ключ... У-у-у-упс, ключ выпал на пол! Произошел сбой в системе — проявился ранее скрытый дефект.



Точно также бывает и в ПО → разработчики допускают ошибки при написании кода и в программе затаивается дефект. И даже если дефект не нашли и о нем никто не знает, он все равно есть! Сидит и ждет своего часа. И когда пользователь натыкается на ошибочный код, происходит сбой.

Такие дела! Smile :)
Надеюсь, эта история поможет вам запомнить разницу так же, как она помогла мне. И помните — не всегда надо зубрить, иногда достаточно придумать знакомую и понятную альтернативу :)

А под конец немножко официоза — версия из ISTQB, которую мне любезно процитировали мои студенты. А ведь ради них я и пишу эти статьи! Smile :)

A human being can make an error (mistake), which produces a defect (fault, bug) in the code, in software or a system, or in a document. If a defect in code is executed, the system will fail to do what it should do (or do something it souldn’t), causing a failure. Defects in software, systems or documents may result in failures, but not all defects do so.

Человек может допустить ошибку, которая приводит к дефекту (к неисправности, багу) в коде, в софте или системе, или документе. Если дефект в коде исполняется, система не сможет сделать то, что должна (или то, что не должна), что вызовет сбой. Дефекты в программном обеспечении, системах или документах, могут вызвать неисправности, но не все дефекты вызывают их.

среда, 27 мая 2015 г.

Как стать тестировщиком, с чего начать

1. Прочитать книги

Приходить на собеседование, не прочитав ни одной книжки или статьи, должно быть стыдно. Вы ищете работодателя или только зарплатодателя?
Обязательный минимум — Роман Савин «Тестирование DOT COM». Книжка маленькая, читается быстро и легко.
В идеале еще «A Practitioner’s Guide to Software Test Design», Lee Copeland нужно прочитать, это лучшая книга по тестированию. Перевода на русский нет, но она и на английском вполне понятная.

2. Практиковаться, практиковаться и еще раз практиковаться

Возможностей для практики предостаточно.
Практикуйтесь самостоятельно на любимых сайтах. Просто берите книжку и пробуйте применить полученные навыки. Это очень поможет потом на собеседованиях:
Во-первых, будет о чем рассказать, не просто «я почитал книжку Савина», но «я написал для такого-то сайта такие-то тест-кейсы, вот посмотрите». Портфолио выделит вас среди других претендентов.
Во-вторых, пытаясь применить знания, столкнетесь с проблемами и в итоге глубже поймете прочитанное. Поэтому не надо будет зубрить определения, главное, что вы уже поняли суть.

3. Изучить вакансии

Изучите, что требуют компании.
От новичка нужна светлая голова и искорка в глазах, желание расти и развиваться. Умение связно формулировать мысли и задавать вопросы (тут будет ссылка на статью). Попытки самостоятельно что-то изучить (прочитанные книги, статьи, пройденные курсы или самостоятельная работа) будут большим плюсом.
Часто также требуется знание SQL. Можно попрактиковаться в нем, для этого идеально подойдет сайт http://www.sql-ex.ru/. Для начала хватит простейших запросов (select, join)

4. Разослать резюме

В те компании, где требуются новички без стажа. Можно попробовать написать в компании, где требуют новички с минимальным опытом. Здесь все зависит от сопроводительного письма — если вам правда интересна вакансия в данной компании, то почему бы не попробовать, уменьшив запросы по деньгам?
Однако не стоит лезть туда, где вы явно не соответствуете критериям.

5. Подготовиться к собеседованию

Я серьезно. Не все понимают, как это важно, просто рассылают свои резюме и сидят ждут, чтобы компании за них бороться начали.
Перед тем, как идти на собеседование, изучите сайт компании, посмотрите еще раз на их вакансию, освежите в голове знания по нужным им параметрам. Многие не могут сделать даже этого, так выделитесь из серой массы!

6. Работать и развиваться дальше!

Области в тестировании есть самые разные:
  • Ручной тестировщик
  • Автоматизатор
  • Нагрузочное тестирование
Начинать всегда надо с ручного тестирования и тест-дизайна. Это – фундамент, без которого дальше ничего не срастется.

См также:
Полезные ресурсы для молодых (и не только) тестировщиков — Ответ на вопрос "как развиваться?" от Максима Шульги
PS — статья написана для портала Testbase, но там пока убрана в архив.

Развитие интенсива-12


Буквально на днях закончился 12 курс практического тестирования для начинающих.
Продолжаем пополнять систему дистанционного обучениям доп. материалом. Больше доп. материала! Smile :)

Новые полезные статьи для студентов:
О, а еще моя выпускница сравнила мой интенсив и школу Наташи Руколь. Для тех, кто мучается муками выбора, рекомендую ее статью.

А еще, а еще! Свежевыпущенная студентка завела блог и поделилась в нем своими впечатлениями. Лучший отзыв → напечатанный не на продающем сайте, а где-то еще Wink ;)

Зацените, уже вторая студентка создает блог, дабы поделится впечатлениями от курсов. А дальше, глядишь, будет туда записывать свои мысли по тестированию, так новый бложек и появится. А все интенсив! )))

Половая дискриминация продолжается — в выпускниках (точнее, выпускницах) только девочки. Недаром шутят, что это «девочковая» профессия, что мы внимательнее Smile :)

Посмотрим на отзывы последних двух курсов (отзывов с 11 версии еще не было, дабы не засорять ленту сплошной рекламой да отзывами).

Анонимно, недоучившийся студент

Я хоть и не выпускник, но все равно "пережил" этот интенсив)
Расскажу вкратце - было 3 основных ОР, которые я указал в самом начале. И результатом я доволен, хотя конечно, можно было лучше стараться
Ну если это будет интересно, давайте посмотрим конкретнее по ОР.

1. Проверить свои силы, получится ли у меня вообще пройти этот курс, интенсив
Результат — курс не прошел, почти все ДЗ не сданы до конца, НО, я понял для себя, что пройти его вполне реально и у меня точно бы получилось, просто не хватило времени и еще чего-то :)

2. Выяснить, тестирование это "моё" или "не моё"
Результат - выяснил, что данное ремесло, вполне может быть моим, т.к. мне это понравилось, чувствую что тестирование меня может сильно и надолго "затянуть":)

3. Понять профессию "изнутри", поработав на реальном проекте
Ну тут вообще, результат суперский, удалось побывать на очень интересном проекте, пообщаться с коллегами, это была реальная стажировка и я получил много пользы от всего этого процесса

И кстати, это наверняка не последний курс, в котором я буду участвовать, поэтому уж точно не прощаюсь, еще поработаем как-нибудь)

Анонимно, недоучившийся студент
Ольга, здравствуйте! За ДЗ1 уже дня 2 не бралась. Очевидно, курс я закончить не успею,    Но он очень мне помог. Неправильно распределила силы, в среду четверг сидела до 3 -4 утра, а вставать мне в 7, в итоге вчера почти ничего не сделала, да и сегодня тоже не особо. В любом случае, Ваш курс очень много мне дал, опять читаю Копленда, уже более осмысленно. У Вас замечательные, очень понятные лекции, Вы молодец. И спасибо за Ваш блог!
Анонимно, недоучившийся студент (переведен в следующую группу, обещает стать выпускником)
Ольга, добрый день. У меня семейный форс-мажор. Я не смогу закончить ваш курс, физически просто не успею! Но ДЗ 5,6,8,9,10 я выполню когда будет время. Если вы не против, могу ли я вас побеспокоить в скайпе своими вопросами? И ОГРОМНОЕ СПАСИБО за ваш курс!!! Мне он очень помог определиться со многими вещами! Отзыв на курс обязатяльно напишу! Еще раз спасибо терпенение, ваши знания и позитив! Хорошего Вам дня ;)
Анонимно
Курс — полное говно!
Анонимно
Что ожидали от курса?
- Хотелось понять как составлять тест-кейсы,  чек-листы, узнать о технике тестирования и самое главное!! Хотелось практики тестирования живого сайта.
Что получили?
-Получила очень много практики тестирования (90% курса), доступную и понятную теорию, которая не утомляла и не была теорией ради теории, очень внимательных тренеров, которые были рады помочь в ЛЮБОЕ время, что очень актуально для каждого студента.
Чего не хватило?
-Мне немного не хватило времени, чтобы побольше посидеть (поковыряться) в интересных заданиях))) 
Скоробогатов Максим (это еще с интенсива-11, раз мальчик)
От курса ожидал в первую очередь практики и получил ее в полном объеме, работа на реальном проекте с интересными задачами. Приходилось много думать и особенно много раз переделывать задания. Неделя получилась сверхнапряженная, но зато мозги получили то, чего так не хватало последнее время - отличную встряску и нагрузку.
Хуснутдинов Тимур
Курс очень интересный. Когда шел сюда, прочитал, насколько он сложный, но думал, что будет легче )
Когда искал подобные курсы, основной задачей было получить навыки в оформлении тест-кейсов и чек-листов не только для себя, но и для коллег и набраться теории в части методов тестирования, так как специально на тестировщика не учился, а занимаюсь в основном тестированием.
Сейчас, после курса появилось понимание того, что я раньше делал правильно (по наитию так сказать), а до чего не дошел из-за недостатка знаний.
Надеюсь, что теперь, применяя все полученные знания, я смогу более продуктивно и грамотно тестировать наше оборудование )))
Для меня возможно немного нераскрытой осталась тема по правильному задаванию вопросов (хотя за время курса я уже успел прочитать много статей по психологии)))), но я надеюсь, что если я еще потренируюсь задавать правильные вопросы, то потом проблем с этим не будет.
В целом курс настолько интенсивный и так заставляет работать мозг, что у меня сложилось ощущение, что я на работе вообще не думаю (по сравнению с неделей курса), хотя я конечно на работе тоже лоб морщю )))))
Анонимно
Перед интенсивном, прочитав общую информацию, сразу поняла - будет тяжело. Ожидалась сразу очень интенсивная работа (тем, у кого нет свободной недели советую подумать над удлиненным вариантом курса), но вышла интенсивная работа в квадрате. Еще перед началом курса нужно правда знать основы, хотя бы понимать - дальше практика, практика и снова практика. Боевая робота на проекте с реальными коллегами. Правда, очень не хватало времени и ответов от преподавателей. Но, на то все и рассчитано. Поэтому и разочарований нет.
Анонимно
В первую очередь от курса ожидала практики. И в результате получила её сполна. Большинство заданий были достаточно тяжелыми, но интересными.
Тем, кто планирует пройти данный курс, хочу посоветовать быть готовыми тратить ЦЕЛЫЙ ДЕНЬ на решение ДЗ. С первого раза сдать получается очень редко)
Единственное, что оставило не очень приятный отпечаток, очень часто я не могла понять что же с меня хотят. Комментарии к ДЗ и в скайпе очень часто бывали совсем расплывчатыми и непонятными. Тем более для меня, как новичка в тестировании.
Большое спасибо Ольге и Павлу за помощь и комментарии. За то, что сидели с нами до самой ночи.
Анонимно
К моменту начала курса я находилась на финальной стадии прочтения книги Савина. Более или менее мне было понятна суть повествования, но оооочень не хватало практики. А так хотелось понять, интересна мне профессия тестировщика, справлюсь ли я с реальными задачами, - мне было интересно посмотреть на профессию как бы изнутри. И я решилась на прохождения интенсива по тестированию.
Было сложно, катастрофически не хватало времени, мозг кипел и рождал панические настроения. Но! Я справилась :) И ничуть не жалко потраченного времени. Я добилась того, чего хотела. Буду продолжать учиться, развиваться в области тестирования и, наверняка, чуть позже пройду еще какой-нибудь курс на software-testing (а то и не один).
Спасибо, Ольга и Павел!
Анонимно
 Я записалась на тренинг "Интенсив для начинающих тестировщиков" спустя 1,5 месяца после прохождения курса "Школа успешного тестировщика". Тогда сразу применить на практике полученные знания у меня не вышло, поэтому здесь я рассчитывала освежить изученный материал, посмотреть на него через призму взгляда другого преподавателя, а также узнать что-то новое и ещё раз попрактиковаться. Ну и "встряхнуться", так как три недели без работы давали о себе знать, а надо настраиваться на поиски новой!
Тренинг оправдал все мои ожидания. Входить на интенсив было тяжело, но оно того стоило! Неделя ежедневной работы дала не только отличную практику на реальном проекте, но и помогла выявить внутренние ограничивающие установки и личностные особенности, мешающие работать продуктивно и качественно. Теперь я знаю, над чем ещё надо поработать.
Хочу обратить внимание выбирающих данный курс на то, что если вы, как и я, нуждаетесь во "\"встряске"\" или у вас проблемы с организацией рабочего времени, то выполнение домашних работ до зачёта (а пересдавать вам, скорее всего, придётся, и не один раз) может занять больше, чем заявленные 3-4 часа в день. Лучше заранее подготовьтесь к интенсивной работе!
Тренинг дал много практики и достаточное для её выполнения теории (особенно если читать доп. материалы). Но из-за того, что я была не совсем готова к темпу обучения, то не успела хорошенько поискать баги, хотелось бы завести побольше. Однако лучше меньше да лучше, и я довольна тем, как вместе с преподавателями подробно разобрала заведённые ошибки и улучшения.
Огромное спасибо Ольге и Павлу за безграничное терпение, наводящие подсказки, ценные советы и рекомендации! И за то, что натолкнули (лично меня) на переосмысление отношения к обучению и работе.
Демус Оксана
Ожидала практического опыта - фактически его и получила. Чего не хватило - времени... мне было очень тяжело, я человек не особо быстрый, а тут все в таком темпе бешеном, что я просто в шоке пребывала, приходилось сидеть по много часов, я тратила как минимум часов 8, а то и более. Думаю, таким людям как я проще было бы на трехнедельной версии.

Следующий курс стартует 01 июня, только недельный вариант. А оба уже  с 15 числа. Присоединяйтесь! Smile :)

PS — Пополнила этой статьей историю развития курса. 

вторник, 26 мая 2015 г.

Пример локализации бага в игре «Паук» для iPad

Где начинающим брать опыт? Искать баги там, что используется в реальной жизни и пробовать писать разработчикам баг-репорты. Где-то не ответят, а где-то спасибо скажут. Им хорошо и вам практика Smile :)

Посмотрим на примере игры «Пасьянсы (Паук, Косынка, Свободная карта». У меня установлена бесплатная версия 1.0.2 → версию можно посмотреть в своих покупках.


Открываю приложение


Выбираю Spider.


Нажимаю «Статистика», дабы узнать свой жалкий процент побед.

понедельник, 25 мая 2015 г.

Шаблон бага

Вариант для JIRA

h5. Шаги для воспроизведения
#
#
#
#
#

h5. Результат

h5. Ожидаемый результат

+ Аттач в виде скриншота.


Иногда еще нужна доп инфа, внизу добавляем:

h5. Дополнительная информация

******************************************************

В другом баг-трекере:
— Выделяем жирным заголовки (шаги, результат, ожидаемый результат).
— Нумеруем шаги. Единственный шаг нумеровать не надо.
— Отделяем шаги от результата и ожидаемого пустой строкой, дабы не получилась нечитабельная простыня текста.

В баге всегда пишется сначала результат, потом ожидаемый результат. Потому что менеджер или разработчик читают задачу, чтобы понять, в чем проблема. Читают читают шаги и тут бац, нормальный результат. Так в чем проблема? А потом зато фактический идет, это сбивает с толку.

В баге всегда пишется ожидаемый результат. Даже если он кажется вам очевидным.
— Он может быть очевидным только для вас. Другие члены команды не понимают, что нужно сделать.
— Он может быть очевидным для всех, но только сейчас. Если баг отложить на полгода, можно долго вспоминать, «что же тут ожидалось?»

На одном из курсов студентка написала с разницей в N времени:.

— А в багрепортах надо писать ожидаемый результат и фактический? оО
...
— Пока не попробовала пройти по некоторым чужим багам без результата и ожидаемого, и не попала в замешательство — не поняла, нафиг это надо.

Наглядность — наше все Smile :)

Пример


Шаги для воспроизведения

Перейти в раздел «Статистика» в личном кабинете Дадаты — https://dadata.ru/profile/#stat (данные для авторизации: логин abc, пароль 1)
Результат

500 ошибка сервера, см скриншот «Ошибка 500 в ЛК». (названия у скриншотов должны быть «говорящими», потому что их со временем может накопиться много)

Ожидаемый результат

Открылась статистика обработки данных

* Не пытайтесь воспроизвести проблему, разумеется, никакой ошибки в Дадате нет :)

------------------------------------------------------------------------------------------------------------------

Я не пишу в этом посте о том, какие поля нужно заполнять при заведении задачи, как расписывать шаги и прочее. Это все — тема для отдельных бесед Smile :) 

Пока просто шаблон для бага — бери и используй!

См также:

Шаблон улучшения — Такой же шаблон, только для улучшения =)
Как заводить задачи в баг-трекер → подробнее о том, как ставить задачу и заполнять обязательные поля.
Пример локализации бага в игре «Паук» для iPad → применяем шаблон на практике!

PS: Статья написана в помощь студентам моих курсов по тестированию:
и уже доступна на Testbase в навыке описания баг-репортов.

четверг, 14 мая 2015 г.

Инфостиль в действии. Перевод тура по ориентирам

Мне всегда интересно заглянуть «за кулисы». Идешь ты в театр, на сцене видишь одно, а за кулисами совсем другое. Или SQA Days — когда программный комитет рассказывает, как принимаются доклады, что им присылают и т.д. — так интересно слушать!

Поэтому сегодня я хочу пустить вас «за кулисы» блога и рассказать, как я перевожу туры Виттакера. В конце прошлого года Джеймс Виттакер (James Whittaker aka @docjamesw) разрешил мне перевести туры из его замечательной книги Exploratory Software testing”.

«Подумаешь!» — думала я. «За январь все опубликую, да!». И действительно, черновик с переводами всех туров на ломаный русский давно готов. Осталось придумать примеры и написать по инфостилю. И подобрать клевую картинку! Smile :)

Всего ничего, но инфостилем я занимаюсь недавно. И если «отжать» текст я могу, то обогатить его обратно дается мне с трудом. А иногда и не дается :)

Я пишу, я переделываю. У меня закипает мозг, я бросаю. Через день возвращаюсь, смотрю свежим взглядом и переделываю. Посмотрим на примере текста. который я уже месяц шлифую.

Перевожу тур по ориентирам. Моя первая ассоциация на ориентиры — Балто. Ищу картинку, нахожу.

Brave-Balto-balto-20155485-1920-1080.jpg

Какой текст мне нужен? Мне нужно связать Балто с ориентирами:

Балто оставлял отметки на деревьях, чтобы не заблудиться на обратной дороге в метель.

Хм, хм.. Скудненько.
Сомнительно, что все читатели смотрели Балто → им этот текст ни о чем не скажет. Нужно ввести в текст главного персонажа. Посмотрим, что о нем написано в аннотации к фильму:

Наполовину лайка, наполовину волк, Балто и сам не знает, кто он такой на самом деле. Всеми гонимый бродяга в ледяной пустыне Аляски. Только его друзья русский полярный гусь Борис, медвежата Мак и Лак и красавица-лайка Дженна уверены, что хотя он и не такой как все, но в его груди бьется благородное сердце.

Однажды случается несчастье. Эпидемия дифтерии охватила детей небольшого поселка, а свирепая вьюга сделала непроходимыми все дороги. Лишь собачья упряжка может преодолеть шестьсот миль через ослепляющий арктический шторм и привезти спасительное лекарство.

Но собаки сбились с дороги где-то на замерзших просторах. Теперь только Балто может найти упряжку и спасти детей, а заодно стать героем и настоящей легендой!

Теперь текста слишком много. И все это буллшит, зачем читателям тура по ориентирам столько подробностей, зачем все эти эпитеты типа « всеми гонимый бродяга»? Попробую описать своими словами, используя эту информацию:

Вы смотрели мультик «Балто»? Наполовину лайка, наполовину волк, он жил за поселком — люди боялись его. Эпидемия дифтерии охватила детей и проводились гонки, чтобы понять, кто поедет за лекарством — самолетом нельзя из-за вьюги, спасти детей может только собачья упряжка.

Балто выиграл гонку, но его прогнали с позором — наполовину волк, вдруг покусает? Но он не смог остаться в стороне и пошел за остальными, ведь из-за вьюги упряжка заблудилась. Что делать, чтобы не потеряться? Балто помечал деревья на своем пути — создавал ориентиры, по которым можно вернуться.

Отжимаем текст. «Наполовину лайка, наполовину волк» — однородные члены. Если я хочу сказать, что люди его боялись, достаточно того, что он «наполовину волк». Но нужно ли тут вообще это предложение? Следующее про эпидемию вообще о другом, нет связки. А-а-а-а-а-а-а, сделаем перерыв.

images.jpg

Вернемся к тексту. Смотрю я на него — фигня полная. Слишком много текста. Попробую снова переписать покороче. Для этого надо задать вопрос “Что ты хотела сказать в этих абзацах?” и записать ответ. Разговорный ответ — словно я общаюсь с читателем, а не пишу занудную статью. Итак, зачем мне этот текст, что я хотела сказать?

В мультике «Балто» главный герой — полуволк. Он знает, что в лесу в метель легко заблудиться. Поэтому, когда он отправляется в лес, он помечает деревья на своем пути. Это — ориентиры, по которым можно будет вернуться назад, не заблудившись.

Текст стал лаконичнее, но стало слишком много местоимений. Вспоминаем Ильяхова: «Часто местоимение можно убрать, за счет личного глагола смысл не потеряется». Главред не одобрит. Попробуем убрать. Заодно можно выкинуть слово «мультик», оно тут ни к чему, у нас ведь есть картинка из мультика.

Балто — полуволк. Он знает, что в лесу в метель легко заблудиться. Поэтому он метит деревья. Отметины — ориентиры, по которым можно будет вернуться назад, не заблудившись.

На одно местоимение стало меньше. Но начало вообще непонятное. Ааааргх, как @perepisal это делает?!!! Перерыв, мне нужен перерыв!

BYh_gGrwRE4.jpg

Так. Чтобы сделать нормальное введение, мне нужна история. Моя история.

В детстве я любила смотреть мультфильм «Балто». Люди изгнали его из деревни с позором, «полуволк — вдруг укусит?». Но Балто все равно ушел в лес в метель, чтобы спасти деревню. Он знает, что в лесу в метель легко заблудиться. Поэтому он метит деревья. Отметины — ориентиры, по которым можно будет вернуться назад, не заблудившись.

Да елки-палки! Опять не то. И начало плохое. Я читаю первое предложение, но, когда я перехожу ко второму, я уже не понимаю, о ком речь “изгнали его” — кого?

Полулайка-полуволк, люди изгнали его с позором, «вдруг укусит?». Но Балто все равно ушел в лес в метель, чтобы спасти деревню…

Ох, блин! Посмотрим на первый вариант… Хм, может, взять его, выкинув лишнее?

Вы смотрели мультик «Балто»? Полуволк отправился в лес в метель, спасать свою деревню. Чтобы не заблудиться на обратной дороге, он помечал деревья. Пометки = ориентиры.

Все, с меня хватит. Пойду скормлю этот текст Главреду. Главред отметил только слово «свою», значит, оставляем так, иначе я эту статью никогда не закончу!

*Прошел день*

Нет, я так не могу. Ведь я опять отжать отжала, а наполнить не осилила. Зачем Балто ставит пометки? Потому что стая собак уже заблудилась. Давайте добавим это к текст:

Вы смотрели мультик «Балто»? Стая собак отправилась за лекарством для умирающих детей в соседний городок. Налетела метель и они заблудились на обратной дороге. Тогда в лес отправился Балто. Чтобы найти дорогу обратно, он помечал деревья по пути. Пометки = ориентиры «Я тут был».

Вау, главред одобряет! Тогда точно оставляем этот вариант и работаем над статьей дальше :)

*Спустя сутки по пути на работу продолжаю размышлять*

Блин, ну все равно трешня получилась. Вообще бессвязный текст. «Я купила туфли. Спартак проиграл кубок», в таком духе. Надо бы сделать плавнее переходы.

*Пришла на работу, перечитала*

Да вроде нормально. Можно лучше, конечно, но Я НЕ ЗНАЮ КАК! Да ну его, допишу примеры и пора публиковать, сколько можно, месяц статью открываю, унываю и закрываю.

************************************

Так проходят будни начинающего писателя в инфостиле :)

А теперь самое интересное. Пока я придумываю примеры, я понимаю, что моя ассоциация в корне расходится с описаем автора:

  • Автор — Ищем дорогу, когда идем вперед. Смотрим на компас, “ага, север там, пойду до этого дерева (ориентир)”. Дошли, снова смотрим на компас, “север там, пойду до этого камня”.
  • Моя трактовка — Балто знает дорогу «вперед», но делает пометки на деревьях, чтобы не заблудиться на обратной дороге.

Это заставляет задуматься. А имеет ли право на существование моя трактовка? Может, ее вообще выкинуть? Оооо, это самое сложное, когда пишешь текст, долго отшлифовываешь, а потом понимаешь, что он не нужен. Выкинуть просто рука не поднимается :)

Но в моем случае — почему бы и нет? Разве Балто не ориентиры делал? Ориентиры. Просто немного другой взгляд на них. Но вот какие примеры мне привести? Так простая ассоциация, которой даже не было в оригинале у автора, заставляет меня, как переводчика, думать. Напрягать извилины :)

А это хорошо и полезно. Как сегодня правильно заметила моя выпускница с интенсива — «Туры мне после «Психбольницы» кажутся очень созвучными с Персонажами) Создаёшь вымышленного персонажа, наделяешь индивидуальностью, и от него «гуляешь» :))» ©

Написание текста по инфостилю также помогает мне быть добрее со студентами. «Проклятье знания» шепчет на ушко — «Это невозможно не понимать, пусть думают сами, не помогай!». А потом пытаешься три предложения написать, тратишь три часа, плюешься и кричишь «Ну я не знаю, как правильно!!! Ой, блин… Я же как мои студенты, им же просто тяжело, надо пояснить подробнее...».

С понедельника стартуют оба курса, недельная и трехнедельная версии. Студентам повезло, потому что в среду я поеду в коворкафе, к Максиму Ильяхову, учиться писать по инфостилю.

А значит, я опять напишу какой-нибудь блог-пост, опять высушу текст, но не смогу обогатить. Приеду и буду страдать «Ну я не знааааю, ну помогииии». А потом просветлюсь, осознаю чувства студентов и пойду их вдохновлять :)

среда, 13 мая 2015 г.

Тур по ориентирам. The Landmark Tour

Входит в «Туры по бизнес-району», Tours of the Business District

Вольный перевод статьи Виттакера из книги Exploratory Software testing. Туры помогают искать баги, взглянув на систему по-новому. Тестировщик выбирает тур и следует его цели, не отвлекаясь ни на что другое. Словно турист в незнакомом городе, составил план и пошел!

Вы смотрели мультик «Балто»? Стая собак отправилась за лекарством для умирающих детей в соседний городок. Налетела метель, и они заблудились на обратной дороге. Тогда в лес отправился Балто. Чтобы найти дорогу обратно, он помечал деревья по пути. Пометки — ориентиры «Я тут был».

Brave-Balto-balto-20155485-1920-1080.jpg
Пометка на дереве — ориентир, чтобы найти дорогу обратно.

Ориентиры помогают не сбиться с пути.

Виттакер (автор книги, из которой переведен тур) вырос среди лесов и полей. Брат научил использовать компас: ищешь север и идешь туда. Можно не север, просто выбираешь одно направление и придерживаешься его. Если долго идти по прямой, выйдешь к дороге — правило 21 века!

Можно пялиться в компас всю дорогу, но тогда ветка ударит по башке :)
Но как смотреть по сторонам и не потерять направление?

План действий:
— Посмотреть на компасе, где север.
— Найти на пути цепляющий взгляд элемент, ориентир: “Вон до дерево с дуплом”.
— Дойти до ориентира.
— Свериться с компасом, найти новый ориентир: “О, вот этот камушек сойдет”.
— Дойти до него.
— Повторить до победного конца.

Тур по ориентирам для тестировщика похож — мы выбираем ориентир и идем к нему «сквозь» приложение. Виттакер, например, выбирал ориентирами функции, полученные в турах по путеводителю.

План действий тестировщика:
— Выбрать набор ориентиров.
— Определить их порядок.
— Исследовать приложение, переходя от одного ориентира к другому, пока не посетили все ориентиры из списка.
— Отследить, какие ориентиры посетили, и создать карту покрытия ориентиров.

Тестировщик может выбрать первые несколько ориентиров, выполнить тур, а потом увеличить число ориентиров и изменить порядок их прохождения, таким образом меняя сам тур.

Важно помнить, что в лесу ориентир — нечто запоминающееся. Нельзя взять ориентиром сосну, как две капли воды похожую на все остальные. Так и заблудиться недолго :) Поэтому мы выбираем «ту сосну с дуплом, похожим на Гриффина» или «тот здоровый валун» — можно сколько угодно отвлекаться на окружающий мир, а потом в мгновение ока вернуться на дорогу.

Цель тура:
Метод Виттакера, «дорога вперед» — наметить список ориентиров и исследовать приложение, переходя от одного к другому.

Метод Балто, «дорога назад» — сохранять свои действия, чтобы можно было вернуться к ним в любой момент. Делать закладки, сохранять настройки. Уходить далеко вглубь приложения, а потом возвращаться по закладкам.

Метод Виттакера, «дорога вперед»

Попробуем взять за основу список из тура по путеводителю и провести тур на Дадате.
— Сопоставление телефона с адресом.
— Определение площади и стоимости квартиры.
— Существование дома в КЛАДР/ФИАС.
— Наличие места работы в ЕГРЮЛ.
— Определение марки и модели автомобиля.
— Определение геокоординат для адреса.
— Проверка подсказывания «правильных» почтовых адресов.
— Приведение адреса к КЛАДР.
— Проставление кодов КЛАДР, ОКАТО, ОКТМО, ИФНС (список с главной страницы неавторизованного пользователя).
— Регистрация на сервисе.
— Работа со стандартизацией через API.
— Подключение подсказок.
— Проверка инструкций из Базы Знаний.
— Проверка инструкций из корпоративной вики.

Тур по путеводителю: «шаг влево, шаг вправо — расстрел». Пока мы проходили по списку, мы видели функции, но не закапывались в них. Теперь другое дело.

Составим список интересных функций из тура по путеводителю, которые стоит покопать поглубже:
— Стандартизация ФИО.
— Стандартизация телефонов.
— Стандартизация адресов.
— Стандартизация автомобилей.
— Работа через API.
— Подсказки.

Для каждой фичи можно наметить предварительный список ориентиров, о которых мы уже знаем. Например, для адресов:
— Определение площади и стоимости квартиры.
— Существование дома в КЛАДР/ФИАС.
— Определение геокоординат для адреса.
— Приведение адреса к КЛАДР.
— Проставление кодов КЛАДР, ОКАТО, ОКТМО, ИФНС.

Пойдем тестировать адреса. Для начала нажмем «Проверить» на главной странице неавторизованного пользователя в блоке примера.

Адрес из примера — «мск сухонска 11/-89».

2015-05-12_100952.png
Адрес на входе.

Результат обработки

2015-05-12_101249.png
Адрес на выходе.

Рисуем карту покрытия по ориентирам. Тэкс, площадь есть, стоимость есть…

mm1.png
Карта покрытия ориентиров, часть 1 — проверили исходные ориентиры.

Что еще мы видим? Дадата восстановила индекс и определила часовой пояс по адресу.

mm2.png
Карта покрытия ориентиров, часть 2 — заметили новый ориентир, восстановление индекса.

Мы заметили необычный входной формат адреса. Возьмем это как верхнеуровневый ориентир и исследуем. Сейчас адрес написан через пробел. А что, если ввести:
— мск, сухонска, 11/-89;
— мск. сухонска. 11/-89;
— мск; сухонска; 11/-8;
— мск/сухонска/11/-89.

Добавим на карту

mm3.png
Карта покрытия ориентиров, часть 3 — добавили разделители входного адреса, чем не ориентиры?

А еще мы видим, что Дадата исправила опечатку в слове «сухонска». А если мы ошибемся в Москве? Введем адрес «масква сухонска 11, 89» — обрабатывается!

mm4.png
Карта покрытия ориентиров, часть 4 — добавили исправление опечаток.

За 5 минут мы нарисовали карту с ориентирами по стандартизации адресов. Пополнили исходный список ориентиров новыми значениями — исправление опечаток, разный входной формат.

Оставшееся время уделяем тому, чтобы изучить ориентиры. Помните про 10 одинаковых сосен? Ориентир должен быть запоминающимся.

Вот мы видим «площадь квартиры» — есть средние диапазоны, однушки, двушки, трешки… Они все похожи. А что, если взять что-то мааааленькое? Или, наоборот, очень большое? Что, если найти огромную квартиру или здоровенный офис? Нам необходимо найти среди 10 сосен ту, которую можно ухватить взглядом в мгновение ока. Ту, которая выделяется из толпы.

Метод Балто, «задел для дороги назад»

В Дадате нет сохранений данных или настроек. Но там есть одинаковые кнопки, которые служат ориентиром «О, я это уже видел, значит, работает так же».

После регистрации я сразу вижу кнопку загрузки файла.

1.png
На форме «из файла» есть кнопка выбора файла.

Скачиваю пример, загружаю файл… Вижу, как оно работает!

Потом переключаюсь на «по одному человеку». Нажимаю «проверить», смотрю, как отрабатывает пример. И вижу ту же самую кнопку!

2.png
На результатах обработки по одному человеку та же кнопка!

Ага, та же кнопка — значит, тот же функционал! Ориентир срабатывает как триггер. «Я тут был, я знаю, как это работает».

По своему опыту могу сказать — одно и то же действие (кнопка, гиперлинк и т.д.), повторяющееся в нескольких разных местах сайта, надо тестировать особенно часто. Очень обидно осознавать, что в одном месте кнопка работает, а во втором — нет. Особенно если мы не имеем доступа к коду и не уверены, что разработчик все сделал правильно и не дублировал код.

На прошлой работе я тестировала конструктор отчета. Отчет — таблица. Колонки и строки можно группировать самостоятельно, перетаскивая из единого списка полей.

Чтобы не накидывать поля каждый раз, настройки отчета можно было сохранять. Проверка открытия отчета из сохраненной копии напоминает мне о Балто. Вот идет он к «помеченному» дереву, считает, что он тут был и все правильно. А тут БАХ — и ошибка. Неправильно же Smile :)



Статья написана в помощь студентам моего курса по тестированию.