Sunteți pe pagina 1din 15

ITF TESTARE AUTOMATA – GRUPA

22
DINICĂ ROXANA DANIELA
11.03.2023
PARTEA I

➢ Ce sunt variabilele ?
- O variabila este o adresa de memorie care stocheaza o valoare reprezentata de un tip de data . Incep cu
litera mica si nu au voie sa contina cuvinte cheie din Python, sa contina spatii , sa inceapa cu cifre sau semnul
underscore_ si sunt case sensitive
- Ex: varsta = 49 #varstei i-am atribuit valoarea 49

➢ Dar constantele?
- In Python nu putem declara efectiv constante. Pur si simplu declaram variabile pe care apoi tinem minte
sa nu le modificam. Ca sa ne dam seama usor cine ar trebui sa fie constanta si cine nu, vom folosi drept conventie
denumirea constantelor in totalitate cu litere mari (de exemplu nu vom denumi o constanta abc sau Abc, ci ABC)
- Ex: PI – dearece valoarea lui PI ramane constanta

➢ Tipurile de date și un exemplu din fiecare


- Cele mai cunoscute tipuri de date sunt:
int – numar intreg (pozitive sau negative) #an_nastere = 2002
float – numer zecimal (pozitive sau negative) #pret=3.45
string – sir de caractere # text = “Vara asta merg la mare”
bool – adevarat / fals (True/False sau 0/1) # major = True
➢ Cum se folosește condiționalul if else
- if-else e o declarație condițională care execută un bloc de cod când o anumită condiție a fost îndeplinită
- Pentru a crea o declarație Python if else începem prin a scrie cuvântul „if”, apoi îi dăm o condiție, iar dacă
acea condiție e adevărată, trece la următoarea linie și rulează acel cod.
- Dar dacă vrem să facem altceva când condiția nu e îndeplinită,atunci intervine „else”, unde vom rula o altă
bucată de cod. Dar dacă nu această condiție nu e îndeplinită, punem o altă condiție unde e indentarea, și vom rula acel
cod în schimb.

➢ Structurile de date și caracteristicile fiecăruia


- Listele : In Python, putem pastra diferite tipuri de date in aceeasi lista si pot exista elemente duplicate. Fiecare
element din lista, are index, incepand de la 0 (ca si string-ul). Lista este ordonata, cand adaugam un element nou, acesta se va
pune la final. Exista si varianta de inserare in lista pe o anumita pozitie. Lista este mutabila, adica putem adauga, sterge sau
schimba elemente din ea. In lista putem pune valori duplicate.
- Tuple : reprezinta un tip de structuri de date ordonata si neschimbabila. In cadrul ei pot exista elemente
duplicate. Valorile sunt imutabile, odata definite, asa raman. Nu se mai pot adauga/sterge valori.
- Dictionarele: sunt ordonate si mutabile, deci valorile pot fi schimbate. Dictionarele pastreaza date de tip
“cheie : valoare”. Cheile sunt unice, nu putem avea chei duplicate.
- Set-ul : reprezinta un tip de structuri de date neordonata si neindexata. In cadrul ei nu pot exista elemente
duplicate si nu putem schimba locatia elementelor. Se pot doar adauga sau sterge elemente.
➢ Explicați ce este o funcție și ce este un parametru
Functia:
- O zona de cod cu o mica logica proprie, care poate fi folosita/refolosita (apelata) de oricate ori avem
nevoie.
- Asta e si utilitatea ei principala, ajuta sa eliminam copy paste

Parametru:
- O functie poate sa aiba oricati parametri, acesti parametrii sunt optionali
- Parametrii sunt niste variabile declarate. dar neinitializate . Ele vor fi initializate (adica vor primi valori),
la apelarea functiei

➢ Explicati diferenta dintre o clasă și un obiect


Programarea orientată pe obiecte permite gruparea datelor și funcțiilor care operează asupra lor într-o singură
structură. Noțiunea centrală în programarea orientată pe obiecte este cea de clasă. O clasă este un domeniu în interiorul
căruia se definesc o serie de atribute (metode și variabile). Obiectele construite de o clasă poartă numele de instanțe ale
clasei.

