
Програмного забезпечення стає дедалі більше, і звісно ж, кожній команді розробки потрібні люди, здатні перевірити його якість. У цій статті Senior QA Engineer із SoftServe Сергій Христич розповість, хто такі тестувальники, чим вони займаються у процесі розробки ПЗ та які кар’єрні перспективи існують для QA Engineer.
Якість для ІТ-продукту — це дещо специфічне поняття, яке визначається кінцевим користувачем (не інженером, не маркетингом і не менеджментом).Тестування є одним зі способів забезпечити цю якість.
Якісний програмний продукт — це продукт, який:
Що означає “продукт, потрібний користувачеві”? Будь-який програмний продукт, який випускається у користування, має задовольняти певну потребу користувача. Наприклад:
Продукт, який гарно працює — це продукт, який відповідає очікуванням і прагненням користувача.
Що можна вважати зручним для користувача? Коли зрозуміло, що означає та чи інша кнопка. Коли вона знаходиться у логічному для користувача місці й виглядає логічним для нього чином. Коли інтерфейс зрозумілий та інтуїтивний, і користувач одразу знаходить той функціонал, який йому потрібен.
Говорячи про тестувальників, Quality Control Engineer, Quality Assurance Engineer, слід зазначити, що часто у джерелах відбувається змішування цих понять.
Інколи є свідома або несвідома підміна цих понять і тому всіх, хто має причетність до процесу тестування, називають і тестувальниками, і QC, і QA.
Тестування — це найпростіший рівень процесу забезпечення якості. Воно охоплює таку діяльність:
Тобто це процес, мета якого — перевірка, чи не має дефектів програмне забезпечення.
Quality Control — це ширша діяльність, спрямована на досягнення належної якості продукту. Quality Control Engineer вже може вносити пропозиції з покращення ПЗ. Наприклад, якщо є відгуки користувачів, або якщо в процесі виконання тестів Quality Control Engineer помічає, що щось могло б працювати краще.
Quality Assurance — це найширший спектр діяльності. Quality Assurance спрямоване на побудову процесів контролю якості задля забезпечення певного рівня якості. У процесі Quality Assurance може брати участь уся команда, яка працює над проектом.
Тобто, підсумовуючи сказане:
Слід також знати, що у стандарті ISO немає такого поняття, як “тестування”. В ньому зазначено лише, що є Quality Assurance та Quality Control. Тобто, контроль якості та тестування у цьому стандарті поєднані в одне, але по факту існує саме такий розподіл, що зображений на схемі, наведеній нижче.
Курс за темою: QA з нуля
Є багато моделей розробки програмного забезпечення. В процесі навчання ви почуєте такі назви, як Waterfall, V-model, ітеративна модель, Agile (та його підвиди Kanban і Scrum). Але сутність усіх циклів розробки одна:
Quality Assurance Engineer бере участь в усіх етапах циклу розробки програмного забезпечення.
На етапі планування складається календарний графік робіт з реалізації функціоналу. На цьому етапі QA Engineer зі свого боку визначає, які дії будуть виконані для забезпечення якості.
На етапі визначення QA Engineer перевіряє вимоги до запланованого функціоналу, щоб вони були чіткими, однозначними та не суперечили одна одній.
На етапі дизайну QA Engineer співпрацює із дизайнером для того, щоб переконатися у зрозумілості та інтуїтивності інтерфейсу. Враховується досвід користувача (як він звик діяти у програмах з аналогічним функціоналом).
Поки йде побудова, тобто написання програмного коду програмістами, QA Engineer також не гає часу і зі свого боку проробляє можливі сценарії використання програми. Він описує покрокові дії користувача: що він буде робити від моменту відкриття програми і до моменту, коли досягне кінцевої мети, для якої відкрив програму.
Наприклад, якщо це банківський додаток:
Результати дій користувача можуть бути різними:
Тобто QA Engineer проробляє усі можливі сценарії та на їх основі пише тест-кейси.
На етапі тестування QA Engineer виконує написані тест-кейси. Якщо на проекті є автоматизація, то пишуться автоматизовані тести (ще одна програма, яка буде виконувати дії користувача, які ми прописали у тестових сценаріях).
На етапі розгортання програмного забезпечення QA Engineer може брати активну участь у перевірці, щоб переконатися, що програма, дійсно, добре працює у середовищі продакшену.
Якщо тестове середовище за характеристиками відрізняється від середовища продакшену, можуть виникнути дефекти, які було неможливо виявити під час тестування. Тож ці дефекти потрібно терміново виправити — цей процес називають hot fix. Після цього QA Engineer перевіряє якість виправлення цих дефектів.
Тобто, оскільки QA Engineer — це людина, яка забезпечує якість в усьому, він має роботу протягом усього циклу розробки. І якщо на будь-якому з цих етапів QA Engineer зрозуміє, що щось може працювати краще, то він вносить пропозиції з покращення. Залежно від етапу розробки і складності змін, ці пропозиції можна втілити прямо тут і зараз, або запланувати їх на наступні етапи розробки ПЗ.
В умовах, коли дуже швидко змінюються уподобання користувача та вимоги до ПЗ — розробку будь-якої програми доцільно робити частинами. Тобто спочатку запропонувати користувачу якийсь основний функціонал, який потім команда буде ускладнювати й доробляти. Це дозволяє вивести продукт на ринок якомога швидше і раніше, ніж це зроблять конкуренти.
Одне з призначень тестування — це виявити дефекти у програмному забезпеченні й, звісно ж, виправити їх. Складність виправлення дефекту на різних етапах циклу розробки програмного забезпечення буде різною.
Якщо дефекти виявлені на етапі збирання вимог (ми виявили, що якась одна вимога суперечить іншій) — на цьому етапі виправлення є найпростішим, тому що треба лише переписати вимогу.
З кожним наступним етапом вартість виправлення дефекту стає все більшою. Якщо дефекти виявлені на етапі побудови дизайну, то для того, щоб їх виправити, треба не тільки змінити дизайн. Потрібно також переписати вимоги, адже вимоги й дизайн повинні відповідати одне одному.
Якщо дефект виявлений на етапі реалізації, треба змінювати дизайн (а це потребує узгодження з великою кількістю людей), а також переписувати вимоги.
Дефекти виявлені на етапі тестування ще не є найдорожчими, але з кожним етапом все більша і більша кількість людей стає залученою до їх виправлення.
Найдорожчими є дефекти, виявлені на етапі використання ПЗ кінцевим користувачем.
Тому відповідаючи на запитання “коли починати тестування?”, скажу: якомога раніше. Як тільки це стає можливим. Тобто, якщо у нас є хоча б якісь документально оформлені вимоги — вже можна починати тестування на цьому проекті.
У всіх якостей, про які я розповім, є одна спільна риса — їх можна набувати та розвивати.
Окей, ви прийшли в компанію, опанували всі можливості тестування, що ж може бути далі?
QA Engineer може розвиватися в адміністративному, або в технічному напрямку.
Якщо це адміністративний напрямок, то це різні види менеджерів — це Team Lead, QA Lead, Test Lead і так далі. QA Engineer також може піти у бізнес-аналітики, оскільки хто, як не він, має досвід із роботи з вимогами до продукту, їх систематизації та перевірки.
Якщо QA Engineer хоче розвиватися в технічному напрямку, то він може перекваліфікуватися у розробники, оскільки QA Engineer часто має справу з програмним кодом. Інколи навіть вміє його читати (не на рівні розробника, але все одно може зрозуміти його). Якщо ж QA Engineer пише автотести — він вже наполовину програміст.
Також це можуть бути спеціалізовані напрямки. Один із них — автотести, створення програм для перевірки сценаріїв. Є ще нішеве тестування: