Хто я? Або купила мама коника, а коник без ноги
Часто для того, щоби розібратися з чимось, треба пірнути в хаос неструктурованих даних і знань, ввібрати в себе їхню певну кількість та знайти (або створити) якусь систему, порядок, який допоможе осягнути те, що раніше було хаосом. Взагалі-то це стосується всіх наших знань, але не буду відходити далеко від теми. Тож про який хаос мова? А я січас вам пакажу. Навмисно через кому: тестувальник, QA, Quality Assurance, Quality Control, Junior QA, Junior Tester, Junior QC, Junior Testing Engineer, Junior Software Testing Engineer, Junior QC Engineer. Це все одна людина, чи привіт від Біллі Міллігана?
Тут є одна правильна відповідь. Чи не одна? До термінології можна ставитися суворо, лінгвістично та науково. Проте наше життя не таке і не всі хочуть імідж “розумника”, який розповідає всім, як правильно. Але почнімо із того, з яких частин складаються ті назви. Перше — коли ми описуємо свою роль, то вказуємо рівень знань, наш досвід. Частіше це Trainee, Junior, Middle та Senior. Наче, все просто — Junior QC. Якщо хочемо сказати про спеціалізацію загалом, то рівень опускаємо — QC. Тут, як і в інших галузях — на зустрічі зібрались кухарі, але хтось із них помічник кухаря, хтось головний кухар, а хтось взагалі сушист.
Далі — як правильно назватись по суті? Формально всі ці назви означають різні спеціалізації. Тестувальник, або tester — радше про конкретні перевірки, звіряння із відомими вимогами. Як-от — протестувати якусь форму, кнопку чи сторінку. Протестувати, що сайт відкривається, або на ньому можна зареєструватися. Купити товар. А от QA, або Quality Assurance — це про процеси розробки ПЗ (програмного забезпечення), підходи та стандарти тестування, які використовує у своїй роботі тестувальник. QC, або Quality Control — десь між цими двома. Якщо тестувальник радше виконавець, а QA законотворець, то QC — відповідально слідкує та вміє контролювати процес і відповідність стандартам (хоча і тестує також). Поєднуємо із рівнем і отримаємо: Junior QC, Middle QA.
Може постати питання — це все звучить дуже універсально. Невже Quality Control стосується тільки любого нам айті? Ні, не тільки. Справді, QA, QC та testing є в різних (майже всіх) галузях. Коли ми живемо всередині нашого айтішного світу і весь наш контекст — лише айті, то можемо упускати деталізацію, адже всі розуміють, про що мова. Це я про доповнення Software. Ми ж програми тестуємо? Тож, якщо бути повністю коректним та спілкуватись не тільки із друзями айтівцями, то не зайвим буде вказати — в якій саме галузі ви фахівець. У Software.
І про інженерів. Не всі з нас є інженерами та не всі стануть ними. Але маємо зрозуміти, навіщо використовують це слово. Я обіцяв, що спробую написати щось легеньке, тож занурюватись у специфіку інженерії не буду. Головне, що притаманне інженерам — це розуміння того, як працює механізм. Не важливо, це двигун автівки чи програма. Інженер розуміє, як предмет його роботи працює зсередини та використовує ці знання у своїй роботі. Може як створювати нові механізми, так і розумітися на роботі вже наявних. Тож маємо подумати перш ніж казати, що ми інженери, чи не так? Моє бачення — маємо ними бути, нехай і не одразу. Розуміти, як функціонують ті програми, над якими ми працюємо. Це суттєво підвищує рівень нашої роботи, а отже, — повагу колег, попит на ринку та кількість грошей, який ми заробляємо. Ми будемо торкатися теми інженерів упродовж цих статей.
Фух. То що маємо?
Рівні досвіду: Trainee, Junior, Middle, Senior
Рівні наближення до об'єкта тестування або до процесів розробки: Testing, Quality Control (QC), Quality Assurance (QA)
Спеціалізацію: Software тощо
Технічний рівень: Engineer, Analyst на ін.
Так отримуємо правильно прописані: Middle Software Testing Engineer, Senior QC Engineer або Trainee Software Tester.
Але є реальність. В ній ми часто робимо так, як зручно. Це як доріжка, яку ми витоптуємо навпростець по газону, щоб зрізати шлях. Можна сказати, що це неправильно і що витоптаний газон не було передбачено, та й не красиво це. Але нам так зручно. Мій прогноз — розберемося із професійними термінами не раніше ніж перестанемо витоптувати газони. Кажете, ніколи? Може й так. Але жити із цим можна.
До діла. Коли кажемо про професію загалом, можемо використовувати QA, або тестувальник в загальному сенсі, як синоніми. Можна почути “ми всі QA”, або “ми тестувальники”, де маються на увазі реально всі — від Trainee Software Tester до Senior Quality Control Engineer та Head of QA department. А кажучи про тестування, як працю, думаємо і про testing, і про QC із QA. Тобі буде не важко зрозуміти з контексту, про що мова, якщо знати про цей дуалізм. Ми так кажемо, бо простіше.
Я не раджу одразу брати ці знання на озброєння та починати виправляти інших. Одна половина айтівців звикла всіх без винятку називати тестувальниками, а їхню роботу тестуванням. Інша половина має для всіх назву QA, і використовує Quality Assurance в тому ж сенсі, що й тестування. Не подумай — є ті, хто розуміє всі ці тонкощі та використовує терміни правильно. Їх небагато, як і мало тих, хто розмовляє ідеальною літературною українською мовою. В житті це майже нікому не потрібно і навіть не помітно. Може і на жаль, проте життя — не підручник. Пам’ятай — не раніше ніж перестанемо топтати газони доріжками, почнемо використовувати професійні терміни.
Але спокійно. Тут ми насамперед будемо звертати увагу на тестування в його прямому, прикладному значенні — як активностей для перевірки тих чи інших функцій, чи елементів ПЗ. Бо з цього ми всі починаємо свій шлях, коли отримуємо нашу першу роботу тестувальника.
Але спочатку ще трохи загальної теорії. Як ПЗ, так і програмне забезпечення звучать так, наче я сиджу на парі в університеті, і мені читає лекцію старенький професор. Ні-ні, професор має рацію. Але ми не часто так кажемо. Ми кажемо софт. Що воно таке? Це скорочення від уже згаданого вище слова software. Але чому усі ці програми називають софтом, адже це перекладається як “м’який”. Отже, є і твердий? Є — hardware, або “залізо”. Так розподіляють фізичне обладнання та програми, що керують ними. Ваш ноутбук (фізично), сервери Amazon (фізично), мікрохвильовка, сучасний верстат на заводі — їхні матеріальні жорсткі тіла, що можна помацати нашими руками, все це hardware, або залізо. Адже вони, окрім іншого, фактично зроблені з купи різних металів. Software стоїть на противагу hardware. Це зовсім не фізичне, адже програми не можна взяти в руку. Скажеш, що можна взяти в руку флешку із програмою? Але флешка — то hardware, а програма всередині — software. Windows чи macOS є software, а жорсткий диск та екран — hardware. Випромінювач у мікрохвильовці — то хард, а програма, що регулює його потужність і час роботи — софт. Скажи тепер, що оці примарні програми не “м’які”?! Настільки, що аж невидимі!
А наша робота — тестувати їх. Ще поговоримо про те, що софт завжди “живе” на якомусь залізі. Проте зараз і надалі — наш акцент буде на софті, не лякайся.
Цікавий факт:
Підкреслюючи безглуздість різномаїття назв позицій людей та тенденцію до втрати реальних сенсів під цими назвами, Ілон Маск офіційно назвався “Technoking”, тобто “Технокороль” (в компанії Tesla).
Кмітливий словничок:
тестування (прикладне) — конкретні дії задля перевірки, з’ясування, як працює той чи інший елемент системи, або система загалом
QA — комплекс дій, підходів, процесів, аналізу та філософії, завдяки яким наш продукт відповідає вимогам кінцевих споживачів
тестування (загальне) — те саме, що QA
ПЗ — програмне забезпечення
софт (soft) — програмне забезпечення
хард (hard, залізо) — фізичні пристрої, такі як сервери, відеокарти або верстат на заводі, 3D принтер. За допомогою софту все це залізо може працювати, а ми — керувати ним