Вы находитесь на странице: 1из 18

Тест-анализ на основе

рисков
(предугадывание
ошибок)
Определение тестируемого функционала ПО. Выявление
потенциальных ошибок и их градация. Определение стратегии

Введение

Определение ошибки. Виды ошибок

Дефекты, ошибки, сбои, инциденты

Виды программных ошибок

Тестирование на основе опыта

Метод предугадывания ошибок

Локальное предугадывание ошибки

Предугадывание ошибки методом «туров»

Туры по деловому центру

Туры по историческим районам

Туры по развлекательным районам

Туры по туристическим районам

Туры по району отелей

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

Туры по неблагополучным районам

Практика

Пример: задача 1. Предугадывание ошибок в части приложения

Пример: задача 2. Предугадывание ошибок в приложении Skype методом туров

Домашнее задание

Дополнительные материалы

Используемая литература

© geekbrains.ru 1

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

Введение
На прошлых уроках мы разбирали формальные техники тестирования, то есть основанные на
каких-либо правилах, которые можно описать формально. Эти техники основывались на подсчётах,
вычислениях, построении графиков и таблиц. Тестировщик, используя такие техники, действует по
заранее известному алгоритму, который в итоге должен привести к оптимальному набору тестов.

Однако, как показывает практика, далеко не все баги можно найти, опираясь только на известные
правила тестирования. Дело в том, что эти правила разрабатывались для того, чтобы упростить
процесс разработки тестов, уменьшить неопределённость в тестировании, и их нельзя считать
панацеей.

Как вы думаете, почему опытные тестировщики так высоко ценятся?

Во-первых, это люди, которые уже определились со своим родом занятий, они в тестировании не
первый год, чувствуют себя в нём «как рыба в воде» и вряд ли резко сорвутся и изменят свою
специальность, то есть они предсказуемы. Кроме того, такие тестировщики знают много разных
методологий, средств тестирования и пр.

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

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


правилам, ведь так он не сможет обнаружить массу интересных багов, находящихся за пределами
покрытия функционала стандартными тестами. То есть даже если тесты хорошо написаны и
покрывают, казалось бы, весь функционал, всё равно не помешало бы оставить место и время для
исследовательского тестирования.

Определение ошибки. Виды ошибок


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

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

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

Например, разработчик, создавая машину, допустил ошибку: не предусмотрел колёса. В итоге


машина получилась с дефектом – без колёс. Пользователь купил машину и хотел на ней поехать. Он

© geekbrains.ru 2

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

завел её, нажал на газ, но машина не выполняет свою основную функцию – не едет. Тогда
пользователь снова пошел в фирму, где ему продали бесколёсное авто, и сообщил всем, кому
посчитал нужным, о том, что машина с дефектом. Ну и, конечно, потребовал свои деньги назад.

Виды программных ошибок


По времени появления программные ошибки можно разделить на:

● структурные ошибки набора;


● ошибки компиляции;
● ошибки периода выполнения.

Структурные ошибки возникают непосредственно при наборе программы. Они определяются


средой программирования либо при наборе программы, либо при компиляции, если в среду не
встроено средство выявления подобных ошибок на стадии набора кода. К данному типу ошибок
относятся, несоответствие количества открывающихся скобок количеству закрывающихся, отсутствие
парного оператора (например, try без catch), неправильное употребление синтаксических знаков
(например, в некоторых языках – пропуск точки с запятой в конце выражения) и пр.

Ошибки компиляции возникают на стадии компиляции кода. Это могут быть ошибки в синтаксисе,
неправильное использование конструкций языка (например, оператор else в операторе for),
использование несуществующих объектов, методов или свойств, ссылки на несуществующие
библиотеки. Об этих ошибках также сообщает среда разработки при компиляции.

Ошибки периода выполнения возникают при выполнении программы, когда операционная система
или виртуальная машина обнаруживает, что программа пытается выполнить недопустимое или
невозможное действие (например, заполнить объём памяти, гораздо превышающий её реальный
объём, или выполнить деление на ноль). Например, выражение double ratio = firstValue / sum
синтаксически является правильным, поэтому если вдруг sum = 0, то обнаружить эту ошибку можно,
только когда программа запущена.

При тестировании приходится иметь дело только с ошибками периода выполнения, поскольку первые
два типа выявляются ещё на этапе кодирования.

По степени нарушения логики ошибки можно подразделить на:

● синтаксические;
● семантические;
● прагматические.

Синтаксические ошибки заключаются в нарушении правописания или пунктуации в записи


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

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


употреблении выражений. Например, параметры у функции add (на языке Java) в выражении
GregorianCalendar.add(1, Calendar.MONTH) указаны в неправильном порядке, параметр
Calendar.MONTH должен стоять на первом месте.

Прагматические (логические) ошибки заключаются в нарушении логики алгоритма, смысла


вычислений и т. п. Эти ошибки самые сложные, и их трудно обнаружить. Например, если вспомнить
пример про деление на ноль, то операционная система всегда сообщит об ошибке деления на 0, но
причину ошибки (почему вдруг sum стало равно 0) должен искать программист.

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

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

© geekbrains.ru 3

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

● Функциональные ошибки – это ошибки, связанные с неправильным функционированием


ПО, когда его функции не соответствуют заявленным требованиям. Например:
○ нарушение порядка выполнения действий в программе;
○ логика функции в программе не соответствует бизнес-логике;
○ полностью отсутствует какая-либо заявленная в требованиях функция;
○ поддерживаются не все требуемые форматы входных данных.
● Ошибки пользовательского интерфейса​. Это когда неправильно отображаются или
неправильно работают какие-либо элементы интерфейса. Например:
○ название кнопки не соответствует выполняющемуся по нажатию на эту кнопку
действию;
○ неправильные или лишние сообщения, отвлекающие или мешающие пользователю;
○ текст не помещается в отведённом ему месте на экране;
○ элементы управления не реагируют на действия пользователя или реагируют
медленно;
○ появляются необработанные сообщения об ошибках;
○ некорректно отображается содержимое страницы/формы, неправильная вёрстка.
● Ошибки удобства использования. Такие ошибки связаны с плохой эргономикой
интерфейса, с его неудобством для пользователя при выполнении каких-либо функций.
Например:
○ неудобная организация интерфейса;
○ нет возможности немедленного перехода в главное меню из вложенных подменю;
○ не действуют «традиционные» горячие клавиши;
○ отсутствует запрос на подтверждение необратимых операций.
● Ошибки инсталляции, деинсталляции, обновления.​Например:
○ инсталляция/деинсталляция программы завершается с ошибками;
○ программа после установки не запускается;
○ при отмене установки в ходе её выполнения некоторые внесённые изменения
остаются на компьютере;
○ программа после обновления не запускается;
○ обновление программы завершается с ошибками.
● Ошибки производительности – это неоправданные задержки в работе приложения.
Например:
○ медленно открываются страницы сайта или формы в приложении;
○ медленно обрабатываются введенные данные;
○ приложение не может выдержать одновременную работу допустимого количества
пользователей;
○ зависание выполнения некоторых функций приложения.
● Ошибки реакции на перегрузку. ​Такие ошибки возникают при использовании программы в
режиме критической нагрузки. Например:
○ неспособность программы работать в условиях длительной эксплуатации;
○ неспособность программы обрабатывать большие объёмы данных;
○ ошибки и сбои в работе системы при её одновременном использовании большим
количеством пользователей;
○ потеря данных из-за сбоев, связанных с перегрузкой.
● Ошибки расширяемости/масштабируемости. Проявляются, когда программа не способна
адаптироваться к увеличению или уменьшению объёма ресурсов. Например:
○ программа после увеличения объёма оперативной памяти не может использовать
весь этот объём и продолжает пользоваться малым объёмом памяти;
○ программа не может загружать данные с новых подключённых носителей.
● Ошибки адаптируемости ​– ​это ошибки, связанные с адаптацией программы в разном
окружении (например, на ОС разных версий и разрядности, в разных версиях браузеров
и т. п.):
○ веб-сайт не работает в браузере IE9;
○ не отображаются некоторые элементы страницы в браузере Google Chrome;
○ при открытии веб-страницы в браузере IE «разъехалась» вёрстка;
○ приложение не запускается на Windows 10;
○ некоторые компоненты приложения неправильно работают на 64-битной Windows 8.
● Ошибки документации. Это ошибки в пользовательской документации: руководстве
пользователя, справке, в интерактивных подсказках (если таковые имеются) и т. д. Например:
○ описание какой-либо функции ПО в справке не соответствует действительности;

© geekbrains.ru 4

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

○ описание какой-либо функции ПО в справке устарело;


