Test avtomatlaşdırması və müasir QA ilə bağlı problemlər

Çevik və DevOps-da test avtomatlaşdırmasında bəzi ümumi problemlər nələrdir?

Müasir Proqram İnkişafı və QA, test avtomatizasiyasına çox diqqət yetirir və tədqiqat testlərinə kifayət etmir.

Daha avtomatlaşdırılmış testlərlə daha keyfiyyətli proqram buraxırıq? Məncə yox!


Bu yaxınlarda bir sosial media şəbəkəsində bir yazıya rast gəldim

Bu gün test və QA hadisələrinin əksəriyyətində gördüklərim əsasən DevOps, Davamlı İnteqrasiya və Test Avtomatlaşdırmasıdır.


Hamısı çox xoş olsa da, bir çox yaramaz sınaq işlərinin avtomatlaşdırıldığını görürəm.



Hamısı avtomatlaşdırılsa da inteqrasiya testləri və funksional testlər zamanı bildirilən bir neçə səhv görürəm.

UAT-da istifadəçilər getdikcə daha çox səhv tapırlar, çünki test qrupları əvvəlki mərhələlərdə onları müəyyənləşdirə bilmirlər.

İnsana yaxşı bir test işi yazmağı öyrətməsək, tamamilə avtomatlaşdırılmış şəkildə başa çatacağıq ...


Və… təfsirim “axmaqlıqdır”. :-)

Hər halda, gəlin görək həqiqətən Modern QA və Test Otomasyonu dünyasında baş verir.



Müasir QA ilə problemlər

Çevik inkişaf içərisindəki 'Test Avtomatizasiyası' nın əksəriyyəti ağır vəziyyətdədir. Proqram sənayesi, əsasən qurduqları proqramın keyfiyyətli olduğuna inam hissi əldə etmək üçün “Test Otomasyonu Mütəxəssisləri” işə cəlb etmək üçün böyük pullar tökür. Yenə də UAT zamanı nəzərə çarpan səhvlər və / və ya digər problemlər aşkar edilir və ya istehsal mühitinə keçir. Bəs nə baş verir?

Qeyd:Test Automation ilə mən daha çox istinad edirəm Soğan Test avtomatlaşdırması.

Avtomatlaşdırılmış test artıq hər hansı bir müasir proqram hazırlama prosesinin mərkəzindədir. Məqsəd budur kömək edin təkrarlana bilən əsasda yüksək keyfiyyətli proqram təmin etmək, amma doğrudanmı?


Testerlər hələ də test edir?

Məsələnin həqiqəti budur ki, çevik komandaların əksəriyyətində testçilər artıq sınaqdan keçirmirlər.

İnkişaf praktikaları və çevik və. Kimi mədəniyyətlər sayəsində manuel testlər fəzilətini itirdi DevOps , QA məkanında bir uçurum yaratmış olanlar - kodlaya bilənlər və edə bilməyənlər.

Tez-tez 'Mən 100% avtomatlaşdırma mühəndisiyəm' və ya '80% avtomatlaşdırma 20% əl ilə' və ya daha da betər, 'Əllə sınaqdan nifrət edirəm' kimi şeyləri eşidirsiniz. Şok!

DevOps-da hər şeyin avtomatlaşdırılması lazım olduğuna inanırıq. Əllə müdaxilə üçün yer yoxdur, məs. əl testi.


Hal-hazırda çevik bir komandadakı testçilərin əksəriyyəti “Test avtomatlaşdırması” tələbini yerinə yetirmək üçün mübarizə aparır. Sprintdə hər hekayəni avtomatlaşdırmaq üçün təzyiq var və hərtərəfli tədqiqat sınaqları üçün kifayət qədər vaxt yoxdur.

Problem, xüsusilə Çevik inkişafda, QA'ların bir istifadəçi hekayəsi götürməsi və qəbul meyarlarını avtomatlaşdırmasıdır. Bunu edərkən, əsas və yeganə diqqətləri yalnız testdən keçmək üçün məhdud kodlaşdırma bacarıqları ilə mübarizə aparmaqdır.

Təbii ki, bu, yalnız testi avtomatlaşdırmaqla maraqlandığınızda və onun boru kəmərində keçdiyini görəndə dar bir fokus yaradır. Bu, yalnız qəbul meyarlarının nəyin doğru və ya yanlış olduğunu sübut edir və böyük mənzərəni unutma meylindəsiniz.

Əllə Testdə azalma

Getdikcə daha çox “ənənəvi testçilər” bəzi kodlaşdırma dərsləri alaraq və daha da texniki cəhətdən “çevik test” lərə keçirlər.


Məni səhv başa düşməyin; hamısı yaxşıdır. İnanıram ki, sınaqçılar olaraq həmişə bacarıqlı olmaq üçün yeni və yeni inkişaf edən texnologiyaların öyrənilməsinə çalışmalıyıq. Bir sistemi yüksək keyfiyyətlə sınamaq istəyiriksə texnoloji yığını anlamalıyıq.

Bununla birlikdə, əl testçilərinin əksəriyyətinin bu təşəbbüsləri göstərməsinin əsl səbəbi, 'avtomatlaşdırılmış test' in əl testindən üstün olduğuna dair ümumi bir inancın olmasıdır və hey, kodlaşdırmanın əyləncəli, hə?

Qeyd:Əl testi ilə mən YOX bir skriptə əməl etmək və addımları yerinə yetirmək üçün köhnə məktəb üsuluna istinad etmək. Həqiqi testi aparan və maraqlı və düşünülmüş ssenarilər tətbiq edərək sistemin davranışını araşdırmaq istəyənlər - 'kəşfiyyat testi' adlananları nəzərdə tuturam.

Təəssüf ki, tədqiqatçılar üçün bazarda böyük bir eniş var. Bu olduqca aydındır. Hər hansı bir İT iş yerində “əl test cihazı” və “avtomatlaşdırma test cihazı” üçün bir neçə axtarış sorğusu aparın və nəticəni özünüz görün.



Test avtomatlaşdırması ilə bağlı problemlər

İndi gəlin görək avtomatlaşdırma səylərinin çoxunun nə üçün heç bir dəyər vermədiyini.

Dəfələrlə baş verdiyini gördüyüm ümumi səhvlər:

  • Avtomatlaşdırılmış testlərdə səhv bir gözləntinin olması
  • Yanlış təbəqədə, səhv vaxtda və səhv alətlərdən istifadə edərək avtomatlaşdırma
  • Yararsız testlərin avtomatlaşdırılması
  • Vacib sahələrə laqeyd yanaşmaq
  • Əsas ssenarilər itkin

Səhv gözləntilər

Bir müddət geri blog yazım yazdım niyə bir testi avtomatlaşdırmaq istəyirsən? ? Əgər oxumamısansa, oxumağa dəyər.

Bu məqalənin xülasəsi müntəzəm olaraq çalışdırmaq istədiyiniz testləri avtomatlaşdırmanızdır. Tərifə görə, bunlar sistemin hələ də işlədiyini təsdiqləyən regresiya testlərinizdir.

Lakin, avtomatlaşdırılmış yoxlamalar bir çox regresiya problemi taparsa, inkişaf etdiricilərin bacarıqlarını və inkişaf prosesini şübhə altına alardım. UI Avtomatik Testlər [kod hesabına] keçirilməməli və ya pis kodlaşdırma üçün [kompensasiya] edilməməlidir.

Yanlış qat, səhv alətlər və səhv vaxt

Çevik komandalarda 'Test Otomasyon Mühəndisləri' nin əksəriyyəti, bir istifadəçi hekayəsinə baxın və qəbul meyarlarını avtomatlaşdırın. Çox vaxt bu, Selenyum və Xiyarın birləşməsi ilə edilir.

Müasir veb tətbiqetmələr artıq açıq və arxa tərəf arasında açıq şəkildə bölünmüşdür. Arxa hissə əsasən asanlıqla əldə edilə bilən son nöqtələri olan bir sıra REST veb xidmətlərindən və ya API-lərdən ibarətdir.

