Как стать тестировщиком с нуля
Основы тестирования можно освоить без курсов за 120K. Наш QA-инженер Антон в прошлом работал на стройке и самостоятельно переучился на тестировщика игр за полгода. В статье он расскажет, как нашел бесплатный курс, сколько часов в день тратил на теорию и зачем в перерывах между занятиями рубил дрова.
«Ребята, работаю охранником, мне 40 лет. На кого пойти переучиться?» Этот пост на Пикабу сразу меня зацепил: я мечтал бросить работу на стройке, но не знал, чем зарабатывать дальше. В комментариях увидел ссылку на бесплатный курс по QA. Посмотрел вводный урок о профессии тестировщика и на следующий день уволился.

Составьте план обучения
После увольнения устроил себе долгий-долгий отпуск. Шучу 🙂 Сразу сел за курс и, вдохновленный, решил изучать его по 8 часов в день. Не считал, сколько месяцев буду осваивать основы тестирования, а потом искать работу. Не считал, сколько денег нужно на этот период.
У нас с женой было отложено около 90 тысяч, казалось, нам хватит надолго: машины нет, квартира своя. Ели гречку, макароны, сосиски, хлеб. Из развлечений оставили только прогулки по улице.
Отложенные деньги закончились через 4 месяца, а я еще не открывал сайты с вакансиями. Пришлось переехать к родителям жены: мы не могли даже оплатить коммуналку. Тогда я поставил себе дедлайн — через 2 месяца устроиться в IT-компанию.
Совет: сразу решите, когда закончите учебу и станете искать работу. Рассчитайте, сколько денег нужно на этот период. Не начинайте ничего без финансовой подушки.
Найдите базовый курс для тестировщиков
Я не хотел платить адские деньги за курсы: в интернете есть тысячи бесплатных материалов по основам тестирования. Но в них легко запутаться, особенно когда не знаешь базу. Поэтому я сосредоточился на бесплатном курсе Михаила Портнова «Тестирование программного обеспечения в США», который рекомендовали на Пикабу.
Курс — топ за свои деньги 🙂 Во время уроков Михаил Портнов шарит экран компьютера и показывает, как ищет баги и пишет баг-репорты. Иногда он отвлекается от теории и рассказывает истории из жизни, чтобы мотивировать новичков. В курсе 23 видео по 2 часа, есть проверочные онлайн-тесты и практические задания. Минус — нет обратной связи.

Чтобы лучше запомнить уроки, я конспектировал их от руки. Не забивал на домашние задания, старался сделать на «отлично» — как если бы от качества зависело, отчислят меня с курса или нет. В конце дня перечитывал свои конспекты и вслух пересказывал их жене.