- O clasa este o reteta pentru crearea obiectelor. Contine actiuni posibile: metode (practic niste functii)
- Un obiect este o instanta a clasei , Self - este o modalitate de a accesa atributele definite in clasa in interiorul
acelei clase clasei
- O clasă („class”) este precum un „framework” pentru crearea obiectelor. Python e un limbaj de programare
orientat pe obiect, așa că se bazează foarte mult pe obiecte
- Constructor se asigura ca la crearea obiectelor se dau niste date fara de care obiectul nu are sens sa existe
➢ La ce ne ajută un selector? Cate tipuri cunoști?

- Un localizator permite testerilor să selecteze un element DOM HTML pe care să acţioneze. In Selenium
WebDriver avem mai multe tipuri de selectori:

ID
Name
Class name
CSS Selector
XPath
Link text
Partial link text
Tag name

- În timp ce toți acești localizatori returnează elemente individuale, se poate folosi metoda .find_elements()
pentru a găsi mai multe elemente.
➢ Ce este TDD, care sunt avantajele și ce este testarea unitară?

TDD = test driven development


- Metodologie care plaseaza o importanta majora pe testare. La TDD, începem cu teste care apoi merg prost
pentru că le rulăm înainte de dezvoltare. Pentru a trece testul, echipa de dezvoltare trebuie să dezvolte codul și să-l
extindă continuu.

Avantaje:

Unitatea sau modul de testare arată că codul funcționează într-adevăr.


Testul controlează proiectarea programului.
Cercetarea cerburilor face posibilă îmbunătățirea designului.
Testarea prin regresie cu toate acestea, rămân mici ca dimensiune.
De asemenea, evităm costurile unui număr mare de bug-uri.

Testarea unitara reprezinta testarea la cel mai low level, practic este o functie care testeaza o alta functie.
- Functia de test apeleaza functia testata si se asigura ca ea returneaza datele corecte, folosind un assert.
- De obicei aceasta testare este facuta de devloperi dar si un tester o poate face, depinzand de raportul de
forte dev-qa. In companiile cu mai multi angajati qa aceasta sarcina poate fi trecuta in responsabilitatea lor.
➢ Ce este BDD, care sunt avantajele? Ce este sintaxa gherkin și la ce ne ajută?

BDD = behavior driven development


- Este o metodologie derivata din TDD (test driven development)
- Se incepe cu scrierea scenariilor de business pentru testare si se continua cu testele. Se ruleaza testele
care vor pica. Se scrie codul aplicatiei. Se ruleaza testele din nou care vor trece acum.
- In BDD scriem testele in plain english, cu ajutorul sintaxei gherkin.

Gherkin syntax:
- Folosita mai ales in metodologia BDD (behavior driven development)
- Cuvinte cheie: Given, When, Then, And
- Cu ajutorul lor descriem comportamentului unui utilizator in aplicatia testata

Avantaje:

Toate persoanele interesate (Clienti, Manageri, BAs, Developeri, Testeri etc) vor intelege usor rapoartele generate.
Acestea reprezinta ‘living documentation’ pt. Proiect.
Focusul se muta pe functionalitatile care trebuie testate.
Stim sigur ca avem timp de teste si ca acestea nu se vor ignora deoarece avem un ‘test first approach’
De cele mai multe ori un product owner genereaza user stories care contine acceptance criteria sub forma
given, when, then. Noi trebuie doar sa le automatizam 1:1
➢ Ce este un API și care este rolul lui?

API - application programming interface (‘Interfața de programare a aplicațiilor’)


- Un API este un set de functionalitati si componente construit pentru a asigura comunicarea intre sisteme.
- Un „API” este un intermediar care se află între două aplicații și le permite să comunice folosind reguli
predefinite. În practică, API-urile sunt de obicei utilizate pentru a permite aplicațiilor din partea clientului să acceseze o
bază de date protejată altfel.
-La un nivel ridicat, API-urile stabilesc pur și simplu comunicarea între două aplicații. Nu pot comunica direct,
deoarece nu au acces unul la celălalt cod, așa că trebuie să ruleze un cablu între ei și să trimită semnale pe linie. API-ul
definește modul în care trebuie trimise aceste semnale. Aproape fiecare aplicație care rulează pe computerul dvs.
folosește unele API-uri pentru a vorbi cu alte mii de lucruri.

