Maktabga qaytish: avtomatlashtirilgan testlar bilan shug'ullanish uchun qo'lda testerlarni qanday o'rgatish kerak

QA talabgorlarining beshtadan to‘rttasi avtomatlashtirilgan testlar bilan ishlashni o‘rganmoqchi. Hamma kompaniyalar ish vaqtida qo'lda sinovchilarning bunday istaklarini bajara olmaydi. Wrike xodimlar uchun avtomatlashtirish maktabini o'tkazdi va ko'pchilikning bu istagini amalga oshirdi. Men ushbu maktabda aynan QA talabasi sifatida qatnashganman.

Men Selenium bilan qanday ishlashni o'rgandim va endi deyarli hech qanday tashqi yordamisiz ma'lum miqdordagi avtotestlarni mustaqil ravishda qo'llab-quvvatlayman. Va bizning qo'shma tajribamiz natijalari va shaxsiy xulosalarimga asoslanib, men avtomatlashtirishning eng ideal maktabining formulasini olishga harakat qilaman.

Wrikening maktabni tashkil etish tajribasi

Avtomatlashtirish maktabiga ehtiyoj aniq bo'lgach, uni tashkil etish avtomatlashtirishning texnik rahbari Stas Davydovga tushdi. Undan boshqa kim tushuntira oladi, nima uchun ular bu tashabbus bilan chiqdilar, natijaga erishdilarmi va sarflangan vaqtdan afsuslanadimi? Keling, unga so'z beramiz:

— 2016-yilda biz avtotestlar uchun yangi ramka yozdik va uni testlarni yozishni osonlashtiradigan qilib yaratdik: oddiy qadamlar paydo bo‘ldi, struktura ancha tushunarli bo‘ldi. Biz bir fikrga keldik: yangi testlar yozmoqchi bo'lgan har bir kishini jalb qilishimiz kerak va uni tushunish osonroq bo'lishi uchun biz bir qator ma'ruzalar yaratdik. Biz birgalikda mavzular rejasini tuzdik, bo'lajak o'qituvchilarning har biri o'zlari uchun bittadan olib, u bo'yicha ma'ruza tayyorladilar.

— Talabalar qanday qiyinchiliklarga duch kelishdi?

— Asosan, albatta, arxitektura. Testlarimiz tuzilishi haqida ko'p savollar bor edi. Fikr-mulohazalarda ushbu mavzu bo'yicha ko'p narsa yozildi va biz batafsilroq tushuntirish uchun qo'shimcha ma'ruzalar o'tkazishimiz kerak edi.

— Maktab o‘z samarasini berdimi?

- Ha, albatta. Uning yordami bilan ko'plab odamlar testlarni yozishga jalb qilindi va o'rtacha kasalxonada hamma avtotestlar nima ekanligini, ular qanday yozilganligini va qanday ishga tushirilishini yaxshiroq tushuna boshladi. Avtomatlashtirish muhandislariga yuk ham kamaydi: biz testlarni tahlil qilish bo'yicha yordam so'rovlarini bir necha baravar kam qabul qilamiz, chunki sinovchilar va ishlab chiquvchilar deyarli barcha vaziyatlarda buni o'zlari hal qila boshladilar. Xo'sh, bo'lim uchun bir nechta ichki afzalliklar mavjud: biz taqdimotlar va ma'ruzalar bo'yicha tajriba orttirdik, buning natijasida ba'zi avtomatlashtirish muhandislari konferentsiyalarda taqdimot qilishga muvaffaq bo'lishdi, shuningdek, yangi kelganlar uchun kuchli videolar va taqdimotlar to'plamini oldik.

O'z nomimdan shuni qo'shimcha qilamanki, bizning bo'limlarimiz o'rtasidagi aloqa mutlaqo kulgili darajada soddalashtirilgan. Misol uchun, endi men qaysi holatlar va qaysi atomlik darajasida avtomatlashtirish haqida o'ylashim shart emas. Natijada, barcha manfaatdor tomonlar doimiy ravishda o'sib borayotgan test qamroviga to'liq g'amxo'rlik qilmoqda. Hech kim boshqalardan imkonsiz narsani talab qilmaydi.

