«Нужно быть ленивым, чтобы стать хорошим тестировщиком»

С тестированием связано много стереотипов: к нему относятся как к быстрому старту в IT с перспективой высокой зарплаты, но не видят в этом серьезной профессии. Кажется, что тестирование — сплошная рутина, где нет места творчеству и реализации собственных идей.

fygvfm-s-slo60gh8znvytsrwru.jpeg

Вместе с руководителем отдела QA/QC в Redmadrobot и куратором нашего курса Software Testing Marishunya_QA мы разобрались, какими навыками нужно обладать тестировщику, куда можно развиваться в тестировании, с чем на самом деле связана текучка кадров и почему даже хорошим программистам не следует брать на себя обязанности тестировщика.

Чем занимается отдел тестирования?


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

Если говорить о мобильных приложениях, многим кажется, что тестирование ограничивается поворотом экрана, то есть стандартными сценариями использования. Инженер в процессе тестирования задается вопросом: «На что новая фича может повлиять? В каких ситуациях что-то может пойти не так?». Возьмем интернет-магазин: программист реализует функцию скидки по промокоду. Если он станет сам проверять, то войдет в корзину, допустим, через главное меню — убедится, что все работает, и не подумает, что это можно сделать еще тремя способами, для которых тоже надо прописать вызов функции. Тестировщик же должен идти по пути всех пользователей, написать тест-кейсы по нескольким сценариям и потом к ним возвращаться. Поэтому отдел тестирования сопровождает продукт на всем протяжении его разработки и находится в центре V-образного жизненного цикла программного обеспечения.

j4-ouo8de7qfw6cl0ikxqwu5geg.png

Тестировщик должен знать бизнес-требования и технические нюансы, поскольку тестирует как спецификации, так и use cases; ему также нужно наравне с другими членами команды выставить свои оценки, чтобы правильно спланировать delivery, иногда пнуть разработчика, потому что в конце спринта project-менеджер придет в отдел QA/QC, чтобы спросить протестировано ли приложение.

Тестировщик может затрагивать все проектные роли и должен уметь доказать каждому участнику, почему необходимо закрыть тот или иной баг или вообще отложить релиз. Грамотный и опытный специалист, с самого начала принимающий участие в разработке приложения, еще на этапе согласования работ может сократить время на стабилизацию продукта, а значит — снизить цену ошибки. Если тестировщики еще на этапе ревью заметят ошибку в тексте, то стоимость ошибки — час работы аналитика, чтобы дописать пару строк. Когда ошибки находят уже на этапе сборки, то надо просить аналитика переписать, разработчика переделать, а тестировщиков перепроверить — это уже день работы и перенос релиза или вообще исключение фичи из релизной сборки

QA и QC: в чем разница?


В России путают понятия Quality Assurance (обеспечение качества) и Quality Control (контроль качества). Часто можно встретить схематичное изображение, где внутри QA находится QC, а внутри QC — само тестирование.
vrtupaisfj30elj4qvvajrvq_l0.png
Гораздо правильнее изобразить так:
u_7wxfsv_omdix-zru68gwetnvw.png
На самом деле QA и QC — разные вещи и они идут параллельно друг другу. Простому тестированию, грубо говоря, можно научить практически любого: посадить за стол, дать бета-сборку приложения и сказать: «Проверь, как это работает». QC — это инженер, который знает подходы, видит продукт вживую, разрабатывает стратегию тестирования и знает основные принципы, то есть контролирует качество самого продукта. QC работает непосредственно с разработчиками, составляет базу кейсов и организует тестирование.

QA — человек, который обеспечивает качество не на уровне выпускаемого продукта, а всей компании в целом, то есть отвечает за процессы и обеспечивает условия для правильной работы QC, координирует отделы по ряду продуктов и составляет планы тестирования. Ответственность QA начинается с переговоров с заказчиками, работы со смежными отделами и выстраивания взаимодействий, продолжается в процессе разработки и заканчивается уже на презентации продукта. Она затрагивает не только технические, но и юридические аспекты. В компании все отделы сами по себе могут работать хорошо: сейлзы продают, программисты кодят, project-менеджеры контролируют процессы. Однако, чтобы механизм действовал без пробуксовок, взаимодействие отделов между собой было четким, а на выходе получался первоклассный продукт, нужно обеспечение качества — это и есть Quality Assurance.

