Վերադառնալ դպրոց. ինչպես պատրաստել ձեռքով փորձարկողներին՝ զբաղվելու ավտոմատ թեստերով

ՈԱ հինգ դիմորդներից չորսը ցանկանում են սովորել, թե ինչպես աշխատել ավտոմատացված թեստերի հետ: Ոչ բոլոր ընկերությունները կարող են աշխատանքային ժամերին կատարել ձեռքով փորձարկողների նման ցանկությունները։ Wrike-ն ավտոմատացման դպրոց է անցկացրել աշխատակիցների համար և իրականացրել է շատերի այս ցանկությունը: Ես մասնակցել եմ այս դպրոցին հենց որպես ՈԱ աշակերտ:

Ես սովորեցի, թե ինչպես աշխատել Selenium-ի հետ և այժմ ինքնուրույն աջակցում եմ որոշակի թվով autotests՝ գրեթե առանց արտաքին օգնության: Եվ, հիմնվելով մեր համատեղ փորձի և իմ անձնական եզրակացությունների վրա, ես կփորձեմ դուրս բերել ավտոմատացման ամենաիդեալական դպրոցի բանաձևը։

Wrike-ի փորձը դպրոց կազմակերպելու հարցում

Երբ պարզ դարձավ ավտոմատացման դպրոցի անհրաժեշտությունը, դրա կազմակերպումն ընկավ ավտոմատացման տեխնիկական ղեկավար Ստաս Դավիդովի ձեռքը: Ուրիշ ո՞վ կարող է բացատրել, թե ինչու են նրանք հանդես եկել այս նախաձեռնությամբ, արդյո՞ք արդյունքի են հասել և ափսոսում են ծախսած ժամանակի համար։ Եկեք նրան խոսք տանք.

— 2016 թվականին մենք ինքնաթեստերի նոր շրջանակ գրեցինք և այնպես արեցինք, որ թեստեր գրելը հեշտացավ. նորմալ քայլեր հայտնվեցին, կառուցվածքը դարձավ շատ ավելի հասկանալի։ Մտահղացանք մի միտք՝ պետք է ներգրավել բոլորին, ովքեր ցանկանում են նոր թեստեր գրել, և ավելի հեշտ հասկանալի դարձնելու համար մենք ստեղծեցինք դասախոսությունների շարք։ Մենք հավաքականորեն մշակեցինք թեմաների պլան, ապագա դասախոսներից յուրաքանչյուրն իր համար վերցրեց մեկը և դրա վերաբերյալ զեկույց պատրաստեց։

- Ի՞նչ դժվարություններ ունեցան ուսանողները:

— Հիմնականում, իհարկե, ճարտարապետությունը։ Շատ հարցեր կային մեր թեստերի կառուցվածքի վերաբերյալ։ Հետադարձ կապում այս թեմայով շատ բան գրվեց, և մենք ստիպված էինք լրացուցիչ դասախոսություններ անցկացնել՝ ավելի մանրամասն բացատրելու համար:

-Դպրոցը վճարվե՞ց:

-Այո, միանշանակ։ Նրա շնորհիվ շատ մարդիկ ներգրավվեցին թեստեր գրելով, և, միջին հաշվով, հիվանդանոցում բոլորը սկսեցին ավելի լավ հասկանալ, թե ինչ են ավտոթեստերը, ինչպես են դրանք գրվում և ինչպես են գործարկվում: Ավտոմատացման ինժեներների ծանրաբեռնվածությունը նույնպես նվազել է. մենք այժմ շատ անգամ ավելի քիչ դիմումներ ենք ստանում թեստերի վերլուծության հարցում օգնության համար, քանի որ փորձարկողները և մշակողները սկսել են իրենք հաղթահարել դա գրեթե բոլոր իրավիճակներում: Դե, բաժանմունքի համար կան մի քանի ներքին առավելություններ. մենք ձեռք բերեցինք շնորհանդեսների և դասախոսությունների փորձ, ինչի շնորհիվ որոշ ավտոմատացման ինժեներներ արդեն հասցրել են պրեզենտացիաներ անել կոնֆերանսներում, ինչպես նաև ստացել են տեսանյութերի և շնորհանդեսների հզոր հավաքածու նորեկների համար:

Իմ անունից ես կավելացնեմ, որ մեր գերատեսչությունների միջև հաղորդակցությունը պարզեցվել է մինչև ծիծաղելիորեն հեշտ մակարդակի: Օրինակ, հիմա ես գործնականում կարիք չունեմ մտածելու, թե որ դեպքերը և ատոմականության որ մակարդակում ավտոմատացնել: Արդյունքում բոլոր շահագրգիռ կողմերը լիովին հոգում են թեստային ծածկույթը, որը մշտապես աճում է։ Ոչ ոք ուրիշներից անհնարինը չի պահանջում։

Ընդհանուր առմամբ, թիմերի աշխատանքի վրա ազդեցությունը միանշանակ դրական է։ Միգուցե այս հոդվածը կարդացող գործընկերները նույնպես մտածում են նման բան անելու մասին: Այնուհետև խորհուրդը պարզ կլինի. արժե այն, եթե ավտոմատացված թեստերը ձեզ համար առաջնահերթություն են: Հաջորդը, մենք կխոսենք ավելի բարդ հարցի մասին. ինչպես կազմակերպել այս ամենը հնարավորինս ճիշտ, որպեսզի բոլոր կողմերի ծախսերը լինեն նվազագույն, իսկ արդյունքը առավելագույնը:

