Як я складаю план персонального розвитку від Manual QA до QA Automation

Усі статті, обговорення, новини про тестування — в одному місці. Підписуйтеся на QA DOU!

Привіт. Мене звати Наталія. Я працюю на посаді Manual QA Engineer уже 6 років, 2 з них у компанії ApexTech. До моїх обов’язків входить забезпечення якості продукту та задоволення клієнта кінцевим результатом.

У моїй професії потрібно мати достатньо багато різнобічних навичок і компетенцій. З ключових я маю досвід роботи з документацією, тестуванням, комунікацією з клієнтом та в команді. Також на перетині моєї професії стоїть бізнес-аналіз, якому я приділяю не менше уваги.

Щодо технологій, то у своїй роботі я маю досвід, пов’язаний з Web, API, Jira, REST, Postman, SoapUI, Chrome DevTools, Confluence, Selenium, SVN, BrowserStack та LambdaTest. Також маю досвід роботи з телекомунікаційними технологіями та роботою з OSS/BSS системами, CRM-системами та Cloud Platforms.

Не так давно я зрозуміла, що хочу розвиватися далі та підкорювати нові сфери. Але розібратися в новому напрямі та скласти персональний план свого розвитку не так вже й просто.

У цій статті я крок за кроком розповім, як визначила свої подальші кроки в кар’єрі. А також подивимося, куди розвиватиметься галузь та як до цього адаптуватися. Особливо корисна стаття буде для Juniour-Middle спеціалістів QA Manual, спеціалістів QA Manual, які хочуть розвиватися у сфері QA Automation. В цілому, сподіваюсь, що для людини будь-якої спеціалізації в IT ця стаття може стати як туторіалом, так і темплейтом складання плану свого персонального розвитку.

Спойлер алерт: вам можуть допомогти, але ніхто за вас нічого не зробить. Не чекайте, поки вам вигадають вектор розвитку в компанії, краще визначте його самі.

Далі я крок за кроком розкажу, як визначила свої наступні кроки у кар’єрі.

Крок 1. Визначаємо мету у кар’єрі та оцінюємо перспективи

Щодо перспектив кар’єрного зростання я розглядаю можливість розвитку в технічній галузі, перекваліфікувавшись на посаду QA Automation. У мене є досвід програмування в минулому, і я хотіла б застосувати його в поточній професії.

Крок 2. Визначаємо, якими навичками необхідно володіти, щоб досягти бажаної позиції

Тут краще запитати у людини з необхідною експертизою. Можна запитати колег або знайти людину на LinkedIn, зазвичай на такі запити відповідають з радістю. Для відповіді на це питання я звернулася до людини, яка працює на посаді QA Automation Engineer (SDET), до свого чоловіка 😊

В автоматизації тестування важливо спочатку розуміння основ API. Необхідні знання мов програмування та навички налагодження. Також необхідні знання Chrome DevTools та аналогів. З того, що точно знадобиться в роботі:

  • знання Git;
  • тули CI/CD (Jenkins/Gitlab CI, CircleCI);
  • інструменти для логів та моніторингу (Kibana, Graylog, Grafana);
  • досвід роботи з Linux/MacOS platforms;
  • бути знайомим з SQL (вміти писати запити до БД);
  • мати уявлення про Continuous Integration, JUnit/TestNG/Nunit;
  • Docker, Kubernetes;
  • залежно від потреб проєкту та мови програмування, необхідно вивчити відповідний automation testing framework.

Знання теорії тестування та вміння аналізувати є важливими як для автоматизатора, так і для manual QA engineer.

Крок 3. Визначте, що зараз є популярним у сфері, яка вас цікавить

Дослідіть, що просять від роботодавців, які навички та знання є найактуальнішими та обіцяють набувати додаткової значущості в галузі.

Швидкість випуску продукту є одним з пріоритетних критеріїв оцінки тестування та однією з головних цілей QA. Без методологій тестування дуже важко кудись рухатись та відстежувати процес. З тенденцій методик тестування зараз найпоширеніша модель — це Agile або щось подібне до Agile.

Як методологія тестування, найбільше поширення отримала дослідницька модель, але також використовується класична перевірка на основі сценаріїв. Досить широко використовується автоматизація тестування для функціонального та регресійного тестування.

