Məktəbə qayıt: avtomatlaşdırılmış testlərlə məşğul olmaq üçün əl testçilərini necə öyrətmək olar

Beş QA ərizəçisindən dördü avtomatlaşdırılmış testlərlə işləməyi öyrənmək istəyir. Bütün şirkətlər iş saatları ərzində əl ilə test edənlərin bu cür istəklərini yerinə yetirə bilməz. Wrike işçilər üçün avtomatlaşdırma məktəbi açdı və bir çoxları üçün bu istəyi həyata keçirdi. Mən bu məktəbdə məhz QA tələbəsi kimi iştirak etdim.

Mən Selenium ilə necə işləməyi öyrəndim və indi müstəqil olaraq müəyyən sayda avtotestləri praktiki olaraq heç bir kənar yardım olmadan dəstəkləyirəm. Birgə təcrübəmizin nəticələrinə və şəxsi qənaətlərimə əsaslanaraq, ən ideal avtomatlaşdırma məktəbinin düsturunu əldə etməyə çalışacağam.

Wrike-nin məktəb təşkili təcrübəsi

Avtomatlaşdırma məktəbinə ehtiyac aydınlaşdıqda, onun təşkili avtomatlaşdırmanın texniki rəhbəri Stas Davydova düşdü. Ondan başqa kim izah edə bilər ki, niyə bu təşəbbüslə çıxış ediblər, nəticə əldə ediblərmi və sərf etdikləri vaxta görə peşman olublarmı? Gəlin sözü ona verək:

— 2016-cı ildə biz avtotestlər üçün yeni çərçivə yazdıq və testləri yazmağı asanlaşdırdıq: normal addımlar meydana çıxdı, struktur daha başa düşülən oldu. Fikrimizə bir fikir gəldi: yeni testlər yazmaq istəyən hər kəsi cəlb etməliyik və onun başa düşülməsini asanlaşdırmaq üçün bir sıra mühazirələr yaratdıq. Biz kollektiv şəkildə mövzular planı hazırladıq, gələcək mühazirəçilərin hər biri özləri üçün birini götürdü və bu barədə məruzə hazırladı.

- Tələbələrin hansı çətinlikləri var idi?

- Əsasən, əlbəttə ki, memarlıq. Testlərimizin strukturu ilə bağlı çoxlu suallar var idi. Rəydə bu mövzuda çox şey yazılmışdı və biz daha ətraflı izah etmək üçün əlavə mühazirələr keçirməli olduq.

- Məktəb öz bəhrəsini verdi?

- Bəli, mütləq. Onun sayəsində bir çox insan testlərin yazılmasına cəlb edildi və orta hesabla xəstəxanada hər kəs avtotestlərin nə olduğunu, necə yazıldığını və necə işə salındığını daha yaxşı anlamağa başladı. Avtomatlaşdırma mühəndislərinin yükü də azaldı: indi testləri təhlil etmək üçün kömək üçün dəfələrlə daha az sorğu alırıq, çünki testçilər və tərtibatçılar demək olar ki, bütün vəziyyətlərdə bunun öhdəsindən gəlməyə başladılar. Şöbə üçün bir sıra daxili üstünlüklər var: təqdimatlarda və mühazirələrdə təcrübə qazandıq, bunun sayəsində bəzi avtomatlaşdırma mühəndisləri artıq konfranslarda təqdimatlar etməyi bacardılar, həmçinin yeni gələnlər üçün güclü video və təqdimatlar dəsti aldıq.

Öz adımdan əlavə edəcəyəm ki, şöbələrimiz arasında əlaqə tamamilə gülünc dərəcədə asan səviyyəyə qədər sadələşdirilib. Məsələn, indi mən praktiki olaraq hansı hallarda və hansı atomluq səviyyəsində avtomatlaşdırmağı düşünməyə ehtiyac duymuram. Nəticədə, bütün maraqlı tərəflər daim artan test əhatəsinə tam diqqət yetirirlər. Heç kim başqalarından mümkün olmayanı tələb etmir.