Tətbiqin məntiqi API qatında sınaqdan keçirilə bilər. Bununla birlikdə, test avtomatlaşdırma mühəndislərinin əksəriyyəti, ən yaxşı halda çətin olan UI qatında funksionallığı təsdiqləmək üçün müraciət edirlər.

Kimi test alətləri var Karate və API sınağını asanlaşdıran Rest-Assured. İnkişaf zamanı bu vasitələrdən istifadə etməliyik. Təəssüf ki, bəzi test avtomatlaşdırma mühəndisləri bunu bilmirlər HTTP əsasları , API test ssenarilərini yazmaq mümkün olsun.

UI testlərinin avtomatlaşdırılmasına gəldikdə, Sərv əla vasitədir. Daha çox ön tərəf inkişaf etdiricilər üçün TDD alətinə bənzəyir. Geliştiricilər yeni istifadəçi interfeysi komponentlərinin davranışı barədə çox sürətli bir rəy alırlar.

Həm Karate, həm də Cypress “inkişaf testi vasitələri”, yəni inkişafa rəhbərlik edən və dəstəkləyən vasitələrdir. Hər ikisi də yüngüldür, asanlıqla inteqrasiya olunur və təmin edə bilər inkişafa inam .

Sonra Selenium və ya Cypress-i sistemdən uca həyata keçirən yalnız bir neçə ssenari hazırlamaq üçün istifadə edə bilərik. Bu ssenarilər yüngül reqressiya paketimizi təşkil edir və təmin edir işin davamlılığına inam .

Çox vaxt “testləri avtomatlaşdırmadan əvvəl funksiyanın tam inkişaf edib sabitləşməsini gözləyirik” kimi şeyləri eşidirəm. Hər hansı bir şüurlu sınaqçı bilir ki, yeni xüsusiyyətli böcəklər regresiya böcəklərindən çoxdur. İndiki inkişaf xüsusiyyətində problem tapmaq üçün sabit bir xüsusiyyətdən daha yüksək bir şans var.

Testləri avtomatlaşdırmağa vaxt sərf edəcəksinizsə, daha çox dəyər verə biləcəyi zaman inkişafa paralel olaraq edin.

Yararsız testlərin avtomatlaşdırılması

Hər bir 'testi' yalnız onun uğrunda avtomatlaşdırmayın. Düşüncə müddətini oyuna daxil edin. Yüksək və aşağı səviyyəli memarlıq diaqramlarını araşdırın. Nəyin səhv ola biləcəyini soruşun. İnteqrasiya nöqtələrini araşdırın və potensial uğursuzluq nöqtələrini axtarın.

Avtomatlaşdırmada ümumi test yanaşmanızda olduğu kimi (inşallah) riskə əsaslanan bir yanaşma edin. Bir şeyin uğursuz olma ehtimalı nədir və uğursuzluğun təsiri nədir? Cavab yüksəkdirsə, bu ssenarilər hər quruluşda avtomatlaşdırılmalı və icra edilməlidir.

Hər bir qaçışda, tez-tez bu qaçış üçün istifadəçi hekayələri ətrafında avtomatlaşdırılmış testlər yazırıq və digər xüsusiyyətlərlə inteqrasiyanı unuturuq. İnteqrasiya testləri ya zəifdir, ya da yoxdur.

'Testləri' avtomatlaşdırmağın vaxt aparacağını unutmayın. Unutmayın ki, bir testi avtomatlaşdıraraq həqiqətən test etmirsiniz, sadəcə sözügedən xüsusiyyətin bəzi qəbul meyarlarına cavab verdiyini yoxlayırsınız.

Sən edə bilməz testləri avtomatlaşdırın, ancaq bilinən faktların yoxlanılmasını avtomatlaşdıra bilərsiniz.

Buna görə hər dəfə bir 'testi' avtomatlaşdırmağa sərf etdiyiniz zaman, test etmədən sərf etdiyiniz vaxt haqqında düşünün!

Vacib sahələrə etinasızlıq

