- Креативность в изобразительном искусстве и в тестировании
- Стоя возле чистого холста: создание стратегии
- Имплементация: добавление слоев и сохранение фокуса
- Работа с холстом
- Готовая картина: когда отложить кисть
- Делитесь своими работами
«Конечная цель искусства — это самовыражение и общение, а также эксперименты и инновации, исследование вещей и фиксация, чтобы сохранить и показать другим. Тот же принцип применим и к тестированию. Мы экспериментируем, изучая продукт, и делимся результатами с заинтересованными сторонами».
Креативность в изобразительном искусстве и в тестировании
«Сколько себя помню, я всегда интересовалась изобразительным искусством. Особенно мне нравилось рисовать, всем, от угля до масла. Я умоляла маму записать меня в художественную школу, но этого не произошло… по крайней мере, пока я была ребенком. Вместо этого я стала IT-специалистом и сейчас работаю инженером по качеству. Никаких сожалений! Однако моя любовь к изобразительному искусству продолжала жить, и в прошлом году я наконец записалась на курсы рисования.
К своему удивлению, я заметила много общего между рисованием и тестированием программного обеспечения. Ни у художников, ни у тестировщиков нет жестких правил, по которым они выполняют свою работу. Вместо этого они экспериментируют, изучая, как достичь оптимального результата. Начиная с созерцания чистого листа бумаги перед собой и заканчивая представлением своей работы миру, мы стремимся получить отличный продукт.
Стоя возле чистого холста: создание стратегии
Художники никогда не начинают с того, что рисуют объекты прямо на пустом холсте. Сначала они делают подмалёвок: создают базовый цвет, который помогает определить контраст и оттенки. Это придает готовой работе глубину и объем. Его также можно использовать в качестве наброска для будущего сочетания цветов и композиции.
Для тестировщиков «подмалевок» — это стратегия тестирования, или набор идей, которыми мы руководствуемся при разработке тестов. Стратегия тестирования может содержать следующее:
- Дорожная карта: предполагаемый график реализации, включая даты выпуска внутренних и публичных релизов и объем имплементации.
- Детали проекта: команды, участвующие в разработке (включая связанные команды), функциональная спецификация, прототипы и рекомендации по дизайну, ответственные за предоставление юз-кейсов, ссылки для отслеживания разработки и дефектов, элементы продукта (разделы, функции)
- План коммуникации: каналы для связи (например Slack), регулярная синхронизация (обсуждение текущего состояния продукта, проблем, которые необходимо решить, статуса тестирования)
- Описание продукта: область тестирования продукта
- Критерии качества: согласованность данных, удобство использования, целевые метрики производительности и так далее. Должны быть согласованы со стейкхолдерами
- Оценка рисков: критические пути, риски продукта и процессов, а также планы по снижению рисков
- Тестовые данные и инструменты: окружение, используемое для тестирования, доступ к продукту — конкретный URL/feature flag для ее включения, список тестовых аккаунтов с описанием их особенностей, различные инструменты, используемые для тестирования — тестовые сценарии, автоматизированные тесты, API-коллекции и т. д.
- Мероприятия по тестированию: Виды тестирования, которые будут проводиться, например, автотесты API или исследовательское тестирование, с указанием так называемых хартий. (Подробнее о хартиях: ExploreIt! by Elisabeth Hendrickson.)
Содержание документа стратегии тестирования будет зависеть от контекста. Приведенный выше пример соответствует формату, который с течением времени хорошо зарекомендовал себя в моей команде.
И подмалёвки в рисовании, и стратегии тестирования помогают нам визуализировать желаемый результат, увидеть в целом, что и как нужно сделать.
Имплементация: добавление слоев и сохранение фокуса
Выбор инструментов
Когда общий план согласован, а идеи четко сформулированы, пора приступать к реализации. Как художник смешивает краски и использует различные кисти, так и тестировщики готовят и пускают в дело свои инструменты.
Невозможно перечислить все инструменты, которые тестировщики используют в своей работе. Инструментарий определяется контекстом и подбирается в зависимости от выполняемой нами деятельности:
- Проектирование тестов и управление:
- Mind maps и другие инструменты для разработки тестовых стратегий
- Артефакты тестовых данных — электронные таблицы, различные генераторы, инструменты анонимизации
- Инструменты визуализации, для выявления рисков и зависимостей
- Инструменты для сбора и обмена информацией о продукте, например, Confluence с инструкциями и другой документацией
- Взаимодействие с продуктом:
- Инструменты разработчика в браузерах
- Автоматизированные тесты
- Инструменты непрерывной интеграции / непрерывной разработки (CI/CD)
- Моки и стабы для моделирования состояний и поведения
- Инструменты для тестирования API
- Инструменты нефункционального тестирования (например, нагрузочного тестирования или тестирования безопасности)
- Инструменты мониторинга
- Отчеты:
- Инструменты для записи видео с экрана
- Инструменты для создания репортов
- Инструменты для оценки тестового покрытия
Этот список не исчерпывающий, но дает представление о том, что я использую ежедневно.
Когда инструменты готовы, художник (или тестировщик) творит волшебство. Стиль и техника, конечно, отличаются от человека к человеку. Но в любом случае слой за слоем, от широких мазков до мелких штрихов, появляется картина.

