Интервју со Рената Карајанова, Intermediate Testing инженер во Сеавус
Автоматизацијата и технолошката револуција направија сѐ повеќе луѓе да се заинтересирани за преквалификација. Тестирањето на софтверот се состои од широк спектар на активности кои имаат за цел да проверат дали вистинските резултати на софтверскиот систем се совпаѓаат со очекуваните, и преку него се идентификуваат грешките и се бараат недостатоците. Овој процес може да се изврши мануелно или со помош на автоматизирани алатки. Мануелните тестирања се извршуваат од страна на човек, а автоматизираните тестирања се извршуваат со помош на алатка, скрипта или софтвер.
Препознавањето на квалитет – Quality assurance (QA) е фокусирано на управување на животниот циклус на софтверското решение и потврда дали софтверот ги исполнува стандардите за квалитет. Тестирањето е дел од Quality assurance и помага да се увиди квалитетот на софтверот, како и да го подобри истиот. На врвот на пирамидата се наоѓа Автоматизираното препознавање на квалитет – Automation Quality Assurance (QA), чија главна цел е да воспостави автоматизиран процес за проценка на квалитетот.
Во врска со автоматизацијата на QA (Quality Assurance), разговаравме со Intermediate Testing инженерот воСеавус, Рената Карајанова.
Како започна твојата приказна во Сеавус и кажи нѝ нешто повеќе за растот во твојата професија?
Мојата приказна во Сеавус започна со Академијата за тестирање на софтвер. Имам завршено Економски факултет и неколку години работев во таа област. Кога решив дека сакам да направам промена во кариерата знаев дека тоа ќе биде во областа на тестирање на софтвер бидејќи сметам дека е многу интересна професија која ти нуди слобода и креативност во работата и можностите за напредок и надградување се огромни. Веднаш по завршувањето на Академијата, добив понуда за пракса, а подоцна и вработување во Сеавус. Првиот проект на кој работев беше доста интересен проект од Embedded дивизијата, и бев целосно посветена на мануелно тестирање. Тимот со кој работев навистина направи да се чувствувам добредојдено уште од првиот ден, имаа доверба во мене и тоа ми беше мотивација уште повеќе да учам и да го давам најдоброто од себе. Во меѓувреме положив два ISTQB сертификати и со поддршка на мојот ментор и Technology Line Manager поминав низа трененизи за дообука за автоматско тестирање, па веќе на следниот проект почнав и да работам со автоматско тестирање. Секако, патот до овде не беше лесен, но со посветеност, учење и надградување сега сум веќе Intermediate testing engineer и работам целосно со автоматско тестирање.
Што всушност работи еден Intermediate Testing инженер? На кои проекти моментно работиш и како изгледа еден твој работен ден?
Моментално работам на проект од областа на банкарската индустрија. Еден мој работен ден секогаш започнува со голема шолја кафе J. Продолжувам со читање и одговарање на меилови, а потоа доаѓа и daily состанокот со тимот каде што разговараме за тоа што имаме сработено претходниот ден, кои се плановите за тековниот и дали имаме нешто што моментално нѐ блокира во работата. После состанокот се посветувам на активностите што ми се планирани за тој ден. Како еден Intermediate testing engineer, oвие задачи може да бидат различни, почнувајќи од развој на нови тест скрипти – овде влегуваат подготовка на тест сценарија, кодирање на тест скрипта и дебагирање на напишаните тест скрипти, сѐ до подобрување и одржување на веќе постоечките тест скрипти. Една од обврските ми е и извршувањето на тест скриптите, анализа на резултатите и споделување на резултатите до соодветните лица. Во текот на денот имам уште неколку состаноци за различни работи, како на пример два пати неделно имаме и состаноци на кои предлагаме начини за подобрувања во нашата работа, разговараме за нови алатки за тестирање што би можеле да ги употребуваме или предлагаме решенија за постоечки проблеми. Денот го завршувам со сумирање на сработеното и план за утрешната работа. Предизвици има секојдневно, но тоа е и еден од главните фактори поради кој уживам во мојата работа.
Какви знаења и вештини треба да поседува еден тест инженер на софтвер?
Еден тест инженер на софтвер треба да поседува комбинација на технички и нетехнички вештини. Неопходно е да има познавања од мануелното тестирање и техниките што се користат за мануелно тестирање, бидејќи едноставно автоматското тестирање не може да постои без мануелното. Треба да има општо познавање од објектно-ориентирано програмирање и барем еден програмски јазик, познавања од бази на податоци (SQL), Linux команди, API тестирање, системи за контрола на верзиии (Version Control Systems). Исто така, да има добри познавања од актуелните алатки и технологии за тестирање. Овде би споменала и познавање на Agile методологијата. Во однос на нетехничките вештини, тестерите треба да размислуваат аналитички, критички и да имаат добри комуникациски вештини, како и добро познавање на домеин индустријата. Еден успешен тестер треба секогаш да е подготвен да истражува и да испробува нови работи, да презема иницијатива и активно да бара можности за да ги направи процесите поефикасни.
Која е улогата на тестирањето софтвер за quality assurance? Кога мануелни, а кога автоматизирани тестови?
Тестирањето софтвер е дел од quality assurance. Целта на тестирањето софтвер е да се идентификуваат потенцијални грешки, да се утврди квалитетот на софтверот и дали истиот е во согласност со утврдените барања и критериуми, а исто така тестирањето софтвер придонесува и кон подобрување на софтверот. Двата типа тестирање – мануелно и автоматско се применуваат во различни случаи во зависност од различни фактори како што се буџетот, барањата и структурата на проектот, расположливите ресурси и временската рамка. Во двата методи, отпфатени се специфични типови тестирање, како што се тестирање на системот, интеграциско тестирање, функционално тестирање и нефункционално тестирање. Сепак, некои од овие видови тестирање се погодни за мануелно тестирање, а други за автоматско тестирање. Еден од најважните фактори при одлучувањето за употреба на автоматски тестови, е фрекфенцијата на која би се извршувале тест сценаријата. Доколку тестовите се повторливи и се извршуваат често, очигледно е дека тие тестови се кандидати за автоматизација. Друг фактор е бројот на тестови. Автоматско тестирање не е потребно кога имаме малку тест сценарија, дури и ако истите се повторливи. Според тоа, класичен пример за употреба на автоматски тестови е Regression тест сценаријата и Smoke тест сценаријата. Овие тестови се извршуваат после секој циклус на воведување на нови функционалности или поправка на дефекти. Smoke тестовите се end-to-end сценарија со кои се проверува дека најважните функции на апликацијата работат правилно. Овие видови тестирања се идеален пример за примена на автоматски тестови затоа што ретко се менуваат, се состојат од значителен број на тест сценарија, повторливи се и често се извршуваат. Најчесто, прво се извршува еден сет на Smoke тестови, пред да се изврши целиот сет од Regression сценарија. Како друг пример за автоматизирани тестови би ги навела и нефункционалните тестови – Performance и Load Testing, потоа тестови што треба да се извршат во повеќе конфигурациски средини, повеќе оперативни системи или пребарувачи, како и тестови за кои се потребни многу податоци. Мануелните тестови, од друга страна, се погодни за тестови што не се повторливи, не се извршуваат често и каде се најважни вештините, креативноста и интуицијата на тестерот. Најдобри примери за мануелно тестирање се Exploratory testing, Usability testing, и Ad-hoc testing. Exploratory testing бара знаење, искуство, аналитички или логички вештини, креативност и интуиција на тестерот и едноставно е невозможно да се автоматизира овој дел од тестирањето. Ad-hoc тестирањето нема однапред дефиниран пристап, се извршува произволно на било кој дел од аппликацијата / софтверот и затоа не е погоден за автоматизација.
Софтверот и технологиите брзо се менуваат. Кои се трендовите сега и како еволуира оваа гранка во последниве години?
Овде прво би го навела автоматското тестирање кое сѐ повеќе станува интегрален дел од процесот на тестирање на софтвер. Компаниите ги препознаваат многуте придобивки што ги нуди автоматското тестирање како што се побрзо добивање на резултати од тестирањето, намалување на трошоците и поголема покриеност на софтверот со тестови. Како што Agile методологиите за развој на нови софтверски решенија стануваат сѐ покористени, така станува неопходно користењето на автоматско тестирање. Во самиот процес на континуирана интеграција и континуирана испорака (CI/CD – continuous integration and continuous delivery), автоматските тестови се воведуваат за секоја фаза од развојот на софтвер, со што дефектите се откриваат многу рано имајќи предвид дека тестовите се извршуваат континуирано, уште од самиот почеток на развој на софтверот.
Тестирањето на нефункционалните аспекти на софтверот како што се перформансите, сигурноста и употребливоста (usability) на софтверот е друг тренд кој зема голем замав. Ако со употребата на Waterfall методологијата, тестирањето се вршеше на крајот на развојниот циклус на производот, најчесто мануелно и тестовите беа најмногу фокусирани на функционална валидација на софтверот, сега со Agile методологиите и употреба на различни алатки за автоматско тестирање, тестирањето на нефунционалните аспекти е многу полесно и сѐ повеќе користено. Ќе го спомнам и тестирањето на API (application programming interface) како вид на тестирање што сѐ почесто се употребува. Тестирањето на API може да се употребува во различни фази од развојот на производот, бара помалку пишување на код за разлика од UI автоматските тестови, дава побрзи резултати и грешките се откриваат побрзо. Она за што исто така често се пишува и дискутира е и софтверското тестирање управувано од вештачка интелигенција и машинско учење. Иако овој пристап на тестирање е сѐ уште во рана фаза, дефинитивно е тренд што вреди да се следи.
Ова се само дел од трендовите, ги има многу, и токму затоа постојаното учење, надградување и следење на истите е неопходно за еден тест инженер да може да одговори на барањата на клиентите.