○ справка содержит грамматические ошибки;
○ отсутствуют все или некоторые всплывающие подсказки;
○ устаревшие скриншоты в справочной информации;
○ руководство пользователя непонятно пользователям, или в нём нарушена логика;
○ руководство пользователя устарело или не соответствует действительности.
● Ошибки взаимодействия со средой. В эту категорию можно включить следующие типичные
ошибки:
○ программа неправильно взаимодействует с другими программными продуктами;
○ программа портит данные других приложений;
○ программа неправильно взаимодействует с оборудованием, вызывает его сбои;
○ программа не может определить ОС, в которой установлена, и готовность
оборудования к использованию.
● Ошибки реакции на ошибочные действия пользователя. Это могут быть следующие
ошибки:
○ программа аварийно завершается при вводе неверных данных, выполнении
недопустимых действий;
○ некорректные действия пользователя приводят к порче данных;
○ не проверяются на корректность вводимые пользователем данные;
○ не выводится сообщение об ошибке;
○ сообщение об ошибке непонятно пользователю.

Тестирование на основе опыта


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

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

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

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

Также тестировщик может предугадывать ошибки, основываясь на своём знании спецификации, то


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

Предугадыванию ошибок способствует:

● анализ багов, найденных в прошлых релизах;


● опыт тестирования других программных продуктов;
● анализ багов, найденных пользователями после релиза;
● предыдущие результаты тестов;
● исследование ПО на наличие уязвимостей;
● изучение спецификации;
● изучение исходного кода программы;
● предупреждения операционной системы или браузера о возможных рисках и пр.

© geekbrains.ru 5

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

Предугадывать ошибки можно двумя способами:

● локальное предугадывание ошибки;


● предугадывание ошибки методом «туров».

Локальное предугадывание ошибки


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

Предугадывание ошибки методом «туров»


Концепция «тура» много обсуждалась среди тестировщиков. Например, о ней писал Майк Келли,
автор мнемоники FCC CUTS VIDS.

Целью тестирования, согласно концепции «тура», является проверка определённым образом, а


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

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

Тест-аналитик на основании имеющейся информации о приложении строит набор «туров», каждый из


которых – упорядоченный список вещей, которые следует проверить.

Спроектировать хороший набор «туров» непросто, требуется интеллектуальный анализ приложения и


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

Джеймс Витаккер развил идею Майка Келли. В своей книге «Exploratory Software Testing» он описал
следующие типы туров:

● туры по деловому центру (Tours of the Business District);


● туры по историческим районам (Tours Through the Historical District);
● туры по развлекательным районам (Tours Through the Entertainment District);
● туры по туристическим районам (Tours Through the Tourist District);
● туры по району отелей (Tours Through the Hotel District);
● туры по неблагополучным районам (Tours Through the Seedy District).

Туры по деловому центру

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

Можно выделить следующие туры в этой группе:

● Тур по путеводителю (Guidebook Tour). Из путеводителя турист узнает всё о самых лучших
местах города: фешенебельных отелях, хороших магазинах, достопримечательностях.
Подобно путеводителю, руководство пользователя для продукта показывает, как
пользоваться самыми лучшими функциями ПО. При тестировании этим методом нужно чётко
следовать руководству пользователя, не отклоняясь от написанного. Желательно
использовать только позитивные кейсы.

© geekbrains.ru 6

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

Типичные ошибки, которые можно найти, выполнив этот тур:

○ неправильно описанные шаги выполнения той или иной задачи в руководстве


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

● Денежный тур (Money Tour). Здесь выполняются проверки ПО на соответствие информации,


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

Типичные ошибки, которые можно найти, выполнив этот тур:

○ полное отсутствие в приложении некоторых фич, описанных в рекламных материалах;


○ расхождения между информацией в рекламе и работой приложения;
○ функциональные ошибки приложения, мешающие успешной демонстрации продукта;
○ устаревшие скриншоты приложения в рекламе.

● Тур по ориентирам (Landmark Tour)​. Здесь тестировщик пишет список важных фич
приложения, причём в том порядке, в котором они должны быть пройдены (порядок тоже
важен).

Типичные баги: критические и блокирующие ошибки, мешающие работе всего приложения.

● Тур интеллектуала (The Intellectual Tour). ​Суть тура в том, чтобы задавать приложению
сложные и неожиданные задачи, например, выполнять сложные, но реалистичные сценарии,
обычно нацеленные на проверку работы с большими объёмами данных, проверку скорости
работы – например, в проигрывателе прослушать аудиофайл длительностью в 10 часов,
создать в текстовом редакторе объёмный файл, попытаться сохранить файл с очень длинным
именем, позвонить на мобильный телефон, на котором запущено приложение, выполнять с
большой скоростью какие-либо действия в приложении, в форме ввода заполнить все поля
некорректными данными и т. д.

