Dacă v-ați gândit: „Hmm… cu ce limbaj de programare ar trebui să încep călătoria mea de testare?” – Python este răspunsul tău. Dar nu este doar pentru începători! Într-un sondaj recent pe care l-am făcut pe LinkedIn, putem vedea că, chiar și în rândul programatorilor experimentați, aproape 35% au votat că Python este cel mai favorit limbaj de programare (deși nu prea departe de favoritul din toate timpurile, Java, care s-a clasat pe locul 2 cu 32%).
De-a lungul anilor, Python a luat într-adevăr amploare atât în rândul testerilor, cât și al dezvoltatorilor și este limbajul de programare cu cea mai rapidă creștere (după cum putem vedea în graficul Stack Overflow Trends de mai jos), și știm cu toții ce înseamnă asta… Popularitate = relevanță!
Până la sfârșitul acestui articol, scopul meu este să vă ajut să vedeți cât de puternic este limbajul de programare Python și care cadru de testare Python este cel mai potrivit pentru nevoile proiectului dumneavoastră.
Ce este atât de grozav la Python pentru automatizarea testelor?
Python este un limbaj de programare open-source care a fost lansat pentru prima dată în 1991 cu intenția de a oferi un limbaj de programare intuitiv, simplu, ușor de citit de către om, elegant și mai puțin aglomerat pentru a lucra cu el. Iar când vine vorba de testare, astfel de calități sunt o necesitate, mai ales atunci când avem în echipă testeri manuali (care nu au neapărat abilități de programare) care acum trec la automatizare și se pot bucura de curba de învățare rapidă a lui Python pentru a scrie rapid scripturi.
Există destul de multe motive pentru care popularitatea lui Python a crescut în domeniul automatizării testelor și pentru care este considerat una dintre cele mai bune alegeri pentru automatizarea testelor. Printre aceste motive veți găsi: Zen of Python (19 principii directoare pentru filozofia de proiectare a Python), prietenos pentru începători, dar și puternic pentru experți, este atât orientat pe obiecte, cât și funcțional, are o bibliotecă bogată de pachete pentru testare, o comunitate puternică la nivel mondial și multe altele! Vă recomand să citiți mai multe despre el pe minunatul blog AutomationPanda.
The Right Python Testing Framework For You
Cu creșterea utilizării Python, crește și popularitatea cadrelor de testare bazate pe Python. La început, poate fi puțin confuz să știi pe care să îl alegi din toată bogăția de instrumente existente, deoarece fiecare dintre ele are avantajele și dezavantajele sale. Acestea fiind spuse, fiecare proiect și organizație are cerințe și limitări diferite, astfel că trebuie să le luăm pe toate în considerare atunci când selectăm un instrument care să fie cel mai potrivit pentru noi. Vă recomand să citiți aceste articole excelente despre cum să alegeți instrumentul potrivit pentru dumneavoastră:
- Cum să selectați instrumentul de automatizare a testelor potrivit
- Cum să selectați cel mai bun instrument – Procesul de cercetare
- Criterii pentru selectarea instrumentelor de testare funcțională potrivite
Și, bineînțeles – de ce există listele de argumente pro și contra, dacă nu pentru a ne ajuta să obținem îndrumări suplimentare despre instrumentele noastre preferate, toate într-un singur loc! 😉 Așadar, haideți să ne scufundăm adânc în cele mai bune 8 cadre de testare Python existente și să explorăm atât beneficiile, cât și neajunsurile acestora, astfel încât să vă puteți apropia mult mai mult de selectarea cadrului de testare Python ideal pentru nevoile dumneavoastră.
Poroane și dezavantaje ale celor mai bune 8 cadre de testare Python
- Robot Framework
- Pytest
- TestProject
- PyUnit (Unittest)
- Nose2
- Behave
- Lettuce
- Testify
- Concluzie
.
Robot Framework (RF)
Robot Framework (RF) este un cadru de automatizare a testelor cu sursă deschisă pentru testarea acceptării, dezvoltarea bazată pe teste de acceptare (ATDD) și automatizarea proceselor robotice (RPA). Nucleul său este implementat în Python, dar poate rula și pe Jython (implementare Java a Python) și IronPython (Python pentru cadrul .NET). Pentru a-l rula, va trebui să instalați Python versiunea 2.7.14 sau o versiune mai recentă.
Pros
- Bazat pe abordarea Keyword-driven testing (KDT), permițându-ne astfel să creăm cu ușurință cazuri de testare folosind cuvinte cheie lizibile de către om (nu este nevoie de experiență de codare).
- Suportă toate sistemele de operare (Windows, Linux sau MacOS) și toate aplicațiile (aplicații web, mobile și desktop).
- Furnizează date de raportare HTML clare și ușor de utilizat (inclusiv capturi de ecran).
- Ecosistem bogat cu o mulțime de API-uri, ceea ce îl face un cadru foarte extensibil și permite integrarea cu orice alt instrument de la terțe părți.
- Suport comunitar și resurse online excelente.
Cons
- Testarea paralelă nu este suportată din fabrică, dar poate fi realizată prin Selenium Grid sau prin Pabot (un executor paralel pentru RF).
- Pentru bine și pentru rău te forțează să lucrezi conform unei metodologii predefinite, Curba de învățare inițială ar putea fi un pic mai lungă decât de obicei pentru începători
- Crearea de cuvinte cheie generice ar putea dura mai mult decât simpla scriere a testelor codificate
- Nu este ușor să personalizați rapoartele.
- Nu are o construcție if/else reală, dar există mai multe modalități de a obține același efect (după cum poate fi explorat în documentația lor oficială)
Bottom line: Dacă doriți să implementați o abordare cadru bazată pe cuvinte cheie care să permită testerilor manuali și analiștilor de afaceri să creeze teste de automatizare, RF este soluția pentru dumneavoastră, oferind o varietate de extensii & biblioteci și biblioteci ușor de utilizat. Cu toate acestea, dacă sunteți în căutarea dezvoltării unor scenarii complexe, deoarece va trebui să faceți unele personalizări care nu sunt încorporate în framework.
Pytest
Pytest este un framework de testare open-source care este posibil să fie unul dintre cele mai utilizate framework-uri de testare Python de pe piață. Pytest este suportă testarea unitară, testarea funcțională și, de asemenea, testarea API. Pentru a-l rula aveți nevoie de Python versiunea 3.5 sau mai mare.
Pros
- Permite realizarea unor suite de testare compacte și simple.
- Este foarte extensibil prin utilizarea de plugin-uri, cum ar fi: pytest-randomly, pytest-cov, pytest-django, pytest-bdd.
- De asemenea, puteți adăuga plugin-ul pytest html la proiectul dvs. pentru a imprima rapoarte HTML cu o simplă opțiune de linie de comandă.
- Puteți rula teste în paralel folosind un plugin Pytest: pytest-xdist. Puteți citi mai multe despre acesta și aici.
- Are o comunitate foarte mare.
- Suportă fixtures care vă ajută să acoperiți toate combinațiile de parametri fără a rescrie cazurile de testare și sunt o modalitate excelentă de a gestiona contextul între etape.
Cons
- Compatibilitatea nu este esențială pentru Pytest, deoarece, deși puteți scrie cu ușurință cazuri de test cu Pytest, nu le veți putea folosi în cadrul oricărui alt cadru de testare datorită utilizării rutinelor unice ale Pytest.
TestProject
TestProject este un cadru de automatizare complet 100% GRATUIT cu rapoarte în cloud. Folosind TestProject, poți dezvolta cu ușurință automatizarea testelor pentru mobil, web sau în scopuri generice cu ajutorul SDK-ului open source Python. Suportă Python versiunea 3.6 sau o versiune mai recentă și suportă atât cadrele Pytest, cât și Unittest. TestProject include toate dependențele necesare ca parte a unui singur agent executabil multi-platformă (Puteți viziona înregistrarea acestui webinar pentru a începe).
Pros
- Executabil unic de agent care include toate bibliotecile de la terțe părți necesare pentru a executa și dezvolta automatizarea testelor pentru teste mobile, web și generice.
- GRATUIT Rapoarte automate bazate pe cloud în format HTML/PDF (inclusiv capturi de ecran).
- Istoric de execuție accesibil prin RESTful API.
- Întotdeauna actualizat cu cele mai recente și stabile versiuni de driver Selenium/Appium.
- Un singur SDK pentru teste web, Android, iOS și teste generice.
- Capacități integrate de execuție a testelor și de raportare.
- Suport pentru mai multe platforme: Mac, Windows, Linux și Docker.
- Comunitate mare și suport: forum, blog și chat live încorporat.
Cons
- Agentul poate rula testele câte un test la un moment dat, astfel, pentru testarea paralelă ar trebui să folosiți Docker Agents.
- Rapoartele sunt disponibile doar pe TestProject cloud, pentru a le stoca local va trebui să descărcați un raport PDF sau să folosiți API-ul RESTful.
- Agentul are nevoie de conexiune la internet pentru a rula/executa testele.
Bottom line: Dacă sunteți în căutarea unui singur cadru care să vă acopere toate eforturile de automatizare de la un capăt la altul, atunci TestProject este cu siguranță cel potrivit pentru dumneavoastră și se potrivește perfect pentru echipele cu seturi mixte de abilități, de la începători la experți experimentați în automatizare.
PyUnit (Unittest)
PyUnit (Unittest) este un cadru de testare unitară pentru Python care a fost inspirat de JUnit. Este cadrul de testare Python implicit care vine din cutie cu pachetul Python și, prin urmare, este cel cu care majoritatea dezvoltatorilor își încep testarea.
Pros
- Din moment ce face parte din biblioteca standard Python, nu este necesară instalarea unor module suplimentare – vine din cutie cu pachetul Python.
- Oferă o execuție simplă și flexibilă a cazurilor de testare.
- Generarea rapidă de rapoarte de testare, atât rapoarte XML cât și unittest-sml-reporting.
Cons
- Intenția codului de testare devine uneori neclară, deoarece suportă abstractizarea.
- Este necesară o cantitate uriașă de cod boilerplate.
- Din moment ce se bazează pe Junit, se folosește metoda de denumire camelCase, în loc de convenția de denumire Python’snake_case.
Nose2
Nose2 este un succesor al Nose și este practic PyUnit (Unittest), dar cu plugin-uri. Nose2 extinde PyUnit dincolo de funcționalitatea sa cu diverse plugin-uri care adaugă suport pentru execuția testelor, descoperirea testelor, decoratori, fixtures, parametrizarea etc.
Pros
- Este ușor de început, deoarece extinde cadrul PyUnit (Unittest) care vine la pachet cu biblioteca Python.
- Include un număr mare de plugin-uri încorporate care vă pot face testarea mai rapidă și mai ușoară.
- Permite testarea paralelă folosind pluginul mp.
- Colectează testele în mod automat, atâta timp cât urmați câteva linii directoare simple pentru organizarea bibliotecii și a codului de testare.
Cons
- Lipsă de documentație extinsă care vă poate reține dacă sunteți la început.
- Nu este atât de activ întreținut spre deosebire de alte framework-uri.
Bottom line: Dacă utilizați deja PyUnit, ați putea la fel de bine să dați o șansă lui Nose2 și să explorați modul în care extinde PyUnit.
Behave
Behave este unul dintre cele mai populare cadre de testare Python BDD (behavior-driven development). Deși nu face parte oficial din proiectul Cucumber, funcționează foarte asemănător cu cadrele Cucumber.
Pros
- Permite scrierea de cazuri de testare într-un limbaj lizibil, ceea ce duce la o colaborare ușoară între echipe cu caracteristici similare.
- Este disponibilă o cantitate mare de documentație și suport pentru a ajuta la inițiere.
- Suportă în totalitate limbajul Gherkin – astfel, crearea de fișiere de caracteristici nu necesită cunoștințe tehnice.
- Are integrări Django și Flask.
Cons
- Nu există suport pentru execuție paralelă.
- Doar pentru testarea cutiei negre.
Bottom line: Dacă echipa dvs. urmează o abordare BDD, dacă aveți cunoștințe anterioare de BDD (cum ar fi Cucumber, SpecFlow, etc.) și căutați testarea cutiei negre – ar trebui să verificați cu siguranță Behave. De asemenea, ar trebui să explorați și alte cadre BDD Python, cum ar fi: Pytest-bdd, Lettuce (care va fi descris mai jos), Radish și multe altele în acest articol de comparare a cadrelor de testare Python BDD. Dacă aveți nevoie de mai mult decât testarea cutiei negre, atunci ar trebui să căutați în altă parte.
Lettuce
Lettuce este un alt cadru BDD Python și se bazează pe Cucumber. Necesită Python 2.7.14 sau o versiune mai recentă.
Pros
- Suportă limbajul Gherkin, permițând astfel chiar și membrilor non-tehnici ai echipei să creeze cu ușurință teste folosind un limbaj natural.
- Similar cu Behave, este folosit în principal pentru testarea black-box, dar poate fi folosit pentru mai multe tipuri de testare. De exemplu, Lettuce poate testa diverse comportamente și interacțiuni ale serverului și ale bazei de date.
Cons
- Lipsesc unele dintre bogățiile funcționale ale altor framework-uri, astfel încât este mai potrivit pentru proiecte mici.
- Suportul și documentația sa nu par a fi întreținute.
- Este nevoie de o comunicare dedicată între toate părțile interesate din proiect: dev, QA și manageri pentru a se asigura că implementarea este de succes.
Bottom line: Dacă aveți un proiect BDD mic, Lettuce este o opțiune excelentă pentru crearea ușoară și în limbaj natural a testelor între toți membrii echipei.
Testify
Testify este conceput pentru a înlocui cadrele comune Unittest și Nose și are caracteristici avansate față de Unittest standard.
Pros
- Utilizat pentru testarea unitară, testarea de integrare și testarea sistemului.
- Pentru cei care sunt familiarizați cu Unittest, Testify este foarte ușor de inițiat.
- Are plugin-uri extinse.
- Similar cu Nose2, Testify permite descoperirea testelor.
- Simplă sintaxă pentru metoda fixture.
Cons
- Fără documentație extinsă, astfel că începătorii ar putea fi nevoiți să investească în găsirea resurselor relevante.
- Testarea paralelă nu este ușor de realizat.
Bottom line: Dacă aveți experiență anterioară cu Unittest, vă va fi destul de ușor să vă ajustați testele existente pentru a funcționa cu Testify, așa că merită cu siguranță să îl verificați.
Concluzie
Am ajuns la finalul acestei liste de comparație a cadrelor de testare python, iar acum este timpul să îl alegeți pe cel care se potrivește cel mai bine cerințelor dumneavoastră.
Sunteți în căutarea unei abordări mai mult de tip BDD? Este vorba de testarea unitară pe care doriți să o realizați sau mai mult de testarea funcțională? Echipa dvs. are experiență tehnică sau de codare, sau este formată în cea mai mare parte din începători? Aceste întrebări și multe altele sunt cele pe care trebuie să le luați în considerare atunci când încercați să luați o decizie. Fiecare dintre cadrele de mai sus are avantajele sale, precum și dezavantajele sale, și nu există un lucru bun sau rău, ci mai degrabă potrivit. Potrivit pentru propriile nevoi și cerințe ale produsului dumneavoastră.
Sper că acest articol a reușit să vă ajute nu numai să înțelegeți cât de grozav este Python pentru testarea automată, ci și să vă ajute în călătoria dumneavoastră spre testarea ușoară a Python!
.