Предлагаем вам ознакомиться с русской адаптацией статьи Тима Эби (Tim Ebie), основателя https://testdemy.teachable.com/, QA-платформы для онлайн-тестирования программного обеспечения, созданной для помощи тем, кто начинает свой путь в автоматическом тестировании
Мы наблюдаем за всплеском интереса и ростом числа веб-приложений на рынке. Вместе с ними возникает всё больше и больше рабочих мест, которые требуют программирования, технических умений и различных навыков автоматизации. Как следствие, ручные тестировщики, чтобы оставаться востребованными, видят необходимость переключится с чистого ручного тестирования в сфере контроля качества (QA) и присматриваются к автоматическому тестированию. Переход от ручного к автоматизированному тестированию — это разумный выбор, так как многие QA-позиции требуют массива технических навыков, связанных с написанием кода.
Для тех, кто не любит изменений, такая перемена может причинять дискомфорт. Другие разработчики, напротив, рассматривают это «время перемен» как возможность перевести свою карьеру и навыки на новый уровень и повысить свою востребованность.
Каждый раз, когда требования возрастают, возможности расширяются. Разработчики с правильным набором навыков могут "вскочить в поезд", и построить отличную, хорошо оплачиваемую карьеру. Если вы ищете возможности перехода от сферы ручного тестирования к автоматизации, или даже рассматриваете переход из другой сферы разработки ПО, имеет смысл предпринять несколько шагов, которые помогут вам достигнуть успеха.
Вот примеры поисковых слов, которые можно использовать для формирования рыночной оценки:
QA-тестировщик (автоматизированное тестирование):
Вот несколько ключевых выводов, вытекающих из этих описаний вакансий.
Гибридные/cмешанные роли: уделите пристальное внимание названиям вакансий и тому, как эти компании видят автоматизированное тестирование ПО. Это можно понять по названиям ролей, которые они указывают (Разработчик автоматизации ПО, Разработчик ПО для тестирования (Software Automation Developer, Software Developer in Test) и т.п. Заметили шаблон? Эти компании более или менее ссылаются на QA-инженеров как на разработчиков ПО. Для ручных тестировщиков это значит, что пришла пора учиться писать код, чтобы превратить ручные тест-кейсы в автоматизированные тестовые скрипты. Для разработчиков, ищущих перехода в автоматизированное тестирование, это значит, что вы должны больше изучить методологии тестирования ПО, жизненный цикл тестирования ПО, и выучить, как строить автоматизированные тест-кейсы, чтобы поддерживать эти жизненные циклы.
Не упустите этот критический сдвиг, иначе отстанете. С развитием Agile-методологий и проектов, на базе Agile, все больше организаций смешивают QA и разработчиков в одном лице. Так что вам пора подготовиться к новым обязанностям.
Лица, которые имеют базовую подготовку в мире тестирования ПО и одновременно хорошо разбираются в навыках разработчика ПО — на вес золота.
Технологии с открытым кодом /Языки программирования: oбратите внимание на технологии и языки программирования, выделенные в описаниях жирным шрифтом. Эти технологии и языки — целевые, вам нужно их выучить, чтобы быть востребованным на рынке.
Выберите одну высоко востребованную технологию и начните формировать свою набор навыков отрабатывая их и участвуя в реальных практических приложениях и проектах. Это ускорит ваше обучение.
Если вы не уверенны, с какого языка программирования начинать, давайте немного сузим поле.
Программирование — это основа автоматизированного тестирования. Если вы хотите войти в автоматическое тестирование, вам нужно уметь программировать, и чем лучше вы программируете, тем успешнее вы будете в автоматическом тестировании или разработке автоматизации. Поэтому, если вы хотите оставаться конкурентоспособным в этом постоянно меняющемся мире разработки и технологий, вы должны решиться победить этот страх и стать востребованным разработчиком автоматизированного тестирования.
Хорошо то, что под минимальным руководством более опытного коллеги, применив упорство и настойчивость, постоянно практикуясь (как у нас на JavaRush), вы точно можете улучшить свои навыки программирования.
Следующий логический вопрос: какой язык программирования учить?
Исходя из нашей рыночной оценки, мы знаем, что работодатели хотят нанимать людей "с четким пониманием языков объектно-ориентированного программирования". И, соответственно нашему анализу, можно увидеть несколько языков объектно-ориентированного программирования, на которые они ссылаются. Например, Java, C#, JavaScript, и Python. Начинать можно с любого из них.
Если вы начинаете изучать ООП-язык, вот несколько понятий, которые следует хорошо усвоить, чтобы лучше ориентироваться в автоматизированном тестировании:
Прекрасное средство, которое можно найти в открытом доступе — это Selenium WebDriver. Selenium имеет несколько языковых привязок (Python, Java, C#, Ruby, PHP, JavaScript и т.п.), так что изучение одного из этих языков программирования послужит прекрасной основой для построения солидной карьеры в автоматизации.
Несколько ключевых понятий, которыми нужно овладеть, чтобы строить надежные, функциональные и эффективные автоматизированные тест-кейсы:
Любой профессиональный спортсмен скажет, что он или она достигли высот на своем пути благодаря работе, усилиям своих тренировок. Говорят, Майкл Джордан жёстко играл, но еще жёстче тренировался. Этот подход должен позаимствовать каждый, кто собирается заниматься автоматизацией — практикуйтесь, практикуйтесь, тренируйте ваши новые навыки, пока они не станут вашей второй натурой. Это единственный путь улучшить умения и быть востребованным тестером.
Один из хороших способов тренировок — активно изучать язык программирования и средства автоматизации одновременно, "играясь" с ними. Другими словами, пишите маленькие программы или скрипты автоматизированного тестирования, ломайте их, меняйте — и смотрите, как теперь это работает. Учитесь из того, что вы сделали, и пробуйте снова. Практикуйтесь играя, делая и обучаясь. Делайте так, и ваша «кривая обучения» поползет вверх.
Хотя попытка радикально изменить направление вашей карьеры может показаться пугающей, цениться и быть рыночно привлекательным необходимо. Вам нужно развивать новые навыки, чтобы оставаться на вершине постоянно меняющегося мира разработки программного обеспечения и быть тем, кого на самом деле ищут работодатели.
Начинайте с малого: оцените требования рынка, изучайте объектно-ориентированное программирование и средства автоматизации, и постоянно практикуйтесь. И вы подготовитесь к новым возможностям трудоустройства раньше, чем поймете это сами.
Источник: https://simpleprogrammer.com/2017/07/28/start-automation-testing-part-1/

Шаг 1: оценка рынка
«Привычка номер два» из книги доктора Стивена Кови «7 привычек высокоэффективных людей» (Dr. Stephen A. Covey, 7 Habits of Highly Effective People) гласит: «Начинайте с мысли об окончании» (“Begin with the end in mind”). Верю, что этот принцип справедлив, когда речь идет о старте в автоматизированном тестировании. Начните с рыночной оценки потребностей тех, кто нанимает инженеров по автоматизации. Как только вы получите понимание технических потребностей нанимателей, вы сможете приобрести соответствующие навыки. Неплохо для начала посмотреть описания вакансий на любом сайте (например Indeed.com, Dice, Monster, LinkedIn и т.п.).
- инженер по автоматизации тестирования (Test Automation Engineer);
- разработчик автоматизации (Automation Developer);
- автоматизированное тестирование /тестировщик (автоматизированное тестирование) (Automation Testing/Automation Tester);
- QA инженер по автоматизации (QA Automation Engineer);
- инженер по разработке ПО для тестирования (Software Development Engineer in Test (SDET).
- какие конкретно навыки и технологии они упоминают?
- видите ли вы отдельный набор или "блок" умений или технологий для этих навыков?
- сколько лет опыта требуется, если требуется вообще?
- есть ли отдельные отрасли, склонные нанимать больше инженеров по автоматизации, чем другие?
- на какую зарплату можно рассчитывать?
- являются ли интересующие нас средства или технологии в основном продуктами открытого доступа или коммерческими продуктами?
- имеет четкое понимание языков объектно-ориентированного программирования;
- знаком с Jenkins, Test Complete, VersionOne, Git, Visual Studio, Oracle, MSSQL, Hyper-V, AQTime;
- в работе тесно связан с разработчиками, бизнес-аналитиками и другими тестировщиками, чтобы определять компоненты автоматизации тестирования, которые будут использоваться для проверки требований к разработанному ПО.

- сохраняет автоматизированные тесты в соответствующих системах контроля версий — TFS, GitHub и т.п.;
- следует предопределенным стандартам автоматизации и стандартам DevOps для автоматизации, а также процессам непрерывной интеграции и развертывания;
- опыт работы со средствами ALM (TFS, Jira, HP QC) и средствами автоматизации тестирования (предпочтительно Selenium WebDriver).
- oпыт работы с Selenium WebDriver;
- навыки программирования на Python, Java, или подобных языках;
- опыт мобильного тестирования / Appium.
- oбновление и расширение тестовой среды и инструментов тестирования в C#, TypeScript, JavaScript… ;
- сильные навыки программирования в C# или Java, и/или JavaScript вместе с четким понимание концепций объектно-ориентированного программирования;
- опыт работы с Visual Studio, Subversion, GitHub, Unity, Teamcity, Jira Cloud, Confluence.

Шаг 2: Овладение объектно-ориентированным языком программирования (OOP)
Нужно признать: большинство ручных тестировщиков боятся программирования. Сама мысль о том, чтобы залезть "под капот" и посмотреть, как на самом деле работают системы и приложения, пугает многих «ручных» тестировщиков. Именно этот страх главным образом и является причиной того, почему они стали ручными тестировщиками.
- oбъектно-ориентированное программирование (классы, объекты, экземпляры, наследование, атрибут и т.п.);
- Mодули, Стандартные библиотеки (на любом языке, на котором вы остановились);
- cтруктуры данных (cловари, списки, кортежи и т.п.);
- типы данных (строки, символы, целые числа, с плавающей запятой, логические или же булевы типы, NoneType и т.п.);
- переменные;
- обработка ошибок/исключений;
- арифметические операторы/ порядок приоритета;
- сравнение, логические булевы операторы;
- процедуры/функции/методы;
- поток управления: If-утверджения, for-циклы, while-циклы и т.п.
- чтение/Запись в файлы ;
Шаг 3: Овладение средствами автоматизации
Я не устаю повторять: чем лучше вы можете программировать, тем лучше вы сможете автоматизировать. Если вы начали изучать язык программирования, следующий шаг — выучить, как использовать средства автоматизации. Поскольку большинство компаний склоняются к средствам автоматизации с открытым доступом (или к бесплатному программному обеспечению), а не к коммерческим лицензионным продуктам из соображений экономии.
- шаблоны проектирования: объектная модель страницы;
- поиск элементов веб-страницы с помощью разных локаторов (CSS Selector, XPATH, ID, Name и т.п.);
- переключение Windows/iFrames;
- рефакторинг;
- модульное тестирование;
- тестирование в облаке/параллельное тестирование;
- проверка данных;
- тестирование на разных веб-браузерах (Firefox, Internet Explorer, Chrome, Safari, Opera и т.п.);
- неявные и явные ожидания;
- цепочки действий
Шаг 4: Практика, Практика и еще раз Практика
Что бы вы ни делали, никогда не бросайте. Изучать что-то новое — это всегда вызов. Но каждый вызов можно победить достаточным количеством практики и самоотверженности. Сколько времени займет изучение новых навыков и технологий, полностью зависит от вас и того, как много вы будете практиковаться, и сколько самоотверженных усилий приложите, чтобы овладеть этими навыками.
Время начинать
В новом деле самое главное — начать. Всё время, когда мы прокрастинируем или не можем начать, причина в том, что у нас нет "дорожной карты" или плана игры, помогающего наметить курс.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