Test di percorso e test di base del percorso nel software con esempi

⚡ Riepilogo intelligente

Il Basis Path Testing è una tecnica white box che deriva i casi di test dai percorsi logici all'interno di un programma, utilizzando un grafo di flusso di controllo e la complessità ciclomica per trovare l'insieme minimo di percorsi indipendenti.

  • Idea centrale: I casi di test derivano dalla struttura del codice piuttosto che dal documento dei requisiti.
  • 🔢 Quattro passaggi: Disegna il grafo del flusso di controllo, calcola la complessità ciclomica, deriva il set di base, scrivi un test per ogni percorso.
  • 📐 Numero di casi di test: Il numero di percorsi indipendenti è pari alla complessità ciclomica, fornendo un obiettivo oggettivo.
  • 🔄 Metodo ibrido: Combina il test di diramazione e il test di percorso per raggiungere la massima copertura con il minor numero di test.
  • Garanzia di copertura: L'esecuzione del set di base esegue ogni istruzione del modulo almeno una volta.
  • ⚠️ Limite noto: Non è in grado di individuare i requisiti mancanti, perché verifica solo il codice già esistente.

Test del percorso Test del percorso di base

Cos'è il Path Testing nel test del software?

Il path testing è un metodo di test strutturale che prevede l'utilizzo del codice sorgente di un programma per trovare ogni possibile percorso eseguibile. Aiuta a determinare tutti i difetti che si trovano all'interno di un pezzo di codice. Questo metodo è progettato per eseguire tutto o il percorso selezionato tramite un programma per computer.

Qualsiasi programma non banale contiene molti possibili percorsi di esecuzione. Testarli tutti è difficile e richiede molto tempo, e la maggior parte di essi si sovrappone. Il test dei percorsi di base riduce questa ridondanza identificando il più piccolo insieme di percorsi che esegue comunque ogni istruzione e ogni ramo almeno una volta.

Test del percorso di base nell'ingegneria del software

Test del percorso di base in ingegneria del software è a Bianco Box Collaudo metodo in cui i casi di test vengono definiti in base a flussi o percorsi logici che possono essere intrapresi attraverso il programma. L'obiettivo del testing del percorso di base è definire il numero di percorsi indipendenti, in modo che il numero di casi di test necessari possa essere definito esplicitamente per massimizzare la copertura del test.

In Ingegneria del software, Il test del percorso base prevede l'esecuzione di tutti i possibili blocchi in un programma e raggiunge la massima copertura del percorso con il minor numero di casi di test. È un metodo ibrido di test dei rami e metodi di test del percorso.

Un semplice esempio rende il concetto concreto.

Test del percorso di base nell'ingegneria del software

Il diagramma di flusso sopra riportato contiene istruzioni condizionali, pertanto il controllo può raggiungere l'uscita attraverso più di un percorso. Sono necessari tre percorsi indipendenti per coprirlo:

  • percorso 1: 1,2,3,5,6, 7
  • percorso 2: 1,2,4,5,6, 7
  • percorso 3: 1, 6, 7

Come disegnare un diagramma di flusso di controllo

Ogni fase del test del percorso di base dipende dal diagramma di flusso di controllo, quindi è importante essere precisi su come viene costruito.

  • Nodo: Una sequenza di istruzioni che vengono sempre eseguite insieme, rappresentata da un cerchio. Una sequenza di istruzioni senza diramazioni si riduce a un singolo nodo.
  • bordo: Un trasferimento di controllo da un nodo all'altro, rappresentato da una freccia. Gli archi sono l'unico modo in cui si sposta il controllo.
  • Nodo predicativo: un nodo contenente una condizione, con due o più archi uscenti da esso. Questi determinano il conteggio della complessità.
  • Regione: un'area delimitata da spigoli e nodi. Il numero di regioni più uno è anche uguale alla complessità ciclomica.

Consideriamo un breve modulo con due decisioni:

if (a > b) {          // node 1, predicate
    max = a;          // node 2
} else {
    max = b;          // node 3
}
if (max > limit) {    // node 4, predicate
    alert();          // node 5
}
return max;           // node 6

Il grafo ha 6 nodi e 6 archi, quindi V(G) = 6 – 6 + 2 = 2 secondo la formula degli archi. Il conteggio dei predicati fornisce la stessa risposta più rapidamente: 2 decisioni più 1 equivalgono a 3 percorsi indipendenti attraverso i due rami considerati insieme. Utilizza la forma che puoi calcolare in modo affidabile e confrontala con l'altra.

Due regole che prevengono la maggior parte degli errori. In primo luogo, una condizione composta come se (x > 0 e y > 0) conta come due nodi predicativi, non uno, perché il cortocircuito crea una seconda decisione. In secondo luogo, un ciclo contribuisce con un nodo predicativo indipendentemente da quante volte si ripete.

Passaggi per il test del percorso di base

I passaggi fondamentali coinvolti nel test del percorso di base includono

  • Disegna un grafico di controllo (per determinare diversi percorsi di programma)
  • Calcola Complessità ciclomatica (metriche per determinare il numero di percorsi indipendenti)
  • Trova un insieme base di percorsi
  • Generare casi test per esercitare ogni percorso

Vantaggi e limiti del test del percorso di base

Vantaggi del test del percorso di base

  • Aiuta a ridurre i test ridondanti
  • Focalizza l'attenzione sulla logica del programma
  • Sostituisce la selezione arbitraria dei casi di test con una base analitica
  • I casi di test che esercitano il set di base eseguiranno ogni istruzione in un programma almeno una volta

Limitazioni del test del percorso di base

  • Non riesce a trovare il codice mancante. Un requisito che non è mai stato implementato non ha un percorso, quindi non verrà generato alcun test per esso. Il test del percorso di base deve essere abbinato al test basato sui requisiti.
  • Il numero di percorsi cresce rapidamente. Cicli annidati e condizioni composte aumentano rapidamente la complessità, e un modulo con V(G) superiore a 20 diventa impraticabile da coprire in questo modo.
  • La copertura non è sinonimo di correttezza. L'esecuzione di un percorso dimostra che il codice funziona, non che produca la risposta corretta. Ogni test necessita comunque di un'asserzione significativa.
  • Percorsi dipendenti dai dati. Alcuni percorsi sono raggiungibili solo con specifiche combinazioni di input che possono essere difficili o impossibili da realizzare.

DOMANDE FREQUENTI

Il test dei percorsi mira a eseguire ogni possibile percorso, il che è impraticabile in qualsiasi modulo contenente cicli. Il test dei percorsi di base esegue solo i percorsi indipendenti, un insieme molto più piccolo che copre comunque ogni istruzione e ogni diramazione.

Esattamente la complessità ciclomica del modulo. Se V(G) è 4, allora esistono 4 percorsi indipendenti e sono necessari 4 casi di test per la copertura completa dei rami.

No. Si limita a testare il codice già esistente, quindi un requisito mai implementato non produce alcun percorso e nessun test fallimentare. Le due tecniche sono complementari.

Gli strumenti di intelligenza artificiale generano valori di input che raggiungono rami specifici del codice, che è la parte manuale più lenta del lavoro. Inoltre, segnalano i percorsi irraggiungibili che indicano la presenza di codice morto.

Sì. Gli strumenti di analisi statica generano da anni diagrammi di flusso di controllo e valori di complessità, e gli strumenti basati sull'intelligenza artificiale ora aggiungono input di test suggeriti per ogni percorso indipendente.

Riassumi questo post con: