Мектепке оралу: автоматтандырылған сынақтармен жұмыс істеу үшін қолмен тестерлерді қалай үйрету керек

QA-ға үміткер бес адамның төртеуі автоматтандырылған сынақтармен жұмыс істеуді үйренгісі келеді. Барлық компаниялар жұмыс уақытында қолмен тестілеушілердің мұндай тілектерін орындай алмайды. Wrike қызметкерлер үшін автоматтандыру мектебін өткізді және көптеген адамдар үшін бұл тілегін жүзеге асырды. Мен бұл мектепке дәл QA студенті ретінде қатыстым.

Мен Selenium-мен қалай жұмыс істеу керектігін үйрендім және қазір сыртқы көмексіз белгілі бір автотесттерді дербес қолдайды. Біздің бірлескен тәжірибеміздің нәтижелеріне және өзімнің жеке қорытындыларыма сүйене отырып, мен автоматтандырудың ең идеалды мектебінің формуласын алуға тырысамын.

Врайктың мектепті ұйымдастыру тәжірибесі

Автоматтандыру мектебінің қажеттілігі белгілі болған кезде оны ұйымдастыру автоматтандырудың техникалық жетекшісі Стас Давыдовқа түсті. Олардың бұл бастаманы неліктен көтергенін, нәтижеге қол жеткізді ме және өткізген уақытына өкінетінін одан басқа кім түсіндіре алады? Оған сөз берейік:

— 2016 жылы біз автотесттердің жаңа құрылымын жазып, оны тестілерді жазу оңай болатындай етіп жасадық: қалыпты қадамдар пайда болды, құрылым әлдеқайда түсінікті болды. Бізге бір идея келді: жаңа тесттер жазғысы келетіндердің барлығын тарту керек және оны түсінуді жеңілдету үшін біз лекциялар топтамасын жасадық. Біз бірлесіп тақырыптар жоспарын жасадық, болашақ лекторлардың әрқайсысы бір-бірден алып, сол бойынша баяндама дайындадық.

— Оқушыларға қандай қиындықтар болды?

— Негізінен, әрине, сәулет. Тесттеріміздің құрылымы туралы көптеген сұрақтар болды. Кері байланыста бұл тақырыпта көп жазылды және толығырақ түсіндіру үшін қосымша дәрістер өткізуге тура келді.

— Мектеп өзін ақтады ма?

- Иә, сөзсіз. Оның арқасында көптеген адамдар тесттерді жазуға тартылды және орташа есеппен ауруханада барлығы автотесттердің не екенін, олардың қалай жазылатынын және қалай іске қосылатынын жақсы түсіне бастады. Автоматтандыру инженерлеріне жүктеме де азайды: біз қазір сынақтарды талдау бойынша көмекке бірнеше есе аз сұраныстарды аламыз, өйткені тестерлер мен әзірлеушілер барлық жағдайларда дерлік оны жеңе бастады. Кафедра үшін бірнеше ішкі артықшылықтар бар: біз презентациялар мен лекциялар бойынша тәжірибе алдық, соның арқасында кейбір автоматика инженерлері конференцияларда презентациялар жасай алды, сонымен қатар жаңадан келгендер үшін қуатты бейнелер мен презентациялар жиынтығын алды.

Мен өз атымнан біздің бөлімдер арасындағы байланыс күлкілі оңай деңгейге дейін жеңілдетілгенін қосамын. Мысалы, қазір маған қандай жағдайларда және атомдықтың қандай деңгейінде автоматтандыру керектігі туралы ойлаудың қажеті жоқ. Нәтижесінде барлық мүдделі тараптар үнемі өсіп келе жатқан тестілеуді қамтуға толықтай қамқорлық жасауда. Ешкім басқалардан мүмкін емес нәрсені талап етпейді.