În practică, termenul „API” este utilizat în mod obișnuit pentru a se referi la API-urile web care formează legătura dintre
server și client sau între server și un serviciu de backend. Aceste API-uri acționează ca punct de acces pentru orice
serviciu din spatele lor.
-API-urile sunt destul de standardizate. Aproape întotdeauna vor fi accesibile prin HTTP și vor returna de
obicei date JSON, ceea ce înseamnă că orice limbaj de programare care poate face cereri HTTP și decodifica JSON poate
vorbi cu un API și poate obține date de pe acesta.
➢ Care sunt principalele metode HTTP? O propoziție explicativă pentru fiecare

Metodele HTTP :

GET: este cea mai folosită metodă, fiind utilizată atunci când serverului i se cere o resursă.
HEAD: se comportă exact ca metoda GET, dar serverul returnează doar antetul resursei, ceea ce permite clientului să
inspecteze antetul resursei, fără a fi nevoit să obțină și corpul resursei.
PUT: metoda este folosită pentru a depune documente pe server, folosita pentru actualizarea documentelor prin
inlocuirea completa a acestora.
POST: a fost proiectată pentru a trimite date de intrare către server pentru a crea noi documente.
PATCH - updatam date prin updatarea anumitor atribute ale obiectului (ex: din user doar prenumele)
DELETE: este o metoda prin care se sterg date de pe server.
PARTEA II
Linkul de github unde se găsește proiectul:
https://github.com/roxanadinica99/ITFactoryExam.git
Proiectul se poate clona cu comanda : git clone https://github.com/roxanadinica99/ITFactoryExam

In proiectul meu final voi construi o solutie de baza de automatizare a testării interfeței de utilizare web pentru o căutare
de bază pe siteul https://www.ask.com. (Ask este un motor de căutare)
Voi face o testare UI in Python, versiunea 3.10 , folosind Pytest si Selenium WebDriver . Utilizez browser-ul Chrome .
Am preferat sa lucrez cu editorul PyCharm.
Se poate folosi orice sistem de operare: Windows, macOS, Linux etc. Eu am Windows-ul instalat ca si sistem de operare.
E necesar Python 3.8 sau o versiune superioară. Eu am instalat Python 3.10

Pentru Setup si environoment vom instala:


pip install pipenv
pipenv install
pipenv install selenium (sau pip install -U selenium - pt update la zi)
pipenv install webdriver-manager
pipenv install pytest

pipenv install behave (o librarie bdd care va interpreta si rula testele scrise in gherkin)
pipenv install behave-html-formatter (ne ajuta sa generam rapoarte bdd)
pipenv install pytest-html (pentru a genera rapoarte html )
Voi realiza testul de cautare pe web. Voi accesa pagina principală Ask. Primul meu pas va fi să încarc această pagină.Apoi, voi introduce
expresia mea de căutare “german shepherd” în bara de căutare. Odată ce căutarea este finalizată, pagina cu rezultate va fi încărcată. Verific
ca numele “german shepherd” sa fie in bara de afisare, in bara de cautare si in rezultate.

A fost nevoie sa importa cateva librarii gratuite care sa ma ajuta sa controlez Chrome:

from time import sleep


from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

Am ales sa folosesc metodologia BDD .


Voi crea un nou proiect in PyCharm pe care il denumesc pythonProjectExam. Am creat un test in Selenium utilizand fisier de tip
python; iar apoi am scris instructiunile de cod pentru a crea testul automat
Scenario: Basic Ask Search Given the Ask’s home page is displayed
When the user searches for “german shepherd "
Then the search result title contains “german shepherd "
And the search result query is “german shepherd "
And the search result links pertain to “german shepherd "
Deoarece am pașii de testare, știu de ce pagini și elemente
are nevoie testul meu. Există o pagina în curs de testare,
cu câteva interacțiuni:

The Ask search page


Load the page

The Ask results page


Get the result link titles
Get the search query
Get the title
Rularea testelor se face cu:
- Click dreapta si run with debug pentru a ne asigura ca fiecare linie executa comanda corect si fara erori
VA MULTUMESC!

S-ar putea să vă placă și