Почему-то принято считать, что тестирование — самая простая точка входа в мир IT. За годы работы в разных компаниях, странах и ролях — от тестировщика до Head of QA Redmadrobot — я успела на себе испытать разные подходы и наступить на разнообразные грабли. В этой статье постараюсь ответить на самые популярные вопросы и помочь начинающим QA-инженерам сориентироваться в том, что их ждет.
Открыть и потыкать Для начала разберемся с основным заблуждением: протестировать значит открыть, протыкать все кнопки и формы и наспамить багов. С этим убеждением я сталкивалась как среди тестировщиков, так и на уровне руководителей компаний.
В итоге у менеджеров, дизайнеров и разработчиков возникают вопросы: почему это тестирование лезет в продукт, код и дизайн? их задача проверять все возможные комбинации кнопок! Конечно, и это тоже. Но с тыканьем на кнопки справляются и приложения, например, MonkeyRunner для Android.
А кто будет тестировать зашитую логику, бекенд, краевые сценарии и остальное?
В теории в обязанности тестировщика входит
- составление тест-дизайна, тест-кейсов, стратегии тестирования
- репорт и проверка багов
- проверка и создание документов (артефактов) тестирования
- проверка безопасности
- рекомендации о выпуске сборки (продукта) — да-да, во всех утопичных постулатах прописано, что только QA/QC может дать добро на выпуск продукта.
О том, что разработка тест-дизайна и тест-кейсов не так проста, в большинстве компаний хотя бы догадываются, привлекая к этому и написанию кейсов для тест-дизайна QA Team Lead'ов или Senior QA. Или даже создают для этого отдельную роль — TC Designer (writer). Разнообразные стратегии проверки краевых значений, тестирование интерфейсов, нагрузочное и другие кейсы пишут Senior инженеры.
Само тестирование выполняют рядовые тестировщики — люди, в лучшем случае обладающие навыками пользователя компьютером и каким-то продуктом. Хотя некоторые сценарии и запуск SQL-скриптов, работа со сторонними tools доступны не каждому опытному пользователю. И бизнес считает нормальным содержать 20-30 таких специалистов-обезьянок, называя их тестировщиками.
Как можно догадаться (на самом деле можно!), это неправильно. Как с точки зрения бизнеса, так и по отношению к специалистам. Инженеры QA/QC могут принести куда больше пользы, если им доверять и вкладываться в их развитие.
Как минимум, всей команде не придется тратить время на изначально нежизнеспособные дизайн и бизнес-концепции — хороший QA/QC может выявить подобные кейсы еще на этапе разработки.
Чтение кода Чтобы быть по-настоящему полезным специалистом, тестировщик должен уметь читать код хотя бы на интуитивном уровне, понимать логику разработчиков и мыслить не только алгоритмами, но и процессами. В идеале еще и быстро адаптироваться к новым языкам и программам/средам.
Да, в идеальном мире процесс должен исполняться по модели чёрного ящика, но если сервис работает медленно, хоть и верно — может, стоит оптимизировать код? Или, к примеру, нужно спроектировать негативный сценарий — для подготовки такого теста может понадобиться что-то дописать в коде или подложить программе нужные данные. И да, это задача QA/QC-специалистов — вы же хотите, чтобы после прохождения тестирования у вас был качественный продукт?
Тестировщик должен не бояться заглядывать в код и помогать разработчику разбираться с проблемами. Ревью кода, дебаггинг и юнит-тестирование — не прерогатива разработчиков. Мы не ставим под сомнение их компетенции, но обеспечение качества — ответственность всей команды. Тестировщики же должны напоминать об этом и нести бремя контроля. QA — Quality Assurance — обеспечение качества, QC — quality control — контроль качества. Об этом полезно напоминать тем, кто не чувствует разницы.
Разве можно выстроить что-то грандиозное и круто управлять этим продуктом, не зная, как работает каждый винтик и гаечка?
Безудержная автоматизация Знать код не значит безудержно все подряд автоматизировать.
Почему-то считается, что тестировщики делятся на автоматизаторов и ручных (мануальных). И большинство ручных мечтает стать автоматерами.
Для начала оговоримся — чтобы идти в автоматизацию, нужно освоить основы тестирования, проектирования и дизайна кейсов. Так работать умеют ведущие специалисты, которые, кстати, понимают, что автоматизация не всем проектам и командам нужна.
Целесообразность автоматизации сильно зависит от специфики проекта: сроков, поддержки, повторяемости, стабильности и других параметров.
Давайте посчитаем, сколько средств уйдет на организацию инфраструктуры для автоматических тестов, поиск инженеров по автоматизации, разработку и — главное — поддержку автотестов? В большинстве случаев проще обойтись unit-тестами, их зачастую очень качественно делают девелоперы, и полным функциональным тестированием (сюда входит море всего).
Если нужно проверить, что продукт точно взлетит, к обязательному набору можно добавить бета-тестирование. И, конечно, нужно грамотно проводить приемочное тестирование (acceptance).
Если же требуется тестирование как отдельный этап, куда проще и эффективнее иметь поставленный процесс жизненного цикла продукта и человека или команду инженеров, способных самостоятельно покрыть задачи тестирования, контроля и обеспечения качества продукта. То есть, людей, которые априори знают область, инструменты и методы, а не стадо обезьян, которых повесили на разработчиков или руководителя проекта.
Отечественное тестирование Наверное, самая большая проблема в том, что представление о тестировании весьма смутное. Во многих компаниях подход к тестированию обезьяний, а в IT, где есть общее представление о процессах, наблюдаются проблемы с фиксацией на отдельных ролях или инструментах. Хотя к тестированию такой подход плохо применим.
Цели тестировщика в отношении продукта наиболее близки к целям бизнеса и стратегической цели компании. В то же время внутри компании это роль исследователя.
Чаще всего тестированию ставится задача повысить качество и уменьшить брак. За ее решением скрывается координация работы отделов, составление планов и организация тестирования и контроля качества, работа с разработчиками, составление базы кейсов и т.д. Для этого нужны полномочия, которые отделу тестирования чаще всего никто давать не готов, и команда, которой нет и в перспективе не планируется.
Но именно инженеры-тестировщики могут стать теми специалистами, которые организуют процессы контроля и обеспечения качества и станут связующим звеном на всех этапах проекта. Только дайте им такую возможность и такие полномочия!
Изначально проблема кроется в постановке задач для отдела тестирования и его развитии. Создание отдела QA и отладку хотя бы процесса контроля качества надо рассматривать как новый проект в рамках компании. И, как к любому проекту, выставить корректные требования. Причиной неэффективной работы отдела может быть неверная постановка целей и задач при почти полном отсутствии полномочий.
Важно помнить, что хороший отдел QA — это не 20 обезьян, а 2-3 нормальных специалиста. Они знают, как выстроить процессы, как избежать багов в сценариях и дизайне, что изменить, чтобы продукт взлетел. Но для этого, в первую очередь, нужно изменить отношение к отделу тестирования и понимание того, кто такие тестировщики.
В идеале управление качеством (QA) и тестирование это две разные сущности. Ну, а о процессах и разнице между QA и QC уже в другом тексте!