roman savenkov тестирование дот ком или пособие по жестокому обращению с багами в интернет стартапах

Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах, Савин Р., 2007

Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах, Савин Р., 2007.

Этот курс лекций создан для тех, кто хочет обучиться тестированию, получить работу тестировщика в российской или западной интернет-компании, понять, как вести себя в корпоративном окружении, и добиться профессионального и личностного роста. Он будет интересен и участникам процесса разработки программного обеспечения, рекрутерам, людям, связанным с интернетом или пишущим о нем, и просто всем желающим понять кухню интернет-стартапов. Книга целиком базируется на личном опыте освоения — с нуля — профессии тестировщика и многолетней работы автора в этом качестве в интернет-компаниях США.

126550

Что такое тестирование.
Любое тестирование — это поиск багов. Испытываем ли мы новую соковыжималку, наблюдаем ли за поведением подруги или занимаемся самокопанием — мы ищем баги. Как видно, каждый из нас уже является тестировщиком, так как разного рода осознанные и неосознанные проверки, осуществляемые нами и в отношении нас, являются неотъемлемой частью жизни, просто раньше мы непрофессионально качали головой и выдавали тирады о несправедливости мира, но зато теперь в случае несовпадения фактического и ожидаемого мы будем с улыбкой мудреца смотреть на дилетантов, хлюпающих носами на московском ветру, и тихо, но веско (как дон Карлеоне) говорить: «Та-а-к, еще один баг».

СОДЕРЖАНИЕ.
Введение.
Часть 1.
ЧТО ТАКОЕ БАГ.
ЦЕЛЬ ТЕСТИРОВАНИЯ DECODED.
ИСКУССТВО СОЗДАНИЯ ТЕСТ-КЕЙСОВ.
ЦИКЛ РАЗРАБОТКИ ПО.
Часть 2.
ЦИКЛ ТЕСТИРОВАНИЯ ПО.
КЛАССИФИКАЦИЯ ВИДОВ ТЕСТИРОВАНИЯ.
Часть 3.
ПОДГОТОВКА К ТЕСТИРОВАНИЮ.
ИСПОЛНЕНИЕ ТЕСТИРОВАНИЯ.
ИСПОЛНЕНИЕ ТЕСТИРОВАНИЯ. СТАДИЯ 1:ТЕСТИРОВАНИЕ НОВЫХ ФИЧА.
ИСПОЛНЕНИЕ ТЕСТИРОВАНИЯ. СТАДИЯ 2:РЕГРЕССИВНОЕ ТЕСТИРОВАНИЕ.
Часть 4.
КАК УСТРОИТЬСЯ НА ПЕРВУЮ РАБОТУ.

Источник

Часть I

Что такое Баг?

Логический закон исключенного третьего гласит, что любая вещь — это либо А, либо не-А. Третьего не дано, т.е. если у вас есть часы «Брегет» за номером 5, то любая вещь в этом мире будет либо вашими часами «Брегет» за номером 5, либо чем-то другим.

Представим себе конвейер, в конце которого стоим мы. Лента конвейера движется, и перед нами по очереди появляется по одному предмету. Задача проста — ожидать появления ваших часов «Брегет» за номером 5 и говорить «баг» при появлении любого предмета, отличного от них.

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

52 1

Далее. Рассмотрим, что объединяет следующие ситуации.

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

Разбор ситуаций.

Определение бага

Итак, баг (bug) — это отклонение фактического результата (actual result) от ожидаемого результата (expected result).

В соответствии с законом исключенного третьего у нас есть баг при наличии любого фактического результата, отличного от ожидаемого.

Три условия жизни и процветания бага

Конкретный баг живет и процветает лишь при одновременном выполнении всех трех условий:

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

Примеры багов из жизни:

Что такое тестирование

Любое тестирование — это поиск багов. Испытываем ли мы новую соковыжималку, наблюдаем ли за поведением подруги или занимаемся самокопанием — мы ищем баги. Баги находятся следующим образом:

Как видно, каждый из нас уже является тестировщиком, так как разного рода осознанные и неосознанные проверки, осуществляемые нами и в отношении нас, являются неотъемлемой частью жизни, просто раньше мы непрофессионально качали головой и выдавали тирады о несправедливости мира, но зато теперь в случае несовпадения фактического и ожидаемого мы будем с улыбкой мудреца смотреть на дилетантов, хлюпающих носами на московском ветру, и тихо, но веско (как дон Карлеоне) говорить: «Та-а-к, еще один баг».

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

