Тестировщик новой формации (ТНФ)
-
Это карта про МИССИЮ Тестировщика новой формации (ТНФ)
-
«Тестировщик - главный АДВОКАТ пользователя»
-
Адвокат - защищает интересы своего клиента
-
КАКИЕ интересы пользователя / заказчика защищает тестировщик?
-
Функционал решает ПРОБЛЕМУ пользователя
-
Функционал удобный в использовании
-
Функционал «НЕ глючит»
-
Функционал выдан пользователю в нужное время (в срок)
-
-
КАК при производстве ПО могут быть нарушены интересы пользователя?
-
Аналитик не узнал / не понял, в чём ПРОБЛЕМА пользователя
-
Аналитик понял проблему, но придумал РЕШЕНИЕ, которое не решает / частично решает эту проблему
-
Придуманным функционалом будет неудобно пользоваться
-
Аналитик не смог получить от пользователя / стэйкхолдеров качественный ФИДБЭК на своё решение
-
Аналитик не смог донести своё решение до разработчиков и тестировщиков
-
Разработчики поняли по-своему
-
Тестировщики поняли по-своему
-
«Авторская приёмка» от Аналитика. Откуда взялась эта практика?!
-
Изначально исходят из 2-х предположений:
-
Разработчики могли реализовать не то, что задумал аналитик!
-
Тестировщики не до конца знают, что задумал аналитик!
-
-
На самом деле...
- НИКТО до конца не знает, что задумал аналитик
-
Это вопиющий СИМПТОМ того, что что-то не так в процессе разработки
-
-
-
На вход к разработчикам и тестировщикам приходят "сырые", некачественные требования (описанное решение)
-
Недостаточно проработаны детали
-
Многое осталось лишь в «голове» у Аналитика
-
Требования можно по-разному интерпретировать
-
Редко учтены (до начала разработки) архитектурные ограничения
-
Факторы, ухудшающие качество требований:
-
Время, которое даётся на анализ - НЕ позволяет сформировать достаточно проработанные требования
-
Уровень аналитиков - НЕ позволяет сформировать требования с ясной концепцией, лаконично сформулированные
-
Аналитик работает в одиночку - у него нет диалога («варится в собственном соку»)
-
при попытке дать самому себе обратную связь (шизофрения, раздвоение личности)
-
при попытке всё учесть - «паралич анализа»
-
может не заметить очевидных вещей
-
может много времени потратить на анализ «ошибочной» ветки
-
...
-
-
-
И вот разработчик получает на вход такие требования...
-
Необходимо много итераций для выяснения концепции, деталей...
- на ходу «мутируют» Требования
-
Многое из того, что «прояснили», НЕ фиксируется
-
Всё равно часть Требований Разработчик интерпретирует по-своему
-
Когда Разработчик начинает кодировать, у него НЕТ чётких критериев, когда функционал уже готов
- когда он (разработчик) может со спокойной совестью передавать код в тестирование
-
Разработчик много времени тратит на то, чтобы представить себе КАК это должно работать (построение ОБРАЗА продукта)
-
И это хороший разработчик!
-
А плохой - начинает кодировать в стиле: «так... посмотрим во что это всё выльется...»
-
Кстати, основная проблема при освоении TDD - это то, что Разработчики не привыкли сразу чётко определять конечный образ продукта / функционала
-
-
-
-
В процессе разработки не понятно, успеваем или нет... следовательно, нет возможности во-время откорректировать планы
-
Этап тестирования и баг-фиксинга...
-
Растягивается...
- (выходит за рамки плана)
-
На выходе слабого качества продукт / функционал
-
Почему?
-
Мало времени...
-
На этот этап выделяется мало времени
-
И от этого малого времени пытаются "откусить", когда разработчики не успевают доделать функционал
- (используют как "буфер" при неуспевании в разработке)
-
Что "съедает" время на этом этапе?
-
Выяснение, баг это или фича
- Во время разработки разработчики договорились с аналитиком об изменении требований, а тестировщик не в курсе
-
Часто этап начинается с багов уровня Blocker и Critical
-
Невозможно продолжать тестирование
-
Меньше времени останется на поиск и правку багов с меньшим уровнем
- Соответствующее качество на выходе
-
-
В первой волне правятся не только самые приоритетные баги
-
Баг-репорты не "конфетки"
-
Возникает необходимость в серьёзной переработке кода
-
-
-
Всё тестирование "приехало" в конец
-
При правке багов - постоянный импакт (регресс)
-
Часть багов уже по-нормальному не починить, т.к. нет времени менять архитектуру
-
-
-
Главное не доделали, а не особо нужное - реализовали
-
Функционал реализовали, и... стэйкхолдеры должны придумывать, как разработанный функционал:
-
продать
-
настроить
-
внедрить
-
-
-
КАК тестировщику защитить интересы пользователя?
-
надо на разных этапах «ДРАЙВИТЬ» процесс разработки в интересах пользователя
-
КАК «драйвить» процесс разработки в интересах пользователя?
-
Постоянно возвращать фокус внимания команды на пользователя, его интересы
-
Нужно, чтобы кто-то постоянно напоминал участникам процесса о пользователе...
-
Как он пользуется системой?
-
Как он будет пользоваться новым функционалом?
-
Удобно ли ему будет пользоваться новым функционалом?
-
Решает ли новый функционал его проблемы?
-
-
Постоянно искать информацию (аккумулировать), КАК пользователь работает / будет работать с системой
-
впр: Кто может быть источником информации?
-
Как работает сейчас?
-
Пресэйл
-
Аналитик внедрения
-
Service Request
-
Энхансмент (пожелание на доработку)
-
Инженер поддержки
-
Продуктовый аналитик
-
(?) Эксплуатационная документация
-
-
Как будет работать?
-
Пресэйл
-
Аналитик внедрения
-
Продуктовый аналитик
-
Конкурсная документация
-
Обучающая документация / Курсы
-
Презентационные материалы
-
Энхансмент (пожелание на доработку)
-
Мы, “влезшие в шкуру” пользователя
-
-
-
-
Почему участники процесса со временем теряют фокус на пользователе и его интересах?
- Думать о интересах пользователя - сложно и проблематично (возникает множество «неудобных» вопросов)
-
-
Постоянно пытаться узнать / понять как пользователь работает (будет работать) с системой, и использовать это...
-
для выявления КАТЕГОРИЙ пользователей, чьи интересы мы в 1-ую очередь защищаем?
-
чтобы «ВЛЕЗТЬ В ШКУРУ» пользователя
-
представить себе КАК пользователь будет пользоваться разрабатываемым функционалом
-
тогда можно обоснованно предполагать, как пользователь будет работать с функционалом
-
-
чтобы при анализе концепции и требований уметь определить, оптимальное ли решение проблемы пользователя выбрано
-
использовать для АРГУМЕНТАЦИИ при защите интересов пользователя
-
при анализе требований и концепций
-
в описании БАГ-ов
-
-
источник КОНКРЕТИКИ для тестовых сценариев
- в т.ч. показательная тестовая конфигурация (похожая на действительность)
-
для выявления ПРИОРИТЕТОВ (важности)
-
какие баги не позволяют пользователю получить конечный результат?
-
базовых сценариев работы системы у заказчика
-
действия пользователя
-
действия системы
-
обрабатываемые данные
-
-
какие тест-кейсы прогонять в 1-ую очередь?
-
-
чтобы понимать на сколько найденный баг критичен
- выдавать разработчику в первую очередь приоритетные баги
-
. . .
-
-
ВЫЯВЛЯТЬ на уровне анализа требований следующие ПРОБЛЕМЫ:
-
НЕ ПРОЯСНЕНА (не выявлена) ПРОБЛЕМА, которую должен решить разрабатываемый функционал
- Вся команда должна однозначно понимать целевую задачу пользователя
-
новый функционал НЕ РЕШАЕТ (не до конца решает) ПРОБЛЕМУ пользователя
- (пользователь, используя функционал, не может решить целевую задачу)
-
придуманный функционал не соответствует (противоречит) концепции
-
новый функционал ПОРОЖДАЕТ новые ПРОБЛЕМЫ
-
в требованиях не прописаны (не продуманы) все альтернативные сценарии
-
в требованиях не прописаны сценарии, когда «что-то пошло не так»
-
в требованиях есть неоднозначности и противоречия
-
в требованиях отсутствуют «очевидные» на взгляд аналитика вещи...
-
которые разработчик может интерпретировать на свой лад
-
которые разработчик может не реализовать (так как они для него не очевидные)
-
-
функционал будет неудобен в использовании
-
-
Быть гарантом того, что участники процесса правильно поняли друг-друга
-
Выявлять «неочевидности» и «недосказанности» в требованиях
- (в противном случае, разработчик может их интерпретировать на свой лад)
-
С помощью сквозных тест-кейсов (и не только сквозных) вырабатывать общее понимание:
-
того, как должен работать разрабатываемый функционал
-
того, как пользователь будет работать с функционалом
-
-
Аналитик может положиться на то, что тестировщик не хуже него знает, КАК должен работать функционал (как его задумал аналитик)
-
значит минимизируется количество «квестов» («футбола») между разработчиком, тестировщиком и аналитиком из серии «баг это или фича»
-
часть вопросов от разработчиков из серии «как здесь должно работать» будут направляться не аналитику, а тестировщику
-
-
-
-
ЧТО НУЖНО, чтобы у тестировщика БЫЛА возможность «драйвить» процесс разработки?
-
Участники процесса должны позволить тестировщикам существенно воздействовать на процесс
-
Участники процесса должны захотеть помощи от тестировщиков
-
ДЛЯ ЭТОГО необходимо...
-
Сменить основную парадигму...
-
НЕ КРИТИКОВАТЬ
-
вместо этого...
-
СТРАХОВАТЬ
-
ПРОЯСНЯТЬ
-
инициировать ДИАЛОГ
-
Для чего нужен диалог?
-
Прояснять...
-
Выявлять...
-
Катализировать решения...
-
-
Что для диалога нужно?
-
ПРЕДМЕТ диалога - ВОПРОСЫ
-
«А правильно ли я тебя понял, что...?»
- (провоцирующий вопрос)
-
«Какое поведение системы мы ждём в таком-то случае?»
-
«Как пользователь будет действовать в такой-то ситуации?»
-
Шикарный вопрос - это вопрос на основе тест-кейса
-
или тест-комплекта
-
при условии, что тест-кейс: читабельный, лаконичный, конкретный
-
-
-
Стремление ПРОЯСНЯТЬ (а не критиковать)
-
-
Что нужно, чтобы с тобой шли на диалог?
-
чтобы участники диалога ощутили «профит» от диалога
-
например:
-
у участника что-то прояснилось
-
участник чувствует страховку
-
-
-
-
для этого...
-
быть ПРОАКТИВНЫМ
-
быть КАТАЛИЗАТОРОМ
-
проявлять ЭМПАТИЮ
-
внимательно слушаем
-
сначала пытаемся понять логику собеседника
-
уточняющие / проясняющие вопросы
- позволяют собеседнику понять, что ты его понял (услышал)
-
-
только потом к понятому подходим критически (анализируем)
- критические вопросы (дух «уточнения» лучше оставить)
-
-
-
-
-
Каждый участник процесса должен получить свой ПРОФИТ от работы тестировщика
-
именно, конкретные участники, а не вся команда проекта / продукта
-
ПРОФИТ для аналитика
-
(психология) Тестировщик не критикует его, а страхует
- аналитику не надо «защищаться»
-
тестировщик на ранних стадиях выявляет следующие проблемы (таким образом СТРАХУЯ аналитика):
-
были забыты интересы пользователя
-
концепция не решает проблему пользвателя
-
придуманный функционал не соответствует (противоречит) концепции
-
при написании требований что-то было упущено
-
в требованиях есть неоднозначности и противоречия
-
Блин, но это же проблемы аналитика, скажете вы! Почему мы должны помогать ему их решать?
-
Да, можно сказать «такая у него работа», свесить лапки и ждать «идеальную» спеку
-
по аналогии с адвокатом...
- это всё равно, что адвокату полностью положиться на внимательность, объективность и усердие следователя от обвинения
-
-
-
тестировщик минимизирует вероятность того, что:
-
разработчик «неочевидности» и «недосказанности» интерпретирует на свой лад
-
на этапе тестирования готового функционала будут найдены баги / недоработки аналитики
- аналитику не придётся оправдываться / краснеть перед руководством и разработчиками
-
-
аналитик может положиться на то, что тестировщик не хуже него знает, КАК должен работать функционал (как его задумал аналитик)
-
значит минимизируется количество «квестов» («футбола») между разработчиком, тестировщиком и аналитиком из серии «баг это или фича»
-
часть вопросов от разработчиков из серии «как здесь должно работать» будут направляться не аналитику а тестировщику
-
-
аналитик, ощущая страховку со стороны тестировщика, может избежать «паралича анализа», пытаясь всё-всё учесть
-
-
ПРОФИТ для разработчика
-
после доработок требований по результатам тест-анализа разработчик получает на вход более проработанные требования
- отпадает множество потенциальных вопросов / уточнений
-
«богатые» сквозные тест-кейсы (СТК)
-
разработчик может разобраться, как с функционалом будут работать пользователи
-
хороший критерий готовности работающего полезного функционала
-
-
хороший тест-комплект - это прекрасные идеи для комплекта юнит-тестов / интеграционных тестов
-
разработчик может положиться на то, что тестировщик хорошо знает, КАК должен работать функционал (как его задумал аналитик)
- значит минимизируется количество «квестов» («футбола») между разработчиком, тестировщиком и аналитиком из серии «баг это или фича»
-
придётся меньше «чинить» багов / недоработок аналитики
- меньше разрушается архитектура - отпадает необходимость приделывать «костыли»
-
тестировщик выдаёт разработчику в первую очередь приоритетные баги, так как знает, КАК пользователь будет пользоваться функционалом
-
хорошо описанные баги
- не надо по-напрасну напрягать мозг, чтобы понять, что же там имел ввиду тестировщик
-
-
(!) нужно им помочь сделать свою работу как можно лучше
-
-
Всё это повлечёт за собой уважение и доверие со стороны членов команды
-
-
-
-