DevOps mədəniyyətinin yaranmasından bəri bu laqeydliyi daha çox görürəm.

DevOps-da, çatdırılma boru kəməri və yerləşdirmə ssenariləri, proqramın hazırlanması və çatdırılmasının əsas hissəsidir, lakin çətin ki, heç sınaqdan keçirilməsin.

Son bir neçə ildə asanlıqla deyə bilərdim ki, funksional böcəklərdən daha çox “ekoloji problem” gördüm. CI serverindəki problemlər, yerləşdirmə skriptləri, test mühitləri və s. Kimi mühit problemləri.

Ətraf mühit məsələləri inkişaf və sınaq səylərinə ciddi təsir göstərir. Bir çox geliştirici və DevOps vaxtı sərf edirlər və yerləşdirmə prosesini kütləvi şəkildə yavaşlatırlar, bununla belə bu məsələlərin sınaqdan keçirilməsinə və bunun qarşısını almağa fikir verilmir.

Bunları yalnız müasir proqram təminatının bir hissəsi kimi qəbul edirik.

Funksional davranışı avtomatlaşdırmaq üçün çox səy sərf edirik və ən vacib olan 'şeyləri' tamamilə nəzərə almırıq. Yerləşdirmələrin işlək vəziyyətdə olub olmadığını göstərmək üçün Selenium testlərinə etibar etmək daha da pisdir!

İtkin açar ssenarilər

Ssenarilər kraldır! Axı, səhvləri ortaya qoyan ssenarilərdir.

Çox vaxt ciddi bir məsələ istehsalata sızır, çünki heç kim bu ssenari barədə düşünmürdü. İcra olunan avtomatlaşdırılmış testlərin sayı vacib deyil. Bir ssenari düşünülməyibsə və ya sınaqdan keçirilməyibsə, soda qanunları orada bir səhv olduğunu söyləyir.

Təəssüf ki, çox çevik inkişaf mühitində bu vacib “Ssenari Çalıştayı” fəaliyyətinə kifayət qədər fədakarlıq verilmir.



Proses ilə bağlı problemlər

Yuxarıdakı problemlərin tipik bir inkişaf ssenarisində özünü necə göstərdiyini görək:

  • Məhsul sahibi, istifadəçi hekayələrini ya yox, ya da minimum qəbul meyarları ilə yazır.
  • Bir istifadəçi hekayəsi üçün müxtəlif ssenariləri müzakirə etmək üçün hekayə dəqiqləşdirmə sessiyalarına ayrılan kifayət qədər vaxt yoxdur.
  • Qəbul meyarları qəbul testləri kimi yozulur - Bəli, ikisi arasında bir fərq var !
  • Testçilər yalnız istifadəçi hekayələrində qəbul meyarlarını əsasən Selenium və / və ya Xiyar istifadə edərək avtomatlaşdırır.
  • Avtomatik test demək olar ki, həmişə “avtomatlaşdırma testçiləri” nin məsuliyyətidir.
  • Geliştiricilər test paketlərində nəyin əhatə olunduğunu bilmir və ya hətta avtomatik testlərin necə aparılacağını bilmirlər.
  • Avtomatlaşdırılmış testlər getdikcə genişlənən 'regresiya paketinə' əlavə olunur, buna görə hər dəfə daha uzun və daha uzun çəkir.
  • UI avtomatlaşdırılmış funksional testlər boru kəmərinə inteqrasiya olunur, bu yaxşıdır, lakin ...

Bir inkişaf etdirici sadə bir dəyişikliyə təkan verir və yeni xüsusiyyət və ya səhv düzəltməsinin istehsala yerləşdirilməsindən əvvəl avtomatik testlərin yaşıllaşmasını 30 dəqiqə gözləməli olur. 30 dəqiqə gözləmək yalnız testlər ilk dəfə keçərsə. Bəzi test və ya ətraf mühit problemləri səbəbindən uğursuz olarsa, daha uzun çəkə bilər.