Совет: заучивайте лекции, делайте домашки, и тогда любой курс будет работать.
Ограничивайте и сортируйте информацию
К базовому курсу я подключал другие источники. Если в уроке попадался незнакомый термин — какая-нибудь «верификация» или «валидация», — то ставил видео на паузу и шел гуглить. Изучал все статьи подряд. Думал, чем больше прочитаю, тем лучше разберусь, но по факту либо читал одну и ту же информацию в разной подаче, либо углублялся в экспертные дебри, в которых ничего не понимал. В итоге решил смотреть не более двух-трех сайтов по непонятной теме.
Когда серфишь, список закладок растет в геометрической прогрессии. У каждой статьи по десять ссылок на другие статьи, а у тех статей — еще десять. Под конец обучения я боялся открывать свои закладки: там царил неудержимый хаос. Я так и не решился его упорядочить и потерял много классных ресурсов.
Совет: не пытайтесь прочитать весь интернет. Изучайте темы:
— как составлять тест-кейсы,
— как составлять чек-листы,
— что такое классы эквивалентности и как их выделять,
— что такое метод граничных значений,
— как правильно оформить баг,
— какие бывают виды и уровни тестирования,
— что такое клиент-серверная архитектура и как она работает.
Сохраняйте полезную информацию по этим темам в закладки. Сортируйте закладки по папкам.
Занимайтесь краудтестингом
Как только я прошел половину курса, захотел применить свои знания на практике.
Чтобы получать много заказов, нужно много девайсов. У меня был только комп, мой мобильник и мобильник жены. Я поставил виртуальные машины с различными ОС и Android Studio на свою винду. Так набралось 20 девайсов, которые я и указал в профиле. С инвайтами проблем не было.
Проблемы были с оформлением багов. Мне возвращали баг-репорты, потому что неправильно называл баги, описывал их не по ТЗ, прикреплял мало скриншотов. Я переделывал, переделывал и еще раз переделывал. В итоге за несколько месяцев на краудтестинге научился правильно оформлять баг-репорты.
Совет: сосредоточьтесь на качестве баг-репортов, а не на их количестве.
Отдыхайте от учебы (хоть иногда)
Освоением новой профессии я занимался по 11 часов в день: 8 часов на теорию и 3 — на практику. Во время обеда быстро грел еду и сидел с тарелкой за компьютером. Когда голова совсем закипала, позволял себе максимум 5 минут, чтобы встать со стула и пройтись по комнате. Никаких соцсетей, просмотра новостей и видосиков на Ютубе.
Такой экстремальный режим измотал меня: хуже запоминал информацию, быстро уставал. Поэтому решил делать нормальные перемены в течение дня — по 15–20 минут каждые 2 часа. В это время гулял вокруг дома, рубил дрова, помогал с домашней работой. Если не находил проект на краудтестинге, то вечером со спокойной совестью отдыхал.
Совет: устраивайте перемены по 15 минут каждые несколько часов. Полноценно отдыхайте по вечерам.
Смотрите, читайте, слушайте
Сложно учиться 8 часов подряд, даже с небольшими передышками в течение дня. Чтобы голова не закипала, я постоянно переключался между просмотром видео, чтением бумажной книги, изучением сайта и т. д.
Как это выглядело? Когда начинал тупить над видеоуроком, переключался на чтение книги. Когда начинал перечитывать абзац по сто раз, включал подкаст про тестирование и ложился на диван. Когда переставал слышать информацию, открывал форум по тестированию. И так по кругу. Иногда в течение часа менял источники каждые 20 минут.
Совет: переключайтесь между источниками информации, как только начинаете тупить. Заранее составьте список книг, сайтов, подкастов или воспользуйтесь перечнем, который я спрятал под кат в конце статьи.
Ищите вакансии на позицию интерна
Чтобы стать тестировщиком с нуля, я потратил полгода. Первые четыре месяца просто учился, оставшиеся два — учился и искал работу. Искать было тяжело, получил 15 отказов и почти отчаялся, но тут мне попалась вакансия Plarium Krasnodar. Они набирали тестировщиков онлайн-игры без опыта работы на позицию интернов. Интерны — это специалисты начального уровня: компания обучает их, так как видит потенциал.