Ümumiyyətlə, komandaların işinə təsir mütləq müsbətdir. Bəlkə bu məqaləni oxuyan həmkarlar da oxşar bir şey etmək barədə düşünürlər? Sonra məsləhət sadə olacaq: avtomatlaşdırılmış testlər sizin üçün prioritetdirsə, buna dəyər. Sonra, daha mürəkkəb bir sual haqqında danışacağıq: bütün tərəflərin xərcləri minimal və məhsul maksimum olsun ki, bütün bunları mümkün qədər düzgün təşkil etmək.

Təşkilat məsləhətləri

Məktəb faydalı idi, lakin Stasın etiraf etdiyi kimi, bəzi çətinliklər var idi, buna görə əlavə mühazirələr təşkil etmək lazım idi. Və bu yaxınlarda özümü-cahilliklə özümü müqayisə edən bir tələbə kimi, mənim fikrimcə, testçilərə avtomatlaşdırılmış testləri başa düşməyi öyrətməyin ideal yolunu yaratmaq üçün aşağıdakı addımları tərtib etdim.

Addım 0. Lüğət yaradın

Təbii ki, bu addım təkcə QA üçün lazım deyil. Bununla belə, mən bunu açıq şəkildə bildirmək istəyirəm: avtomatlaşdırma kod bazası oxunaqlı formada saxlanmalıdır. Proqramlaşdırma dilləri - ən azı dillərdə, və bundan sonra dalışa başlaya bilərsiniz.

Məktəbə qayıt: avtomatlaşdırılmış testlərlə məşğul olmaq üçün əl testçilərini necə öyrətmək olar

Budur, elementlərin adları ilə tapşırıq görünüşünün ekran görüntüsü. Təsəvvür edək ki, siz tapşırıq görünüşünü qara qutu kimi sınaqdan keçirirsiniz və həyatınızda heç vaxt Selenium görməmisiniz. Bu kod nə edir?

Məktəbə qayıt: avtomatlaşdırılmış testlərlə məşğul olmaq üçün əl testçilərini necə öyrətmək olar

(Spoiler - tapşırıq admin adından istirahət vasitəsi ilə silinir və sonra axında bunun qeydinin olduğunu görürük.)

Təkcə bu addım QAA və QA dillərini bir-birinə daha da yaxınlaşdırır. Avtomatlaşdırma qrupları üçün qaçışın nəticələrini izah etmək daha asandır; əl ilə test edənlər işlərin yaradılması üçün daha az səy sərf etməlidirlər: onlar daha az təfərrüatlı edilə bilər. Yenə də hamı bir-birini başa düşür. Həqiqi təlim başlamazdan əvvəl biz uduşları aldıq.

Addım 1. İfadələri təkrarlayın

Dillə paralelliyi davam etdirək. Uşaq vaxtı danışmağı öyrənəndə etimologiyadan, semantikadan başlamırıq. Biz "ana", "oyuncaq al" deyirik, lakin dərhal bu sözlərin Proto-Hind-Avropa köklərinə girmirik. Beləliklə, burada: işləyən bir şey yazmağa çalışmadan avtotestlərin texniki xüsusiyyətlərinin dərinliyinə dalmağın mənası yoxdur.
Bir az əks-intuitiv səslənir, amma işləyir.

Birinci dərsdə birbaşa avtotestlərin necə yazılması barədə əsas verməyə dəyər. Biz inkişaf mühitinin qurulmasına kömək edirik (mənim vəziyyətimdə, Intellij IDEA), mövcud addımlardan istifadə edərək mövcud sinifdə başqa metod yazmaq üçün lazım olan minimum dil qaydalarını izah edirik. Onlarla bir-iki test yazıb ev tapşırığı veririk, mən bunu belə formatlaşdırardım: budaq ustadan ayrılıb, amma ondan bir neçə test çıxarılıb. Yalnız onların təsvirləri qalır. Test edənlərdən bu testləri bərpa etmələrini xahiş edirik (əlbəttə ki, fərqi göstərməklə deyil).