Теперь вспомним о том, что есть компьютерное ПО и что нам нужно научиться его тестировать.

С фактическим результатом здесь более или менее понятно: нужно заставить систему проявить себя и посмотреть, что произойдет.

Сложнее дело обстоит с ожидаемым результатом.

Источники ожидаемого результата

Основными источниками ожидаемого результата являются:

Спецификация на первой— четвертой ролях — это не ошибка, а ударение на то, что спецификация для тестировщика — это:

Спецификация важна для программиста и тестировщика так же, как постановление пленума ЦК для коммуниста.

Спецификация — это инструмент, с помощью которого вы сможете выпустить качественный продукт и прикрыть свою спину (в оригинале звучит как CYA или cover your ass).

Итак, что же это за зверь?

Спецификация (или spec — читается «спек». Далее употребляется в мужском роде) — это детальное описание того, как должно работать ПО. Вот так, ни много ни мало.

В большинстве случаев баг — это отклонение от спецификации (я говорю о компаниях, в которых спеки в принципе существуют и ими пользуются).

Пример

Пункт 19.а спека #8724 «О регистрации нового пользователя» устанавливает: «Поле «Имя» должно быть обязательным. Страница с ошибкой должна быть показана, если пользователь посылает регистрационную форму без заполнения указанного поля».

В общем все просто:

Если ошибка не показана и регистрация подтверждается, то это есть момент истины и нужно рапортовать баг (file a bug).

Если ошибка показана, то относительно пункта 19.а на некоторое время можно успокоиться. Мы поймем, почему можно успокоиться лишь на некоторое время при разговоре о регрессионном тестировании.

Функциональные баги и баги спека

Допустим, что ошибка не была показана и мы имеем классический случай функционального бага (functional bug, или баг обыкновенный), т.е. бага, вскормленного на несоответствии фактической работы кода и функционального спека.

Если вы внимательно читали пункт 19.а, то не могли не заметить (шутка), что непонятно, какое должно быть сообщение об ошибке (error message), т.е. фактически решение отдано на откуп про-граммисту и он может предусмотреть, что при соответствующей ситуации код выдаст:

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

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

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

Кстати, вот варианты развития ситуации с проблемным спеком:

Кстати, вот две релевантные политически важные вещи:

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

ЖИЗНЕННЫЙ ОПЫТ

Как справедливо отметил Борис Слуцкий: «Не только пиво-раки мы ели и лакали». Мы также учились и работали, любили и ненавидели, верили политикам и не слушались родителей, в общем приобретали жизненный опыт (включая опыт работы). Так вот этот опыт настолько полезен в нашем черном деле, что для демонстрации уважения к идее о его полезности (вместе с логикой и здравым смыслом) я вынес ее в качестве эпиграфа во Введении. Дело в том, что тестирование ПО — это то самое тестирование (которое мы делаем постоянно), но только в отношении ПО. И моя задача заключается лишь в том, чтобы дать вам основные концепции и практический инструментарий по интернет-тестированию и помочь их интеграции с тем, что у вас уже есть, — с жизненным опытом.

ЗДРАВЫЙ СМЫСЛ (дитя жизненного опыта и соответственно внук «ошибок трудных»)

Это один из наших главных союзников, порой даже и при наличии спека. Например, вы тестируете веб-сайт, где пользователь может загрузить (upload) свои цифровые фотографии. Спек говорит, что пользователь может загрузить лишь одну фотографию за раз. А что, если у него таких фотографий 200? Будет он счастлив? Что делаем? Правильно: пишем е-мейл к producers@testshop.rs с предложением о включении в спек функциональности, позволяющей пользователю загружать цифровые фотографии оптом. Кстати, баг такого рационализаторского плана лицемерно называется не багом, а Feature Request («запрос об улучшении» — пока остановимся на таком переводе).

ОБЩЕНИЕ

Даже самый лучший спек может вызвать необходимость в уточнениях. А что, если спека нет вообще? Наш ответ: общение. Советуйтесь с коллегами. Уточняйте и обсуждайте. Одна голова хорошо, а две лучше.