Жалпы, ұжымдардың жұмысына оң әсер ететіні сөзсіз. Мүмкін осы мақаланы оқитын әріптестер де осыған ұқсас нәрсе жасауды ойлайтын шығар? Сонда кеңес қарапайым болады: егер автоматтандырылған сынақтар сіз үшін басымдық болса, оған тұрарлық. Әрі қарай, біз күрделірек мәселе туралы сөйлесетін боламыз: мұның бәрін қалай дұрыс ұйымдастыру керек, осылайша барлық тараптардың шығындары минималды және өнім максималды болады.

Ұйымдастыру бойынша кеңестер

Мектеп пайдалы болды, бірақ, Стас мойындағандай, кейбір қиындықтар болды, сондықтан қосымша дәрістер ұйымдастыру қажет болды. Жақында ғана мен өзімді-өзім мен өзімді салыстыра отырып, менің ойымша, тестілеушілерді автоматтандырылған тесттерді түсінуге үйретудің тамаша әдісін жасау үшін келесі қадамдарды тұжырымдадым.

0-қадам. Сөздік құру

Әрине, бұл қадам тек QA үшін қажет емес. Дегенмен, мен мұны анық айтқым келеді: автоматтандырудың кодтық базасы оқылатын пішінде сақталуы керек. Бағдарламалау тілдері - кем дегенде тілдері, және осыдан бастап сүңгуді бастауға болады.

Мектепке оралу: автоматтандырылған сынақтармен жұмыс істеу үшін қолмен тестерлерді қалай үйрету керек

Мұнда элементтердің атаулары бар тапсырмалар көрінісінің скриншоты берілген. Сіз тапсырма көрінісін қара жәшік ретінде сынап жатырсыз және өміріңізде Селенді ешқашан көрмегеніңізді елестетіп көрейік. Бұл код не істейді?

Мектепке оралу: автоматтандырылған сынақтармен жұмыс істеу үшін қолмен тестерлерді қалай үйрету керек

(Спойлер - тапсырма әкімші атынан демалыс арқылы жойылады, содан кейін ағында бұл туралы жазба бар екенін көреміз.)

Бұл қадамның өзі QAA және QA тілдерін жақындастырады. Автоматтандыру топтарына іске қосу нәтижелерін түсіндіру оңайырақ; қолмен тексерушілер істерді жасауға аз күш жұмсауы керек: олар азырақ егжей-тегжейлі болуы мүмкін. Сонда да бәрі бірін-бірі түсінеді. Біз ұтыстарды нақты жаттығу басталғанға дейін алдық.

1-қадам. Сөз тіркестерін қайталаңыз

Тілмен параллельді жалғастырайық. Бала кезімізде сөйлеуді үйренгенде этимология мен семантикадан бастамаймыз. Біз «ана», «ойыншық сатып ал» деп қайталаймыз, бірақ бұл сөздердің прото-үнді-еуропалық түбірлеріне бірден кірмейміз. Міне, дәл осылай: жұмыс істейтін нәрсені жазуға тырыспай, автотесттердің техникалық ерекшеліктерінің тереңдігіне сүңгудің мағынасы жоқ.
Бұл аздап қарама-қайшы естіледі, бірақ ол жұмыс істейді.

Бірінші сабақта автотесттерді тікелей қалай жазуға болатынын негіздеген жөн. Біз әзірлеу ортасын орнатуға көмектесеміз (менің жағдайда, Intellij IDEA), бар қадамдарды пайдалана отырып, бар сыныпта басқа әдісті жазу үшін қажетті минималды тіл ережелерін түсіндіреміз. Біз олармен бір-екі тест жазып, үй тапсырмасын береміз, мен оны келесідей пішімдейтін едім: магистрден тармақталған тармақ, бірақ одан бірнеше сынақ алынып тасталды. Тек олардың сипаттамасы ғана қалды. Біз тестерлерден осы сынақтарды қалпына келтіруді сұраймыз (әрине, айырмашылықты көрсету арқылы емес).