Типичные баги:

○ крах приложения при выходе за максимально допустимые условия;


○ аварийное прерывание текущих процессов;
○ низкая производительность, медленная работа приложения;
○ потеря данных;
○ неудобства использования приложения, связанные с нехваткой ресурсов,
пространства в формах.

● Тур службы доставки (FedEx Tour). В приложении довольно часто вводятся какие-то данные
(ФИО, адресные данные, названия, денежные суммы и т. д.). Эти данные потом могут
использоваться в приложении: просто отображаться на экране, изменяться, куда-то
отправляться или удаляться. В туре службы доставки задача тестировщика заключается в
том, чтобы отследить полный цикл прохождения данных, а именно выполнить по очереди все
возможные операции с введенными данными.

Типичные баги (очень разнообразные):

○ критические функциональные баги;


○ баги удобства использования;
○ баги интерфейса;
○ баги локализации (не поддерживаются какие-либо языки) и пр.

● Внеурочный тур (The After-Hours Tour). ​Если пользователь закрывает приложение, то это
ещё не означает, что оно прекратило свою работу. Приложение может архивировать данные,

© geekbrains.ru 7

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

создавать бэкап, получать обновления и т. д. Смысл тура в том, чтобы проверить эти
операции.

Типичные баги:

○ проблемы неэффективного использования ресурсов (нерациональное использование


трафика, места на диске, процессора, утечки памяти и т. п.);
○ нефункциональные ошибки (например, ошибки окружения), приводящие к сбоям в
работе приложения.

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

Типичные баги: зависят от проверяемого сценария (если проверяется текст элементов, то ошибки
будут лингвистическими, если какой-то функционал – функциональными).

Туры по историческим районам

В исторических районах города сосредоточены старые здания и всяческие достопримечательности.


Например, в Кёльне есть «старый город» – часть города, которую совсем не затронула современная
экспансия. А в Бостоне исторические здания разбросаны по всему городу и соединяются только лишь
пешеходными тропами.

В ПО устаревшие части также могут быть плохо связаны или, напротив, сосредоточены все в одном
месте программы. Исторические районы ПО – это, например, унаследованный код (legacy code),
функции, созданные в старых версиях программы, исправления старых багов. То есть, это места,
связанные со старыми версиями, давно написанным функционалом или кодом. Исторические туры
направлены на проверку старой функциональности и старых ошибок.

● Тур по нерекомендуемым местам (The Bad-Neighborhood Tour)​. В любом городе есть


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

Типичные ошибки: функциональные.

● Музейный тур (The Museum Tour)​. Иногда код бывает «музейным». Этот такой код, который
очень давно не менялся. Такой код, после его переноса в новую среду может вообще не
работать. Также он может стать непригодным после ревизии кода. Найти этот старый код
можно по дате изменения в репозитории. Например, если создают новое приложение на
платформе IOS, по функционалу схожее с другим приложением на другой платформе, при
этом могут скопировать лишний код или ресурсные файлы, которые могут стать причиной
проблем в работе нового приложения.

Типичные баги:

○ падения приложения;
○ функциональные ошибки;
○ несоответствия стандартам и гайдлайнам;
○ неоправданное увеличение объёма приложения.

● Тур предыдущей версии (The Prior Version Tour)​. После обновления использование
приложения не должно вызывать у пользователя. Новый функционал должен быть таким,
чтобы пользователь мог легко адаптироваться к нему. Тестировщик это также должен
проверять при тестировании обновления. Особенно это важно, когда вырезается какой-то

© geekbrains.ru 8

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

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

Типичные баги:

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

Туры по развлекательным районам

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


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

● Тур актёра второго плана (The Supporting Actor Tour). Гиды, как правило, рассказывают о
самых популярных местах города, но о том, что ещё интересного находится рядом с ними,
умалчивают. Тур актёра второго плана нацелен на проверку таких мест в ПО, проверяется не
главный функционал, а тот, что находится рядом, не такой заметный, но тоже нужный
пользователям.

Типичные баги: могут быть разными, но чаще это баги интерфейса, лингвистические и некритичные
функциональные ошибки.

● Тур по тёмным переулкам (The Back Alley Tour). ​Это путешествие по фичам, которые могут
быть вообще не востребованы пользователями, по фичам, которые представляют для
пользователей наименьший интерес, приносят наименьшую пользу. Тестировщик может
воспользоваться статистикой использования функций приложения (если таковая имеется) или
же может спросить сотрудников, которые наиболее часто взаимодействую с пользователями
(например, служба технической поддержки).