Umuman olganda, jamoalar ishiga ta'siri albatta ijobiy. Ehtimol, ushbu maqolani o'qiyotgan hamkasblar ham shunga o'xshash narsani qilish haqida o'ylayotgandir? Keyin maslahat oddiy bo'ladi: agar avtomatlashtirilgan testlar siz uchun ustuvor bo'lsa, bunga arziydi. Keyinchalik, biz murakkabroq savol haqida gaplashamiz: bularning barchasini iloji boricha to'g'ri tashkil etish, barcha tomonlarning xarajatlari minimal bo'lishi va mahsulot maksimal bo'lishi uchun.

Tashkilot uchun maslahatlar

Maktab foydali edi, ammo Stasning ta'kidlashicha, ba'zi qiyinchiliklar mavjud edi, shuning uchun qo'shimcha ma'ruzalar tashkil qilish kerak edi. Yaqinda talaba bo‘lib o‘zimni bexabar va o‘zimni solishtirar ekanman, menimcha, sinovchilarga avtomatlashtirilgan testlarni tushunishga o‘rgatishning ideal usulini yaratish uchun quyidagi bosqichlarni ishlab chiqdim.

0-qadam. Lug'at yarating

Albatta, bu qadam nafaqat QA uchun kerak. Biroq, men buni aniq aytmoqchiman: avtomatlashtirish kodlari bazasi o'qilishi mumkin bo'lgan shaklda saqlanishi kerak. Dasturlash tillari - kamida yazyki, va shundan siz sho'ng'ishingizni boshlashingiz mumkin.

Maktabga qaytish: avtomatlashtirilgan testlar bilan shug'ullanish uchun qo'lda testerlarni qanday o'rgatish kerak

Bu erda elementlarning nomlari bilan vazifa ko'rinishining skrinshoti. Tasavvur qilaylik, siz vazifalar ko'rinishini qora quti sifatida sinab ko'ryapsiz va hayotingizda hech qachon Selenni ko'rmagansiz. Bu kod nima qiladi?

Maktabga qaytish: avtomatlashtirilgan testlar bilan shug'ullanish uchun qo'lda testerlarni qanday o'rgatish kerak

(Spoiler - vazifa administrator nomidan dam olish orqali o'chiriladi va keyin biz oqimda bu haqda yozuv borligini ko'ramiz.)

Faqatgina bu qadam QAA va QA tillarini bir-biriga yaqinlashtiradi. Avtomatlashtirish guruhlariga yugurish natijalarini tushuntirish osonroq; qo'lda sinovchilar holatlar yaratish uchun kamroq kuch sarflashlari kerak: ularni kamroq batafsilroq qilish mumkin. Shunga qaramay, hamma bir-birini tushunadi. Biz g'alabalarni haqiqiy mashg'ulot boshlanishidan oldin ham oldik.

1-qadam. Iboralarni takrorlang

Keling, til bilan parallellikni davom ettiramiz. Bolalikda gapirishni o'rganganimizda, biz etimologiya va semantikadan boshlamaymiz. Biz "onam", "o'yinchoq sotib ol" deb takrorlaymiz, lekin darhol bu so'zlarning proto-hind-evropa ildizlariga kirmang. Shunday qilib, bu erda: ishlaydigan narsalarni yozishga urinmasdan, avtotestlarning texnik xususiyatlarining chuqurligiga sho'ng'ishning ma'nosi yo'q.
Bu biroz teskari tuyuladi, lekin u ishlaydi.

Birinchi darsda to'g'ridan-to'g'ri avtotestlarni qanday yozishni asoslab berishga arziydi. Biz ishlab chiqish muhitini o'rnatishga yordam beramiz (mening holimda, Intellij IDEA), mavjud bosqichlardan foydalanib, mavjud sinfda boshqa usulni yozish uchun zarur bo'lgan minimal til qoidalarini tushuntiramiz. Biz ular bilan bir yoki ikkita test yozamiz va ularga uy vazifasini beramiz, men buni shunday formatlashtiraman: magistrdan filial ajratilgan, ammo undan bir nechta testlar olib tashlangan. Faqat ularning tavsiflari qolgan. Biz sinovchilardan ushbu testlarni qayta tiklashlarini so'raymiz (albatta, farqni namoyish qilish orqali emas).

Natijada, hamma narsani tinglagan va qilgan kishi:

  1. rivojlanish muhiti interfeysi bilan ishlashni o'rganing: filiallar, tezkor tugmalar, topshiriqlar va pushlarni yaratish;
  2. til va sinflar tuzilishi asoslarini o'zlashtirish: in'ektsiyalarni qaerga kiritish va qayerga import qilish, nima uchun izohlar kerak va u erda qadamlardan tashqari qanday belgilar mavjud;
  3. harakat o'rtasidagi farqni tushunish, kutish va tekshirish, qayerda nimani ishlatish kerak;
  4. avtotestlar va qo'lda tekshirishlar o'rtasidagi farqga e'tibor bering: avtotestlarda interfeys orqali amallarni bajarish o'rniga u yoki bu ishlov beruvchini tortib olishingiz mumkin. Misol uchun, vazifa ko'rinishini ochish, kiritishni tanlash, matn kiritish va Yuborish tugmasini bosish o'rniga to'g'ridan-to'g'ri backendga sharh yuboring;
  5. keyingi bosqichda javob beradigan savollarni shakllantirish.

Oxirgi nuqta juda muhim. Bu javoblarni oldindan osonlik bilan berish mumkin, ammo bu muhim o'qitish printsipi bo'lib, savollar tuzilmagan javoblar esda qolmaydi va nihoyat kerak bo'lganda foydalanilmaydi.

Agar bu vaqtda QA jamoasidan avtomatlashtirish muhandisi unga jangda bir nechta testlarni yozish vazifasini topshirsa va unga o'z filialiga topshirishga ruxsat bersa, ideal bo'lar edi.

Nima bermaslik kerak:

  1. ishlab chiqish muhitining funksionalligi va dasturlash tilining o'zi haqida chuqurroq bilim, bu faqat filiallar bilan mustaqil ishlashda kerak bo'ladi. Bu esda qolmaydi, siz buni ikki yoki uch marta tushuntirishingiz kerak bo'ladi, lekin biz avtomatlashtirish muhandislarining vaqtini qadrlaymiz, to'g'rimi? Misollar: ziddiyatlarni hal qilish, git-ga fayllar qo'shish, noldan sinflar yaratish, bog'liqliklar bilan ishlash;
  2. xpath bilan bog'liq hamma narsa. Jiddiy. Siz bu haqda alohida, bir marta va juda konsentrlangan holda gapirishingiz kerak.

2-qadam. Grammatikaga yaqinroq nazar tashlash

№0-bosqichdagi vazifa ko'rinishi skrinshotini eslaylik. Bizda checkCommentWithTextExists deb nomlangan qadam bor. Bizning testerimiz bu qadam nima qilishini allaqachon tushunadi va biz qadamning ichiga qarashimiz va uni biroz parchalashimiz mumkin.

Va bizda quyidagilar mavjud:

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

onCommentBlock qayerda

onCommonStreamPanel().commentBlock(userName);

Endi biz "o'yinchoq sotib ol" emas, balki "tepadan uchinchi javondagi ko'k shkafda joylashgan Detsky Mir do'konidan o'yinchoq sotib ol" deyishni o'rganamiz. Elementga ketma-ket, kattaroq elementlardan ishora qilishimizni tushuntirish kerak (oqim -> ma'lum bir shaxsning sharhlari bilan blok -> ushbu blokning ko'rsatilgan matn joylashgan qismi).

Yo'q, hali xpath haqida gapirish vaqti emas. Qisqacha aytib o'tamizki, bu ko'rsatmalarning barchasi ular tomonidan tasvirlangan va meros ular orqali o'tadi. Ammo biz ushbu gugurtchilar va ofitsiantlar haqida gapirishimiz kerak, ular aynan shu bosqichga tegishli va nima bo'layotganini tushunish uchun zarurdir. Ammo ortiqcha yuklamang: talabangiz keyinchalik murakkabroq da'volarni mustaqil ravishda o'rganishi mumkin. Ehtimol, should, waitUntil, displayed();, exist();, not(); yetarli bo‘lishi kerak.