Խորհուրդներ կազմակերպելու համար

Դպրոցը օգտակար էր, բայց, ինչպես խոստովանեց Ստասը, կային որոշ դժվարություններ, որոնց պատճառով անհրաժեշտ էր լրացուցիչ դասախոսություններ կազմակերպել։ Եվ հենց վերջերս մի ուսանող, որը համեմատում էր ինձ անտեղյակության և ինքս ինձ հիմա, ես ձևակերպեցի հետևյալ քայլերը՝ ստեղծելու, իմ կարծիքով, ավտոմատացված թեստերը հասկանալու փորձարկողներին սովորեցնելու իդեալական միջոց:

Քայլ 0. Ստեղծեք բառարան

Իհարկե, այս քայլն անհրաժեշտ է ոչ միայն ՈԱ-ի համար։ Այնուամենայնիվ, ես ուզում եմ դա հստակեցնել. ավտոմատացման կոդերի բազան պետք է պահվի ընթեռնելի ձևով: Ծրագրավորման լեզուներ, ոչ պակաս լեզուներ, և դրանից դուք կարող եք սկսել ձեր սուզվելը:

Վերադառնալ դպրոց. ինչպես պատրաստել ձեռքով փորձարկողներին՝ զբաղվելու ավտոմատ թեստերով

Ահա առաջադրանքների դիտման սքրինշոթը՝ տարրերի անուններով: Եկեք պատկերացնենք, որ դուք փորձարկում եք taskview-ը որպես սև արկղի և երբեք չեք տեսել սելեն ձեր կյանքում: Ի՞նչ է անում այս կոդը:

Վերադառնալ դպրոց. ինչպես պատրաստել ձեռքով փորձարկողներին՝ զբաղվելու ավտոմատ թեստերով

(Սփոյլեր - առաջադրանքը ջնջվում է rest-ի միջոցով ադմինիստրատորի անունից, այնուհետև մենք տեսնում ենք, որ դրա մասին գրառում կա հոսքում):

Միայն այս քայլն ավելի է մոտեցնում QAA և QA լեզուները: Ավտոմատացման թիմերի համար ավելի հեշտ է բացատրել վազքի արդյունքները, ձեռքով փորձարկողները պետք է ավելի քիչ ջանք գործադրեն պատյաններ ստեղծելու վրա. դրանք կարող են ավելի քիչ մանրամասնվել: Այդուհանդերձ, բոլորը հասկանում են միմյանց։ Մենք ստացանք շահումները նույնիսկ նախքան բուն մարզումների սկսվելը:

Քայլ 1. Կրկնել արտահայտությունները

Շարունակենք լեզվի հետ զուգահեռը. Երբ մանուկ հասակում սովորում ենք խոսել, չենք սկսում ստուգաբանությունից ու իմաստաբանությունից։ Մենք կրկնում ենք «մայրիկ», «խաղալիք գնիր», բայց անմիջապես չմտնենք այս բառերի պրոտո-հնդեվրոպական արմատների մեջ: Այստեղ այդպես է. իմաստ չունի սուզվել ավտոթեստերի տեխնիկական հատկանիշների խորքերը՝ չփորձելով գրել մի բան, որն աշխատում է:
Դա մի փոքր հակասական է թվում, բայց այն աշխատում է:

Առաջին դասին արժե հիմք տալ, թե ինչպես ուղղակիորեն գրել autotests: Մենք օգնում ենք ստեղծել զարգացման միջավայրը (իմ դեպքում՝ 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);

Այժմ մենք սովորում ենք ասել ոչ թե «խաղալիք գնիր», այլ «խաղալիք գնիր Detsky Mir խանութից, որը գտնվում է վերևից երրորդ դարակում գտնվող կապույտ պահարանում»։ Պետք է բացատրել, որ տարրը մենք մատնանշում ենք հաջորդաբար՝ ավելի մեծ տարրերից (stream -> բլոկ որոշակի անձի մեկնաբանություններով -> այս բլոկի այն հատվածը, որտեղ նստած է նշված տեքստը):

Ոչ, դեռ ժամանակը չէ խոսել xpath-ի մասին: Պարզապես հակիրճ նշեք, որ այս բոլոր հրահանգները նկարագրված են իրենց կողմից, և ժառանգությունը անցնում է դրանց միջոցով: Բայց մենք պետք է խոսենք այս բոլոր համընկնումների ու մատուցողների մասին, դրանք վերաբերում են կոնկրետ այս քայլին և անհրաժեշտ են հասկանալու համար, թե ինչ է կատարվում։ Բայց մի ծանրաբեռնեք. ձեր ուսանողը կարող է ավելի ուշ ինքնուրույն ուսումնասիրել ավելի բարդ պնդումները: Ամենայն հավանականությամբ, պետք է, waitUntil, ցուցադրված();, 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 թեման վերլուծվի, դրա ամենակարևոր մասերն արդեն կմոռացվեն իրենց անհասկանալիության պատճառով։

Այնուամենայնիվ, ձեզանից ոմանք, հավանաբար, կկարողանան կիսվել ձեր փորձով, թե ինչպես կարելի է ավելի շատ օպտիմիզացնել գործընթացը: Ես ուրախ կլինեմ կարդալ նմանատիպ առաջարկները մեկնաբանություններում:

Source: www.habr.com

Добавить комментарий