Типичные баги:

○ некритичные функциональные ошибки;


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

● Тур любителя ночной жизни (The All-Nighter Tour or Clubbing Tour). Некоторые
приложения могут жить в режиме non-stop, так что иногда бывает полезно проверить, сколько
может выдержать приложение без перезагрузки. Например, можно соединиться с сервером и
долгое время (неделю, месяц) не разрывать соединение, запустить приложение и долгое
время работать в нём, не перезапуская.

Типичные баги:

○ проблемы производительности и эффективности (утечка памяти, низкая скорость


работы);
○ потеря данных;
○ сбои в работе приложения, функциональные ошибки.

© geekbrains.ru 9

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

Туры по туристическим районам

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

● Тур коллекционера (The Collector’s Tour). ​Многие туристы хотят сохранить память о
посещённых местах и покупают магнитики, открытки и прочие сувениры. Так в этом туре
собираются различные артефакты приложения, всё то, что пользователь может оставить себе
«на память». Например, в браузере – история, закладки, посещённые страницы; в файловом
менеджере – файлы различных форматов, папки и пр.

Типичные баги: в основном некритичные функциональные ошибки.

● Тур одинокого бизнесмена (The Lonely Businessman Tour). Обычно бизнесмены,


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

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

● Тур супермодели (The Supermodel Tour). ​Этот тур для проверки внешнего интерфейса
приложения: красив ли, привлекателен ли он, насколько правильно используются цвета, нет
ли лишних артефактов в интерфейсе, насколько быстро проигрывается анимация,
соответствует ли интерфейс стандартам и ожиданиям пользователя. Цель тура – сделать так,
чтобы приложение смотрелось великолепно, как супермодель на подиуме.

Типичные баги:

○ проблемы интерфейса;
○ баги удобства использования.

● Тур шопоголика (The TOGOF Tour ​– Test One Get One Free). Некоторые туристы едут в тур
специально за покупками. При этом они посещают распродажи, где желающих купить какую-то
вещь «по дешёвке» бывает очень много, и за эту вещь приходится побороться. Суть тура в
том, чтобы создать ситуацию, когда несколько копий одного приложения используют один и
тот же объект или одни и те же данные одновременно. Например, запустить две копии
приложения и обращаться из них одновременно к одному и тому же файлу, к одному и тому
же участку виртуальной памяти, удалять или редактировать одновременно один и тот же
объект, одновременно отправлять по сети на сервер конфликтующие данные и т. д.

Типичные баги:

○ критичные и некритичные баги, связанные с недоработками в логике;


○ непонятные для пользователя сообщения об ошибках;
○ баги производительности.

● Тур по шотландским пабам (The Scottish Pub Tour). ​Далеко не все интересные вещи можно
узнать из путеводителей. Иногда, чтобы узнать что-то новое и интересное о городе, нужно
заглянуть в паб, порасспрашивать там местных. На форумах, в блогах, общаясь с
пользователями и просто так блуждая по приложению, можно обнаружить интересные фичи и
даже такие, которые действительно полюбились пользователям. Этот тур лучше всего
подходит для больших приложений. Его задача – не только проверить приложение, но и
получше с ним познакомиться, в идеале – путём общения с пользователями.

Типичные баги: разные.

© geekbrains.ru 10

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

Туры по району отелей

Это проверки второстепенных фич приложения.

● Тур, отменённый из-за дождя (The Rained-Out Tour). ​Бывает такое, что внезапно
начавшийся дождь отменяет прогулку, заставляет остановиться, чтобы согреться и высушить
одежду. В этом туре нужно отменять любой начавшийся процесс – скажем, нажимать кнопку
«Отмена», закрывать приложение клавишами Alt+F4, Esc или через диспетчер задач. Или,
например, в браузере останавливать загрузку, переходить во время загрузки страницы на
другую страницу с помощью кнопок «Назад», «Вперёд», останавливать или обновлять
страницу. Тестировщик должен убедиться, что отмена вообще возможна, что её можно
выполнить, при этом приложение возвращается в состояние до внесения изменений, что
отмена действий не вызывает проблем в работе приложения, что сохранённые ранее данные
не повреждаются и не теряются (нужно не только проверять приложение через интерфейс, но
и обращать внимание на другие части приложения, например, проверять данные в БД), что
отменённое действие можно вызвать повторно и успешно выполнить.

Типичные баги:

○ критичные и некритичные функциональные ошибки;


○ проблемы целостности данных;
○ ошибки юзабилити, связанные с невозможностью отменить процесс.