Nəticədə, dinləyən və hər şeyi edən şəxs:

  1. inkişaf mühiti interfeysi ilə işləməyi öyrənin: filiallar, isti düymələr, tapşırıqlar və itələmələr yaratmaq;
  2. dilin və siniflərin strukturunun əsaslarını mənimsəmək: inyeksiyaları hara daxil etmək və hara idxal etmək, nə üçün annotasiyalara ehtiyac var və addımlardan başqa orada hansı simvollara rast gəlinir;
  3. hərəkət arasındakı fərqi başa düşmək, gözləyin və yoxlayın, nəyi harada istifadə etmək;
  4. avtotestlər və əl yoxlamaları arasındakı fərqə diqqət yetirin: avtotestlərdə interfeys vasitəsilə hərəkətlər yerinə yetirmək əvəzinə bu və ya digər işləyicini çəkə bilərsiniz. Məsələn, tapşırıq görünüşünü açmaq, daxiletməni seçmək, mətni yazmaq və Göndər düyməsini klikləmək əvəzinə birbaşa backend-ə şərh göndərin;
  5. növbəti addımda cavablandırılacaq sualları tərtib edin.

Son nöqtə çox vacibdir. Bu cavablar asanlıqla vaxtından əvvəl verilə bilər, lakin bu, tərtib edilmiş suallar olmadan cavabların yadda saxlanmaması və nəhayət lazım olanda istifadə edilməməsi mühüm tədris prinsipidir.

İdeal olardı ki, bu zaman QA komandasından bir avtomatlaşdırma mühəndisi ona döyüşdə bir neçə test yazmaq tapşırığı versə və ona öz filialına tabe olmağa icazə versəydi.

Nə vermək olmaz:

  1. inkişaf mühitinin funksionallığı və proqramlaşdırma dilinin özü haqqında daha dərin biliklər, yalnız filiallarla müstəqil işləyərkən lazım olacaq. Yadda qalmayacaq, iki və ya üç dəfə izah etməli olacaqsınız, amma biz avtomatlaşdırma mühəndislərinin vaxtını qiymətləndiririk, elə deyilmi? Nümunələr: münaqişələrin həlli, git-ə faylların əlavə edilməsi, sıfırdan siniflərin yaradılması, asılılıqlarla işləmək;
  2. xpath ilə əlaqəli hər şey. Ciddi. Bu barədə ayrı-ayrılıqda, bir dəfə və çox cəmləşərək danışmaq lazımdır.

Addım 2. Qrammatikaya daha yaxından nəzər salmaq

№0 addımdan tapşırıq görünüşü ekran görüntüsünü xatırlayaq. CheckCommentWithTextExists adlı bir addımımız var. Test cihazımız artıq bu addımın nə etdiyini başa düşür və biz addımın içərisinə baxıb onu bir az parçalaya bilərik.

Və içəridə aşağıdakılar var:

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

OnCommentBlock haradadır

onCommonStreamPanel().commentBlock(userName);

İndi "oyuncaq al" deyil, "yuxarıdan üçüncü rəfdə mavi şkafda yerləşən Detsky Mir mağazasından oyuncaq al" deməyi öyrənirik. Bir elementə ardıcıl olaraq, daha böyük elementlərdən işarə etdiyimizi izah etmək lazımdır (axın -> müəyyən bir şəxsin şərhləri ilə blok -> bu blokun göstərilən mətnin oturduğu hissəsi).

Yox, hələ xpath haqqında danışmağın vaxtı deyil. Qısaca qeyd edək ki, bütün bu göstərişlər onlar tərəfindən təsvir olunur və miras onlardan keçir. Ancaq bütün bu uyğunçular və ofisiantlar haqqında danışmaq lazımdır, onlar bu addımla əlaqəlidir və nə baş verdiyini anlamaq üçün lazımdır. Lakin həddən artıq yükləməyin: tələbəniz daha sonra təkbaşına daha mürəkkəb ifadələri öyrənə bilər. Çox güman ki, should, waitUntil, displayed();, exist();, not(); kifayət etməlidir.