Теоретические знания и опыт в краудтестинге помогли мне выполнить тестовое задание, а на собеседовании ребята расспрашивали про мое самообразование. Через день позвонила HR и сказала, что меня берут в интернатуру. Первые 3 месяца я обучался под руководством крутого тестировщика, потом сдал финальный тест и стал самостоятельно заводить баги. В этом месте звучат фанфары, и занавес медленно опускается 🙂
Не совет: я не знаю, как закончить статью. Писать что-то из серии «Иди к своей цели» или «Ученье — свет» не хочется. Поэтому беру помощь Хабра. Опытные тестировщики, давайте вместе сделаем статью полезной. Что еще можно почитать/посмотреть новичкам? Какие курсы рекомендуете?
Книги
«Тестирование программного обеспечения. Базовый курс», С. Куликов. Написана простым языком, с юмором.
«Тестирование программного обеспечения», С. Канер, Д. Фолк, Е. К. Нгуен. Книга сложная. Осилят не все.
«Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах», Р. Савин. Для новичков, без сложных терминов.
«Быстрое тестирование», Р. Калбертсон, К. Браун, Г. Кобб. Книга о том, как тестировать быстро и качественно.
«Кровь, пот и пиксели. Обратная сторона индустрии видеоигр», Дж. Шрейер. Прочитайте, если хотите идти в геймдев.
«Как тестируют в Google», Дж. Уиттакер, Дж. Арбон, Дж. Кароло. Общая информация о работе QA в большой корпорации.
Сайты
Сообщество программистов DOU. Новости, тренды тестирования и IT-индустрии в целом.
Software-Testing.Ru. В разделе «Библиотека» есть подраздел для новичков — «Начинающему тестировщику». Там много мегаполезных статей.
Testbase.ru. Коротко об основах тестирования. Помогает разобраться в терминах.
Группы ВКонтакте
QA тестирование и котики. Вакансии, приколы, практические советы.
Ключ седого тестировщика. Создатели сообщества регулярно отвечают на вопросы новичков.
QA Club. Много видеоконтента о тестировании.
QA NINJAS. Работающий тестировщик делится своим опытом в статьях.
Телеграм-каналы
QA — Курсы и образование. Обсуждение курсов, книг, мастер-классов по тестированию.
QA — Bad Company! Про компании, в которые стоит или не стоит идти тестировщику.
С чего начать тестировщику: материалы для старта
Что ж. Вы хотите знать причины. Их есть у меня!
С другой стороны я вижу, как рынок желает всё больше и больше инженеров по качеству и как много людей (хоть и недостаточно) желают войти в IT через тестирование. И знаете что? На рынке труда совсем нет матёрых мидлов или синьоров. Почему? Да потому, что они все при местах. Либо их хантят с такой скоростью, что они даже не выкладываются на hh.ru. Что всё это значит? Я вижу задачей этого канала решить боли обеих сторон:
Guys! You have to quit that shit cold turkey!
«Перестаньте делать не то прямо сейчас»
Первая часть поста про то, с чего начать знакомство с миром тестирования и QA. План статьи был такой:
1) Рассказать с чего начинают и почему это плохо
2) Рассказать с чего стоит начинать
Но! Наткнулся на статью QL, где они и так выжали максимально кратко и полезно по этому вопросу. Поэтому, первое что нужно сделать, это прочесть эту статью.
Совсем-совсем коротко о чем было в статье (в порядке приоритета):
Первое, что слышу от новичков-кандидатов «Прочел книгу Савина Тестирование.com«
— Хорошая ли это книга?
— Достаточная ли она для понимания и начала посещения собеседований?
В этой книге всё очень упрощенно и абстрактно. Её несомненная польза в одном: она позволяет несведущим в ИТ людям погрузиться в тестирование и проникнуться идеями.
— Хороша ли эта книга?
— Нужна ли она начинающему тестировщику?
В этой книге рассказывается история тестменеджера. При чем ТМ в достаточно классической каноничной компании. Много ли у нас таких компаний в России? Нет. Зато у нас на рынке куча вакансий с историей «Мы тут решили, что пора бы начать тестировать» и «Мы расширяемся, третьим будешь?» Но историй про налаженные процессы не так уж много.
Вывод: скачайте эту книгу и начните читать её спустя 6-12 месяцев работы тестировщиком.
Вывод: идите на курсы. Но не полагайтесь лишь на одну теорию. Для теории у вас есть паблики/каналы, ютуб и книжки.
Это было про наболевшее.
А теперь о том, что стоит сделать в первую очередь, если хочется войти в тестирование. И вот вам еще статья, которая как нельзя в тему. Я бы с удовольствием хотел её разобрать всю и прокомментировать, но возьму себя в руки и лишь позаимствую и переделаю последнюю часть статьи
Я же считаю, что надо сделать следующие 3 самые важные вещи:
1. Книги по тестированию
2. Окунайтесь в сообщество, всё верно. Подписывайтесь на блоги, читайте статьи, смотрите видео на ютубе (все ссылки в статье Quality Lab в предыдущем посте). А вот еще классный ресурс.
Я бы хотел продолжить в этой статье размышления про резюме. Но пожалуй лучше сделаю это в отдельной статье, чтобы не раздувать и без того длинную писанину.
Комментарии приветствуются, дайте знать, если всё хорошо. Критика уместна, дайте знать, если не всё хорошо! =)
Как развиваться начинающему тестировщику?
На форуме тестировщиков и в блогах часто появляются вопросы: с чего начинать тестировщику, который только-только выбрал свою стезю?
С одной стороны, сейчас много курсов в этой области, которые проводятся на базе портала Software-Testing.Ru, УЦ Luxoft, EPAM Systems и т.д.
С другой стороны, начинающему тестировщику далеко не всегда нужны курсы. Если вы ещё не знаете, в каком направлении развиваться, какие области интересны, какие знания хочется получать – то о каких курсах идёт речь? А комплексного ВУЗовского образования для тестировщиков в СНГ пока что нет… В итоге, многие люди не могут быстро «влиться» в профессию, найти направление для развития и понять, «что и как надо изучать для быстрого старта?».
Поэтому, я составила инструкцию для начинающих тестировщиков или людей, которые только выбрали себе эту область деятельности, и снабдила её максимумом ссылок, чтобы информацию не приходилось собирать по крупицам. Надеюсь, что эта инструкция поможет Вам в выбранном начинании.
Итак, 7 шагов от чайника к тестировщику.
1. Прочитайте как минимум одну книгу по тестированию
Этот пункт поможет ознакомиться со сленгом тестировщиков, понять общие принципы и понять, насколько вообще эта отрасль для вас интересна. Для начала наиболее понятной и доступной будет книга Романа Савина про тестирование веб-проектов. Она написана настолько легко и весело, что проблемы «сложно дочитать» точно не возникнет: наоборот, вы не сможете оторваться, пока не дочитаете. А времени это займёт немного, 4-6 часов – и готово!
В качестве альтернативы, могу порекомендовать Библию Тестировщиков от Сэма Канера, потёртый печатный экземпляр которой попал мне в руки впервые почти 10 лет назад. Этой книге более 20 лет, поэтому она может ввести начинающего тестировщика в заблуждение «печатью баг-репортов в трёх экземплярах» или особенностями тестирования консольных приложений. Но при этом в ней в замечательной, доступной форме перечислены все ключевые вопросы тестирования, затронута тема коммуникаций в тестировании (которая важна, и которую пока никто пока что не описал лучше).
2. Просмотрите вакансии и оцените, что чаще всего требуется от тестировщиков
Многие начинающие тестировщики ищут знания, которые всем нужны. И начинают изучать никому ненужные термины, осваивать нераспространённые инструменты и тому подобное. Не додумывайте! Рассмотрите различные вакансии в своём городе. Выберите те, описания которых вам понравились, мотивировали вас. Какие знания требуются в них? Акцентируйтесь на получении только этих навыков, не изучайте ничего такого, что никому не нужно!
3. Приступайте к практике!
Наверное, вы думали, что следующим этапом будет «прочитать книгу по выбранному инструменту» или «поиск информации на форуме»? Как бы ни так!
Знания без практики ничего не стоят, поэтому, при изучении любых новых навыков, вам потребуется практика. В худшем случае, выберите для себя задания, максимально приближенные к жизни, и выполните их. В лучшем – найдите короткую подработку. На портале фрилансеров вы всегда сможете найти задачи по тестированию. Честно признавайтесь, что вам это нужно для обучения, и просите в 10 раз меньше других. Не жадничайте – это единственный способ получить реальную жизненную практику, и не забудьте получить отзывы!
В качестве альтернативы фри-лансу, если у вас хороший английский, рассмотрите uTest – этот сервис объединяет удалённых тестировщиков по всему миру.
Выбирайте задачи, которые будут для Вас достаточно интересны и сложны, чтобы была возможность осваивать что-то новое.
4. Станьте регулярным читателем форума для тестировщиков
В процессе решения задач у вас обязательно возникнут сложности и вопросы, на которые вам смогут ответить на форуме. Помимо решения конкретных проблем, форум также позволяет быть всегда в курсе нововведений, наблюдать за трендами отрасли. В книгах новые темы появляются с задержкой в несколько лет, что уж говорить о русскоязычных книгах!
Самым распространённым форумом для тестировщиков в СНГ является Форум Software-Testing.Ru.
Если же у вас хорошо с английским языком (а в тестировании он очень важен!), то особо полезным будет самый крупный англоязычный форум SQA Forums. На этом ресурсе, если повезёт, на ваши вопросы могут ответить такие признанные мировые гуру, как Сэм Канер, Джеймс Бах, Ричард Блэк и другие.
5. Подпишитесь на рассылку для тестировщиков
Чтобы не стоять на месте и продолжать развиваться, вам пригодится подписка на рассылку. Благодаря такому регулярному напоминанию об интересных новостях, статьях, событиях и темах на форумах и блогах, вы всегда будете в курсе жизни тестировщиков. Подписаться на русскоязычную рассылку о тестировании и качестве, которую ведёт Виктория Птицына на Subscribe.Ru, можно здесь.
6. Найдите клуб тестировщиков в своём городе
Сейчас во всех крупных городах стали появляться клубы тестировщиков. Благодаря им, можно ходить на регулярные бесплатные встречи, общаться в среде специалистов, знакомиться, задавать вопросы и получать ответы. Также, клубы – это прекрасная возможность поиска работы, так как на них часто ходят тест-менеджеры.
Свои сайты уже есть у сообществ Москвы, Санкт-Петербурга, Новосибирска, Казани, Харькова, Днепропетровска и Бишкека.
А если вашего города нет в списке — то просто создавайте свой клуб! И вам польза, и всем тестировщикам вашего города.
7. Создайте свой блог и начните учить других тому, что вы уже освоили.
Обучение — лучший способ познания! Каждый из нас решает задачи по-своему, находя уникальные пути. Возможно, именно ваш способ будет лучшим, оптимальным? Для создания блога вы можете использовать простой и абсолютно бесплатный движок Blogspot, а чтобы о нём узнали другие тестировщики, добавьте его в трансляцию тест-блогов.
Тогда, полученные вами знания не запылятся, вы получите полезную обратную связь от опытных тестировщиков, структурируете полученные знания и даже, возможно, заинтересуете кого-либо, кто ищет себе сотрудников 🙂
Результаты выполнения 7 шагов
Бесплатные образовательные курсы: тестирование
Ошибки и баги могут возникнуть в любых программах, поэтому тестировщиков нанимают многие крупные компании, которые разрабатывают программное обеспечение. А еще — небольшие фирмы, которые предоставляют услуги тестирования на аутсорс. Сегодня мы публикуем подборку из 14 бесплатных курсов по тестированию из нашего раздела Образование. Да, они, скорее, помогут вам получить базовые знания или освежить то, что вы уже и так знали, чем прокачаться до уровня синьора или лида. Но это не умаляет их полезности! Если вы видели что-то интересное, чего нет в этом выпуске — делитесь ссылками в комментариях.
QA Start · Академия IT
Семь уроков этого курса познакомят вас с методологиями разработки и их влиянием на качество, с фреймворками гибкой разработки, видами, техниками и уровнями тестирования, с тестовой документацией, а также с работой с дефектами ПО.
Интенсив по тестированию ПО · GeekBrains
Сегодня ни один проект не обходится без тестирования — будь это сервис, компьютерная игра или интернет-магазин. На этом курсе вас научат различать тестовую документацию, тестировать требования и составлять тест-кейсы, составлять отчеты о дефектах и пользоваться баг-трекинговыми системами.
Видеокурс по тестированию ПО · Академия IT
Один из стартовых курсов, после прохождения которого вы будете различать типы тестирования ПО, самостоятельно определять и ставить цели тестирования и узнаете, что такое баги и как их репортить. А еще вы попрактикуетесь в создании тест-кейсов и в тестировании веб-приложений.
Верификация программного обеспечения · ИНТУИТ
Программа курса посвящена современным технологиям верификации ПО, применяемыми при промышленной разработке сложных и отказоустойчивых систем. Она охватывает такие темы, как построение тестового окружения, планирование системы тестов, анализ и обнаружение багов, интеграционное и системное тестирование и общие аспекты тестирования интерфейсов.
Профессия «Инженер по тестированию» · Яндекс.Практикум
На этом курсе вы освоите тест-дизайн и овладеете инструментами Postman, Charles, Яндекс.Трекер, а также познакомитесь с Javascript и Puppeteer. Обратите внимание, Яндекс.Практикум предлагает бесплатно пройти только вводную часть курса, состоящую из 10 часов теории и 84 заданий. Это поможет определиться, хотите ли вы двигаться дальше в этом направлении.
Автоматизация тестирования с помощью Selenium и Python · Stepik
Это базовый курс для начинающих тестировщиков, на котором вас научат писать автоматизированные UI-тесты на Python с помощью библиотеки Selenium. А еще в программе — популярные фреймворки и лучшие практики написания автотестов.
Software Debugging · Udacity
На этом курсе вы узнаете, как «дебажить» программы и как автоматизировать этот не всегда веселый и захватывающий процесс. А также вас научат создавать кое-какие инструменты автоматической отладки на Python. Курс на английском.
Основы тестирования · Академия IT
Еще один базовый курс от Академии, на котором вам расскажут о QA, как таковом, и расскажут о тестовых артефактах, жизненном цикле тестирования, типах приложений, клиент-серверной архитектуре и других полезных вещах.
Software Testing · Udacity
В разработке программного обеспечения разрушение может быть так же ценно, как и созидание. На курсе вас научат ломать любое ПО разными способами, чтобы отыскать в нем баги и уязвимости.
Основы тестирования программного обеспечения · ИНТУИТ
За 14 с небольшим часов этого курса вы не только получите хорошую теоретическую базу знаний о тестировании ПО, но и потренируетесь в нем, выполняя практические задания. В конце курса предусмотрен экзамен по пройденному материалу, так что готовьте зачетки.
Software Testing QA · Академия IT
Курс, на котором вас познакомят не столько с QA, сколько с тем, как начать свой путь в этой специальности. Уроки посвящены прохождению собеседований, лайфхакам и советам для новичков, а также разбору структуры QA команд в IT-компаниях.
Курсы тестировщиков онлайн · Академия IT
Базовый, но от этого не менее полезный курс, который вам пригодится, чтобы получить или освежить знания о тестирование ПО, контроле качества и баг-трекинге.
Тестирование ПО: базовый уровень · Stepik
Курс ориентирован на начинающих тестировщиков и тех, кто хочет потренироваться перед сдачей сертификационного экзамена. Он основан на официальной программе обучения ISTQB, а все 111 тестов составлены из заданий реальных экзаменов ISTQB Foundation Level.
Unit-тестирование С# · Академия IT
Более узкоспециальный курс для тех, кто хочет научиться именно юнит-тестированию. За 12 уроков вам расскажут о том, что это вообще такое, какие есть типы юнит-тестирования и о лучших практиках его использования. Ну и, конечно, об инструментах, с которыми вам придется иметь дело, занимаясь этим видом тестирования.
Больше бесплатных и платных курсов для тестировщиков, девопсов, разработчиков, дизайнеров и менеджеров — в разделе Образование на Хабр карьере.
Как научиться думать как тестировщик
Чтобы заниматься тестированием, не обязательно иметь какой-то врожденный талант, доступный только избранным. Но назвать это тривиальной деятельностью, которой может заняться абсолютно каждый, тоже нельзя. Представляем пять советов, как стать еще лучше в тестировании.
Умение тестировать — это не врожденный навык и не какой-то редкий ген, который наследуют редкие счастливчики. Тестировщиками не рождаются.
Но тестирование также и не примитивная последовательность шагов, которую можно изложить в инструкции и передать в работу любому человеку.
На самом деле, тестирование — это сложная и глубокая область, которая для успешного выполнения требует практики и опыта. Также это деятельность, с которой некоторые справляются лучше остальных — будто они обладают подходящим складом ума. «думают, как тестировщики».
Что представляет собой этот склад ума и как его развить в себе?
В этой статье я поделюсь с вами примерами пятью особенностей, которые я обнаружил на практике и которые отличают хороших тестировщиков. Все они просты для понимания, но сложны в освоении, и научиться им может любой, кто готов посвятить этому время и усилия.
Примечание: здесь я использую термин «тестировщик» в общем смысле, для обозначения каждого, кто занимается тестированием. Я не ставлю своей целью в этой статье защищать специально обученных специалистов, называемых «тестировщиками/QA-инженерами», или идею, что тестированием занимаются только тестировщики — это обсуждение пройдет в более широком ключе.
«Перевернутое» мышление и бремя доказывания
Мой первый руководитель сказал мне как-то: «когда тестируешь приложение, просто предположи, что баги есть. Если ты изначально отнесешься к приложению так, что оно работает правильно и без ошибок и попытаешься найти их, то много ошибок не найдешь. Ты будешь видеть то, что ожидаешь увидеть. И наоборот, если ты будешь предполагать, что баги есть, то внезапно заметишь их повсюду».
Этот небольшой совет идеально передает идею «перекладывания бремени доказывания». Начинать тестирование следует с предположения, что приложение не работает. Фактически, оно вероятно и не может работать. Даже помыслить нельзя, что оно работает. В нем не просто есть какие-то баги, оно совершенно полностью неправильное. Кто-то пытается надурить тебя, выдавая это приложение за «рабочее». Может, это вообще подстава.
Удерживая это в памяти, заставьте приложение доказать, что вы ошибаетесь. Заставьте его выполнять все действия и демонстрировать нужное поведение, пока ему не удастся убедить вас в обратном, что это никакая не подстава. Чудо из чудес, но это действительно работающий софт.
Сформулируем по-другому: приложение должно считаться виновным, пока не доказано обратного.
Хорошие тестировщики относятся к приложению «перевернутым» образом мышления — они изначально исходят из точки наихудших предположений. Можно назвать это здоровым скептицизмом, конструктивным пессимизмом, или иным термином, но суть в том, что изначально мы исходим из предположения, что приложение не работает. Когда мы стартуем из этой точки и фокусируемся на том, что приложение должно доказать нам обратное, это помогает преодолеть естественную предвзятость подтверждения и помогает хорошим тестировщикам обнаружить баги, которые могли остаться незамеченными для других.
Нельзя сказать, что инверсионное мышление является специфическим для тестирования, у него есть свои сторонники во всем, от математики до инвестирования. Этому может научиться каждый (даже самые оптимистичные разработчики!)
Эмпатия и ролевые игры
Способность видеть окружающий мир с разных точек зрения, понять чужой опыт и суметь почувствовать то, что чувствуют другие — не так просто. Это признаки хорошо развитого эмоционального интеллекта, и этот мягкий навык необходим в тестировании.
Хорошие тестировщики способны представить себя на месте пользователя, предсказать, какие действия он может совершать, где может испытывать трудности или неудобства, чем может быть разочарован и из-за чего раздражен. Благодаря глубокому пониманию поведения пользователя и подражанию ему, тестировщики обнаруживают баги до того, как они принесут проблемы настоящим пользователям.
Проявление эмпатии к пользователям — это нечто большее, чем просто подумать в ключе: «они хотят заказать книгу, поэтому я тоже закажу книгу». Это понимание образа мышления пользователя, их истории, стимулов и целей. Это обычно требует как воображения, так и исследований.
Самая близкая к этому активность, которую я встречал, это творческие «ролевые игры» (например, настольная ролевая игра Dungeon and Dragons — ДнД, актерская игра, импровизации и т.д.) Они все про «почувствовать себя в чужой шкуре», вообразить себя на месте другого человека и вести себя в соответствии с этим. Это всё, в каком-то смысле, практика эмпатии.
Сложные допущения
Эта фраза настолько часто используется, чтобы описать склад ума тестировщика, что уже стала клише и потеряла часть смысла. Сложные допущения — это не только про то, чтобы задаваться вопросом «Почему?» на все подряд, словно нетерпеливый пятилетний ребенок. Это предполагает нечто большее, и, как и всё остальное, это требует практики.
«Сложные допущения» не означает «оспаривай каждое допущение». Это также не значит «выброси все из окна и начни с нуля». Нам, тестировщикам, нет нужды быть Бертраном Расселом и расписывать на 360 страниц доказательство того, что 1 + 1 = 2.
На самом деле, для эффективного тестировщика критично важен навык определять и использовать допущения. Когда вы начинаете тестировать новую фичу непростого приложения, существует почти неограниченное количество возможных действий и путей тестирования, которые предположительно могут привести к обнаружению ошибки. Допущения — это именно то, что помогает сузить этот бесконечный набор возможных тестов до какого-то разумного числа, в рамках которого можно найти баги с высокой долей вероятности.
Допущения — это инструмент для сокращения проверок, допущения — полезны.
Важным навыком является способность точно оценить допущения, чтобы определить, корректно ли они влияют на ваше поведение, или они сбивают вас с пути. Являются ли они вредными или полезными; не позволяют ли они вам забывать про низкорисковые области в пользу более выгодного тестирования, или они прячут обоснованные опасения за мыслями вроде «нам не надо это тестировать» и «этого не могло произойти»?
Клише «сложные допущения» чрезмерно упрощает это — вы не оспариваете слепо допущения, вы используете все инструменты, которые есть в вашем распоряжении, чтобы лучше понять, какие допущения нужно оспорить, когда и как.
Например: «Наше приложение использует эту открытую библиотеку… Я не буду предполагать, что оно работает, я протестирую это тоже!» Скорее всего, это менее ценное допущение, которое можно оспорить, что будет тратой времени. Однако, немного поработать над этим вопросом будет вполне разумно (У нее уже миллионы пользователей или ее недавно создал какой-то студент? Есть ли у нее активное сообщество? Используете ли вы замороженную версию или она, возможно, будет расти в течение процесса разработки?)
Ум тестировщика находится в процессе постоянного распознавания и оценки допущений, с целью определить, являются ли они ценными, или вводят в заблуждение.
Тем не менее, не будьте уверенны, что вы все выяснили.
Интуитивное мышление и исследовательское поведение
Если тестирование можно было бы свести к простому списку действий, тестировщики были бы не нужны. И даже если бы оно могло быть сокращено до предсказуемого, предопределенного набора шагов, основанного на ограниченном наборе входных параметров (критерии приемки и SUT, например), необходимости в тестировщиках все равно не было бы. Тестирование — это нелинейная, непредсказуемая деятельность. Она требует развитого критического и креативного мышления и предполагает участие интуиции и чутья в той же мере, как и выполнение действий по алгоритму. Природа тестирования зачастую исследовательская — на старте вы не знаете точно, куда придете. Хорошие тестировщики принимают интуитивную и исследовательскую природу тестирования.
Чтобы лучше понять, что мы имеем в виду, приведем противоположное мнение, которое, к сожалению, до сих пор еще встречается в некоторых кругах: «Тестирование — это проверка приведенного списка приемочных критериев с помощью составления тест-кейсов с использованием техник граничного анализа, классов эквивалентности, комбинаторных техник и других формальных стратегий по созданию тест-кейсов. Как только готов полный список тест-кейсов, тестер прогоняет их и записывает, какие прошли, а какие нет.»
Для тех, кто придерживается подобного мнения, тестирование представляется простым и предсказуемым набором действий. Написание тест-кейсов еще требует каких-то навыков, но тестировать по этим пошаговым инструкциям сможет каждый. Однажды продумав тест-кейсы, вы точно знаете, что будете тестировать, еще до начала.
Как я сказал ранее, этого мнения до сих пор придерживаются некоторые представители индустрии. И я точно не знаю, почему, ведь большинство людей с реальным опытом тестирования совсем не поддерживают эту точку зрения. У меня есть догадка, что некоторым менеджерам это может нравиться потому, что так тестирование можно свести к деятельности, которую легко сделать общедоступной — что можно разделить на части и распределить между наименее «дорогими» участниками проекта.
Я мог бы еще страниц двадцать писать об исследовательской и интуитивной природе тестирования, но многие опытные тестировщики уже сделали это. Я горячо рекомендую «Исследуй это!» авторства Элизабет Хендриксон и «Исследовательское тестирование программного обеспечения» Джеймса А. Уиттакера. Лайза Кристин и Джанет Грегори тоже затрагивают эту тему в книгах «Гибкое тестирование» и «Еще более гибкое тестирование», но в рамках более широкого обсуждения роли тестировщика в Agile-командах. И, наконец, Майкл Болтон и Джеймс Бах часто пишут на эту тему с большим неравнодушием. В особенности рекомендую к прочтению вот эту статью.
Неважно, назовем мы это глубоким тестированием или структурированным исследовательским тестированием или любой другой фразой. Что действительно важно, так это то, что для тестирования требуется мышление в реальном времени, а направление и активности тестирования должны постоянно пересматриваться по мере поступления новой информации. Это не алгоритмическое экстраполирование критериев приемки и не может быть рассчитано заранее.
Как тестировщику, вам должно быть комфортно начинать свое путешествие без полной карты того, куда вы идете. Этот аспект непредсказуемости и неопределенности некоторых беспокоит, но я также обнаружил, что хорошие тестировщики, наоборот, добиваются результатов благодаря ему.
Признание человеческой природы
Как тестировщик, вы занимаетесь тестированием программного обеспечения, но не забывайте о том, что программное обеспечение — это конечный продукт длительного процесса. Это результат совместной работы группы людей с целью создания чего-то большего и сложного, чем любой из них смог бы сделать в одиночку.
Дефекты в ПО не появляются сами по себе, из вакуума, они являются симптомами проблем в процессе. Поэтому вам, как тестировщику, следует обращать внимание на процесс разработки ПО и поведение пользователей столько же, как и на конечный продукт.
Если изучать человеческую природу, то вскоре можно понять, что люди далеки от запрограммированных роботов с идеальной памятью, неизменной мотивацией и всегда высоким уровнем внимания. На самом деле, всё совсем наоборот.
Люди иногда отвлекаются, что-то забывают, начинают скучать. Люди также расстраиваются, раздражаются и устают. А еще иногда завидуют успехам других. У каждого свои планы и жизненные цели, из которых разработка этого конкретного модуля приложения для этой конкретной компании, возможно даже не входит в топ-10. Для кого-то мотивация лежит в области финансов, кто-то ориентируется на работу с крутыми технологиями, кого-то интересует определенная сфера, кто-то мотивируется признанием и социальным статусом, а ещё, по словам одного вымышленного персонажа, «Некоторые люди просто хотят наблюдать, как мир горит».
Кроме того, человеческое мышление является эвристическим и любит использовать короткие пути, а также имеет склонность придерживаться шаблонов, которые были полезны для выживания млекопитающих в Серенгети, но в меньшей степени для создания ПО. Бихевиористы называют это «когнитивными искажениями». Например, люди склонны видеть и принимать доказательства, которые согласуются с существующими убеждениями (предвзятость подтверждения, confirmation bias); если мы уже вложили свое время и другие ресурсы во что-то, нам трудно изменить направление или отказаться от этого (ошибка невозвратных затрат, sunk cost fallacy); мы переоцениваем факты, которые приходят в нашу голову просто (ошибка доступности, availability bias); и мы фокусируемся на первом доказательстве (эффект привязки, anchoring bias). И это далеко не все примеры когнитивных искажений, их гораздо больше.
Все эти несовершенства человеческого поведения дают о себе знать в процессе разработки программного обеспечения точно так же, как и в остальном жизненном опыте. Они присутствуют, когда разработчики разрабатывают, бизнес-аналитики анализируют, топ-менеджеры реализовывают корпоративную стратегию, и когда менеджеры среднего звена… ну, менеджерят.
Когда начинаете тестировать продукт, помните о том, что вы сейчас смотрите на конечный продукт человеческой деятельности, страдающей от этих когнитивных искажений и других несовершенств. Ошибки, поиском которых вы занимаетесь, чаще будут их симптомами, нежели чем того, что разработчик просто неправильно реализовал алгоритм или требование. Знание и понимание человеческой машины, создавшей это ПО, поможет вам их обнаружить.
Подходите к тестированию с такой мысленной установкой, что разработка ПО по сути своей является беспорядочным сотрудничеством разных людей и страдает от всех обычных ошибок.
Материал подготовлен в рамках курса «QA Engineer. Basic». Если вам интересно узнать подробнее о формате обучения и программе, познакомиться с преподавателем курса — приглашаем на день открытых дверей онлайн. Регистрация здесь.




