Come misuriamo la qualità del software
Prima di poter fornire un prodotto software, dobbiamo misurarne la qualità per assicurarci che sia il più privo di bug possibile. Tuttavia, per fare questo, dobbiamo prima sapere quali metriche di qualità del software stiamo misurando contro.
Quali sono le metriche per misurare la qualità del software?
Le metriche per misurare la qualità del software possono essere estremamente tecniche, ma possono essere riassunte nelle seguenti quattro categorie essenziali:
- Qualità del codice
- Prestazioni
- Sicurezza
- Usabilità
Qualità del codice
Il codice privo di bug e semanticamente corretto è molto importante per il software premium. Gli standard di qualità del codice possono essere suddivisi in metriche quantitative e qualitative. Le metriche di qualità quantitativa misurano quanto è grande o complesso il programma software, il numero di linee e funzioni che contiene, quanti bug ci sono per 1.000 righe di codice e altro ancora. Le metriche qualitative di qualità del codice misurano funzionalità come manutenibilità, leggibilità, chiarezza, efficienza e documentazione. Queste metriche misurano quanto sia facile leggere, capire e se il codice è scritto secondo gli standard di codifica.
Prestazioni
Ogni programma software è costruito per uno scopo. Le metriche delle prestazioni misurano se il prodotto soddisfa il suo scopo e se esegue il modo in cui è destinato. Si riferisce anche al modo in cui l’applicazione utilizza le risorse, alla sua scalabilità, alla soddisfazione del cliente e ai tempi di risposta.
Sicurezza
Le metriche di sicurezza del software misurano la sicurezza intrinseca di un programma software e assicurano che non vi siano modifiche non autorizzate nel prodotto quando viene consegnato al cliente.
Usabilità
Poiché tutti i prodotti software sono costruiti per un utente finale, una metrica di qualità importante è se il programma è praticabile e facile da usare. Ci assicuriamo inoltre che il cliente sia soddisfatto delle caratteristiche e delle prestazioni.
Quando misuriamo la qualità del software?
Il nostro team di sviluppo software e il team di garanzia della qualità (QA) lavorano insieme per garantire che la qualità del software sia di altissimo livello. Il team QA fa test di prodotto, una volta sviluppato. Tuttavia, il team di sviluppo mantiene, misura e migliora costantemente la qualità del software durante la compilazione. Tuttavia, mentre manteniamo la qualità del software in ogni fase dello sviluppo, possiamo testarli in diversi punti dello sviluppo, in base alla metodologia di sviluppo utilizzata. Utilizziamo due metodologie per lo sviluppo di applicazioni software: Waterfall e Agile. Poiché le due metodologie forniscono il prodotto in modi diversi, vengono testate in modo diverso.
Qualità del software di misurazione: Metodologia della cascata
La metodologia della cascata è quando pianifichiamo, eseguiamo, testiamo e consegniamo in fasi distinte. Ogni fase è completata prima che inizi la prossima. Di conseguenza, con un prodotto sviluppato utilizzando questa metodologia, dobbiamo mantenere la qualità del prodotto in ogni fase – requisiti, progettazione, implementazione, verifica (o test) e manutenzione. Poiché il test viene eseguito alla fine della build, richiede meno tempo e non richiede molti test di regressione.
Qualità del software di misurazione: Agile
Le metodologie Agile sono più reattive e flessibili, dove lo sviluppo è suddiviso in fasi o sprint. L’obiettivo è che alla fine di ogni sprint, che può essere tra due a sei settimane, forniamo un prodotto minimo vitale di alta qualità che è completamente funzionale e testato. Ciò significa che dobbiamo assicurarci di mantenere la qualità del software del prodotto ad ogni passo, in ogni sprint. I prodotti sviluppati utilizzando le metodologie Agile vengono testati più spesso. Tuttavia, significa anche che hanno bisogno di test di regressione costante per garantire che un aggiornamento non abbia interrotto le funzionalità testate e passate nelle build precedenti.
In che modo gli sviluppatori mantengono la qualità del codice software?
Un buon sviluppatore è colui che può fornire codice software di alta qualità con bug minimi. Diciamo ‘minimal’ perché, durante lo sviluppo, alcuni bug sono inevitabili e ciò che conta è come risolverli o controllarli. Questo è il motivo per cui gli sviluppatori misurano la qualità del codice mentre si sviluppano, poiché significa che possono identificare e risolvere eventuali problemi durante la compilazione. Misurano il loro codice contro gli standard di codifica, le revisioni del codice, gli analizzatori di codice e il codice legacy del rifrattore.
In questa fase, la qualità del software viene testata manualmente con brevi test unitari. Un test unitario è la prima fase della misurazione della qualità del software, in cui viene controllata la più piccola parte testabile del software – un modulo o un componente del programma o anche una singola funzione all’interno del codice.
Ad esempio, potrebbe esserci un numero di campi dati che devono essere completati come parte di un software più grande. Un test unitario potrebbe semplicemente testare il primo campo e non gli altri, o addirittura qualsiasi altra parte del programma software.
Gli sviluppatori creano una libreria condivisa di centinaia di tali test, con funzionalità ripetibili incorporate nel software, in modo che questi test possano essere utilizzati più e più volte, attraverso i progetti per rilevare in modo efficiente gli errori nel codice del software in fase di sviluppo. Inoltre conducono i test automatici utilizzando un analizzatore di codice, SonarQube, che controlla il software per:
- Chiarezza
- Manutenzione
- Documentazione
- Estensibilità
- Efficienza
- collaudato
- Secure coding
- refactoring del Codice
- Estensibilità
ci aiuta:
- codice di Condotta recensioni
- Mantenere gli standard di codifica
- Identificare i bug e il numero di potenziali bug nel software
Abbiamo anche utilizzato per valutare:
- La complessità strutturale del programma (numero di linee di codice)
- tutte le vulnerabilità rilevate nel repository
- Codice odori (codice, che è fonte di confusione o difficile da mantenere)
- Codice di copertura (misura di codice coperto da unit test)
- duplicazione del Codice (quantità di codice che si ripete)
Come Funziona il Team di QA di Misurare la Qualità del Software?
I tester QA esaminano tutte le metriche della qualità del software attraverso test manuali e automatizzati (utilizzando Selenium), inclusa la validità e lo standard del codice prodotto. Le metriche di test manuali possono essere suddivise in due classi: metriche di base e metriche calcolate. Le metriche di base sono costituite dai dati grezzi e non analizzati raccolti, mentre le metriche calcolate derivano dalle informazioni raccolte nelle metriche di base.
Metriche di test manuali
Alcune delle metriche di test manuali importanti che consideriamo per la qualità del software sono:
- Esecuzione test case metriche di produttività
- Preparazione test case metriche di produttività
- Durata test
- Copertura unit test (la quantità di codice software che è coperto da unit test)
- Pass/fail percentuale di test, ecc.
Metriche di test di automazione
I test di automazione possono aiutare a ridurre la quantità di tempo manuale impiegato per testare la qualità del software. Ecco alcune delle metriche importanti per i test di automazione che consideriamo:
- Totale durata del test
- copertura di Unit test
- Percorso copertura (come molti linearmente indipendenti percorsi del programma la prova riguarda)
- Requisiti di copertura
- Pass/fail percentuale di test
- Numero di difetti
- Percentuale di copertura di test automatizzati (contro la totale copertura dei test che include il manuale di test)
- esecuzione del Test (totale prove eseguite durante la compilazione)
- Utile vs risultati irrilevanti
- Difetti di produzione
- Percentuale di compilazioni, etc.
Altri tipi di test per misurare la qualità del software
Utilizziamo anche vari tipi di test per misurare la qualità del software. Questi sono:
- Test funzionali
- Test per rompere
- Test delle prestazioni di carico
- Test di regressione
- Test di sicurezza
- Test di penetrazione
- Test di accettazione utente