Ev tapşırığı göz qabağındadır: müəyyən sayda test üçün zəruri olan bir neçə addımın məzmununun silindiyi bir filial. Qoy testerlər onları bərpa etsin və qaçışı yenidən yaşıllaşdırsın.

Bundan əlavə, əgər sınaq qrupunun işində təkcə yeni funksiyalar deyil, həm də bəzi səhvləri aradan qaldırmaq olarsa, ondan dərhal bu səhvlər üçün testlər yazmağı və onları buraxmağı xahiş edə bilərsiniz. Çox güman ki, bütün elementlər artıq təsvir edilmişdir, yalnız bir neçə addım əskik ola bilər. Bu mükəmməl məşq olacaq.

Addım 3. Tam daldırma

Birbaşa vəzifələrini yerinə yetirməyə davam edəcək bir sınaqçı üçün mümkün qədər tam. Nəhayət, xpath haqqında danışmaq lazımdır.

Əvvəlcə aydın edək ki, bütün bu onCommentBlock və şərhlər onlar tərəfindən təsvir edilmişdir.

Məktəbə qayıt: avtomatlaşdırılmış testlərlə məşğul olmaq üçün əl testçilərini necə öyrətmək olar

Ümumi:

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

Hekayənin ardıcıllığı çox vacibdir. Birincisi, biz hər hansı bir mövcud xpath götürürük və elementlər nişanının bir və yalnız bir elementi necə ehtiva etdiyini göstəririk. Sonra, struktur haqqında danışacağıq: WebElement istifadə etməli olduğunuz zaman və yeni element üçün ayrıca fayl yaratmağınız lazım olduqda. Bu, mirası daha yaxşı başa düşməyə imkan verəcəkdir.

Açıq şəkildə qeyd edilməlidir ki, tək element bütün tapşırıq görünüşüdür, o, uşaq elementi - uşaq elementi olan bütün axın - ayrıca şərh və s. Uşaq elementlər həm səhifədə, həm də avtotest çərçivəsinin strukturunda ana elementlərin içərisindədir.

Bu nöqtədə tamaşaçılar onların necə miras alındığını və onCommentBlock-da nöqtədən sonra nəyin daxil edilə biləcəyini dəqiq başa düşməlidirlər. Bu nöqtədə bütün operatorları izah edirik: /, //, ., [] və s. Biz yükə istifadə haqqında biliklər əlavə edirik @class və digər zəruri şeylər.

Məktəbə qayıt: avtomatlaşdırılmış testlərlə məşğul olmaq üçün əl testçilərini necə öyrətmək olar

Tələbələr xpath-ı bu şəkildə necə tərcümə etməyi başa düşməlidirlər. Birləşdirmək üçün - düzdür, ev tapşırığı. Elementlərin təsvirlərini silirik, testlərin işini bərpa etsinlər.

Niyə bu xüsusi yol?

Mürəkkəb biliyə malik insanı çox yükləməməliyik, ancaq hər şeyi bir anda izah etməliyik və bu çətin bir dilemmadır. Bu yol bizə imkan verəcək ki, ilk növbədə dinləyiciləri sual verməyə, nəyisə başa düşməməyə və növbəti anda onlara cavab verməyə məcbur edək. Bütün arxitektura haqqında danışırsınızsa, o zaman addımlar və ya xpath mövzusu təhlil edildikdə, onun ən vacib hissələri başa düşülməməsi səbəbindən artıq unudulacaq.

Bununla belə, bəziləriniz, ehtimal ki, prosesin daha da optimallaşdırılmasına dair təcrübənizi paylaşa biləcəksiniz. Şərhlərdə oxşar təklifləri oxumaqdan məmnun qalacağam!

Mənbə: www.habr.com

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