Как да научим едно момиче на основите на тестването на уеб приложения

Четете много, имам нужда от съвет.

Леко нетривиална задача ми се падна. Момичето, може да се каже, моята гражданска съпруга, иска да стане тестер. Самата тя не знае точно коя, но иска да заеме начални позиции в ИТ. След известен размисъл се спряхме на тестване на интерфейси на уеб приложения, защото. това е, първо, тенденция (SPA време), която тепърва ще расте, и второ, има огромна свобода при тестване в мрежата. Други видове приложения (мобилни, десктоп), реших да отрежа, защото. прагът за влизане е по-висок (тесни инструменти, по-малко популярни, по-обвързани с технологията). Други видове тестване - още повече. Първо, значителна част от тестовете, които са „близо до кода“ или „близо до критичните функции“, се извършват от програмисти, и второ, можете да забравите за отдалечените тестове (като натоварване, дим и т.н.) в началния етап. Аз самият съм запознат с мрежата от много дълго време, full-stack разработчик, както се казва в момента. От технологиите: python/js/django/flask/backbone и всичко свързано. Основно пиша модулни тестове (python unittest), рядко тествам front-end, защото фрийлансът и проектите не са толкова големи, но имам опит с mocha / jasmine + selenium, както и python + selenium за e2e тестване. За себе си опитвам много неща, но все пак не съм тестер, просто трябва да знам и да се интересувам как е, освен това има неща, при които е невъзможно без тестване.

Така че, като цяло, ние имаме моето разбиране как работи и може да бъде подредено, а момичето има практически нулеви познания. Има доста техническо образование зад гърба си (сигурност в ИТ), кодирала е нещо, знае малко за мрежата. Може да се характеризира по следния начин: html / css, малко Python (по моя инициатива), груба представа за парадигмите за програмиране (OOP), знае нещо за мрежите (gateway,route, dns, dhtsp най-вероятно дори си спомня какво е bgp (sic!) и т.н.), но няма опит в нищо. Има аналитично мислене, но няма увереност, „няма наглост да правиш това, което изглежда правилно и да не се страхуваш да пишеш страхотно“.

И аз, след като разбрах тази ситуация, реших да помогна малко. Сега имаме такава задача в мрежата, че се нуждаем от хора, които да тестват интерфейси, да пишат тестови случаи, да използват някакъв вид език за автоматизация, да пишат отчети и да взаимодействат с дизайнери на UI. Виждам това като най-обещаващото в момента, освен това е потенциално възможно да отидете навсякъде оттам, дори до разработка, дори до мениджъри, или можете, след като получите значителна подготовка, да преминете към тестване на мобилни приложения (особено като се има предвид, че мрежата също си проправя път там и доста уверено), и с голямо желание можете да отидете навсякъде. И има свободни места (аз не следих много, просто знам, че има).

Но от моя гледна точка трябва да знаете много: имам чувството, че тестерът е почти разработчик. Как можете да тествате интерфейса, без да разбирате как работи оформлението (html / css / svg, особено функции със селектори)? Как можете да тествате сложни сценарии, без да знаете основите на взаимодействието между предния и задния край (бисквитки, ajax, основите на js, за да не се страхувате, ако има нещо)? Освен това би било хубаво да знаете нещо за бекенда. Освен това на реално място може да има някаква комбинация от ъглов, карма тест бегач, жасмин или нещо подобно, трябва да сте в темата.

Какво направих: Реших да започна с Python, защото JS се преподава като първи език и умира в прототипи, много интересно кастинг на типове, 100 начина за деклариране на частен член и стрелба в краката, с милиони рамки/парадигми/стандарти/модули/класове. Товамного труден език, мисля. Започването с популярната Java като цяло е провал, защото аз самият съм запознат с нея само на университетско ниво и второ, смятам, че това не е най-добрият език за развитие и учене, освен това все още сме в областта на frontend. В Python вече сме написали тестов клас и единичен тест за него, за да разберем грубо същността на тестването. Тогава казах, че ако направите обратното, тогава ще бъде TDD. И ако помислите и опишете какво ви трябва преди TDD, тогава ще бъде BDD. Разбирам, че има много нюанси, но се опитвам да се уверя, че човек има въпроси и той отива в Google. По пътя обяснявам някои функции като защо е необходим self (за не-Pythonists - това е указател към текущия обект), какво е писане, OOP, давам връзки към habra, към доковете, показвам как да отстранявам грешки, анализирам грешки, като цяло се опитвам да обясня колкото е възможно повече от програмирането като цяло, мога едновременно да лекувам по темите "и знаете ли, има указатели в C и те работят там по този начин.", защото езикът е всички боклуци. Със значителна вероятност тя ще трябва да научи или js, или, Бог да ме прости, Java. И всичко това ще бъде много просто, вярвам, ако тя знае основните понятия.

Освен това инсталирахме selenium webdriver и сега пишем функционални тестове (e2e) на реални сайтове в същия python, натискаме бутоните, попълваме полетата, преминаваме през страниците. Понякога пиша тестови страници, където трябва да преместите мишката, да щракнете, курсорите са различни и да проверите жизнеспособността, за да стане по-трудно. Всичко това са пресилени примери, но същността обяснява.

Периодично обяснявам, че селенът не е само уебдрайвер и че има и други тестове, това е всичко за хоризонта. За самото тестване (което се случва), посъветвах лекции от Yandex + няколко статии от Habra,защото Мисля, че е безполезно да вземете книга, в която тестват абстрактни светофари.

Аз самият съм в известно объркване, защото започнах да усещам, че по-скоро „вкарвам информацията в главата си“, отколкото да й обяснявам нещо. %)