Інженери із забезпечення якості (Quality Assurance Engineers) є ключовою складовою команди розробки програмного забезпечення, оскільки їх робота спрямована на забезпечення високої якості продукту. Вони також співпрацюють з розробниками, аналітиками та іншими членами команди для виправлення дефектів та покращення загальної якості продукту. Та залежно від розміру команди, структури та специфічних потреб організації, роль тестувальника програмного забезпечення розглядається та використовується по-різному.
Ролі інженерів із забезпечення якості: навички, інструменти та обов’язки в команді тестування
- 07.12.2023
- Опубліковано: Admin
Найчастіше посади з тестування програмного забезпечення позначаються як QA (Quality Assurance) або Тестувальник.
Ролі QA:
- Інженер з тестування програмного забезпечення (Software Test Engineer, STE)
- Тестовий аналітик (Test Analyst)
- Інженер з автоматизації тестування (Test Automation Engineer)
- Тестовий інженер з розробки програмного забезпечення (Software Development Engineer in Test, SDET)
- Тестовий архітектор (Test Architect)
- Менеджер тестування (Test Manager).
У таблиці нижче наведені головні функції кожної з ролей:
Ролі у тестуванні ПЗ |
|
Роль | Головна функція |
Інженер з тестування програмного забезпечення | перевіряє всю систему за допомогою відповідних методів та інструментів тестування |
Тестовий аналітик |
|
Інженер з автоматизації тестування | розробляє сценарії для виконання автоматизованих тестів |
Тестовий інженер з розробки програмного забезпечення |
|
Тестовий архітектор |
|
Менеджер тестування |
|
Обов’язки, навички та інструменти кожної ролі окремо.
Інженер з тестування програмного забезпечення (Software Test Engineer, STE)
Обов’язки:
- аналіз вимог та підготовка списку запитів. Якщо вимоги неповні, потрібно поставити змістовні запитання, які дадуть більше інформації та допоможуть ефективно провести тестування;
- написання та виконання тест-кейсів, для пошуку системних помилок, таких як проблеми з користувацьким інтерфейсом, юзабіліті тощо;
- проведення дослідницького тестування;
- перевірка узгодженості роботи між пристроями, браузерами та операційними системами;
- надання інформації про сценарії тестування високого рівня, виклики, ризики, ресурси, оцінку тестів тощо;
- у деяких випадках STE можуть також охоплювати завдання з автоматизації тестування.
Навички:
- глибоке розуміння тестування ПЗ, його основних концепцій та процесів;
- вміння працювати в Agile-середовищі;
- критичне мислення та аналітичні навички;
- хороші навички комунікації та командної роботи;
- навички програмування завжди є перевагою, включаючи кодування, базові знання SQL для отримання даних для тестів тощо.
Окрім використання різних десктопних і мобільних операційних систем, браузерів і веб-проксі для кросбраузерного тестування, симуляторів та емуляторів, тестувальники використовують деякі інструменти.
Інструменти:
- інструменти управління якістю (Micro Focus Quality Center, TestDirector, Test Manager, SpiraTest, TestRail, HP-ALM (QC)) для організації та управління всіма фазами процесу тестування ПЗ;
- інструменти відстеження дефектів (BugZilla, Mantis, IBM Rational ClearQuest) для відстеження знайдених дефектів, створення баг-репортів та їх подальшої передачі команді розробників;
- MS Excel або Test Studio для написання великих наборів тест-кейсів та їх подальшого імпорту в інструменти управління тестуванням;
- програмне забезпечення для управління проєктами (Jira, Redmine, YouTrack, Backlog);
- SQL-клієнти для підключення до бази даних;
- інструменти тестування API (Postman, SoapUI, Katalon) для автоматизованих перевірок;
- IDE для написання коду (VSCode, Visual Studio, IntelliJ IDEA).
Тест-аналітик (Test Analyst)
Робота тестового аналітика ґрунтується на чотирьох складових: аналіз тестів, розробка тестів, впровадження тестів і виконання тестів.
Обов'язки:
- прийняття та уточнення вимог до тестування;
- визначення умов тестування та пріоритетності з урахуванням ризиків продукту та функцій, що підлягають тестуванню;
- визначення конкретних тестів, які повинні бути розроблені для цієї області;
- розробка тест-кейсів та наборів тест-кейсів для покриття умов тестування;
- визначити необхідні тестові дані для підтримки умов тестування та тест-кейсів;
- планування виконання тестів;
- розробка процедури тестування та іншої документації з якості: плани тестування, тест-кейси та звіти про стан для керівництва;
- виконання або делегування дослідницьких, автоматизованих та регресійних тестів;
- аналіз фактичних результатів у порівнянні з очікуваними.
Навички:
- методи проєктування тестів;
- розуміння процесу управління дефектами;
- знання бізнес-домену;
- досвід у використанні різних видів тестування;
- розуміння поширених збоїв та помилок програмного забезпечення;
- знання системи або додатку, що тестується;
- розуміння процесу автоматизації тестування.
Інструменти:
- інструменти для розробки тестів: IBM Rational Quality Manager, QACoverage, Hexawise;
- інструменти підготовки тестових даних;
- інструменти автоматизованого виконання тестів.
Інженер з автоматизації тестування (Test Automation Engineer)
Обов'язки:
- написання, проєктування та виконання автоматизованих тестів, створення скриптів, які автоматично запускають функції тестування;
- максимізація тестового покриття для найбільш критичних функцій системи;
- визначення пріоритетності тестових сценаріїв та створення плану виконання для реалізації цих сценаріїв;
- написання документації для автоматизованих процесів, включаючи тестові плани, тестові процедури та тестові кейси;
- побудова фреймворків для автоматизації тестування;
- реєстрація та документування дефектів у системі відстеження;
- налаштування безперервної інтеграції.
Окрім написання автоматизованих тестів, інженери з автоматизації тестування також можуть проводити дослідницьке тестування, коли їм потрібно зрозуміти, як функціонал працює для клієнта.
Навички:
- навички STE;
- загальні мови програмування, необхідні для різних технологій автоматизації тестування: Python, Java, Ruby, С++, Perl, PHP, C# тощо;
- особливість платформи (веб-додаток або мобільний додаток).
Інструменти для автоматизації:
- інструменти автоматизації тестування: Selenium, TestComplete, Katalon Studio та Ranorex;
- готові фреймворки автоматизації: Serenity BDD, фреймворк на основі Java, або орієнтований на розробників Cypress тощо;
- інструменти автоматизації мобільного тестування для Android, iOS та кросплатформні;
- інструменти для тестування API, які вимагають сильних навичок кодування для створення тестів: REST Assured, RestSharp, jMeter тощо;
- інструменти безперервної інтеграції (Jenkins, TeamCity, Bamboo тощо).
Тестовий інженер з розробки програмного забезпечення (Software Development Engineer in Test, SDET)
Обов'язки:
- розуміння, аналіз та розробка складних наборів тестових даних;
- створення різних тестових сценаріїв та приймально-здавальні тести;
- проєктування та впровадження автоматизованих тестів та тестового середовища;
- розробка інструментів тестової інфраструктури для команди на різних платформах додатків (веб-, мобільних та десктопних);
- виконання низькорівневого тестування, такого як модульне та юніт-тестування;
- співпраця з розробниками, управління програмами та командами дизайнерів над технічною реалізацією та користувацькими сценаріями;
- робота з деплой-командами для вирішення системних проблем.
Навички:
- сильні навички кодування, проєктування та аналізу;
- навички розробки автоматизованих систем тестування;
- сильні навички роботи з SQL/DB;
- досвід роботи із загальними структурами даних, алгоритмами та розподіленими системами;
- знання бекенд-сервісів та інтеграцій;
- знання мікросервісної архітектури, на якій часто будується сучасний бекенд, з її рухомими частинами, залежностями та взаємодіями;
- розуміння середовища хмарної інфраструктури.
Як правило, SDET використовує ті ж інструменти, що й інженери з автоматизації тестування, які ми описали вище.
Різниця між інженером з автоматизації тестування та SDET на перший погляд може бути незрозумілою. У класичному варіанті SDET має більш чітке мислення щодо якості та працює з інфраструктурою проєкту, розробляючи інструменти автоматизації тестування. Тим часом, інженер з автоматизації тестування зосереджений в першу чергу на кодуванні, а потім на якості. Він автоматизує тест-кейси за допомогою готових інструментів.
Тестовий архітектор (Test Architect)
Як і архітектор програмного забезпечення, цей спеціаліст з контролю якості зосереджується на розробці всієї інфраструктури тестування.
Обов'язки:
- розробка архітектури тестування (фреймворки для автоматизації тестування, бібліотеки коду тощо) для використання командою на різних платформах;
- визначення інструментів та технологій для реалізації, які відповідають бізнес-цілям, наявній інфраструктурі та набору навичок команди;
- управління тестовими даними;
- визначення стратегічного напрямку тестування, надання рекомендацій, відгуків та пропозицій щодо покращення практики якості для всієї інженерної команди;
- забезпечення технічного наставництва та навчання;
- відстеження ефективності функції тестування та впровадження покращень за допомогою інсайтів, отриманих в результаті аналізу на всіх етапах SDLC.
Навички:
- глибокі знання сучасних галузевих методик, інструментів та методологій тестування;
- навички управління проєктами, включаючи ефективну комунікацію між командою та клієнтом, тісна співпраця з іншими ролями та зацікавленими сторонами;
- досвід аналізу та проєктування програмного забезпечення;
- ґрунтовний досвід у сфері якості та тестування програмного забезпечення;
- глибоке розуміння функціонального та нефункціонального тестування;
- глибокі навички кодування та автоматизації тестування.
Інструменти:
- фреймворки для автоматизації тестування, такі як Protractor, Selenium, TestNG або JUnit;
- інструменти безперервної інтеграції (CI), такі як Jenkins;
- інструменти управління вихідним кодом, такі як GIT або Team Foundation Server;
- інструменти управління життєвим циклом додатків.
Архітектор тестування – досить рідкісна посада, яка виправдана переважно для великих ієрархічних організацій. У малих і середніх компаніях ці завдання покладаються на плечі тест-менеджера.
Менеджер тестування (Test Manager)
Обов'язки:
- підготовка стратегії тестування, застосовуючи прийняті в індустрії практики та встановлення стандартів якості;
- встановлення метрик для вимірювання якості виконання;
- планування та контроль процесу тестування: визначення списку завдань для підлеглих, складання розкладу тестових активностей, розрахування бюджету тестування, оцінювання зусиль тестувальників;
- відстеження роботи кожного тестувальника: перевірка, які дефекти він здатний виявити і де є тенденція пропускати баги;
- підбір кандидатів на посади QA та контроль їх подальшої роботи;
- представництво команди QA на міжвідділових зустрічах та інформування замовника про хід тестування.
Навички:
- досвід автоматизації тестування, щоб визначити, в яких випадках такий підхід принесе користь, а де краще тестувати вручну, не витрачаючи час на автоматизацію;
- широкі знання підходів до тестування;
- глибоке розуміння бізнес-сфери та вимог клієнта для визначення тестової стратегії, цілей та завдань тестування;
- навички планування проєкту, координація завдань і людей.
Інструменти:
- сучасні програмні інструменти та інфраструктура;
- інструменти управління проєктами (Jira, Redmine, YouTrack, Backlog тощо) для впровадження методів у командах, навчання молодших, моніторингу прогресу та якості протягом усього процесу розробки.
Фул-стек інженер з тестування (Full-stack Test Engineer): Тестувальник майбутнього
З сучасними моделями розробки (Agile та DevOps) дисципліна тестування розширюється, щоб мати вплив на інші команди, які працюють над тим самим проєктом. Роль тестувальника продовжує розвиватися, надаючи тестувальникам більше влади в компанії.
Сучасні тестувальники не тільки повинні працювати з кодом до того, як він потрапляє у виробництво, але й розглядати питання запобігання та усунення дефектів продукту протягом усього циклу розробки програмного забезпечення. Це означає вищу відповідальність з точки зору впровадження критеріїв прийнятності та підходів до тестування в інженерних командах.
Відповідаючи за всі аспекти якості продукту, такі як функціональність, зручність використання, продуктивність, безпека, глобалізація тощо, а також поєднуючи різні стратегії та технології для тестування додатків, тестувальники можуть з упевненістю називатися інженерами з тестування повного циклу (Full-stack Test Engineers).
Вони повинні поєднувати знання предметної області, технічних навичок та досвіду тестування, що дозволятиме відповідати сучасним вимогам швидкої доставки. Тому кожен тестувальник повинен йти шляхом full-stack test engineer, який бере участь у життєвому циклі розробки проєкту з самого початку і, відповідно, має більший вплив на продукт, що в результаті дає більш високий рівень якості.