С чего начать учить тестирование
С чего начать учить тестирование
Когда я только начинал свой путь тестировщика, а затем — автоматизатора, я часто обращался к программистам за советом — например, почему у меня не работает код. И после очередного раза меня все дружно начали посылать в Google и YouTube. Я изначально не оценил пользы послания, но когда поработал без всякой помощи, то понял, что могу решить любой вопрос с помощью этих двух источников. Это ощущение пришло не сразу, понадобились месяцы. А скорость решения разнообразных постепенно вопросов увеличивалась в разы.
Многие считают, что самому тяжело сконцентрироваться, а на курсах дают готовую базовую информацию — каркас, на который можно опираться, к тому же, там можно рассчитывать на помощь коллектива. Возможно, курсы — хороший вариант для тех, у кого:
— есть лишние деньги;
— проблемы с самодисциплиной или нехваткой общения.
Но необходимо понимать, что всё не достанется просто так. Преподаватели знаний в рот не положат, эйчары просто так на собеседование не позовут и работу не предложат. Увы, так не работает.
Хотите платить деньги (3k грн и больше) — платите, но потом не говорите, что вы закончили курсы, получили немыслимо красивый сертификат, а найти работу не можете. Всё дело не в курсах, а в вашем желании и мышлении. И не важно, техническая специальность у вас или нет. Я, например, по образованию экономист, и это не помешало тестировать и программировать в автоматизации.
Что учить самостоятельно
Для тех, кто не хочет платить и желает самостоятельно во всём разобраться, я советую следующую методологию учёбы, которую испытывал на своих курсах по тестированию. Мои уроки были бесплатными — я сделал их ради удовольствия и помощи друзьям и близким, которые хотели жить по-другому. Было 3 набора людей по 10-15 человек. Из 1-го набора — 20%, из 2-го — 40%, из 3-го — 80% устроились на работу в течение 1-2 месяцев. Каждый раз я совершенствовал программу, подгонял ее под реалии рынка.
Дело не в том, чтобы дать людям информацию с практикой. Нужно выработать у них правильное мышление, научить тому, что они могут сами найти ответ на любой вопрос и решить поставленную задачу.
Итак, моя программа:
1. Базовые знания
Начните с чтения простой книги по тестированию, которая даст вам азы, покажет всю прелесть этой области. Разберитесь с понятиями: тест-кейсы, чек-листы, модели и методологии тестирования, баг репорты и т.п.
Я рекомендую «Тестирование DOT COM» Романа Савина. Она большая, но читается на одном дыхании. Написана простым языком со смешными вставками.
Также неплохо посмотреть по разным сайтам, какие определения в тестировании приняты для разных обозначений, названий тех или иных процессов. Тогда на собеседовании вы сможете оперировать несколькими вариантами ответа и с разной стороны описать проблему и решение вопроса.
Занимает времени => 1 неделя
Следующий шаг — написание тест-кейсов, баг-репортов и прочей документации. Например, можно прокручивать варианты или расписывать, как бы вы тестировали разные предметы: чашка, кофе-машина, дисковод, кран, лист бумаги, карандаш, гитара, мыльный пузырь, дверная ручка. Чем чаще вы будете это делать, тем легче вам будет отвечать на собеседовании.
Например, структура ответа на вопрос о том, как протестировать поле для ввода:
1. Позитивные сценарии;
2. Граничные значения;
3. Эквивалентные классы;
4. Негативные сценарии;
5. Еще придумайте свои варианты.
Посмотрите вот это видео, оно очень полезное для разнообразного виденья:
Тренируйтесь писать тест-кейсы и баг-репорты с полями:
1. ID;
2. Summary;
3. Description;
4. Severity/Priority;
5. Expected result;
6. Actual result;
И не важно, где это будет — в Jira или Word, или даже в вашем уме.
Занимает времени => 1 неделя
Тут — и теория, и практика по написанию запросов к базам данных. В последнем найдёте не только SQL. Стандартные вопросы по SQL: select, update, insert, delete, join (left, right, full), where, like, functions. Но всё-таки лучше ориентироваться и во всех остальных.
Занимает времени => 1 неделя
4. Unix
Скачайте и установите Linux. Например, Wubi вам отлично в этом поможет. И Windows не попортите, и удалить легко сможете. Как его установить — Google вам в помощь. 🙂
Найдите перечень базовых команд, начните применять их для всех возможных операций. Без интерфейса, а через командную строку.
Занимает времени => 2-3 дня
Знания по автоматизации лишними не будут, хотя не думаю, что они вам сразу понадобятся. Опять же, идём в Google или на YouTube.
Посмотрите стартовый урок по IDE. Потом, если понимаете программирование, переходите на WebDriver. Если нет, начинайте понемногу учиться кодить, но не увлекайтесь, — сейчас это не профильное ваше задание. Разберите базовые команды Selenium IDE и хорошо с ними попрактикуйтесь.
Относительно программирования советую начинать изучение с основ C# или Java. После, если захотите, сможете без проблем в течение двух недель перейти на любой другой язык.
Мой путь был следующим: C => C++ => Java => Ruby
Занимает времени => 2-3 дня
6. Сети
Немаловажным фактором являются знания в сетях, необходимо понимать принцип работы. Как минимум, вы должны знать, как сделать локальную сеть у себя дома.
Выучить бэкграунд вам поможет следующий материал — статья на habrahabr, это нулевая часть цикла «Сети для самых маленьких». Если сложно читать, есть видео на ютубе. Мне очень помог урок 2. Важно разобраться, что такое OSI, TCP/IP, HTTP, как проходит PING между двумя компьютерами.
И на собеседованиях я часто получал вопросы относительно сетей.
Занимает времени => 2-3 дня
7. Английский
Без английского будет сложно, поэтому советую или найти друзей-американцев, или пойти все-таки на курсы. В Киеве могу посоветовать бесплатные курсы английского с живыми американцами, куда я сам ходил: Big City English Club (Вернадского, 4).
Есть, конечно, украинские компании, где английский не нужен, но их довольно мало. Английский желательно учить с самого начала, чтобы мозг работал параллельно всем остальным технологиям.
Занимает времени => 1-2 месяца
Другое
Бывает, что в вакансии попадается что-то нестандартное, что вы не учили на курсах или не разбирали самостоятельно. То есть инструменты, которые зависят от проекта. Например: XML, JSON, HTML, CSS, XPath, CssSelectors, RedMine, TrackStudio, PivotalTracker, Jira, GIT, SVN, VMware, Selenium RC/GRID, SOAP-UI, TestComplete, Ranorex, Continious Integration Servers и т.п.
Но большинство таких технологий учатся за неделю. Если видите незнакомую технологию, сядьте перед монитором, и потратьте 2-3 часа. Это намного эффективнее, чем просто сидеть и бояться, что вы чего-то не знаете. Потом запишете эту технологию в свое резюме. Но только не пишите в него то, чего не знаете.
Итак, до вашего первого собеседования ответы на все основные вопросы должны быть выучены на зубок. Только отстроив и заполнив так называемый каркас знаний, вы имеете шанс получить желаемую должность.
Как видим, весь процесс обучения займет ориентировочно 1-2 месяца, в зависимости от вашей скорости обучения. Точно так же, как и на курсах. Зачем платить за курсы, если вы можете всё это выучить сами? Было бы желание.
Что поможет получить работу
Документ по окончанию курсов, к сожалению, не поможет. Тренеры могут рассказывать, что их сертификат катируется среди работодателей, но реальность более сурова — эйчары все равно не отвечают на отправленные резюме, если нет опыта работы. Кому нужен тот сертификат? А вот настоящий опыт с гуглом и ютубом — ценное преимущество. Если вы протестируете несколько сайтов с помощью тысячи тест-кейсов с разными поисковыми данными — это уже что-то.
Можно написать в сопроводительном письме к резюме, что вы готовы поработать на фирму бесплатно 3-. месяца. У меня знакомый бесплатно работал 6 месяцев программистом (специализировался на авиации) — научился, и теперь неплохо живёт.
Кстати, многие компании не показывают все вакансии на it.rabota.ua. И часто стараются их закрывать внутренними силами. Лучше всего делать так: на jobs.dou.ua/ratings смотреть список компаний, а потом открывать официальный сайт каждой и изучать открытые вакансии, и просто отсылать резюме независимо от того, есть там вакансия или нет.
Как мне кажется, сейчас нужно быть в разы более проворным и смекалистым, чем 2-3 года назад, так как наплыв людей в ИТ-сферу сильно увеличился, а вам надо выделить себя среди остальных кандидатов. Поэтому, кроме стандартных способов (простая рассылка резюме), стоит искать что-нибудь нестандартное. Некоторые идеи и варианты я привёл выше.
Выводы
Я уверен, что еще много людей пойдут на курсы, и большинство из них будут разочарованы, не найдя потом работу, даже не побывав ни на одном собеседовании.
Согласитесь, если вы не пошли на курсы и не получили работу, то, как минимум, вы не потратили деньги просто так. А если пошли и не получили, то потраченные деньги потом долго будут висеть в файле «log» ваших мозгов.
Здесь вам выбирать путь. Если есть желание, найдется и способ.
Кто такой тестировщик и как им стать с нуля
Разбираемся, кому подходит профессия и что нужно уметь QA-специалисту.
Тестировщики, или QA-инженеры, — это люди, которые проверяют, как работает программа или приложение. Они ищут ошибки, смотрят, чтобы программа делала именно то, что задумано, защищают продукт от хакеров, проверяют, как приложение работает на разных устройствах и в разных операционных системах.
Тем, кто не работал тестировщиком, кажется, что это очень просто: понажимал все кнопки подряд, нашёл ошибку, сказал разработчику, и всё. На самом деле тестировщик — это сложная и творческая профессия на стыке IT, UX-дизайна и продуктового менеджмента.
Что делает тестировщик
Честно говоря, тестировщикам действительно приходится тыкать на все кнопочки и ссылки, заполнять все формы и стараться совершить все возможные ошибки, которые могут прийти в голову пользователю. Без этого не обойтись.
Неполиткорректные разработчики из-за этого когда-то обидно называли тестировщиков «обезьянками-кликальщиками». Термин был так распространён, что Android назвал свой инструмент для автоматизации тестирования MonkeyRunner — в том смысле, что он как обезьянка, только быстрее.
Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.
Но не думайте, что тестировщики лишь хаотично бьют по клавишам в надежде найти баг, — это непродуктивно. У них есть собственные методы для определения слабых мест программы и быстрого поиска ошибок.
QA-инженеры придумывают инструкции для тестирования — тест-кейсы. На элементарном уровне это выглядит так: аналитики пишут требования — какие данные должны быть на входе, как они обрабатываются, что должно получиться в результате; тестировщики пишут пошаговые инструкции для проверки программы на соответствие этим требованиям.
Тестировщик должен скрупулёзно проверить, что будет, если совершить какое-то действие, и соответствует ли результат ожидаемому.
Но ошибки коварны — в лабораторных условиях они могут себя и не проявить, зато пользователь наткнётся на них после релиза. Поэтому QA-инженеры придумывают разные стандартные и нестандартные ситуации, чтобы проверить, как поведёт себя программа. Это творческий процесс, для поиска скрытых багов приходится проявлять смекалку и аналитические способности.
Нужно предусмотреть все возможные и невозможные варианты. Что будет, если пользователь введёт цифры вместо букв? А что, если у него компьютер глючный? А вдруг сразу много пользователей будут работать и перегрузят систему?
Работа тестировщика — это бесконечное приближение к совершенству. Невозможно проверить всё, поэтому тестировщик должен работать так, чтобы совершить минимум действий, но найти максимум ошибок.
Мануальщики и автотестеры
Облегчить работу тестировщика помогают программы для автоматического тестирования. Автоматизация сокращает время тестирования и уменьшает рутину в работе. В больших проектах без автоматизации не обойтись: там очень много элементарных повторяющихся действий, никакого времени не хватит, чтобы все их проделать.
Всех тестировщиков делят на мануальщиков и автотестеров. Первые ищут ошибки в коде вручную, вторые пишут программы, которые делают это автоматически. Но это очень условное деление. Вы не найдёте автоматизатора, который не умел бы тестировать программу вручную. А многие мануальные тестировщики не любят рутину, поэтому осваивают языки программирования и пишут автоматические тесты. Опытные специалисты могут выполнять работу и мануальщика, и автотестера.
Может ли новичок-нетехнарь стать хорошим QA-специалистом
Порог входа в тестирование довольно низкий. Чтобы стать тестировщиком, не требуется техническое образование. Главное, чтобы человеку была интересна сфера IT и он хотел развиваться в этом направлении. Об этом говорит в своём интервью на hh.ru руководитель департамента обеспечения качества ПО Veeam Software Игорь Кацев.
На сайте Software-Testing.ru опрашивали тестировщиков из России и СНГ по поводу их образования. Оказалось, что в профессию приходят и достигают в ней карьерных высот разные люди: технари, гуманитарии, экономисты, юристы, люди с двумя высшими и люди без диплома вообще.
Насколько востребована профессия тестировщика
Тестировщики нужны во всех мало-мальски серьёзных IT-проектах. Большие компании предпочитают нанимать их в штат, малые работают с фрилансерами. О том, насколько востребованы QA-специалисты, говорят данные с сайтов по поиску работы:
Мануальщиков, не понимающих кода, работодатели не любят, даже если они прекрасно составляют тесты. Но и автоматизаторы, не знающие основ тестирования, тоже никому не интересны.
Вот, например, скрин с hh.ru, где работодатель перечисляет требования к тестировщику:
Большим спросом пользуются универсалы, владеющие современными методами тестирования, знающие языки программирования, умеющие составлять и автоматизировать тесты, например:
На какую зарплату можно рассчитывать
Заработная плата тестировщика в регионах — от 55 до 60 тысяч рублей, а в Москве — 80–150 тысяч.
Новички могут рассчитывать на зарплату от 40 тысяч рублей, специалисты высокого уровня получают 220–300 тысяч.
Как развиваться тестировщику
Путей для карьерного роста много. Некоторые начинают с тестирования, чтобы потом уйти в разработку, но это не единственный вариант — можно развиваться и внутри профессии.
Младший специалист тестирует программы вручную по готовым тест-кейсам. Чтобы из «обезьянки» стать мидлом, нужно развиваться: досконально изучать проект, знать язык кода и основы автоматического тестирования.
Если джуниор хорошо себя зарекомендует, то через 2-3 года получит повышение и станет мидлом. Будет самостоятельно составлять тест-кейсы и заполнять документацию.
Ещё через год-полтора успешный мидл может претендовать на должность старшего специалиста (Senior QA Engineer). Его круг задач расширяется: синьор планирует работы по тестированию, контролирует работу джунов.
Лет через пять можно стать тимлидом — руководителем команды тестировщиков. От тимлида требуются профессиональные компетенции, навыки менеджмента, умение решать сложные задачи.
Так происходит карьерный рост специалиста по вертикали. Но на практике тестировщики часто выбирают развитие внутри профессии — например, специализации по тестированию:
Какие личные качества необходимы тестировщику
Кроме того, в тестировании очень важны личные качества специалиста. Вот список основных, без которых точно не обойтись:
Что надо уметь
От тестировщика требуется:
Кроме того, тестировщик должен владеть инструментами ручного и автоматического тестирования. Это могут быть:
Для автоматизации тестов понадобятся системы тестирования веб-приложений, программы для функционального и нагрузочного тестирования.
Ну и обязательно потребуется английский язык — для чтения и заполнения технической документации.
Где всему этому научиться
Если вас увлекла профессия тестировщика, можно самостоятельно изучить методики тестирования по книгам, мануалам и видео, а затем попытаться устроиться на работу на junior-позицию. Этот вариант рабочий, но займёт много времени.
Более простой способ стать тестировщиком — пройти обучение на онлайн-курсах. Вы освоите необходимые техники и инструменты, получите практический опыт тестирования крупного проекта. После обучения наши успешные студенты становятся специалистами middle-уровня.
Путь тестировщика: с чего начинать изучение автоматизации
Шесть лет назад Роман Печерский из Ижевска прошёл курсы для функциональных тестировщиков и начал работать QA-инженером. Спустя несколько месяцев он впервые столкнулся с автоматизацией тестирования и понял, что хочет развиваться в эту сторону.
Сейчас Роман руководит командой автоматизаторов, а также учебным центром по автоматизированному тестированию в ижевском EPAM. Он рассказал, с чего начинал изучать автоматизацию, как развивался, с какими проблемами имел дело и какими лайфхаками пользовался.
Как я познакомился с автоматизацией
Я впервые столкнулся с автоматизацией, когда техлид нашего проекта предложил мне покрыть автотестами проверки, чтобы их можно было запускать после любого изменения и быстро получать обратную связь. К тому времени я не проработал в тестировании и года, поэтому чувствовал себя не особо комфортно. Несмотря на это, задача показалась мне интересной, и я решил попробовать её выполнить – правда, даже не представлял, с чего начать.
Кто-то из коллег по проекту рассказал мне про Selenium IDE – инструмент для автоматизации действий Firefox-браузера. Помню, как написал свой первый автотест с помощью метода Record and Play: включил запись, начал нажимать кнопки, вводить текст в поисковую строку и кликать по ссылкам. Получился набор сохранённых действий, который можно было запускать и сразу видеть результат.
Знакомства с Selenium IDE и этих лекций мне вполне хватило, чтобы решить ту проектную задачу и начать делать первые шаги в сторону в автоматизации.
Как я учился автоматизации
Вскоре я начал самостоятельно изучать Java – один из самых популярных языков для автоматизации тестирования – и пробовать писать несложные автотесты в Eclipse, например, для тестирования login-формы приложений.
Однажды мы с моим менеджером обсуждали моё дальнейшее развитие. Я сказал, что планирую двигаться в сторону автоматизации, и попросился на курсы по автоматизированному тестированию для сотрудников.
Следующие шесть месяцев я работал и учился – по вечерам, выходным, праздникам. Всё усложнялось тем, что первые три месяца я находился в командировке на новом проекте. После работы я возвращался в гостиницу с мыслями о том, что если вовремя не сдам домашнее задание, то накоплю долги, за которые меня могут отчислить. Для меня это был ужасный стресс, и я даже похудел на несколько килограммов.
Вот что помогало мне преодолевать трудности:
• Понимание, зачем это нужно
Несмотря на то что учёба была сложной и временами даже скучной, я чётко осознавал, какие возможности она мне откроет. Именно поэтому всё свободное время я посвящал автоматизации. Вместо прогулок по городу – автоматизация, вместо посиделок в баре с коллегами – автоматизация, вместо вечернего сериала – автоматизация.
• Поддержка коллег
Всегда приятно, когда тебя кто-то подбадривает – особенно люди, которые уже прошли тот же путь.
• Чувство соперничества
Ощущение, что я могу стать самым отстающим студентом в группе, также подстёгивало меня двигаться вперёд.
Когда курсы закончились, я начал работать на проекте, чередуя обязанности функционального тестировщика и автоматизатора. Через несколько месяцев присоединился к новому проекту – уже в роли тимлида. QA-команда состояла всего из двух человек – меня и функционального тестировщика, которому я объяснял основы автоматизации.
Как я начал обучать автоматизации
Мой коллега по проекту – первый человек, которого я начал обучать автоматизации. Сначала моих знаний не всегда хватало, чтобы отвечать на его вопросы и помогать решать проектные задачи. Но когда я не мог ему что-то объяснить, то понимал, что сам недостаточно развиваюсь в теме и подтягивал знания. Обычно я искал ответы на Stack Overflow или обращался за помощью к разработчикам.
Постепенно моя команда выросла до 10 автоматизаторов. К тому времени я полностью отошёл от ручного тестирования и занимался комплексным системным автотестированием веб-приложений. Затем начал помогать команде с созданием архитектурных решений для тестов и стал проектным координатором.
Полгода назад мы с коллегами организовали в офисе собственный учебный центр по автотестированию. Стали брать на обучение студентов последних курсов и людей, которые решили сменить сферу деятельности.
Недавно я сам прошёл небольшой курс – по JavaScript – и подключился к новому проекту. Раньше я никогда не сталкивался с JS. Мне потребовалось около месяца, чтобы начать более-менее уверенно чувствовать себя в работе с новым языком.
Резюмируя свой опыт, я могу дать несколько советов новичкам, которые делают первые шаги в автоматизации.
• Начните с практики – создайте собственный автотест
Многие думают, что прежде чем писать автотесты, нужно сначала разобраться с теорией тестирования и выучить Java или другой язык программирования. Обычно энтузиазма у таких людей хватает ненадолго, потому что это долгий и сложный процесс.
Я считаю, что начинать нужно с простых вещей. Создайте несложный автотест сами. Чтобы было интереснее, попробуйте решить какую-нибудь жизненную задачу. Например, напишите скрипт, автоматизирующий передачу показаний счётчиков воды на сайт водоканала. Сегодня это можно сделать с помощью Katalon Studio, который пришёл на смену Selenium IDE. Такие задания подогревают интерес к изучению автоматизации. Затем можно будет переходить к изучению теории и специфики автоматизации, а также начать осваивать язык программирования в связке с Selenium WebDriver.
Допустим, вы поняли, что хотите развиваться как тестировщик-автоматизатор и готовы потратить время на учёбу. Если вы планируете полностью погрузиться в обучение и не растягивать его на долгие месяцы, нужно либо оставить текущую работу, либо попросить у начальства длительный отпуск.
Можно последовать моему примеру и попытаться совместить учёбу с работой. Так вы сохраните зарплату, но на несколько месяцев полностью забудете о существовании свободного времени.
• Начните учиться самостоятельно или пройдите курсы
Курсы – хороший вариант для тех, кто вообще не имеет представления о том, с чего начать, или хочет систематизировать свои знания. Онлайн-курсы можно найти на Otus, Stepik, GeekBrains, Lynda, JavaRush. Если говорить об офлайн-обучении, его могут организовывать разные IT-компании вашего города: учебный центр EPAM, например, работает в шести российских городах.
Обычно программа любого курса по автоматизации разделена на три модуля:
1. Введение в теорию автоматизации;
2. Изучение основ языка программирования (например, Java);
3. Написание собственных автотестов.
Это, на мой взгляд, универсальный алгоритм для изучения автоматизации тестирования. Его также можно брать за основу, если у вас есть технический бэкграунд и вы решили самостоятельно постигнуть азы автоматизации.
Вот минимальный набор знаний, которые вы должны освоить, чтобы начать работать на реальных проектах:
• Понимание основных понятий тестирования: тест-кейсы, дефекты и т.д.;
• Понимание, что можно автоматизировать, а что нет;
• Знание основ языка программирования (Java, JavaScript, Python, C#);
• Умение работать с Selenium WebDriver;
• Умение писать локаторы для элементов;
• Знание одного-двух юнит-фреймворков.
• Как можно больше интересуйтесь
Новичков в автоматизации чаще всего отпугивают ошибки в коде. Они запускают код, видят, как что-то идёт не так, и впадают в ступор. Что делать в такой ситуации? Попробовать найти решение в интернете, например, на том же Stack Overflow. Ещё один вариант – попросить помощи у более опытных коллег. Они тоже когда-то были на вашем месте и делали такие же ошибки. Обсуждая какую-либо задачу с опытными автоматизаторами, вы расширяете свой профессиональный кругозор.
• Не стойте на месте
Чтобы поддерживать себя в форме, нужно постоянно находиться на технологическом острие. Вводите в работу новые фреймворки и библиотеки, разберитесь с Continuous Integration, углубите знания языка программирования или освойте новый, читайте тематические статьи и блоги:
За пять с половиной лет, что я работаю с автоматизацией, я ни разу не пожалел, что выбрал это направление. Мне нравилось выполнять и задачи ручного тестирования, но я понимал, что рано или поздно упрусь в потолок. Потолок для мануальщика наступает, когда он тестирует разные виды приложений – веб, десктопные, мобильные – настолько профессионально, что работа перестает подбрасывать новые вызовы и превращается в рутину. Чтобы не стоять на месте и развиваться дальше, необходимо получить какой-то новый навык. Можно заняться автоматизацией функционального или нагрузочного тестирования, можно переключиться на тестирование безопасности или, например, разобраться в базах данных. Ещё можно посмотреть в сторону DevOps, бизнес-анализа или проектного менеджмента.
Я своего потолка как мануальный тестировщик достичь не успел – автоматизация увлекла меня раньше. При этом бэкграунд мануальщика сильно помогает мне в работе все эти годы. Я не только реализовываю тест-кейсы, но и обычно сам пишу для них сценарии. Так я понимаю, что именно тестирую, какой функционал покрываю и какого жду результата.