УСТОЯВШИЕСЯ СТАНДАРТЫ

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

СТАТИСТИЧЕСКИЕ ДАННЫЕ

Было установлено, что средний пользователь теряет терпение, если web page (веб-страница) не загружается в течение 5 секунд. Эти данные можно использовать, проводя performance testing (тестирование скорости работы всей системы либо ее компонента). Как говорят американцы: «Your user is just one click away from your competitor» («Ваш пользователь находится на расстоянии в один клик от вашего конкурента»). Успех вашего проекта — это счастливые пользователи. Превышение 5 секунд — это превращение веб-сайта в зал ожиданий, в котором вряд ли кто захочет находиться.

АВТОРИТЕТНОЕ МНЕНИЕ

Это может быть, например, мнение вашего начальника.

Отметим, что баг (bug) буквально переводится как «жук» или «букашка».

Теперь, как я и обещал, немного истории.

Согласно фольклору, баги вошли в лексикон компьютерщиков после случая, происшедшего в Гарвардском университете в 1947 г. После того как на реле прадедушки ПК Маркa II присел отдохнуть мотылек, один из контактов слегка коротнуло и весь 15тонный агрегат со скрежетом остановился. Инженеры проявили милосердие и извлекли мотылька, после чего аккуратно зафиксировали его скотчем в журнале испытаний с комментарием «Первый фактический случай найденного жука» («First actual case of bug being found»).

Источник

Текст книги «tестирование dot com»

Автор книги: Роман Савин

Жанры:

Интернет

Прочая компьютерная литература

Текущая страница: 1 (всего у книги 17 страниц)

0

1

или П о с о б и е по жестокому

обращению с б а г а м и

2

Одна из причин, побудивших автора напи-

сать эту книгу, – «осознание собственного

бессилия в поисках сиюминутного практи-

ческого смысла при чтении классических

сочинений по теории тестирования. », в

особенности когда ты в поисках работы и

время дорого. «Наиболее эффективный

подход для тренинга тестировщиков – дать

им практический инструментарий, поставить

в нужную сторону мозги – и в бой. »

Эта книга и есть тот самый практический

инструментарий. Здесь вы найдете прорабо-

танную структуру, профессиональное изло-

жение темы, множество примеров и советов,

а также «. легион того, о чем вам напрямую

не напишут и не скажут, но что может быть не

менее важно для выживания в софтверной

компании, чем профессиональные знания».

Но это не все. Особенность книги в том,

как излагается материал. Роман Савин отка-

зался от традиционных канонов написания

учебных пособий и превратил книгу в живую

непринужденную беседу, насыщенную шут-

кой и иронией, не чуждую отступлений и да-

же воспоминаний, которые тем не менее

встроены в контекст и работают на предмет

как иллюстрационный материал.

Читать книгу интересно и весело. Убеди-

3

или Пособие по жестокому

обращению с багами

ИЗДАТЕЛЬСТВО «ДЕЛО» • МОСКВА • 2007

С13 Тестирование Дот Ком, или Пособие по жестокому обра-

щению с багами в интернет-стартапах. – М.: Дело, 2007. —

Этот курс лекций создан для тех, кто хочет обучиться тестированию,

получить работу тестировщика в российской или западной интернет-ком-

пании, понять, как вести себя в корпоративном окружении, и добиться

профессионального и личностного роста. Он будет интересен и участни-

кам процесса разработки программного обеспечения, рекрутерам, людям,

связанным с интернетом или пишущим о нем, и просто всем желающим

понять кухню интернет-стартапов.

Книга целиком базируется на личном опыте освоения – с нуля —

профессии тестировщика и многолетней работы автора в этом качестве в

© Корсун С.Н., иллюстрации, 2007

ОПРЕДЕЛЕНИЕ БАГА. 18

ЧЕРНАЯ МАГИЯ И ЕЕ НЕМЕДЛЕННОЕ РАЗОБЛАЧЕНИЕ. 25

Разоблачение концепции о 100%-м тестировании ПО

Разоблачение концепции о количестве багов,

найденных до релиза

СКОЛЬКО ОЖИДАЕМЫХ РЕЗУЛЬТАТОВ МОЖЕТ БЫТЬ

Документ о требованиях маркетинга (MRD)

Разница между идеей и дизайном

Борьба с неверными толкованиями спека

