Знания и умения, которыми должен обладать тестировщик могут быть поделены на 5 основных групп:
1. Теория тестирования
За все время существования тестирование претерпело много изменений от подхода исчерпывающего строго задокументированного тестирования до подхода тестирования чеклистами. И, конечно, за это время появилось много стандартов и терминологии, которые описывают лучшие мировые практики и правила. Эти стандарты и правила и входят в теорию тестирования, и знать их необходимо хотя бы потому, что они помогают понять, как тестировать, как писать тесты, как заводить баги, а также позволяют общаться на одном языке с коллегами.
2. Практика тестирования
Кроме того, что нужно знать теорию, необходимо уметь применять эту теорию на практике.
3. Технический стек
Сюда относится всё, что касается технологий и программ. Невозможно качественно тестировать программу, не понимая как именно она работает, какие технологии использует. К этому стеку технологий прежде всего относится:
Знание основ программирования
Знание хотя бы одного языка программирования - Java, Python, JavaScript и другие
Знание устройства и работы компьютерных сетей - TCP/IP, http и другие
Знание и умение работать с базами данных - SQL, NoSql
Понимание архитектуры приложений
Знание таких технологий как API, REST API, SOAP
Умение работать с консолями - cmd, bash
Понимание процесса CI/CD
4. Инструменты
Системы управления тестами (Test Management Systems) - TestRail, TestLink и другие
Баг-трекинг системы - Jira, BugZila, Redmine и другие
Системы контроля версиями - Git, Svn, Mercurial и другие
Системы сбора и анализа логов и трафика - Wireshark, tcpdump, DevTools в браузере, Fiddler и другие
Инструменты для тестирования API - Postman, Insomnia, расширения для браузеров
Инструменты для работы с кодом - любые IDE
5. Личные качества или Soft skills
В разных профессиях ценится определенный набор личных качеств. Для тестировщиков тоже можно выделить список таких личных качеств или Soft skills (так, кстати, чаще всего их называют в IT мире). Прежде всего это:
Внимательность
Внимание к деталям, наверное, можно поставить на первое место. Потому что именно это качество позволяет находить ошибки, которые не заметил программист или заметить неточности в требованиях.
Критическое мышление
Изначальное недоверие к тестируемому продукту и убежденность в том, что в нем есть баги позволяет лучше делать свою работу. Мыслить с точки зрения того, что пользователь может сделать не так, и как сломать систему - очень важно.
Дотошность
Основная работа тестировщика - это обеспечивать качество. И один из способов как этого добиться - поиск ошибок. Причём, искать ошибки нужно везде - в документации, в самих тестах, в программе. И, так как не всегда можно однозначно определить ошибку, например, ее место или вообще доказать, что это ошибка, тестировщику необходима дотошность, чтобы докапываться до сути.
Усидчивость
Непрерывно писать тесты, выполнять их, читать требования дано не всем. Иногда даже в описании к вакансии тестировщикака есть такое требование, как «умение и желание выполнять монотонную работу», то есть быть усидчивым.
Терпение
Терпение необходимо для того, чтобы писать много похожих тестов или выполнять одинаковый набор тестов из релиза в релиз, или искать ошибки, там где казалось бы их уже нет.
Перфекционизм
Да, это отрицательное качество, мешающее вам в жизни, очень может пригодиться в тестировании. Стремление сделать продукт как можно качественнее, тесты - понятнее, процесс работы - прозрачнее, знания - более глубокими, очень повышает ваши шансы стать хорошим тестировщиком. Но, как и в жизни, все-таки есть границы, ведь найти все ошибки невозможно!
Природное любопытство
Например, если вы посмотрите на новый макбук, то вы заметите, что у него 2 одинаковых не подписанных разъема. Первое, что может прийти на ум, в какой порт правильно вставлять провод для зарядки? А второе, а что будет, если вставить 2 провода для зарядки в один ноутбук? Тестировали ли производители такой случай? Сколько людей уже это попробовало? Это и есть любопытство, ну и немного житейского опыта.
Конечно, не каждый тестировщик обладает всем набором этих качеств, да и список этот не полон. Но они вам точно будут помогать.
Суммируя, тестировщик должен обладать многими знаниями. Для старта, например, достаточно личных качеств, знания теории тестирования, желания учиться, а также любви к компьютерам и всему, что с ними связано.