Uy vazifasi aniq: ma'lum miqdordagi testlar uchun zarur bo'lgan bir nechta bosqichlarning mazmuni olib tashlangan filial. Sinovchilar ularni qayta tiklasin va yugurishni yana yashil rangga aylantirsin.

Bundan tashqari, agar sinov guruhi o'z ishida nafaqat yangi xususiyatlar, balki ba'zi xatolarni tuzatgan bo'lsa, siz undan ushbu xatolar uchun testlarni darhol yozishni va ularni chiqarishni so'rashingiz mumkin. Ehtimol, barcha elementlar allaqachon tasvirlangan, faqat bir nechta qadamlar etishmayotgan bo'lishi mumkin. Bu mukammal mashq bo'ladi.

Qadam 3. To'liq suvga cho'mish

To'g'ridan-to'g'ri vazifalarini bajarishni davom ettirmoqchi bo'lgan sinovchi uchun iloji boricha to'liq. Nihoyat, xpath haqida gapirishimiz kerak.

Birinchidan, aytaylik, barcha onCommentBlock va sharhlar ular tomonidan tasvirlangan.

Maktabga qaytish: avtomatlashtirilgan testlar bilan shug'ullanish uchun qo'lda testerlarni qanday o'rgatish kerak

Jami:

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

Hikoyaning tartibi juda muhim. Birinchidan, biz har qanday mavjud xpathni olamiz va elementlar yorlig'ida qanday qilib bitta va faqat bitta element mavjudligini ko'rsatamiz. Keyinchalik, struktura haqida gaplashamiz: qachon WebElement-dan foydalanish kerak bo'lsa va qachon yangi element uchun alohida fayl yaratish kerak bo'ladi. Bu sizga merosni yaxshiroq tushunish imkonini beradi.

Shuni aniq ta'kidlash kerakki, bitta element butun vazifa ko'rinishi bo'lib, u yordamchi elementni o'z ichiga oladi - bola elementni o'z ichiga olgan butun oqim - alohida sharh va hokazo. Child elementlar sahifada ham, avtotest tizimi tuzilishida ham ota-ona elementlari ichida joylashgan.

Shu nuqtada, tomoshabinlar ularning qanday meros bo'lib qolganligini va onCommentBlock-dagi nuqtadan keyin nimani kiritish mumkinligini aniq tushunishlari kerak edi. Bu vaqtda biz barcha operatorlarni tushuntiramiz: /, //, ., [] va hokazo. Biz yukga foydalanish haqidagi bilimlarni qo'shamiz @class va boshqa zarur narsalar.

Maktabga qaytish: avtomatlashtirilgan testlar bilan shug'ullanish uchun qo'lda testerlarni qanday o'rgatish kerak

Talabalar xpathni shu tarzda qanday tarjima qilishni tushunishlari kerak. Birlashtirish uchun - bu to'g'ri, uy vazifasi. Biz elementlarning tavsiflarini o'chirib tashlaymiz, ularga testlar ishini tiklashga ruxsat beramiz.

Nima uchun bu maxsus yo'l?

Biz murakkab bilimga ega odamni ortiqcha yuklamasligimiz kerak, lekin biz bir vaqtning o'zida hamma narsani tushuntirishimiz kerak va bu qiyin dilemma. Bu yo'l bizga birinchi navbatda tinglovchilarni savol berishga va biror narsani tushunmaslikka va keyingi daqiqada ularga javob berishga imkon beradi. Agar siz butun arxitektura haqida gapiradigan bo'lsangiz, unda qadamlar yoki xpath mavzusi tahlil qilinayotganda, uning eng muhim qismlari tushunarsizligi tufayli allaqachon unutiladi.

Biroq, ba'zilaringiz jarayonni yanada optimallashtirish bo'yicha tajribangizni baham ko'rishlari mumkin. Izohlarda shunga o'xshash takliflarni o'qishdan xursand bo'laman!

Manba: www.habr.com

a Izoh qo'shish