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

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

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

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

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

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

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

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

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

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

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

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

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


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





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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См также:
Пример сессии исследовательского тестирования (Landmark tour) — Затестили Persistency в калькуляторе windows 8.1. Видео на Youtube



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

2 комментария: