Академический Документы
Профессиональный Документы
Культура Документы
Скачано С Www.Sharewood.Biz - Присоединяйся!
Скачано С Www.Sharewood.Biz - Присоединяйся!
рисков
(предугадывание
ошибок)
Определение тестируемого функционала ПО. Выявление
потенциальных ошибок и их градация. Определение стратегии
Введение
Практика
Домашнее задание
Дополнительные материалы
Используемая литература
© geekbrains.ru 1
Введение
На прошлых уроках мы разбирали формальные техники тестирования, то есть основанные на
каких-либо правилах, которые можно описать формально. Эти техники основывались на подсчётах,
вычислениях, построении графиков и таблиц. Тестировщик, используя такие техники, действует по
заранее известному алгоритму, который в итоге должен привести к оптимальному набору тестов.
Однако, как показывает практика, далеко не все баги можно найти, опираясь только на известные
правила тестирования. Дело в том, что эти правила разрабатывались для того, чтобы упростить
процесс разработки тестов, уменьшить неопределённость в тестировании, и их нельзя считать
панацеей.
Во-первых, это люди, которые уже определились со своим родом занятий, они в тестировании не
первый год, чувствуют себя в нём «как рыба в воде» и вряд ли резко сорвутся и изменят свою
специальность, то есть они предсказуемы. Кроме того, такие тестировщики знают много разных
методологий, средств тестирования и пр.
Но дело даже не в этом. Опытные тестировщики, можно сказать, «имеют нюх» на баги. И неспроста,
ведь они тестировали множество систем, и, когда баг находил пользователь, а не отдел
тестирования, то это, как правило, было весьма неприятной ситуацией, требующей тщательного
разбора полётов. Даже если какой-то интересный баг случайно был найден самим тестировщиком,
всё равно такие ситуации всегда запоминаются, и впредь они проверяются на каждом новом
программном продукте, где это возможно. Кроме того, анализируя возникновение подобных багов в
разных программных продуктах, тестировщик находит закономерности, и симптомы того или иного
бага впоследствии без труда узнаются, пусть даже и неосознанно. Из этого и складывается опыт
тестировщика..
Ошибка – это действие человека (в данном случае разработчика программы или документации),
которое приводит к появлению дефекта. Для более быстрого нахождения дефектов тестировщик
должен знать основные типы программных ошибок, в каких программах или местах программ они
обычно возникают и как их распознать.
Инцидентом следует считать любое сообщение о сбое в системе или дефекте графического
интерфейса, поступившее от пользователя системы через службу технической поддержки.
© geekbrains.ru 2
завел её, нажал на газ, но машина не выполняет свою основную функцию – не едет. Тогда
пользователь снова пошел в фирму, где ему продали бесколёсное авто, и сообщил всем, кому
посчитал нужным, о том, что машина с дефектом. Ну и, конечно, потребовал свои деньги назад.
Ошибки компиляции возникают на стадии компиляции кода. Это могут быть ошибки в синтаксисе,
неправильное использование конструкций языка (например, оператор else в операторе for),
использование несуществующих объектов, методов или свойств, ссылки на несуществующие
библиотеки. Об этих ошибках также сообщает среда разработки при компиляции.
Ошибки периода выполнения возникают при выполнении программы, когда операционная система
или виртуальная машина обнаруживает, что программа пытается выполнить недопустимое или
невозможное действие (например, заполнить объём памяти, гораздо превышающий её реальный
объём, или выполнить деление на ноль). Например, выражение double ratio = firstValue / sum
синтаксически является правильным, поэтому если вдруг sum = 0, то обнаружить эту ошибку можно,
только когда программа запущена.
При тестировании приходится иметь дело только с ошибками периода выполнения, поскольку первые
два типа выявляются ещё на этапе кодирования.
● синтаксические;
● семантические;
● прагматические.
При тестировании ищутся, конечно же, прагматические ошибки, поскольку все остальные типы
ошибок находятся ещё на стадии программирования.
© geekbrains.ru 3
© geekbrains.ru 4
Например, многие тестировщики знают, что очень вероятно получить ошибку, введя в поле очень
большое значение, какие-нибудь нестандартные данные или комбинации данных, выполнив
несколько действий одновременно и т. д.
Иногда можно предположить ошибку, наблюдая её симптомы, Например, можно заметить, что
некоторая операция выполняется слишком медленно. Если выполнить эту операцию много раз
одновременно, можно получить крах или зависание приложения.
Чтение исходного кода также может помочь догадаться о возможных ошибках. Если на каком-либо
участке программы неряшливый код и невнятные комментарии, то очень вероятно обнаружить
ошибку в этой части программы.
© geekbrains.ru 5
В этой методике приложение представляется как незнакомый город, а тестировщик – как турист.
Джеймс Витаккер развил идею Майка Келли. В своей книге «Exploratory Software Testing» он описал
следующие типы туров:
Под деловым центром тут понимаются те функции, ради которых пользователи приобретают
приложение, те фичи, которые рекламируют маркетологи. Поэтому туры по деловому центру
сосредотачиваются на тестировании главных функций приложения, а также они могут
демонстрировать сценарии использования этих функций клиентам.
● Тур по путеводителю (Guidebook Tour). Из путеводителя турист узнает всё о самых лучших
местах города: фешенебельных отелях, хороших магазинах, достопримечательностях.
Подобно путеводителю, руководство пользователя для продукта показывает, как
пользоваться самыми лучшими функциями ПО. При тестировании этим методом нужно чётко
следовать руководству пользователя, не отклоняясь от написанного. Желательно
использовать только позитивные кейсы.
© geekbrains.ru 6
● Тур по ориентирам (Landmark Tour). Здесь тестировщик пишет список важных фич
приложения, причём в том порядке, в котором они должны быть пройдены (порядок тоже
важен).
● Тур интеллектуала (The Intellectual Tour). Суть тура в том, чтобы задавать приложению
сложные и неожиданные задачи, например, выполнять сложные, но реалистичные сценарии,
обычно нацеленные на проверку работы с большими объёмами данных, проверку скорости
работы – например, в проигрывателе прослушать аудиофайл длительностью в 10 часов,
создать в текстовом редакторе объёмный файл, попытаться сохранить файл с очень длинным
именем, позвонить на мобильный телефон, на котором запущено приложение, выполнять с
большой скоростью какие-либо действия в приложении, в форме ввода заполнить все поля
некорректными данными и т. д.
Типичные баги:
● Тур службы доставки (FedEx Tour). В приложении довольно часто вводятся какие-то данные
(ФИО, адресные данные, названия, денежные суммы и т. д.). Эти данные потом могут
использоваться в приложении: просто отображаться на экране, изменяться, куда-то
отправляться или удаляться. В туре службы доставки задача тестировщика заключается в
том, чтобы отследить полный цикл прохождения данных, а именно выполнить по очереди все
возможные операции с введенными данными.
● Внеурочный тур (The After-Hours Tour). Если пользователь закрывает приложение, то это
ещё не означает, что оно прекратило свою работу. Приложение может архивировать данные,
© geekbrains.ru 7
создавать бэкап, получать обновления и т. д. Смысл тура в том, чтобы проверить эти
операции.
Типичные баги:
● Тур мусоросборщика. Этот тур похож на выборочную проверку ПО, в процессе которой
тестировщик должен методично переходить от одной функции приложения к другой, вызывать
один диалог за другим, проверять какой-то простой сценарий, не углубляясь в подробности.
Например, наличие и правильность заголовков на всех диалоговых окнах, зеленый цвет
кнопки «Сохранить» везде, где она присутствует, наличие подписи к статье, указывающей
общее количество комментариев, везде, где эта статья упоминается и т. д.
Типичные баги: зависят от проверяемого сценария (если проверяется текст элементов, то ошибки
будут лингвистическими, если какой-то функционал – функциональными).
В ПО устаревшие части также могут быть плохо связаны или, напротив, сосредоточены все в одном
месте программы. Исторические районы ПО – это, например, унаследованный код (legacy code),
функции, созданные в старых версиях программы, исправления старых багов. То есть, это места,
связанные со старыми версиями, давно написанным функционалом или кодом. Исторические туры
направлены на проверку старой функциональности и старых ошибок.
● Музейный тур (The Museum Tour). Иногда код бывает «музейным». Этот такой код, который
очень давно не менялся. Такой код, после его переноса в новую среду может вообще не
работать. Также он может стать непригодным после ревизии кода. Найти этот старый код
можно по дате изменения в репозитории. Например, если создают новое приложение на
платформе IOS, по функционалу схожее с другим приложением на другой платформе, при
этом могут скопировать лишний код или ресурсные файлы, которые могут стать причиной
проблем в работе нового приложения.
Типичные баги:
○ падения приложения;
○ функциональные ошибки;
○ несоответствия стандартам и гайдлайнам;
○ неоправданное увеличение объёма приложения.
● Тур предыдущей версии (The Prior Version Tour). После обновления использование
приложения не должно вызывать у пользователя. Новый функционал должен быть таким,
чтобы пользователь мог легко адаптироваться к нему. Тестировщик это также должен
проверять при тестировании обновления. Особенно это важно, когда вырезается какой-то
© geekbrains.ru 8
функционал, меняется интерфейс и даже когда исправляется старый баг, который некоторые
пользователи могли использовать как фичу.
Типичные баги:
○ ошибки юзабилити;
○ функциональные ошибки, связанные с исключением какой-то функциональности,
потерей данных, ошибками в логике работы приложения.
● Тур актёра второго плана (The Supporting Actor Tour). Гиды, как правило, рассказывают о
самых популярных местах города, но о том, что ещё интересного находится рядом с ними,
умалчивают. Тур актёра второго плана нацелен на проверку таких мест в ПО, проверяется не
главный функционал, а тот, что находится рядом, не такой заметный, но тоже нужный
пользователям.
Типичные баги: могут быть разными, но чаще это баги интерфейса, лингвистические и некритичные
функциональные ошибки.
● Тур по тёмным переулкам (The Back Alley Tour). Это путешествие по фичам, которые могут
быть вообще не востребованы пользователями, по фичам, которые представляют для
пользователей наименьший интерес, приносят наименьшую пользу. Тестировщик может
воспользоваться статистикой использования функций приложения (если таковая имеется) или
же может спросить сотрудников, которые наиболее часто взаимодействую с пользователями
(например, служба технической поддержки).
Типичные баги:
● Тур любителя ночной жизни (The All-Nighter Tour or Clubbing Tour). Некоторые
приложения могут жить в режиме non-stop, так что иногда бывает полезно проверить, сколько
может выдержать приложение без перезагрузки. Например, можно соединиться с сервером и
долгое время (неделю, месяц) не разрывать соединение, запустить приложение и долгое
время работать в нём, не перезапуская.
Типичные баги:
© geekbrains.ru 9
В каждом городе есть туристические районы, где много сувенирных лавок, ресторанов и других
заведений, зарабатывающих на туристах. В тестировании ПО туры по туристическим районам – это и
короткие забеги, направленные на проверку каких-либо специфических фич, и длинные поездки по
всем местам, которые хочется увидеть. Эти туры нацелены на быстрое «посещение»
функциональности – просто чтобы сказат: «Я тут был».
● Тур коллекционера (The Collector’s Tour). Многие туристы хотят сохранить память о
посещённых местах и покупают магнитики, открытки и прочие сувениры. Так в этом туре
собираются различные артефакты приложения, всё то, что пользователь может оставить себе
«на память». Например, в браузере – история, закладки, посещённые страницы; в файловом
менеджере – файлы различных форматов, папки и пр.
Типичные баги: могут быть разными: функциональные (обычно некритические), баги удобства
использования, интерфейса, локализации, полноты справки.
● Тур супермодели (The Supermodel Tour). Этот тур для проверки внешнего интерфейса
приложения: красив ли, привлекателен ли он, насколько правильно используются цвета, нет
ли лишних артефактов в интерфейсе, насколько быстро проигрывается анимация,
соответствует ли интерфейс стандартам и ожиданиям пользователя. Цель тура – сделать так,
чтобы приложение смотрелось великолепно, как супермодель на подиуме.
Типичные баги:
○ проблемы интерфейса;
○ баги удобства использования.
● Тур шопоголика (The TOGOF Tour – Test One Get One Free). Некоторые туристы едут в тур
специально за покупками. При этом они посещают распродажи, где желающих купить какую-то
вещь «по дешёвке» бывает очень много, и за эту вещь приходится побороться. Суть тура в
том, чтобы создать ситуацию, когда несколько копий одного приложения используют один и
тот же объект или одни и те же данные одновременно. Например, запустить две копии
приложения и обращаться из них одновременно к одному и тому же файлу, к одному и тому
же участку виртуальной памяти, удалять или редактировать одновременно один и тот же
объект, одновременно отправлять по сети на сервер конфликтующие данные и т. д.
Типичные баги:
● Тур по шотландским пабам (The Scottish Pub Tour). Далеко не все интересные вещи можно
узнать из путеводителей. Иногда, чтобы узнать что-то новое и интересное о городе, нужно
заглянуть в паб, порасспрашивать там местных. На форумах, в блогах, общаясь с
пользователями и просто так блуждая по приложению, можно обнаружить интересные фичи и
даже такие, которые действительно полюбились пользователям. Этот тур лучше всего
подходит для больших приложений. Его задача – не только проверить приложение, но и
получше с ним познакомиться, в идеале – путём общения с пользователями.
© geekbrains.ru 10
● Тур, отменённый из-за дождя (The Rained-Out Tour). Бывает такое, что внезапно
начавшийся дождь отменяет прогулку, заставляет остановиться, чтобы согреться и высушить
одежду. В этом туре нужно отменять любой начавшийся процесс – скажем, нажимать кнопку
«Отмена», закрывать приложение клавишами Alt+F4, Esc или через диспетчер задач. Или,
например, в браузере останавливать загрузку, переходить во время загрузки страницы на
другую страницу с помощью кнопок «Назад», «Вперёд», останавливать или обновлять
страницу. Тестировщик должен убедиться, что отмена вообще возможна, что её можно
выполнить, при этом приложение возвращается в состояние до внесения изменений, что
отмена действий не вызывает проблем в работе приложения, что сохранённые ранее данные
не повреждаются и не теряются (нужно не только проверять приложение через интерфейс, но
и обращать внимание на другие части приложения, например, проверять данные в БД), что
отменённое действие можно вызвать повторно и успешно выполнить.
Типичные баги:
● Тур домоседа (The Couch Potato Tour). Здесь нужно идти по «дефолтному» пути, не меняя
значений, установленных по умолчанию, заполняя только обязательные поля в формах,
попытаться перейти между экранами, не вводя никаких данных и не нажимая кнопок, не
совершать никаких комплексных действий, то есть идти по пути «наименьшего
сопротивления».
Типичные баги:
○ проблемы юзабилити;
○ функциональные ошибки.
Неблагополучный район – это опасный для туризма район, где в любой момент может произойти
что-то нехорошее. В приложении это места, которые часто подвергаются атакам недобросовестных
пользователей.
● Тур диверсанта (The Saboteur Tour). Здесь задача тестировщика – попробовать подорвать
работу приложения любым возможным способом. Для этого нужно начать выполнять какое-то
действие, определить ресурсы, необходимые приложению для выполнения этого действия,
удалить или ограничить доступ к этим ресурсам, повторить действие. Например, отключить
интернет, ограничить размер оперативной памяти, удалить файл, который считывает
приложение, ограничить права на выполнение операции, попытаться выполнить поиск или
запрос несуществующего объекта, запустить приложение на изначально проблемном
окружении, выполнить действия над битыми файлами или данными, запустить одновременно
с другим приложением, которое использует те же ресурсы.
Типичные баги:
© geekbrains.ru 11
● Антисоциальный тур (The Antisocial Tour). В этом туре надо работать с приложением так,
как другие пользователи вряд ли будут работать, то есть делать всё, что противоречит логике
приложения, вводить данные, которые должны быть запрещены.
Типичные баги:
Типичные баги:
Практика
Пример: задача 1. Предугадывание ошибок в части приложения
Имеется форма с таблицей, предназначенной для просмотра информации о покупках. По ссылке с
идентификатором записи открывается карточка с подробным описанием сделки.
© geekbrains.ru 12
Во-первых, неясно, какое это приложение: настольное, мобильное или веб-приложение. Поэтому
будем рассматривать все варианты.
Далее нужно проанализировать эту часть приложения. Для этого нужно будет ответить себе на ряд
вопросов, например:
Например, такие:
● Сама таблица:
○ Не выполняется сортировка по какому-либо из столбцов.
○ Направление сортировки не соответствует значку сортировки.
○ При выполнении другой сортировки значок первой сортировки не пропадает.
○ Сортировка по столбцу «Дата покупки» осуществляется только по дате, без учёта
времени.
○ Сортировка по «ФИО покупателя» осуществляется только по первому символу ФИО.
© geekbrains.ru 13
Если перед нами веб-приложение, будут ли предполагаемые ошибки отличаться? Какие ошибки
можно предположить?
● Сама таблица:
○ Если в колонках есть очень длинные значения, таблица растягивается и уходит за
пределы экрана.
○ Ссылки в колонке «Идентификатор» ведут на несуществующую страницу.
● Карточка сделки:
○ Слишком большая, не помещается в минимально допустимое разрешение экрана.
(Если карточка – это отдельная страница, то такая ошибка не должна проявиться.)
○ Нет кнопки/ссылки, чтобы перейти назад к просмотру таблицы.
● Форма с таблицей:
○ Нет возможности уйти со страницы с таблицей, перейти к предыдущей странице.
Попытайтесь предугадать самостоятельно, какие ошибки могут появиться, если это мобильное
приложение.
© geekbrains.ru 14
4. Разблокировать контакт.
5. Отсортировать контакты.
6. Найти информацию в беседе.
7. Отредактировать личные данные.
8. Изменить тему беседы.
9. Скрыть беседы.
10. Показать скрытые беседы.
Например, рассмотрим создание резервной копии списка контактов. В первую очередь, конечно,
мы проверим, что копия вообще создаётся, то есть добавим несколько контактов и выполним
операцию. В результате файл с расширением .vcf должен сохраниться в выбранную папку.
Но какие ошибки тут могут быть?
Например, такие:
● Сохранение списка контактов может не работать даже при нормальных условиях
использования функции.
● Сохранённый файл может не соответствовать формату, при этом восстановление контактов
из него будет невозможно.
● Может возникнуть ошибка, если мы попытаемся сохранить пустой список контактов или
слишком большой список контактов.
● Можно получить ошибку, если попытаться сохранить список контактов, не указав его имя.
● Ошибка при попытке сохранить список контактов на переполненный диск и пр.
Далее проверим восстановление списка контактов из резервной копии.
Тут можно предположить, например, такие ошибки:
● Может возникнуть исключение, если выбран файл неподходящего формата (не .vcf).
● Ошибка, если выбран файл бэкапа, сохранённый в другой, старой версии Skype.
● Ошибка при попытке выбрать файл, к которому у пользователя нет прав доступа.
● Зависание при попытке загрузить очень большой список контактов и т. д.
Теперь составим список предполагаемых ошибок для блокировки контакта. Блокировать контакт
можно тремя способами: из меню Беседа – Заблокировать или из Контакты – Дополнительно –
Управление чёрным списком, а также из контекстного меню.
Какие ошибки можно предположить для первого варианта? Например:
● После блокировки контакта он всё ещё может отправлять вам сообщения и/или звонить.
● Функция «Заблокировать» недоступна для незаблокированного контакта.
● Функция «Заблокировать» доступна для заблокированного контакта.
● Функция «Заблокировать» доступна, даже когда контакт не выбран, при этом её выполнение
может привести к исключению, а может просто ничего не происходить.
● После того, как контакт заблокирован, его нельзя разблокировать, недоступна такая функция.
● Вместо блокировки контакта он удаляется из списка и т. д.
Какие ошибки можно предположить для второго варианта? Форма для
блокирования/разблокирования пользователей выглядит следующим образом:
© geekbrains.ru 15
Если блокируем пользователя из контекстного меню, то какие ошибки возможны? Например, такие:
© geekbrains.ru 16
Теперь мы предлагаем вам выбрать одну из остановок тура и попытаться предугадать ошибки
самостоятельно, после чего будет совместное обсуждение результатов с другими учениками, которые
выбрали аналогичную фичу (и с остальными – по желанию).
Все найденные можно отнести к категории некритичных: в основном это функциональные ошибки и
ошибки удобства использования.
Таким образом, предугадывание ошибки методом туров дает более комплексное обследование
приложения.
Домашнее задание
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