Наверное лучший путь для вкатки в IT, это изучение английского языка.
Уровни программистов, и что нужно уметь и знать на каждом уровне: https://docs.google.com/spreadsheets/d/18FIkoJ4OTCj9wIh8GkmeFS0Lb40yKuhFMNbcxYze44s/edit#gid=789031646
Тестирование, что нужно знать: Наверное лучший путь для вкатки в IT, это изучение английского языка перед изучением языка программирования.
Тестирование можно и нужно начинать с теории. Тестирование различают по нескольким форматам так сказать, можно конечно совмещать, но сначала лучше определиться с чем-то одним - веб, мобильное, нагрузочное, перфоманс тестирование и прочие. Неплохо знать линукс, консоль. Если это Windows, то разработка на Ruby будет проблематичной. В основном на C#, Java или Python. На Ubuntu, можно работать с любым языком программирования (c C# полноценно не получится). Если разбираться с консолью unix подобных систем, то в основном юзают Ubuntu/Mac, они более удобны для разработки/тестирования. Многие сервера настроены так же на Ubuntu.
Мобильное тестирвоание это свежее и интересное направление, то есть тестирование производится на разных гаджетах. Языки программирования, можно использовать в принципе любые для мобильного тестирования, не обязательно изучать только java для android, либо swift для ios. Языки Python и Ruby, отлично подойдут для мобильного тестирования. Есть инструмент, http://appium.io/, который позволяет писать тесты для мобильных устройств, на таких языках, как Node.js, Python, PHP, Ruby, Java.
Дальше зависит от того, какой язык программирования Вы знаете, чтобы можно претендовать на автоматизатора тестирования, либо если языки программирования не знаете, то нужно начать с ручного тестирования. Можно работать и набивать руку по составлению документации, тест-кейсов, понимать жизненный цикл бага, получать небольшую ЗП и уже изучать автоматизацию. Есть основные языки автоматизации, это Java, Python, Ruby и работы больше конечно же в больших городах.
Первая книга, наверное с которой стоит начать это - Книги Романа Савина ( Тестирование ком ) , Святослава Куликова ( Тестирование программного обеспечения ). Они уже устарели, но они же помогают понять, что такое тестирование.
Это общий сайт, где много теории, но на английском: https://www.guru99.com/mobile-testing.html
В тестировании очень любят спрашивать, как работает интернет Что такое HTTP: https://ru.hexlet.io/courses/http_protocol https://guides.hexlet.io/https-yandex-guide/ https://www.youtube.com/watch?v=DpWNiMtIsr8
Как работает интернет: https://www.youtube.com/watch?v=rfexQ2QyD4I
Как работает DNS: https://howdns.works/ep1/
Компьютерные сети | Таненбаум Эндрю, Уэзеролл Дэви https://www.ozon.ru/context/detail/id/135726580/
Сразу можно пройти бесплатный курс и получить сертификат по тестированию, начального уровня, очень советую https://stepik.org/course/58743 ( если он доступен, бывает что авторы закрывают ) Автор, работает в Яндексе. Он очень четко и понятно объясняет что и как, прям с самых-самых азов.
Так же очень интересный и полезный курс от mail - https://www.youtube.com/watch?v=3MBT9O6i0jk&list=PLrCZzMib1e9pDKLsabJYuODdVJrHYc4Jd
Полезный курс теории от ITVDN - https://www.youtube.com/watch?v=7EyX8n2Mb1A&list=PLvItDmb0sZw8npbYThWpZs5_cZU9ycos4
Нужны азы работы с базой данных, к примеру sql либо postgres. В зависимости от работы и написания разных автотестов, рубисты немного халявят, так как у нас есть очень удобный ActiveRecord. Неплохой вводный и бесплатный курс - https://www.youtube.com/watch?v=yOkj-PbCPQ8&list=PLDywto_IU4_4RU0sKfID6OY-np6uGmhlf
Есть канал тестирования, Михаила Портнова и Энди Кей. Михаила Портнова ооооочень хорошо дает теорию, но долго - https://www.portnov.com/ru и https://www.youtube.com/watch?v=9ecKqmeb9eA&list=PL_CSTk3_YGZ8i3h8yai0Lp5yrtQ8ga92G Энди Кей, в своих коротких видео на 5-7, хорошо раскрывает суть тестирования, простыми словами https://www.youtube.com/watch?v=jtEicidgRnM&list=PLN3rAY_-pdQafsbDsX4klNwwzh2IxTyok
Полезные ( Но платные ) курсы уже от ребят Learnqa: https://www.learnqa.ru/#courses
Нужен опыт работы с Linux: базовые навыки работы с терминалом. https://www.youtube.com/watch?v=tQLpAefAKuA
Управление службами Linux - https://losst.ru/upravlenie-sluzhbami-linux
Chrome DevTools guide (DOU) - https://dou.ua/lenta/articles/chrome-dev-tools-guide/
Обязанности по работе ручного тестировщика:
- Тестирование функционала
- Поиск и контроль проблем
- Анализ полученных данных
- Внесение недочетов в базу
- Создание и поддержка тест-кейсов и тест-планов в актуальном состоянии
- Проверка качества исправления ошибок
После ручного тестирования, можно осваивать автоматизацию, так как у Вас уже будет база знаний, фундамент. От того, какой язык программирования выбрать, зависит с какими фреймворками для тестирования можно работать. Зависит на какой системе будете разрабатывать тесты. Но обычно это Ubuntu. Я не говорю что Ruby это единственный язык, на котором можно вести тестирование, много языков подобных есть, к примеру Python, Java, PHP, Javascript. Но Ruby, как минимум, очень приятный язык, который прост, красив, удобен и понятен. Пример кода https://ibb.co/GxGbQd5. Язык программирования, на мой взгляд, важен:
- Так как Вы весь день будете на нем писать и Вам должно это нравится. Руби именно такой язык программирования.
- Он должен хорошо быть оплачиваемый(Ruby, Java, Python, Javascript такие)
- На нем должно быть много вакансий(Python, Java, Javascript такие)
- У языка должно быть хорошее и не токсичное комьюнити (Ruby такой, Javascript не такой, про Java и Python не могу сказать). Язык можно выучить самому, но самостоятельный путь может быть очень долгим. Скорее всего нужен ментор либо отличные курсы. Я могу порекомендовать ХП, так как сам их закончил, они шаг за шагом, с обратной связью, могут провести через джунгли и помочь найти работу. Состав преподавателей ХП очень крутой, мы общаемся с выпускниками и преподавателями, уже не первый год. Курс Хорошего программиста - https://goodprogrammer.ru/
В автоматизированном тестировании используется селениум Что такое селениум и как он работает, для чего нужен (теория) - Selenium WebDriver: полное руководство - https://software-testing.ru/edu/3-online/242-selenium-webdriver и https://habr.com/ru/post/152971/
Что такое локаторы - https://software-testing.ru/library/testing/testing-automation/3129-web-element-locators-for-test-automation и https://www.youtube.com/watch?v=9pBp9VDSU6M Работа с локаторами - https://www.youtube.com/watch?v=_TNh2ydpoOw
Как на практике применяется xpath/css, и что с помощью них можно сделать: https://www.youtube.com/watch?v=_LNcuGqbmoY https://www.youtube.com/watch?v=3BW7zISHri0 https://www.youtube.com/watch?v=zlWiw99bBUk
Что такое api, как используется, как писать тесты для API. https://software-testing.ru/edu/1-schedule/271-rest-api
Инструменты для тестирования API: https://software-testing.ru/library/testing/functional-testing/2676-open-source-api-testing
Работа с API: https://software-testing.ru/library/testing/general-testing/2518-rest-api-testing
Что такое Postman и как с ним работать. https://www.postman.com/ https://www.youtube.com/watch?v=ZpxjS8ZB0MA
Курс «Тестирование REST API»: https://software-testing.ru/events/2984-rest-api - платный https://www.udemy.com/course/api-2020-postman/ -бесплатный
Сайты с множеством теории на английском + вопросы к собеседованию: https://devqa.io/software-testing-fundamentals/#api_testing_interview_questions https://www.techbeamers.com/qa-interview-questions-and-answers-top-20/
Что нужно знать для автоматизации, какими ресурсами можно и нужно пользоваться и что нужно чтобы написать первые тесты: https://docs.google.com/spreadsheets/d/1oj1oJyL1ptDEuWiv8M5F9chDXE_4ij-fx9mRwToAI7s/edit#gid=1402541726
Обязанности по работе:
- Тестирование функционала
- Поиск и контроль проблем
- Анализ полученных данных
- Внесение недочетов в базу
- Проверка качества исправления ошибок
- Создание и поддержка тест-кейсов и тест-планов в актуальном состоянии
- Разработка и поддержка автоматизированных тестов
- Тестирование REST и SOAP API
- Взаимодействие с командой разработчиков ПО и другими участниками команды
- Проведение полного цикла регрессионного тестирования задач и багрепортов
- Активное участие в настройке тестовых сред и процессов тестирования