Документ о внутреннем дизайне кода

Личная версия сайта программиста

Причины появление багов кода

Меры по оздоровлению кода и превентированию багов

Концепция стоимости бага

Три основных занятия программиста

Необходимость замораживания кода

Виды багов кода Хранение

документации в CVS Обсуждение тест-

Определение, виды и версии релизов

Действующие лица Создаем

Первый релиз www.testshop.rs

Что такое функциональность Источники

знания о функциональности Эксплоринг

Черный ящик (black box testing)

Белый ящик (white box testing)

Серый ящик (grey box testing)

Функциональное тестирование (functional testing)

Тестирование интерфейса пользователя (UI testing)

Тестирование локализации (localization testing)

Тестирование скорости и надежности

(load/stress/performance testing) Тестирование

безопасности (security testing) Тестирование опыта

пользователя (usability testing) Тестирование

совместимости (compatibility testing)

Альфа-тестировщик (alpha tester)

Бета-тестировщик (beta tester)

До передачи пользователю – альфа-тестирование

Тест приемки (smoke test, sanity test или confidence test)

Тестирование новых фунщиональностей

(new feature testing) Регрессивное

тестирование (regression testing) Тест сдачи

(acceptance of certification test)

После передачи пользователю – бета-тестирование

ПО КРИТЕРИЮ «ПОЗИТИВНОСТИ» СЦЕНАРИЕВ. 158

Позитивное тестирование (positive testing)

Негативное тестирование (negative testing)

ПО СТЕПЕНИ ИЗОЛИРОВАННОСТИ ТЕСТИРУЕМЫХ

Компонентное тестирование (component testing)

Интеграционное тестирование (integration testing)