● Тур домоседа (The Couch Potato Tour). Здесь нужно идти по «дефолтному» пути, не меняя
значений, установленных по умолчанию, заполняя только обязательные поля в формах,
попытаться перейти между экранами, не вводя никаких данных и не нажимая кнопок, не
совершать никаких комплексных действий, то есть идти по пути «наименьшего
сопротивления».

Типичные баги:

○ проблемы юзабилити;
○ функциональные ошибки.

Туры по неблагополучным районам

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

● Тур диверсанта (The Saboteur Tour). ​Здесь задача тестировщика – попробовать подорвать
работу приложения любым возможным способом. Для этого нужно начать выполнять какое-то
действие, определить ресурсы, необходимые приложению для выполнения этого действия,
удалить или ограничить доступ к этим ресурсам, повторить действие. Например, отключить
интернет, ограничить размер оперативной памяти, удалить файл, который считывает
приложение, ограничить права на выполнение операции, попытаться выполнить поиск или
запрос несуществующего объекта, запустить приложение на изначально проблемном
окружении, выполнить действия над битыми файлами или данными, запустить одновременно
с другим приложением, которое использует те же ресурсы.

Типичные баги:

○ фатальные сбои в работе приложения;


○ непонятные пользователю сообщения об ошибках;
○ функциональные ошибки средней критичности.

© geekbrains.ru 11

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

● Антисоциальный тур (The Antisocial Tour). В этом туре надо работать с приложением так,
как другие пользователи вряд ли будут работать, то есть делать всё, что противоречит логике
приложения, вводить данные, которые должны быть запрещены.

Этот тур подразделяется на три вида:

○ Противоположный тур (opposite tour). Тут предлагается ввод или выбор в


приложении таких значений, которые обычный пользователь вряд ли будет выбирать,
например, добавить в плейлист 10976 песен или отправить на печать сразу 12 копий.
То есть речь идёт о тестировании приложения на позитивных, но маловероятных
данных.
○ Криминальный тур (crime spree tour). Здесь предполагается ввод недопустимых
значений: это могут быть и SQL-инъекции, и ввод текста в цифровые поля, и подмена
данных.
○ Тур с неправильными поворотами (wrong turn tour). Здесь нужно выполнять набор
действий в неправильной или нестандартной последовательности, менять действия
местами: например, сначала указать адрес доставки, а потом выбрать товар.

Типичные баги:

○ критические и некритические функциональные ошибки;


○ уязвимости в безопасности приложения;
○ непонятные пользователю сообщения об ошибках;
○ проблемы юзабилити.

● Тур невротика (The Obsessive-Compulsive Tour). Приложение проверяется путем


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

Типичные баги:

○ некритичные функциональные ошибки;


○ проблемы производительности;
○ утечки памяти.

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

© geekbrains.ru 12

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

Какие ошибки здесь можно предположить?

Во-первых, неясно, какое это приложение: настольное, мобильное или веб-приложение. Поэтому
будем рассматривать все варианты.

Далее нужно проанализировать эту часть приложения. Для этого нужно будет ответить себе на ряд
вопросов, например:

● Какой это тип приложения?


● Из каких элементов состоит тестируемая часть приложения?
● Какие ошибки можно предположить в самой таблице?
● Какие ошибки можно предположить для карточки сделки?
● Какие ошибки могут быть в пагинаторе?
● Какие ошибки могут быть связаны с самой формой, на которой расположена таблица?