Нәтижесінде тыңдаған және бәрін жасаған адам:

  1. әзірлеу ортасының интерфейсімен жұмыс істеуді үйрену: тармақтарды, жылдам пернелерді, орындауды және итеруді жасау;
  2. тіл мен сыныптардың құрылымының негіздерін меңгеру: инъекцияларды қайда енгізу және қайдан импорттау керек, аннотациялар не үшін қажет және онда қадамдардан басқа қандай белгілер бар;
  3. әрекеттің айырмашылығын түсіну, күту және тексеру, нені қайда қолдану керек;
  4. автотесттер мен қолмен тексерулер арасындағы айырмашылықты байқаңыз: автотесттерде интерфейс арқылы әрекеттерді орындаудың орнына бір немесе басқа өңдеулерді тартуға болады. Мысалы, тапсырма көрінісін ашудың, енгізуді таңдаудың, мәтінді терудің және Жіберу түймесін басудың орнына тікелей серверге түсініктеме жіберіңіз;
  5. келесі қадамда жауап беретін сұрақтарды құрастырыңыз.

Соңғы нүкте өте маңызды. Бұл жауаптарды уақытынан бұрын оңай беруге болады, бірақ тұжырымдалған сұрақтарсыз жауаптар есте сақталмайтын және ақырында қажет болғанда пайдаланылмайтын маңызды оқыту принципі болып табылады.

Осы уақытта QA командасының автоматтандыру инженері оған шайқаста бірнеше сынақ жазу тапсырмасын беріп, оның филиалына тапсыруға рұқсат етсе, тамаша болар еді.

Не беруге болмайды:

  1. әзірлеу ортасының функционалдығы және бағдарламалау тілінің өзі туралы тереңірек білім, бұл тек филиалдармен дербес жұмыс істегенде қажет болады. Бұл есте сақталмайды, сіз оны екі немесе үш рет түсіндіруіңіз керек, бірақ біз автоматтандыру инженерлерінің уақытын бағалаймыз, солай емес пе? Мысалдар: қақтығыстарды шешу, git-ке файлдарды қосу, нөлден бастап сыныптар құру, тәуелділіктермен жұмыс істеу;
  2. xpath-қа қатысты бәрі. Шынайы. Сіз бұл туралы бөлек, бір рет және өте шоғырланған түрде сөйлесуіңіз керек.

2-қадам. Грамматиканы мұқият қарастыру

№0 қадамдағы тапсырма көрінісі скриншотын еске түсірейік. Бізде checkCommentWithTextExists деп аталатын қадам бар. Біздің тестілеушіміз бұл қадамның не істейтінін түсінді және біз қадамның ішіне қарап, оны аздап ыдырай аламыз.

Ал бізде мыналар бар:

onCommentBlock(userName).comment(expectedText).should(displayed());

onCommentBlock қайда орналасқан

onCommonStreamPanel().commentBlock(userName);

Енді біз «ойыншық сатып ал» емес, «ойыншықты жоғарыдан үшінші сөредегі көк шкафта орналасқан «Детский мир» дүкенінен сатып ал» деп айтуды үйренеміз. Біз үлкенірек элементтерден элементті дәйекті түрде көрсететінімізді түсіндіру керек (ағын -> белгілі бір адамның түсініктемелері бар блок -> осы блоктың көрсетілген мәтін орналасқан бөлігі).

Жоқ, әлі xpath туралы айтатын уақыт емес. Барлық осы нұсқауларды олар сипаттайтынын және мұрагерлік олар арқылы өтетінін қысқаша атап өтіңіз. Бірақ біз осы барлық сәйкестіктер мен даяшылар туралы айтуымыз керек, олар осы қадамға арнайы қатысты және не болып жатқанын түсіну үшін қажет. Бірақ шамадан тыс жүктемеңіз: студентіңіз кейінірек күрделі бекітулерді өз бетінше зерттей алады. Сірә, should, waitUntil, displayed();, exist();, not(); жеткілікті.

