Найти в Дзене

Тестировщиков много, а хороших тестировщиков мало

Так говорит мой муж, разработчик со стажем. И это действительно так, именно по этому на старте карьеры такая бешеная конкуренция. Эйчары буквально, как люди в секенд хенде роются в корзине с одеждой, пытаясь найти что-то стоящее по приемлемой цене. Поэтому очень важно стать не просто тестировщиком, а хорошим тестировщиком. Как же стать хорошим тестировщиком. Очевидно, что просто окончить курсы недостаточно. В первую очередь нужно хорошо знать теорию тестирования. Кто-то скажет, зачем нужна теория, если мы практикой занимаемся. А все очень просто, для эффективного тестирования на практике, надо знать теорию. Сам процесс тестирования - это не просто проверить что-то, а проверить какой-то достаточный минимум. Вся теория тестирования о том, как большую и сложную систему проверить так, чтобы быть уверенным, что все самое важное проверено, что проверены все возможные сценарии. Иногда, когда проверить все возможные сценарии невозможно, на помощь приходит тест-дизайн. Тест-дизайн - это различн
Оглавление

Так говорит мой муж, разработчик со стажем. И это действительно так, именно по этому на старте карьеры такая бешеная конкуренция. Эйчары буквально, как люди в секенд хенде роются в корзине с одеждой, пытаясь найти что-то стоящее по приемлемой цене. Поэтому очень важно стать не просто тестировщиком, а хорошим тестировщиком. Как же стать хорошим тестировщиком. Очевидно, что просто окончить курсы недостаточно.

Знание теории и тест-дизайна

В первую очередь нужно хорошо знать теорию тестирования. Кто-то скажет, зачем нужна теория, если мы практикой занимаемся. А все очень просто, для эффективного тестирования на практике, надо знать теорию. Сам процесс тестирования - это не просто проверить что-то, а проверить какой-то достаточный минимум. Вся теория тестирования о том, как большую и сложную систему проверить так, чтобы быть уверенным, что все самое важное проверено, что проверены все возможные сценарии. Иногда, когда проверить все возможные сценарии невозможно, на помощь приходит тест-дизайн. Тест-дизайн - это различные техники для создания тестов так, чтобы условно на 3 тестах можно было бы сказать что в этом функционале ошибок нет с 99% вероятность, при этом не проверяя тысячи возможных сценариев.

Теория тестирования помогает составлять план тестирования, стратегию, писать тест-кейсы, оценивать покрытие, анализировать результаты. В конце концов заказчик ждет от тестировщика какое-то заключение, типа: "Ну чего норм или нет? Можем выпускать в прод? Не сломается все? Пользователь сможет заказать еду? Самолет не упадет? Сможем ли мы зарабатывать на этом деньги?"

Итак, думаю, ни у кого не осталось сомнений, что хорошие знания теории тестирования и тест-дизайна необходимы для хорошего тестировщика, но что же еще?

Архитектура ПО

Хороший тестировщик понимает как устроено программное обеспечение, проще говоря, знает его архитектуру. Архитектура конечно может быть разной, но есть какие-то базовые вещи, которые используются в большинстве случаев, типа фронт + бэк + база данных. Каждый элемент архитектуры на разных этапах тестирования тестируется как отдельно, так и вместе с другими, системно. С учетом знаний теории тестирования тестировщик знает, когда и что тестировать, как применять техники в том или ином случае. И да, это решает тестировщик, никто ему не подскажет, как сделать лучше.

Инструменты тестирования

Помимо этого хороший тестировщик владеет целым наборов различных инструментов для тестирования. Для каждого вида тестирования может пригодиться свой инструмент. Когда и что использовать также тестировщику никто не подскажет, решает это только он сам. Хороший тестировщик почти всегда может предложить несколько технических решений, для тестирования в каждом конкретном кейсе. Он может подобрать именно то, что подходит к этому продукту, проекту, компании.

Основы программирования и алгоритмика

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

Приведу пример из своей работы. Тестировала я как-то логику заполнение одного поля на фронте. В зависимости от нескольких других полей в целевом поле могли быть разные значения, и условия сочетались либо оператором ИЛИ(логическим сложением), либо оператором И(логическое умножение). И вот я составила себе таблицу принятия решение, выписала все сочетания условий и начала тестировать. В какой-то момент кейсы валятся. Я могла бы сразу написать баг-репорт, но повторив кейсы еще раз и проанализировав результаты пришла к выводу, что скорее всего в коде разработчик перепутал И и ИЛИ, ну потому что это не было явно написано в тз, но следовало из других кейсов. Доступа к коду у меня нет, но в баг-репорте свое предположение я написала, что конкретно в этом кейсе, скорее всего, перепутаны логические операторы.

Через несколько дней, когда разработчик взял в работу задачу, мне приходит от него сообщение: "Саша, ты с этим багом как в воду глядела) Спасибо за такой хороший анализ бага!" Это пример хорошего тестировщика (без ложной скромности), хотя этот тестировщик не пишет автотесты и вообще программировать особо не умеет. Но его опыт и понимание как пишется код, помогают искать баги и, что очень важно, локализовать их буквально до строчки кода.

Общие представления о сетях и серверах

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

Коммуникация и командная работа

Хороший тестировщик умеет общаться и хорошо общается со всеми в команде и не только. Чем больше он знает, чем занимаются остальные члены команды, тем проще ему коммуницировать с ними. Как результат, он получает от них важные сведения об устройстве продукта, о ресурсах, о процессах(даже которые его не касаются), о конечных пользователях. Все эти знания помогают ему дополнительно продумывать риски продукта и покрывать их соответствующими кейсами. Хороший тестировщик может принимать и принимает решения о покрытии тестами, приоритетности этих тестов, порядке их выполнения и прочее. Он, тестировщик, всегда ищет баланс между качеством тестирования и затраченными ресурсами. Именно тестировщик это делает, это его роль! Никто больше ему не подскажет, как сделать лучше. Хороший тестировщик может и несёт ответственность за принятые решения.

Непрерывное обучение

Если вы хотите стать не просто тестировщик, а хорошим тестировщиков, то помимо базовых знаний, нужно постоянно в себя добавлять новые знание и навыки, проявлять инициативу, постоянно раскрывать серые пятна на своей карте. Все что доступно вам для обучения нужно брать и учить. Любой вопрос, на который вы хотя бы 1 раз не смогли ответить, нужно изучать, чтобы в следующий раз ответить. Не надо ждать, пока вам конкретно укажут на ваш пробел.

Мануальный тестировщик все еще сильно востребован

Я до сих уверена, что хороших тестировщиков не так много и они действительно востребованы и, возможно, их даже не всем хватает. Иначе я не могу объяснить, почему некоторые компании до сих пор держат у себя абсолютно бестолковых тестеров и даже неплохо им платят.