Web все ще є найпопулярнішою платформою для тестування. Тому важливо знати та вміти застосовувати різноманітні інструменти для тестування вебу (один з прикладів — Chrome DevTools).

Світовий ринок хмарних рішень та послуг зростає, тому все більше виникає потреба в знаннях хмарних технологій, таких як AWS / Azure і тестування мікросервісів, розуміння докерів та контейнерів.

Крок 4. Якщо ви працюєте в компанії, дізнайтеся у колег, які технології вже зараз зроблять вашу роботу кращою або легшою

Оскільки Web — це основна платформа у нашій компанії, використання інструментів для тестування вебзастосунків, таких як Chrome DevTools, є необхідністю. Також, не забуваючи про перевірку на різних браузерах, ми використовуємо BrowserStack та LambdaTest. Для тестування API ми використовуємо Postman. Ведемо проєктну документацію в Confluence. Використовуємо Jira як основну систему відстеження помилок.

Я працюю переважно з вебзастосунками, тому у цьому питанні мені допоміг колега Олександр Мацегора. Щодо мобільних застосунків, ми використовуємо той самий BrowserStack для тестування на різних пристроях. Для тестування пристроїв на базі Android підходить AndroidStudio, а для iOS використовуються емулятори в macOS.

Можливо, автоматизація тестування не дозволить повністю відмовитися від ручного тестування, але спростить процес та скоротить час тестування. Автоматизація дозволить зменшити кількість рутинних та частих перевірок та знизити навантаження мануального тестування. Своєю чергою, це допоможе встановити баланс між роботою, що потребує уваги людини, та задачами, що вимагають автоматизації.

Зараз ручне тестування становить 100% моєї поточної роботи, але з навичками автоматизації я зможу працювати у співвідношенні 70/30, використовуючи 30% свого часу на автоматизацію та 70% на ручне тестування. Крім того, навички автоматизації тестування нададуть додаткові бали на перформанс рев’ю.

Щоб розпочати використання автоматизації тестування на поточному проєкті, необхідно створити проєкт автоматизації з базовими сценаріями. Для цього знадобиться залученість QA-інженерів, розробників програмного забезпечення та BA.

Я вже знайома з Selenium та вправна у написанні тестів на Java, але, враховуючи вимоги проєкту, для якого я хочу почати вивчення нових технологій, а також основної мови програмування, що використовується в розробці проєкту, найкращим рішенням буде вивчення JS/TS та фреймворку Cypress.

Крок 5. Ваші сильні сторони. Що дається легше

Можливо, поглянувши на список технологій з попередніх питань, ви зрозумієте, що деякі з них будуть легші для вивчення, а деякі для вас дуже складні, нудні тощо.

Моя спеціалізація сконцентрована на вебі. Оскільки я працюю з вебтехнологіями й вони мені знайомі, я намагаюся розширювати свої знання в цій галузі. В академії я вивчала C# та Java. Також я проходила курси з Java та Android. Тому мені не страшно розпочинати вивчення нової мови, а знання JS/TS необхідні для роботи з Cypress.

У майбутньому, окрім вебавтоматизації, я планую перейти до вивчення автоматизації мобільного тестування. В залежності від платформи тестового застосунку доведеться вчити багато нових інструментів.

Крок 6. Що вас цікавить насправді

Можливо, час розвернутися на 180 і змінити діяльність з QA на розробку, стати full stack інженером тощо.

Ринок автоматизації тестування зростає, і разом з ним зростає мій інтерес до цієї сфери та застосовуваних технологій. На перетині автоматизації та DevOps з’явилася нова методологія QAOps, в якій тестувальники-автоматизатори мають навички роботи з хмарними технологіями, наприклад, вміють налаштовувати кластер, розгортати в ньому застосунок, готувати необхідну для роботи інфраструктуру. Це один з перспективних напрямків, який викликає інтерес.

Ще однією перспективою є використання технологій штучного інтелекту та машинного навчання в тестуванні. Машинне навчання (МН), яке змінило і покращило багато галузей, тільки починає пробиватися в тестування програмного забезпечення. Зі зростанням потреби в тестуванні зростає і попит, тому ця галузь уже ніколи не буде такою, як раніше.

Водночас коли МН все ще зростає та розвивається, промисловість програмного забезпечення все частіше використовує його, і його вплив починає значно змінювати спосіб проведення тестування програмного забезпечення з покращенням технології.

Вже зараз з’являється багато інструментів автоматизації тестування з використанням ШІ. Проте більшість інструментів штучного інтелекту є комерційними, оскільки їх створення потребує великих зусиль. Очікується, що незабаром з’явиться більше інструментів з відкритим вихідним кодом для допомоги в тестуванні, на основі штучного інтелекту. Тому вже зараз можна підготуватися до використання таких інструментів, вивчаючи основні принципи їх роботи.

Що стосується поточної роботи, мені цікаво розвиватися як автоматизатор. Напрям автоматизації тестування є популярним, тому знайти ресурси для навчання досить просто, а інструменти і технології теж розвиваються швидко, що дозволяє говорити про його перспективність.

Я не планую змінювати діяльність на розробку ПЗ або глибоко вдаватися у вивчення DevOps, QAOps методологій, мені цікава сфера автоматизації, і мені треба ще багато вивчити в цьому напрямку, перш ніж називатися автоматизатором.

Я розглядаю можливість освоєння нових інструментів МН, нових підходів та практик DevOps, QAOps, проте залишаю це як далеку перспективу.

Крок 7. Тепер обираємо 1-2 технології, які будемо вчити, і робимо загальний огляд

У мене складений наступний список:

  • автоматизація тестування за допомогою JS/TS, Cypress, Mocha;
  • Git (Version Control System);
  • вивчення основ CI/CD Integration. Знайомство з Jenkins;
  • GitHub Actions;
  • Docker.

Cypress

Cypress — це чисто JavaScript-фреймворк для тестування вебзастосунків. Cypress працює на Windows, Linux і macOS, забезпечує розширені можливості тестування як для unit тестів, так і для integration тестів. Перевага Cypress — це просте налаштування тестів, зручна звітність, інтуїтивно зрозуміла панель управління та багато іншого.

На відміну від Selenium, Cypress працює безпосередньо в браузері без необхідності у вебдрайвері. Схематично архітектуру автоматизації на Cypress можна зобразити наступним чином:

Серверним методом, який лежить в основі Cypress, є Node.js. Він взаємодіє з інструментом запуску тестів (браузером) і тестовим кодом в тому ж циклі подій.

Переваги Cypress в автоматизації тестів:

  • Cypress простий у встановленні та налаштуванні;
  • немає потреби в додатковому драйвері, тести виконуються безпосередньо в браузері;
  • можливість «на льоту» змінювати код та виконувати його;
  • деталізована звітність;
  • підтримує паралельне виконання тестів;
  • вбудована функція автоматичних очікувань;
  • зручність налагодження завдяки скріншотам кроків тестів;
  • деталізована документація та широка спільнота.

JS/TS

JavaScript є однією з найпопулярніших мов програмування. Одна з причин цього полягає в тому, що вона є динамічно типізованою. Це досить вільна мова, що дозволяє легко писати код. Але це, зі свого боку, накладає велику відповідальність на розробника щодо розуміння того, які типи будуть використовуватися в функції та яке значення має повертатися.

TypeScript — це мова зі статичною типізацією, заснована на JavaScript. Фактично, в ній виправлені всі недоліки JavaScript, оскільки багато проблем у розробці виникають саме через динамічну типізацію.

Код на TypeScript компілюється в JS і підходить для розробки будь-яких проєктів для будь-яких браузерів. Ще однією перевагою TS порівняно з JS є покращена підтримка об’єктноорієнтованого програмування (наприклад, інтерфейси). Ще одним плюсом будуть модифікатори доступу. В TypeScript є три типи модифікаторів доступу: public, private та protected.

CI/CD & Jenkins

CI/CD — це набір принципів та практик неперервної інтеграції (continuous integration) та неперервного розгортання (continuous delivery або continuous deployment) програмного забезпечення під час розробки.

CI/CD поєднує розробку, тестування та розгортання застосунків.

CI (continuous integration)- це спосіб інтеграції змін до коду в репозиторій кілька разів на день. У CD є два значення: неперервна доставка автоматизує інтеграцію, тоді як неперервне розгортання автоматично випускає остаточну збірку для кінцевих користувачів. Регулярне тестування в рамках CI/CD зменшує кількість помилок та дефектів коду, що робить цю методологію незамінною для робочого процесу DevOps.