Системное (или энд-ту-энд) тестирование (system or

Ручное тестирование (manual testing)

Автоматизированное тестирование (automated testing)

(semi automated testing)

Тестирование по документации (formal/documented

testing) Эд Хок тестирование (Ad

ПОДГОТОВКА К ТЕСТИРОВАНИЮ

НИГИЛИСТИЧЕСКИЙ НАСТРОЙ И ПРАКТИЧЕСКАЯ

Черновик—Чистовик (dirty listwhite list)

Матричная раскладка (matrices) Блок-схемы

Оценка риска (risk estimate) Эквивалентные

классы (equivalent classes) Пограничные

значения (boundary values)

Bug number (номер бага) Summary

(краткое описание) Description and

steps to reproduce

(описание и шаги для воспроизведения проблемы)

Слинкованная картинка (linked image)

Однострочное текстовое поле (textbox)

Многострочное текстовое поле (text entry area)

Поле пароля (password field)

Ниспадающее меню (pull down menu)

Радио кнопка (radio button)

Submitted by (автор бага)

Date submitted (дата и время рождения бага)

Assigned to (держатель бага)

Assigned by (имя передавшего баг)

Verifier (имя того, кто должен проверить ремонт)

Found on (где был найден баг)

Version found (версия, в которой был найден баг)

Build found (билд, в котором был найден баг)

Version fixed (версия с починенным кодом)

Build fixed (билд с починенным кодом)

Severity (серьезность бага)

Priority (приоритет бага)

Notify list (список для оповещения)

Change history (история изменений)

Not assigned (не приписан)

Fix in progress (баг ремонтируется)

Fixed (баг отремонтирован)

Build in progress (билд на тест машину в процессе)

Verify (проведи регрессивное тестирование)

Fix is verified (ремонт был успешен)

Verification failed (ремонт был неуспешен)

Can’t reproduce (не могу воспроизвести)

3rd party bug (не наш баг)

No longer applicable (поезд ушел)

Концептуальное рассмотрение процесса

Процесс и атрибуты Конкретный пример

ИСПОЛНЕНИЕ ТЕСТИРОВАНИЯ. СТАДИЯ 1:

ИСПОЛНЕНИЕ ТЕСТИРОВАНИЯ. СТАДИЯ 2:

ВЫБОР ТЕСТ-КОМПЛЕКТОВ ДЛЯ РЕГРЕССИВНОГО

Приоретизация тест-комплектов и тест-кейсов

Оптимизация тест-комплектов Найм новых

тестировщиков Автоматизация регрессивного

КАК УСТРОИТЬСЯ НА ПЕРВУЮ РАБОТУ. 285

Работа с агентством по трудоустройству

Компания по рекламе себя

Нюансы живого интервью

Список типичных вопросов и правильных ответов

ИСТОРИЯ ОБ ОЛЕ И ДЖОРДЖЕ. 306

Моим любимым Маме и Марине посвящается,

чьи любовь и верасамое драгоценное,

что я получил от жизни.

Основа бэкграунда тестировщика —

это логика, здравый смысл и жизненный опыт.

я написал эти лекции по практике тестирования, чтобы просто и

задушевно рассказать вам основные вещи, которые понадобятся

для успешного старта и не менее успешной работы в интер-

нет-компании в качестве тестировщика.

Я также уверен, что тихие вечера, проведенные за чтением моего

скромного труда, откроют много полезного любому человеку, имею-

щему отношение к процессу создания программного обеспече-

ния (ПО), так как качество, как тишина в кинозале, – дело общее.

Отдельной группой благодарных читателей, несомненно, выступят

ного труда в интернет-компаниях.

Кроме того, я надеюсь, что материал будет просто интересен всем,

кто пользуется Интернетом и желает узнать, как работают интер-

Приведя десятки примеров, я попытался максимально проил-

люстрировать материал, так, чтобы даже сугубо технические

детали были понятны самому широкому кругу читателей.

Моя цельне показать, что я знаю материал (как это делает-

ся при защите диплома), а помочь ВАМ узнать материал, и ил-

люстрации (текстовые и графические)это лучшее вспомога-

тельное средство, для того чтобы

легче понять и усвоить смысл сказанного и

оставить в памяти якорь ассоциации между иллюстра-

цией и проиллюстрированной мыслью.

Помимо просьб друзей, требований жены и намечающегося кри-

зиса среднего возраста на подвиг меня толкнуло то, что в начале

своей работы не раз и не два я пытался осилить классические со-

чинения по теории тестирования, но каждый раз осознание соб-

ственного бессилия в поисках сиюминутного практического

смысла не давало мне дочитать очередной фолиант.

Безработная девушка Маша П. захотела стать бухгалтером. Она приходит

на соответствующие курсы, но вместо прикладных, оплачиваемых знаний

по назначению счетов и инструкций МНС ей преподают теорию макроэко-

номики и историю бухгалтерии. Маша думает, что она не сможет осилить

бухгалтерию, и бросает курсы. В итоге Родина теряет потенциально бле-

стящего бухгалтера и обретает реально радикального члена компартии.

Я преклоняюсь перед предметом «история». О пользе Теории (с

большой буквы «Т») и говорить не приходится, но, как я убедился

на своем многолетнем опыте работы и преподавания, наиболее

эффективный подход к тренингу тестировщиков заключается

в том, чтобы дать им практический инструментарий, напра-

вить мозги в нужную сторонуи в бой, а теоретические мета-

ния тридцатилетней давности можно почитать на досуге, после

того как устроился на работу.

• политические нюансы работы;

• распространенные ошибки менеджмента;

• продюсеры, программисты и релиз-инженеры, работу ко-

в общем легион того, о чем вам напрямую не напишут и не

скажут, но что может быть не менее важно для выживания в соф-

тверной компании, чем профессиональные знания.

Будучи человеком честным и в некоторой степени благородным,

признаюсь, что позаимствую классическое начало книг о тести-

ровании, заключающееся в трусливом: «Не используйте знания

из этой книги, если речь идет о тестировании критического ПО «.

я свидетельствую, что все, о чем я расскажу, действительно ра-

ботает, и работает именно так в крупнейших западных интернет-

я также свидетельствую, что все, о чем я расскажу, в силу объ-

ективных причин не может на 100 процентов гарантировать ПО

от наличия проблем.

Поэтому сразу предупреждаю: эта книга не предназначена для

тех, кто собирается тестировать критическое ПО, связанное,

например, с мониторингом работы сердечной мышцы, или

ПО для поражения точечных целей в странах с большими за-

Серьезно, если речь идет о жизни людей, лучше скормите эту

книгу своему попугаю-жако (о попугаях позже).

Два важных момента:

1. В отличие от деятельности юридической деятельность тести–

ровочная (для коммерческих проектов) не регулируется нор

мативными актами или другими формальными источниками.

Поэтому нет обязательных для исполнения правил о том, как

эффективно протестировать ПО, какие документы нужно создать

и в какой форме они должны быть.

Никто не возьмет вас за горло из-за того, что ваш тест-план не

соответствует букве некого закона, пролоббированного некой

продажной шкурой из не менее продажной фракции в интересах

всем хорошо известной финансово-промышленной группы N.

В цехе тестировщиков ничто не является догмой (nothing is set in

stone) и построение добротной системы поиска и превентиро-

вания ошибок в ПО полностью отдается на откуп профессиона-

лизму, добросовестности и творчеству тех, кто работает в кон-

многие вещи, о которых пойдет речь (подходы, документы, про-

цессы, даже названия),

с одной стороны, имеют огромное количество вариаций в

существующих интернет-компаниях и,

с другоймогут практически использоваться в предло-

женной форме или, еще лучше, быть подогнанными вами

под ту компанию, в которой вы работаете или, несомнен-

но, будете работать в ближайшем будущем.

2. «То, что русскому хорошо, – для немца смерть». По аналогии:

• подходы к тестированию,

• степень формализации процессов и

которые эффективно работают в крупных устоявшихся интернет-

компаниях, могут быть неприемлемы для интернет-стартапов

(startup – молодая, амбициозная, многообещающая компания,

живущая, как правило, короткую, но яркую жизнь), и наоборот.

Исходя из того что подавляющее большинство интернет-ком-

паний – это стартапы, говорить будем о том, как эффективно

провести тестирование и организовать процессы по улучшению

качества именно в стартапах с прицелом на то, чтобы заложить фун-

дамент департамента качества (QA department) для крупной устояв-

шейся интернет-компании, стать которой мечтает каждый стартап.

Вопрос дня: Что самое главное в нашем деле?

Ответ дня: РЕЗУЛЬТАТ!

Человек может быть прекрасным семьянином, увлекаться фото-

графией и превосходно петь арию «Libiamo Amor» из «Травиаты»,

но единственная и неповторимая прелесть его как тестиров-щика

К вопросу о постановке мозгов и попугаях:

перед покупкой своего попугая-жако Василия я прочитал кучу

литературы, но лишь одна мысль позволила мне осознать самое

главное (в смысле домашних попугаев):

«У вас есть хобби, друзья и работа. У вашего попугая есть

Так вот по аналогии:

Вы можете быть наделены множеством самых прекрасных и

вечных добродетелей. Но в вашей работе тестировщика есть

Каков же этот РЕЗУЛЬТАТ (пишу «РЕЗУЛЬТАТ» заглавными бук-

вами в последний раз)?

результатом работы тестировщика является счастье конеч-

ного пользователя (сказать «удовлетворение клиента» как-то язык

не поворачивается). Причем «счастье» не в глобальном его значе-

нии, а та его часть, которая связана с качеством вашего продукта.

некто Виктор Буянов бродит по Интернету в поисках диска с москов-

ским концертом Билли Джоела. Вот он наконец находит то, что искал,

заполняет все необходимые формы и нажимает кнопку «Купить». Если

на следующей странице будет написано: «Дорогой Виктор, мы

получили ваш заказ, ждите посылку» и

через неделю почтальон принесет сам диск,

то честь и хвала вам как тестировщикам.

на следующей странице красуется «500 – Internal Server Error»

(внутренняя ошибка сервера номер 500). и тишина,

то пишите объяснительные.

Я дам вам знания, с которыми можно пройти интервью, получить

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

моментов следует твердо знать, что тестировщикам большую

часть заработной платы платят за честность, так как именно

нашему брату оказано доверие сказать «Поехали». И даже абсо-

лютно далекий от тестирования господин Буянов косвенно под-

твердил своим выбором мои слова (дальше поются строчки из

припева песни Билли Джоела «Честность» («Honesty»)):

Honesty is hardly ever heard.

And mostly what I need from you.

(Честность – это 50% + 1 единица того, что я жду от тебя.)

Будет дано множество примеров того, что мы работаем на некий

онлайн-стартап www.testshop.rs (rs – это не глобальный домен,

как com или ru, а мои инициалы).

Многие термины будут написаны по-английски с немедленным

русским переводом и наоборот. Знание родной терминологии по-

может работе в инофирме.

Пользуясь случаем, хочу поблагодарить (в алфавитном порядке):

Алекса Хатилова (Yahoo!) за превосходные лекции, многочасо-

вые консультации по телефону и демонстрацию силы аналогий и

примеров из жизни и

Никиту Тулинова (Sun Microsystems), который принял меня, как

брата, и наставил на путь истинный.

Итак, в путь. Если что, пишите на [email protected]

• ЦЕЛЬ ТЕСТИРОВАНИЯ DECODED

ИСКУССТВО СОЗДАНИЯ ТЕСТ-КЕЙСОВ

ЦИКЛ РАЗРАБОТКИ ПО

4

• ТРИ УСЛОВИЯ ЖИЗНИ И ПРОЦВЕТАНИЯ БАГА

• ЧТО ТАКОЕ ТЕСТИРОВАНИЕ

• ИСТОЧНИКИ ОЖИДАЕМОГО РЕЗУЛЬТАТА

• ФУНКЦИОНАЛЬНЫЕ БАГИ И БАГИ СПЕКА

огический закон исключенного третьего гласит, что любая

Лвещь – это либо а, либо не-а. Третьего не дано, т.е. если у

вас есть часы «Брегет» за номером 5, то любая вещь в этом мире

будет либо вашими часами «Брегет» за номером 5, либо чем-то

Представим себе конвейер, в конце которого стоим мы. Лента

конвейера движется, и перед нами по очереди появляется по од-

ному предмету. Задача проста – ожидать появления ваших часов

«Брегет» за номером 5 и говорить «баг» при появлении любого

предмета, отличного от них.

Нетрудно догадаться, что такие предметы, как

• буклет с предвыборными обещаниями кандидата в прези-

будут для нас багами.

Далее. Рассмотрим, что объединяет следующие ситуации.

Тестирование Дот Ком. Часть 1

1. Девушка рекламирует себя как хорошую, на все руки хо-

зяйку, а утром выясняется, что она даже яичницу пожарить

2. Вы купили книгу по интернет-тестированию, а в ней рас-

сказывается о приготовлении яичницы.

3. Девушка из пункта 1 прочитала книгу из пункта 2, но яич-

Если возвыситься над яичницей, фигурирующей в каждом из

трех пунктов, и абстрагироваться от женщин, карт и вина, то мы

увидим, что общее – это отклонение фактического от ожи-

1. Ожидаемый результат – девушка умеет готовить.

Фактический результат – утро без завтрака.

2. Ожидаемый результат – знания по тестированию.

Фактический результат – знания по кулинарии.

3. Ожидаемый результат – яичница будет приготовлена.

Фактический результат – еще одно утро без завтрака.

баг (bug)это отклонение фактического результата (actual

result) от ожидаемого результата (expected result).

В соответствии с законом исключенного третьего у нас есть баг

при наличии любого фактического результата, отличного от

жизни и процветания бага

Конкретный баг живет и процветает лишь при одновременном

выполнении всех трех условий:

1. Известен фактический результат;

2. Известен ожидаемый результат;

3. Известно, что результат из пункта 1 не равен результату из

Совет дня: каждый раз, когда возникает ситуация, в которой не

совпадают фактическое и ожидаемое, – мысленно штампуйте

фактическое словом «баг». Постепенно это войдет в привычку и

станет рефлексом. Для ментальной тренировки не имеет значе-

ния, насколько мелочны, низки и сиюминутны ваши ожидания,

главное – приобретение автоматизма.

Примеры багов из жизни:

1. Бутерброд падает маслом вниз.

2. Подхалимы и говоруны имеют намного больше шансов на повыше-

ние, чем скромные честные труженики.

3. Несоответствие миловидной внешности и змеиной сущности.

4. Попугай воспроизводит на людях худшее из словарного запаса хо-

5. Автомобили российского производства.

6. Кот Бегемот в фильме В. Бортко «Мастер и Маргарита».

Что такое тестирование

Любое тестирование – это поиск багов. Испытываем ли мы

новую соковыжималку, наблюдаем ли за поведением подруги

или занимаемся самокопанием – мы ищем баги. Баги находятся

1. Мы узнаем (или уже знаем) ожидаемый результат;

2. Мы узнаем (или уже знаем) фактический результат;

3. Мы сравниваем пункт 1 и пункт 2.

Как видно, каждый из нас уже является тестировщиком, так как

разного рода осознанные и неосознанные проверки, осуществ-

ляемые нами и в отношении нас, являются неотъемлемой частью

жизни, просто раньше мы непрофессионально качали головой и

выдавали тирады о несправедливости мира, но зато теперь в слу-

чае несовпадения фактического и ожидаемого мы будем с улыб-

кой мудреца смотреть на дилетантов, хлюпающих носами на мо-

сковском ветру, и тихо, но веско (как дон Карлеоне) говорить:

Для иллюстрации правильного подхода приведу в пример одного

моего друга, который выстроил целую систему доказательств тезиса,

что люди и компьютеры созданы по одному образцу. Основой его аргу-

ментации явился тот факт, что и те и другие имеют физическую обо-

лочку (тело/железо) и неосязаемое составляющее, управляющее ею

Тестирование Дот Ком. Часть 1

(душа/ПО). Соответственно болезни тела он называл багами в железе,

а проблемы с головойбагами в ПО и очень сожалел, что ПО людей,

управляющих этим миром, состоит в основном из багов.

Теперь вспомним о том, что есть компьютерное ПО и что нам

нужно научиться его тестировать.

С фактическим результатом здесь более или менее понятно: нужно

заставить систему проявить себя и посмотреть, что произойдет.

Сложнее дело обстоит с ожидаемым результатом.

Источники ожидаемого результата

Основными источниками ожидаемого результата являются:

5. Жизненный опыт, здравый смысл, общение, устоявшиеся

стандарты, статистические данные, авторитетное мнение и др.

Спецификация на первой—четвертой ролях – это не ошибка, а

ударение на то, что спецификация для тестировщика – это:

мать родная, а также

Спецификация важна для программиста и тестировщика так же,

как постановление пленума ЦК для коммуниста.

Спецификация – это инструмент, с помощью которого вы смо-

жете выпустить качественный продукт и прикрыть свою спину (в

оригинале звучит как CYA или cover your ass).

Итак, что же это за зверь?

Спецификация (или spec – читается «спек». Далее употребляется

в мужском роде) – это детальное описание того, как должно

работать ПО. Вот так, ни много ни мало.

В большинстве случаев баг – это отклонение от специфика-

ции (я говорю о компаниях, в которых спеки в принципе сущест-

вуют и ими пользуются).

Пункт 19.а спека #8724 «О регистрации нового пользователя» устанав-

«Поле „Имя“ должно быть обязательным. Страница с ошибкой должна

быть показана, если пользователь посылает регистрационную форму

без заполнения указанного поля».

В общем все просто:

тестировщик идет на страничку с регистрационной формой;

заполняет все обязательные поля, кроме поля «Имя»;

нажимает на кнопку «Зарегистрироваться».

Если ошибка не показана и регистрация подтверждается, то это есть

момент истины и нужно рапортовать баг (file a bug).

Если ошибка показана, то относительно пункта 19.а на некоторое

время можно успокоиться. Мы поймем, почему можно успокоиться

лишь на некоторое время при разговоре о регрессивном тести-

Функциональные баги и баги спека

Допустим, что ошибка не была показана и мы имеем классиче-

ский случай функционального бага (functional bug, или баг

обыкновенный), т.е. бага, вскормленного на несоответствии

фактической работы кода и функционального спека.

Если вы внимательно читали пункт 19.а, то не могли не заметить

(шутка), что непонятно, какое должно быть сообщение об ошибке

(error message), т.е. фактически решение отдано на откуп про-

граммисту и он может предусмотреть, что при соответствующей

ситуации код выдаст:

• НЕинформативное сообщение «Ошибка» и оставит пользо

вателя ломать голову над тем, что он сделал неправильно,

• информативное сообщение «Пожалуйста, введите ваше имя

и нажмите кнопку «Регистрация»»

и в любом случае формально будет прав, так как спецификация

не детализирует текста ошибки.

Кстати, несколько лет назад был случай, когда программисты в специ-

альном ПО, разработанном для американских тюрем, оставили «рабо-

чее» название кнопки, причем тюремщикам идея так понравилась, что

они просили ничего не исправлять. Надпись на кнопке была: «Освобо-

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • rolt power systems инн
  • rolly школьная форма интернет магазин