Чим займаються тестувальники і чому вони так потрібні? Яке кар’єрне зростання можливе для тих, хто обрав цю спеціальність? Старший тестувальник Дмитро Лебєдєв та випускник тренінг-центру EPAM Олександр Поздняков розповідають про те, що таке тестування насправді. Давайте розбиратися!
Тестування — це цікаво?
Тестування — багатогранний і дуже цікавий процес. Спеціаліст-початківець має тут великий вибір можливостей розвитку. Наприклад, можна розвиватися в напрямку тестування Backend'у, тобто прихованої від очей користувачів частини ПЗ. Або можна зануритися в тестування User Interface — тієї частини системи, через яку користувач взаємодіє з додатком. Можливо, вам більше подобається тестувати ігри? Чи можливо вам до душі тестування навантаження? Чи хочеться відчути себе «хакером» і піти в тестування безпеки? В тестуванні можливо все!
Чому тестувальники так потрібні?
Припустимо, ми розробляємо додаток на основі E-learning для учнів молодших класів. Уявіть, що буде, якщо ми пропустимо етап тестування й надамо наш додаток школам «як є». Школярі, озброєні допитливим розумом, випробовуватимуть додаток на міцність, клікаючи на всі кнопки. Наприклад, вони заблокують вчителя в голосовому чаті, що призведе до зриву уроку. Якби ми більш відповідально поставилися до тестування програми з точки зору функцій, які вона повинна виконувати, такого б не сталося.
Що робить тестувальник на проекті?
Роль тестувальника на проекті полягає в тому, що він перевіряє результат роботи всієї команди (розробників, системних інженерів, бізнес-аналітиків). Зокрема, він перевіряє відповідність розробленого програмістами додатку вимогам, які до нього висуваються. Іншими словами, тестувальник — це умовний «універсальний солдат», який має розуміти не лише як працюють окремі частини програми, але й як система поводить себе в цілому; а також, як зміни в одному модулі можуть вплинути на роботу всього додатку. Не менш важливе завдання тестувальника — розуміти й оцінювати вимоги до додатку з точки зору можливості їх реалізувати.
А чи можна конкретніше?
Уявімо гіпотетичну ситуацію, що наша команда розробляє WEB-орієнтований додаток, націлений на продажі. У нашому додатку буде кошик, в який користувач повинен мати можливіть додати продукт. Як визначити, що реалізований модуль відповідає нашим очікуванням? Як зрозуміти, що користувач дійсно може додати товар у кошик? Окрім того, користувач повинен мати можливість оплачувати товар, а отже ми повинні взаємодіяти зі сторонніми сервісами, які дозволяють проводити оплату. Як нам переконатися, що взаємодія пройде успішно? Це всього лише один сценарій роботи з кошиком, а їх має бути набагато більше. Ось тут і з’являється найбільше користі від роботи тестувальника.
Приклад з життя: у всіх вдома є ножиці, основна функція яких — розділяти один об’єкт з тканини або паперу на два. Це очікувана поведінка нашої системи. Змикаючи леза ножиць, ми отримуємо реальну поведінку системи. Якщо ножиці з моменту випуску на заводі не ріжуть папір, а тільки створюють заломи, то вони не виконують свою функцію, а отже реальна поведінка системи не відповідає очікуваній.
Хто такий тестувальник?
Тестувальник — це людина, який забезпечує якість продукту, що розробляється. Він співставляє вимоги та реалізований додаток, порівнюючи їх на предмет відхилень. Він може тестувати як цілу систему, так і її невелику частину.
Визначення і термінологія
Отже, ми переходимо до огляду основних понять, які використовуються в тестуванні ПЗ. І починаємо наш огляд, як це не дивно, з питання «А що ж таке тестування ПЗ?»
Тестування ПЗ — це процес дослідження, випробування програмного продукту, метою якого є перевірка відповідності між реальною поведінкою програми та її очікуваною поведінкою на кінцевому наборі тестів, обраних певним чином (ISO/IEC TR 19759:2005).
Визначень тестування ПЗ існує багато, розглянемо ще одне:
Тестування ПЗ — це один з методів контролю якості, процес аналізу ПЗ, спрямований на виявлення ступеню відповідності ПЗ вимогам.
В свою чергу, контроль якості — це система заходів для забезпечення відповідності вимогам та очікуванням (ISO 9000:2005). Контроль якості включає в себе тестування, прототипування, інспектування коду та деякі інші методи.
Як ви можете помітити в усіх трьох визначеннях присутній такий термін як «вимоги». Які вимоги? Для чого вони потрібні? Навіщо вони взагалі існують? Якщо коротко, то з точки зору тестування, вимоги допомогають інженеру з якості зосередитися на конкретних завданнях. Відзначимо також, що тестування — це нескінченний процес, і протестувати все фізично неможливо.
Кому підходить тестування?
В описах численних вакансій (так-так, ринковий попит тут стабільно високий) на позицію «Тетсувальник ПЗ» завжди можна зустріти «уважність до деталей», «скрупульозність», «відповідальність» і т.д. Безперечно, це дуже важливі характеристики. Ми лише доповнимо цей перелік ще кількома якостями, які точно необхідні першокласному спеціалісту в тестуванні:
Гарний тестувальник — це той, хто:
- вміє спілкуватися з людьми і працювати в команді;
- не боїться уточнювати деталі, навіть ті, які на перший погляд здаються очевидними;
- завжди готовий розібратися в новій для себе предметній області.
Які шляхи є в тестуванні?
Як уже було сказано вище, тестування ПЗ — багатогранний процес, і в ньому завжди є місце розвитку.
Наприклад, якщо команда розробляє додаток для різних версій операційних систем, браузерів або інших платформ, то тестувальнику необхідно володіти навичками тестування сумісності (Compatibility testing). Або, скажімо, команда розробляє мобільну версію додатку, тоді необхідно зайнятися Mobile testing. Чи можливо, ви вмієте спрощувати собі життя, оформлюючи рутинні завдання в коді? Тоді вам підійде Automated testing.
А як же кар’єрне зростання? Ким можна стати після рівня Junior?
Для тестувальників (як і для розробників) є багато кар’єрних можливостей в компанії. Вони, як і будь-які інші технічні спеціалісти, можуть рости від Junior-спеціаліста до Lead-спеціаліста.
Наприклад, в EPAM, можна стати і технічним лідом (Tech Lead), і Delivery Manager (DM), і ресурсним менеджером (RM). Досвід роботи в тестуванні буде значною перевагою, якщо розвиток в одній з перерахованих ролей є для вас пріоритетним. Більше того, робота тестувальника не менш відповідальна, ніж робота розробника, і оцінюється вона також високо.
Підіб’ємо підсумки:
Тестування — це один з напрямків, що стрімко розвиваються і користуються високим попитом на ринку ІТ. Тестувальники затребувані в найрізноманітніших сферах бізнесу (автомобілебудування, E-learning, E-commerce, Life Sciences і т.д.), а всередині самого напрямку ви знайжете багато різних можливостей для розвитку — від Mobile Testing до Data Quality. Таким чином, ставши спеціалістом з тестування, ви можете підвищувати свої компетенції в цілковито різних областях, обираючи підходящий напрям для кар’єрного зростання!