Үй тапсырмасы анық: тесттердің белгілі бір санына қажетті бірнеше қадамдардың мазмұны жойылған тармақ. Сынақшылар оларды қалпына келтіріп, жүгіруді қайтадан жасыл етіңіз.

Сонымен қатар, егер тестілеу тобының жұмысында жаңа мүмкіндіктер ғана емес, сонымен қатар кейбір қателерді түзету болса, сіз одан осы қателер үшін сынақтарды дереу жазып, оларды босатуды сұрай аласыз. Сірә, барлық элементтер сипатталған, тек бірнеше қадамдар болмауы мүмкін. Бұл тамаша жаттығу болады.

3-қадам. Толық батыру

Тікелей міндеттерін орындауды жалғастыратын сынақшы үшін мүмкіндігінше толық. Ақырында, xpath туралы айту керек.

Алдымен, осы onCommentBlock және түсініктемелердің барлығын олар сипаттайтынын түсіндірейік.

Мектепке оралу: автоматтандырылған сынақтармен жұмыс істеу үшін қолмен тестерлерді қалай үйрету керек

Барлығы:

"//div[contains(@class, ‘stream-panel’)]//a[contains(@class,'author') and text()='{{ userName }}’]//div[contains(@class,'change-wrapper') and contains(.,'{{ text }}’)]"

Әңгіменің реті өте маңызды. Біріншіден, біз кез келген бұрыннан бар xpath-ті аламыз және элементтер қойындысында бір және тек бір элементті қалай қамтитынын көрсетеміз. Әрі қарай, біз құрылым туралы сөйлесетін боламыз: қашан WebElement пайдалану керек және жаңа элемент үшін бөлек файл жасау қажет болғанда. Бұл мұраны жақсы түсінуге мүмкіндік береді.

Жалғыз элемент барлық тапсырмалар көрінісі екенін анық айту керек, оның құрамында еншілес элемент - еншілес элементті қамтитын бүкіл ағын - бөлек түсініктеме және т.б. Еншілес элементтер бетте де, автотест құрылымының құрылымында да тектік элементтердің ішінде болады.

Осы кезде аудитория олардың қалай тұқым қуалайтынын және onCommentBlock нүктесінде нүктеден кейін нені енгізуге болатынын нақты түсінуі керек. Осы кезде біз барлық операторларды түсіндіреміз: /, //, ., [] және т.б. Жүктемеге пайдалану туралы білімді қосамыз @class және басқа да қажетті заттар.

Мектепке оралу: автоматтандырылған сынақтармен жұмыс істеу үшін қолмен тестерлерді қалай үйрету керек

Студенттер xpath сөзін осылайша қалай аудару керектігін түсінуі керек. Бекіту – дұрыс, үй тапсырмасы. Біз элементтердің сипаттамаларын жоямыз, оларға сынақтардың жұмысын қалпына келтіруге мүмкіндік береміз.

Неліктен бұл ерекше жол?

Біз адамға күрделі біліммен ауыртпалық түсірмеуіміз керек, бірақ біз бәрін бірден түсіндіруіміз керек, бұл қиын дилемма. Бұл жол бізге алдымен тыңдаушыларды сұрақ қойып, бірдеңені түсінбей, келесі сәтте жауап беруге мүмкіндік береді. Егер сіз бүкіл архитектура туралы айтатын болсаңыз, онда қадамдар немесе xpath тақырыбы талданған кезде оның ең маңызды бөліктері түсініксіз болғандықтан ұмытылады.

Дегенмен, кейбіреулеріңіз процесті қалай оңтайландыруға болатыны туралы тәжірибеңізбен бөлісе алатын шығарсыз. Түсініктемелерде ұқсас ұсыныстарды оқуға қуаныштымын!

Ақпарат көзі: www.habr.com

пікір қалдыру