Для всех вариантов возможны ошибки функциональные (неправильное выполнение каких-либо


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

Итак, если это настольное приложение, то какие ошибки можно предположить?

Например, такие:

● Сама таблица:
○ Не выполняется сортировка по какому-либо из столбцов.
○ Направление сортировки не соответствует значку сортировки.
○ При выполнении другой сортировки значок первой сортировки не пропадает.
○ Сортировка по столбцу «Дата покупки» осуществляется только по дате, без учёта
времени.
○ Сортировка по «ФИО покупателя» осуществляется только по первому символу ФИО.

© geekbrains.ru 13

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

○ Сортировка по «ФИО покупателя» осуществляется только по фамилии покупателя, не


учитываются имя и отчество.
○ Сортировка по столбцу «Цена» осуществляется только по целой части числа.
○ Если в колонках есть очень длинные значения, отображается только его часть и
нельзя увидеть остальную часть.
○ Если в колонках есть очень длинные значения, таблица растягивается, и форма
растягивается вместе с ней.
○ Значение колонки «Стоимость» вычисляется неверно (не равно произведению цены
на количество).
○ Ссылки в колонке «Идентификатор» не работают.
○ Допущены грамматические ошибки в названиях столбцов таблицы.
○ Нет промежутков между значениями в колонках, они «сливаются» в одну строку.
● Карточка сделки:
○ Слишком большая, не помещается в минимально допустимое разрешение экрана.
○ Нет возможности закрыть карточку и вернуться к просмотру таблицы.
○ Открылась карточка другой сделки.
○ Карточка открывается слишком долго или её открытие зависает.
● Пагинатор:
○ Не работает переход по страницам.
○ Не работает переход на предыдущую страницу.
○ Не работает переход на следующую страницу.
○ Не работает переход на первую страницу.
○ Не работает переход на последнюю страницу.
○ Страница открывается слишком долго или зависает при открытии.
○ Кнопки следующей и предыдущей страницы поменялись местами.
○ Кнопки первой и последней страницы поменялись местами.
● Форма с таблицей:
○ Нет возможности закрыть форму.
○ Форма с таблицей вообще не открывается, если таблица содержит много записей.

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

● Сама таблица:
○ Если в колонках есть очень длинные значения, таблица растягивается и уходит за
пределы экрана.
○ Ссылки в колонке «Идентификатор» ведут на несуществующую страницу.
● Карточка сделки:
○ Слишком большая, не помещается в минимально допустимое разрешение экрана.
(Если карточка – это отдельная страница, то такая ошибка не должна проявиться.)
○ Нет кнопки/ссылки, чтобы перейти назад к просмотру таблицы.
● Форма с таблицей:
○ Нет возможности уйти со страницы с таблицей, перейти к предыдущей странице.

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

Пример: задача 2. Предугадывание ошибок в приложении


Skype методом туров
Для предугадывания ошибки составим какой-либо тур по приложению, например, тур актёра второго
плана – То есть будем рассматривать фичи второстепенные, но тоже представляющие интерес,
попытаемся предугадать ошибки.
План тура:
1. Сделать резервную копию списка контактов.
2. Восстановить список контактов из резервной копии.
3. Заблокировать контакт.

© geekbrains.ru 14

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

4. Разблокировать контакт.
5. Отсортировать контакты.
6. Найти информацию в беседе.
7. Отредактировать личные данные.
8. Изменить тему беседы.
9. Скрыть беседы.
10. Показать скрытые беседы.
Например, рассмотрим ​создание резервной копии списка контактов. В первую очередь, конечно,
мы проверим, что копия вообще создаётся, то есть добавим несколько контактов и выполним
операцию. В результате файл с расширением .vcf должен сохраниться в выбранную папку.
Но какие ошибки тут могут быть?
Например, такие:
● Сохранение списка контактов может не работать даже при нормальных условиях
использования функции.
● Сохранённый файл может не соответствовать формату, при этом восстановление контактов
из него будет невозможно.
● Может возникнуть ошибка, если мы попытаемся сохранить пустой список контактов или
слишком большой список контактов.
● Можно получить ошибку, если попытаться сохранить список контактов, не указав его имя.
● Ошибка при попытке сохранить список контактов на переполненный диск и пр.
Далее проверим ​восстановление списка контактов из резервной копии.
Тут можно предположить, например, такие ошибки:
● Может возникнуть исключение, если выбран файл неподходящего формата (не .vcf).
● Ошибка, если выбран файл бэкапа, сохранённый в другой, старой версии Skype.
● Ошибка при попытке выбрать файл, к которому у пользователя нет прав доступа.
● Зависание при попытке загрузить очень большой список контактов и т. д.
Теперь составим список предполагаемых ошибок для ​блокировки контакта​. Блокировать контакт
можно тремя способами: из меню Беседа – Заблокировать или из Контакты – Дополнительно –
Управление чёрным списком, а также из контекстного меню.
Какие ошибки можно предположить для первого варианта? Например:
● После блокировки контакта он всё ещё может отправлять вам сообщения и/или звонить.
● Функция «Заблокировать» недоступна для незаблокированного контакта.
● Функция «Заблокировать» доступна для заблокированного контакта.
● Функция «Заблокировать» доступна, даже когда контакт не выбран, при этом её выполнение
может привести к исключению, а может просто ничего не происходить.
● После того, как контакт заблокирован, его нельзя разблокировать, недоступна такая функция.
● Вместо блокировки контакта он удаляется из списка и т. д.
Какие ошибки можно предположить для второго варианта? Форма для
блокирования/разблокирования пользователей выглядит следующим образом:

© geekbrains.ru 15

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

Элементы, которые относятся к блокированию пользователей: список заблокированных контактов,


список незаблокированных контактов, кнопка «Заблокировать этого пользователя», кнопка
«Сохранить», кнопка «Отмена». Какие ошибки, связанные со всеми этими элементами, можно
предположить? Например, такие:

● В списке незаблокированных контактов нет контактов, хотя они есть в Skype.


● В списке незаблокированных контактов есть контакты, но после выбора незаблокированного
контакта кнопка «Заблокировать этого пользователя» недоступна.
● В списке незаблокированных контактов присутствуют также и заблокированные контакты.
● После нажатия на кнопку «Заблокировать этого пользователя» этот пользователь не
отображается в списке заблокированных контактов.
● Если имя заблокированного контакта очень длинное, оно уходит за границы списка
заблокированных контактов, причём часть имени может быть не видна и её нельзя будет
посмотреть.
● Если в Skype есть 2 контакта с одинаковыми именами, то в списке незаблокированных
контактов отображается только один.
● Если в Skype есть 2 контакта с одинаковыми именами, то возникают ошибки при блокировке
одного из таких контактов.
● После нажатия на кнопку «Сохранить» не происходит блокирование пользователя (он всё ещё
может звонить вам и писать сообщения).
● Блокирование пользователя происходит ещё до нажатия на кнопку «Сохранить».
● После нажатия на «Отмена» не происходит отмена изменений.
● Если закрыть форму крестиком, не появляется предупреждение «Ваши данные будут
потеряны. Вы действительно хотите закрыть окно?»

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

● Контекстное меню не вызывается.


● В контекстном меню нет функции «Блокировать».
● Все те ошибки, которые можно предположить для первого варианта блокировки.

© geekbrains.ru 16

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!


 

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

Все найденные можно отнести к категории некритичных: в основном это функциональные ошибки и
ошибки удобства использования.

Полученный тур со списком ошибок на каждой остановке может послужить путеводителем по


тестированию приложения. Если эти туры покрывают всё приложение, у нас будет полная карта
тестирования приложения. Для проверки каждой возможной ошибки нужно выполнить свой тест.

Таким образом, предугадывание ошибки методом туров дает более комплексное обследование
приложения.

Домашнее задание
1. Подумать и выписать возможные ошибки, которые могли бы возникнуть при использовании
функции «Сохранить как» приложения «Блокнот». Что бы вы проверили в первую очередь, а
что потом?
2. Тест-аналитик уже составил для вас тур по приложению, проигрывающему аудио- и
видео-файлы. Вот, что предлагается проверить:
a. Добавить файлы в библиотеку.
b. Создать список воспроизведения.
c. Сохранить список воспроизведения.
d. Проиграть список воспроизведения.
Учитывая, что этот тур антисоциальный (то есть предполагается использование неверных сценариев,
ввод неправильных данных и т. п.), попытайтесь предположить ошибки на каждой остановке в этом
туре. Какие тесты для обнаружения предсказанных ошибок нужно выполнить?
3. * Попытатйтесь создать и пройти тур по шотландским пабам для браузера Mozilla Firefox,
основываясь на данных из блогов и с форумов в Интернете. Какие интересные фичи/баги при
этом вы обнаружили?

Дополнительные материалы
1. M. Kelly. Touring Heuristic​
.
2. J. A. Whittaker. Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test
Design. Addison-Wesley, 2010.

Используемая литература
1. http://www.protesting.ru/testing/testdesign_technics.html
2. http://qawebmart.ru/blog/testirovanie-o-jaschikah-dizajne-i-opyte.html
3. http://www.softwaretestinghelp.com/error-guessing-technique/
4. http://searchsoftwarequality.techtarget.com/tip/Finding-software-flaws-with-error-guessing-tours
5. https://okiseleva.blogspot.ru/2015/01/blog-post_64.html?showComment=1477910286573#c6609297
463614435171
6. http://www.software-testing.by/blog/exploratory-testing-exploratory-tours/
7. https://docs.google.com/document/d/10tbpB3tCAL1XC87KIFBQhEnVKR2co9tKzgXxFqQ9854/edit
8. http://window.edu.ru/catalog/pdf2txt/765/45765/22383?p_page=3
9. http://blog.rizn.org/

© geekbrains.ru 17

СКАЧАНО С WWW.SHAREWOOD.BIZ - ПРИСОЕДИНЯЙСЯ!

Вам также может понравиться