Как стать тестировщиком?


Никаких специальных факультетов или направлений в области тестирования в российских университетах на сегодняшний момент нет, поэтому и для кандидатов каких-то требований в плане образования не предъявляется, хотя наличие технической или кибернетической специальности будет большим плюсом.

Чаще всего в вакансиях для тестировщика можно встретить следующие требования:

vssbfnlq5yuh5oby_h63e7mikl8.png

Главное требование к кандидату — мыслить алгоритмами и системами. Желательно иметь какой-то технический бэкграунд и знать теорию. Что такое testing, QC, QA и чем они отличаются? Какие есть виды тестирования и как их комбинировать? Что такое тест-дизайн, тест-кейс, тест-план? Надо знать хотя бы один объектно-ориентированный язык программирования, основы баз данных, клиент-серверной архитектуры и работы в различных ОС.

Если раньше с этим были проблемы, то сейчас в интернете полно специализированных ресурсов, как например форум на Software Testing. Если говорить о книгах, то ниже список литературы:

  • «Testing Computer Software», Cem Kaner, Jack Falk, Hung Q. Nguyen
  • «Ключевые процессы тестирования. Планирование, подготовка, проведение, совершенствование», Рекс Блэк
  • «Тестирование программного обеспечения. Базовый курс», Святослав Куликов


На рынке сейчас большая проблема с кадрами, потому что кроме технических hard skills важно иметь пытливый ум, уметь донести свою точку зрения и отстоять ее на любом уровне. Также тестировщику очень важно погрузиться в предметную область, чтобы на равных дискутировать с бизнес-аналитиками и объяснять им, почему какие-то их идеи будут работать не так. Хорошее качество для тестировщика — быть «достаточно ленивым», поскольку ленивые люди склонны оптимизировать процессы, чтобы не тратить на них в будущем лишние силы и время.

image«Обеспечение и контроль качества — что-то новое для России. Проблема состоит в непонимании цели и задачи тестирования в целом. Создают отдел, но что с ним делать, не знают. Нет четко поставленной задачи, из-за чего отсутствует мотивация работать на результат. Семь лет назад я начинала работать в тестировании в Украине и сейчас я сталкиваюсь с таким же непониманием, с каким встречалась тогда. В России большая часть заказчиков — госсектор и банкинг со своей тяжелой и неповоротливой бюрократией. В Украине же на них приходилось только около 20% рынка, все остальные — частные компании, которые умеют считать свои деньги».

                                                                    Марина Куликова, Head of QA/QC, Redmadrobot


Как быть тестировщиком?


Войти в профессию просто, а вот расти и развиваться дальше намного сложнее. Если сравнивать тестировщиков с программистами, то последние по ходу своей карьеры уходят «вглубь». Тестировщик же находится в центре цикла жизни продукта, поэтому ему необходимо видеть картину в целом, иногда перехватывать функции project-менеджера и заниматься продуктовой аналитикой, то есть развиваться «вширь». Тестировщик получает много навыков из смежных направлений, зачастую плохо понимает масштабы своей области, смотрит по сторонам и уходит во что-то другое: программирование, product owner или аналитику. В итоге специалисты в области тестирования часто меняют профессию, а отделы QA/QC страдают от нехватки высококвалифицированных кадров.
ppby3cfedynpr4ai2idkiorjpfg.png
Хотя тестирование — действительно интересная отрасль, где творчества порой не меньше, чем в самой разработке. Тестировщику часто приходится работать при нехватке входных данных, в условиях жестких спецификаций или строгих требований заказчика, не говоря уже о том, что иногда нужно самому «руками» залезть в код. Вырастая до руководящих должностей, нужно много общаться как с другими отделами, так и с заказчиками, доказывая свою точку зрения со стороны QA.

Больше узнать о тестировании и получить практический опыт вы сможете на нашем курсе Software Testing, где Марина Куликова расскажет о техниках тест-дизайна и как обеспечить качество вашего ПО в любых условиях.

© Habrahabr.ru