Завдання Quality Assurance Engineer – інженера контролю якості – упевнитися, що написаний код працює так, як було задумано, причому у всіх можливих сценаріях. QA-інженер – це професійний “ламач”. Він шукає вразливі і проблемні місця в написаному програмістами продукті, з’ясовує, якими ще способами можна “зламати” продукт і разом з розробниками вирішує, як покращити софт, щоб все працювало так, як спочатку планувалося.
З боку може здатися, мовляв, що тут складного: постав себе на місце користувача, “прожени” софт через можливі сценарії – і все, ти тестувальник! На ділі, все, звичайно, не зовсім так. Щоб відшукати всі проблемні місця написаного програмістами коду, “кьюашнік” детально вивчає продукт і вимоги до нього, а потім він розробляє систему тестів, і тільки після цього, власне, приступає до процесу тестування. Тому називати QA-інженерів тестувальниками – не зовсім правильно: тестувальник робить “приймання” продукту (власне, тестує), а QA-інженер дивиться ширше – він продумує і організовує процеси, які допоможуть підвищити якість продукту. Власне, ось перелік завдань і обов’язків QA-інженера:
- Аналіз і уточнення вимог до продукту з замовником або бізнес-аналітиками
- Розробка і планування процесу тестування
- Створення сценаріїв тестування
- Власне, процес тестування
- Виявлення та фіксування проблем і багів (зазвичай для цього створюється спеціальна трекінгова система)
- Обговорення виявлених проблем з розробниками
- Повторне тестування після усунення помилок
- Аналіз і оптимізація самого процесу тестування, ведення документації.
QA-інженер – це спеціальність на стику програмування і бізнес-аналізу. Деякі вважають, що в цю професію приходять ті, хто недовчився на програміста – хоча є чимало випадків, коли розробники йшли в тестувальники, і там досягли куди більшого успіху, ніж в програмуванні: деяким шукати помилки в логіці створеній іншими, простіше, ніж створювати з нуля.
Різниця між програмістом і тестувальником приблизно така ж, як, наприклад, між письменником / журналістом і редактором: один створює, а інший – нескінченно критикує і покращує створене. Тож не дивно, що між програмістами і “кьюашніками” не вщухають суперечки, хто з них важливіше. Відповідь, до речі, проста: важливі і ті, й інші, і програмісти, і тестувальники – необхідний мінімум для будь-якої IT-компанії.
Іноді для перевірки коду створюються спеціальні скрипти: це має сенс, коли потрібно тестувати багато одноманітних процесів і сценаріїв – і в кінцевому результаті зусилля, витрачені на створення скрипта, який тестується, будуть менше, ніж ручне тестування. Люди, які пишуть ці скрипти, називаються QA Automation Engineer – інженери по автоматизації контролю якості. Це розробники в світі QA – і якщо зазвичай тестувальникам необов’язково володіти мовами програмування, то інженерам по автоматизації без цього не обійтися.
Найчастіше QA-інженери виростають всередині компанії (наприклад, з саппорт-інженерів). Подальше кар’єрне зростання – багатовекторне: можна розвиватися всередині QA (QA automation engineer, тім лід, керівник департаменту), піти в розробку, заглибитися в продукт (бізнес-аналітик), рости як управлінець (project manager, CTO). У будь-якому випадку, вивчення нового, постійне розширення професійного кругозору – найважливіша частина цієї професії, навіть якщо не планувати перехід в суміжні області.
В навчальному центрі PortaOne, ми не ставимо завдання зробити зі студентів QA-інженерів, проте наші знання стануть в нагоді, щоб отримати уявлення про професію, і в майбутньому самостійно “прокачатися до “кьюашніка”.