Sobes.tech
Junior

Ce este testarea non funcțională?

sobes.tech AI

Răspuns de la AI

Testarea nefuncțională este un tip de testare software orientată spre verificarea cerințelor nefuncționale. Ea evaluează caracteristicile sistemului care nu sunt direct legate de funcții specifice, ci mai degrabă de modul în care sistemul funcționează.

Obiectivele principale ale testării nefuncționale:

  • Asigurarea că sistemul corespunde așteptărilor utilizatorilor și ale afacerii în ceea ce privește performanța, fiabilitatea, ușurința în utilizare și alte aspecte.
  • Identificarea problemelor care pot afecta stabilitatea, scalabilitatea și securitatea sistemului.
  • Confirmarea conformității sistemului cu standardele și cerințele stabilite.

Tipuri de testare nefuncțională:

Tip de testare Descriere scurtă Exemple de caracteristici verificate
Testarea performanței Evaluarea vitezei, receptivității, stabilității și scalabilității sistemului sub sarcină. Timp de răspuns, capacitate de throughput, utilizarea CPU/memorie.
Testarea de încărcare Comportamentul sistemului sub încărcare de vârf așteptată. Numărul de utilizatori simultani, tranzacții pe secundă.
Testarea de stres Comportamentul sistemului la depășirea încărcării de vârf așteptate sau lipsa resurselor. Punctul de eșec al sistemului, comportament în condiții de suprasarcină.
Testarea de stabilitate (Endurance Testing) Capacitatea sistemului de a funcționa continuu pentru perioade lungi de timp sub sarcină. Scurgeri de memorie, degradarea performanței în timp.
Testarea de securitate Protecția sistemului împotriva amenințărilor externe și interne, acces neautorizat. Protecție împotriva injecțiilor SQL, atacuri XSS, autentificare, autorizare.
Testarea de uzabilitate (Usability Testing) Determinarea cât de ușor și intuitiv este pentru utilizatori să folosească sistemul. Interfață clară, navigare ușoară, accesibilitate.
Testarea de compatibilitate Funcționarea sistemului în diferite medii (browsere, OS, dispozitive). Suport pentru diferite versiuni de browsere, OS.
Testarea de fiabilitate (Reliability Testing) Evaluarea capacității sistemului de a-și îndeplini funcțiile fără erori pe o perioadă de timp specificată. Timp mediu între defecțiuni (MTBF), probabilitatea de eșec.
Testarea de accesibilitate (Accessibility Testing) Verificarea ușurinței de utilizare a sistemului pentru persoanele cu dizabilități. Conformitatea cu standardele WCAG.
Testarea de localizare/internaționalizare Verificarea adaptării sistemului la diferite limbi și setări regionale. Șiruri traduse, formate de date/numere.

Testarea nefuncțională se realizează de obicei în etapele mai timpurii ale ciclului de viață al dezvoltării software, dar planificarea sa începe cu formularea cerințelor. Poate fi parte a proceselor automatizate, în special pentru testarea performanței și securității.

Instrumente pentru testarea nefuncțională:

  • Performanță: JMeter, LoadRunner, Gatling, k6.
  • Securitate: OWASP ZAP, Burp Suite, Acunetix.
  • Compatibilitate: BrowserStack, Sauce Labs.
  • Ușurință în utilizare: UserTesting.com, instrumente de urmărire a privirii.

Un exemplu de automatizare a unei părți din testarea nefuncțională poate fi un script pentru verificarea timpului de încărcare a paginii:

import time
import requests

def measure_page_load_time(url):
    """
    Măsoară timpul de încărcare al URL-ului specificat.
    """
    start_time = time.time()
    try:
        response = requests.get(url)
        response.raise_for_status()  # Apelează HTTPError pentru răspunsuri proaste (4xx sau 5xx)
        end_time = time.time()
        load_time = end_time - start_time
        print(f"Timpul de încărcare pentru {url}: {load_time:.2f} secunde")
        return load_time
    except requests.exceptions.RequestException as e:
        print(f"Eroare la încărcarea {url}: {e}")
        return None

# Exemplu de utilizare
url_to_test = "https://www.example.com"
measure_page_load_time(url_to_test)

Rezultatele testării nefuncționale sunt adesea prezentate sub formă de rapoarte, grafice și metrici, care permit evaluarea caracteristicilor sistemului și luarea deciziilor privind îmbunătățirile necesare.