Jenkins — популярний інструмент СI/CD. Jenkins — це програмне забезпечення з відкритим вихідним кодом. Він пропонує набір плагінів для неперервної інтеграції. З Jenkins СI легко інтегрувати збірку та тестування з рядом технологій, що підвищує ефективність доставки коду. В офіційному посібнику з JenkinsTutorial доступна документація по етапах, пакетах, збірці, тестуванню та аналізу.

Крок 8. Визначаємо ключові поняття, інструменти та фреймворки, пов’язані з технологією

На цьому кроці складаємо список найважливіших тем та інструментів, які необхідно опанувати.

JS/TS:

  • Javascript Basics.
  • TypeScript Basics (Primitive Types, structural types, advanced TypeScript features).

Cypress:

  • General introduction to Cypress.
  • Cypress Architecture.
  • Cypress Installation & Project Setup.
  • Cypress Test Runner features.
  • Command line arguments for Cypress.
  • Cypress Basic Commands for Automation.
  • Mocha syntax.
  • UI Automation.
  • Cypress Assertions.
  • Cypress Framework Best Practises.
  • Cypress Fixtures and Custom commands.
  • Page Object Pattern with Cypress tests.
  • Mocking API calls with Cypress Intercept commands.

CI/CD & Jenkins:

  • Understanding of what Continuous Integration is.
  • Understanding of what Continuous Delivery is.
  • Understand Continuous Deployment.
  • Differences between CI, CD, and Continuous Deployment in the software development life cycle.
  • Introduction to Jenkins.
  • Installing and Configuring Jenkins.
  • Jenkins Pipeline.
  • Jenkins projects configuration.
  • Configuring the project/job to send e-mail notifications.

Крок 9. Обираємо улюблені канали для навчання, ресурси та матеріали

Для мене найефективнішим способом навчання є онлайн-курси з відеоуроками. Я проходила різноманітні курси на таких платформах, як Coursera та Udemy.

Coursera — це освітня платформа, на якій представлено понад 3000 курсів, де можна вивчати математику та логіку, мови, соціальні науки, програмування та багато іншого. Навчатися на Coursera можна як безкоштовно, так і з оформленням платної підписки або з покупкою певної спеціалізації або курсу, після якого можна отримати професійний сертифікат або ступінь.

Будь-яке навчання повинно супроводжуватись практикою. На Codecademy я виконувала різноманітні практичні завдання і можу рекомендувати цю платформу для ознайомлення з мовами програмування.

Під час виконання практичних завдань я вивчаю додаткові матеріали у вигляді туторіалів та довідкової інформації. Література допоможе розібратись в конкретній темі, але читання технічної літератури від початку до кінця за один раз не має сенсу, оскільки це все ж таки довідкова інформація і вона корисна для конкретних цілей.

Ще один цікавий підхід до навчання — це гейміфікація. Для тих, хто вивчає програмування, існує безліч сервісів, де навчання можна пройти у вигляді гри.

CodinGame — це сайт з іграми, де можна писати код на понад 25 мовах програмування за допомогою інтерактивної IDE.

Check iO — це ресурс для вивчення та практики Python та TypeScript. Навчання представлено у вигляді гри, в якій кожен користувач повинен використовувати свої знання.

Git Game — це термінальна гра, призначена для перевірки ваших знань про команди git.

Крок 10. Створюємо план навчання

Такий план включає список ресурсів для вивчення та практики. До списку включаємо книги, онлайн-курси, підручники та практичні вправи.

Ось мій план:

1. Почитати про автоматизацію та її інструменти.
2. Пройти курси навчання на Udemy:

3. Ознайомитися з документацією по Cypress.
4. Почитати туторіал по TypeScript на w3schools.
5. Створити власний проєкт на Cypress.
6. Прочитати книгу JavaScript Data Structures and Algorithms: An Introduction to Understanding and Implementing Core Data Structure and Algorithm Fundamentals.
7. Практичні завдання:

Далі складаємо розклад:

Аби не перенавантажувати себе, я займатимусь пів години або годину на день, кожного дня. Як інструмент для відстеження прогресу використовуватиму Notion і Google Sheets.

Також перед початком навчання я вмикатиму таймер. Це допоможе мені бачити реальний час, витрачений на навчання.

Крок 11. Найприємніший — обираємо, як будемо себе заохочувати

Мотивація — важлива складова на шляху до мети. Наприклад, нагорода за добре виконану роботу мотивує до більших досягнень.

Я люблю робити перерви після навчання з солодким перекусом. В результаті своєї діяльності мозок використовує до 20% енергії, що виробляється організмом. Тому для швидкого відновлення сил добре підходять солодощі.

Гарно мотивує похвала від оточення. Іноді приємно поділитися успіхами та отримати слова підтримки від близьких і друзів.

Крок 12. Дійте. Після складання плану найголовніше — його втілення

Я вважаю, що краще ретельно розібратися у виборі вектора подальшого розвитку та інвестувати час у складання детального плану. Сам процес вивчення у будь-якому випадку більш глибокий і займатиме місяці та роки, і чим більше часу ви витратите на підготовку та планування, тим меншою є ймовірність помилок, виправлення яких потребує набагато більше ресурсів під час вивчення.

Складаючи план персонального розвитку, варто почати з визначення того, що ви вже знаєте, сфер і технологій, які даються вам легше.

Вирішіть, що цікавить вас вивчати далі, які маєте цілі та амбіції. Зверніться до людини, яка знаходиться на бажаній посаді або вже має знання, які ви хочете отримати, дізнайтеся як можна більше про вимоги, компетенції, технічний стек та необхідні для досягнення знання.

Розберіться в трендах цікавої вам сфери й з того, що вам подобається, визначте, що буде ще й вигідним, що найшвидше допоможе вам у поточній роботі та завданнях.

Після визначення технологій, які ви збираєтеся вивчати, визначте ключові поняття, інструменти та фреймворки, пов’язані з технологією. Виберіть ресурси та канали для навчання. Не забудьте вирішити, як будете отримувати практичні знання та де зможете застосувати їх після навчання. Обов’язково святкуйте свої досягнення та підбадьорюйте себе за успіхи.

Сподіваюся, що стаття була корисною і вам вдалося скласти план розвитку для себе. Поділіться тим, що ви вивчаєте, своїми успіхами і тим, що допомагає вам навчатися, у коментарях.

👍ПодобаєтьсяСподобалось34
До обраногоВ обраному21
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Чат жпт на підході
Скоро вниз по Дніпру

Для початкових знань є непогані роадмапи на roadmap. Там є Python, Java, QA, Backend та багато всього.
Звичайно, далеко не ідеально, але хоча б можна оглянути весь спектр знань та вмінь.
Для більш фундаментальних знань можна подивитись в сторону Open Source Society University

FYI: Notion досі працюють в рашці.

А чому вирішили не добавлять у программу автоматизацію АПІ тестування та робота з бд через код ?

«Mocking API calls with Cypress Intercept commands» частково торкається автоматизації АПІ тестування.

Дякую за детальний опис, буду відтворювати! Автору бажаю успіхів в навчанні.

Я вже почав потроху розробляти для себе навчальний план з вивчення Python до рівня Junior. І вже бачу, що це дійсно важка, але дуже потрібна робота, — яка збереже мені в майбутньому багато моїх сил та ресурсів

Дуже дякую за ваш детальний алгоритм складання плану навчання!)
Ще можу порадити книгу Джона Сонмеза, «Шлях програміста» (John Z. Sonmez «Soft Skills:The software developer’s life manual»).
В цій книзі теж є поради, як складати свій навчальний план.
Також, ця книга про те, як програмісту просувати власний бренд, як шукати роботу, нові замовлення, як презентувати себе, свої навички, роботи тощо.
Але, на жаль, цієї книги, мабуть, немає в українському перекладі

Дякую за план! Тільки не зовсім зрозуміло за скільки часу автор планує пройти цей матеріал. Бо по пів години-годину на день це так років на 2 розтянеться...

Дуже структурована та цікава стаття. Дякую. Я взагалі вважаю що найкращі автоматизатори виходять з мануал куа)) так і це не шейм, а факт

Цікава стаття. Дуже гарно структурована. Дякую. Інформативно!! Спробую користуватись Notion)

Гарно розписано. Автору можу хіба скинути ще один ресурс для вивчення бренчування в git (learngitbranching.js.org) і гарну онлайн книгу (git-scm.com/book/uk/v2).
Успіхів!

Дякую за ресурси для вивчення git, вже граюсь з learngitbranching.js.org. Гарна візуалізація.

Добре розписано, автору подяка

Підписатись на коментарі