Натюрморт, слой за слоем
Работа с холстом
С точки зрения тестирования, вы можете добавлять уровни, варьируя сложность. Логично было бы начать с предварительного тестирования системы в целом — решает ли продукт (или функция) потребности пользователя? Работает ли «счастливый путь»? Это может показаться очевидным, но очень легко попасть в ловушку, если углубиться в некритичные детали (сфокусироваться на тестировании каких-то компонентов или проверять пиксельную идеальность UI), не протестировав критический путь.
Позвольте привести пример. Мы планировали реализовать новую функцию с поддержкой переменных внутри текста сообщения, для его персонализации. Другими словами, можно было написать что-то вроде «Hello {firstName}!», и в сообщении появлялось имя пользователя. Готовя стратегию тестирования, я определила возможные риски. Одна часть системы, связанная со сложной обработкой данных, показалась мне вероятным источником проблем. Поэтому, когда функция была готова к тестированию, я сначала проверила эту часть и обнаружила баг. Как я гордилась. Мое предчувствие не подвело, интуиция на высоте, знание системы и опыт. Я продолжила проверять эту часть системы и обнаружила еще несколько багов. Однако самая важная часть оставалась непроверенной. Я не проверила главную функциональность новой функции — отправку сообщения!
С тех пор я всегда начинаю тестирование с проверки основного сценария. И только после этого я проверяю, что система обратно совместима, что части приложения интегрированы, что компоненты реализованы в соответствии с проектом и обрабатывают данные так, как должны, и так далее.
Лучше визуализировать себе различные уровни тестирования — приемочное, системное, интеграционное и модульное — как слои, идущие сверху вниз от высокоуровневой валидации к более тонким деталям.
Готовая картина: когда отложить кисть
Как в живописи, так и в тестировании нужно знать, когда остановиться.

Картина готова?
Помните Мону Лизу? Леонардо да Винчи работал над ней почти семнадцать лет, пока не умер, так и не считая свою картину совершенной и законченной.
Художники могут работать над одной картиной десятилетиями, а тестировщики могут тратить, пусть не десятилетие, но тоже бесконечное количество времени на одну версию одного продукта. Чем ближе вы смотрите на реализацию, тем больше опасений у вас может возникнуть. Кажется, что всегда найдется еще один баг. Но если вам трудно остановиться, подумайте над тем, что, возможно, вы тестируете один небольшой и не очень важный аспект продукта и пренебрегаете системой в целом.
Секрет прост — просто отойдите, «посмотрите издалека», сделайте паузу. Это позволит увидеть перспективу. И спросите себя: «Цель достигнута?».
Делитесь своими работами
У каждого произведения искусства есть свое предназначение. Никто не тратит время на рисование картины, которую потом положат в ящик и забудут. Мы хотим показать свое мастерство. За каждым творением стоит идея, которой мы хотим поделиться с миром.

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