Avtomatlaşdırılmış testlər davam etdiyindən və QA təsadüfi nasazlıqları araşdırdığından, geliştirici və / və ya məhsul sahibi yeni tətbiqetməni təsdiqlədi və sərbəst buraxmaqdan məmnunluq duyur, lakin istehsal yaşıl olmadığı üçün edə bilmirlər.

Bir müddət sonra ya tikinti yaşıllaşır, ya da rəhbərlik uğursuz testlərdən məyus olur və hər halda sərbəst buraxılmasına qərar verir. Sonra BOOM, istehsaldan bir neçə dəqiqə sonra 500 server səhvində sıçrayış var.

İnfrastruktur Arızaları

Uğursuzluqlar bənzər bir nümunə göstərir

  • İnteqrasiya nöqtələrində uğursuzluq.
  • Üçüncü tərəf tətbiqləri ilə əlaqə qurulmaması.
  • Veb xidmətləri 'yuxarı' deyil və API son nöqtələrinə edilən müraciətlər uğursuz olur.
  • VM-lərdən və ya qovşaqlardan birində səhv bir konfiqurasiya, beləliklə aralıq problemlərlə nəticələnir.

Yenə də bu məsələlərin inkişaf və ya çatdırılma prosesinin bir hissəsi olaraq yoxlanılması üçün bir müddət yoxdur.

Test avtomatlaşdırma mühəndislərinin diqqət mərkəzində olan funksional testləri avtomatlaşdırmaqdır. Performans, təhlükəsizlik və dayanıqlığa diqqət yoxdur. Əlbəttə ki, infrastrukturun heç bir sınağı yoxdur!



Xülasə

Diqqətimizi funksional problemləri tutma ehtimalı az olan funksional testlərin avtomatlaşdırılmasından inkişafa səbəb olan daha ciddi və ümumi ətraf mühit məsələlərinə yönəltməyə vaxt gəldi.

Test avtomatlaşdırması, səhv edilmişsə və ya düşünmə prosesi olmadan , vaxt itkisidir və heç kimə dəyər vermir. Crappy avtomatlaşdırılmış testlər böyük texniki xidmət xərclərinə səbəb ola bilər və inkişafa mane ola bilər. Sonda, yeganə həll yolu testləri qablaşdırmaqdır.

Müasir proqram inkişafında, 'Test Avtomatlaşdırma Mühəndisləri' nin səylərinin çoxu avtomatlaşdırma kodu ilə mübarizə aparmaq və sistemin düzgün test edilməsinə və araşdırılmasına yönəldilməkdənsə, 'testlərin' işə yaramasına sərf olunur.

Avtomatlaşdırma kodu yazmaq üçün sanki kifayət qədər vaxt yoxdur kəşfiyyat testi aparın. Hekayədən sonra hekayəni avtomatlaşdırırıq və inteqrasiya sınaqlarını unuduruq, böyük mənzərəni unuduruq.

Tez-tez tonlarla avtomatlaşdırılmış testi icra edirik, lakin kəşfiyyat testi səhvlərin əksəriyyətini tapır. Sonra retrospektiv olaraq kəşfiyyat testi ilə tapılan böcəklər üçün regresiya böcəklərini tutmaq üçün avtomatlaşdırılmış bir test yazırıq.

Qərarımızı riskə əsaslanaraq avtomatlaşdırmaq və mühakimə etmək üçün seçim etməliyik. Nə səhv ola bilər, səhv olma ehtimalı nədir və səhv çıxsa istifadəçi və ya iş təsiri necə olacaq?

'Test Otomasyonu' ilə məşğul olsanız, API və ya UI komponentlərinin funksionallığını yoxlamaq üçün Selenium istifadə etməyin. Bunun əvəzinə, hər buraxılışdan əvvəl işin davamlılığına inam təmin etmək üçün yalnız bir neçə faydalı və iş üçün vacib olan ssenariləri avtomatlaşdırmaq üçün Selenium'u istifadə edin.

Və nəhayət, hər dəfə bir “testi” avtomatlaşdırmağa sərf etdiyiniz zaman test etmədən sərf etdiyiniz vaxt barədə düşünün!

Əlavə oxu: