unit-testing
Test unitario di Loops (Java)
Ricerca…
introduzione
Loop considerati come una delle strutture di controllo importanti in qualsiasi linguaggio di programmazione. Ci sono diversi modi in cui possiamo ottenere la copertura del ciclo.
Questi metodi differiscono in base al tipo di loop.
Loop singoli
Cicli annidati
Anelli concatenati
Test ad anello singolo
Questi sono loop in cui il loro corpo del loop non contiene altri loop (il ciclo più interno in caso di nidificazione).
Per avere una copertura ciclica, i tester dovrebbero esercitare i test indicati di seguito.
Test 1: progettare un test in cui il corpo del loop non deve essere eseguito affatto (vale a dire zero iterazioni)
Test 2: progettare un test in cui la variabile di controllo del ciclo sia negativa (numero negativo di iterazioni)
Test 3: Progetta un test in cui il ciclo itera una sola volta
Test 4: progettare un test in cui il ciclo itera due volte
Test 5: Progetta un test in cui il ciclo itera un determinato numero di volte, ad esempio dove m <numero massimo di iterazioni possibili
Test 6: Progetta un test in cui il ciclo itera un valore inferiore al numero massimo di iterazioni
Test 7: Progetta un test in cui il ciclo itera il numero massimo di iterazioni
Test 8: Progetta un test in cui il ciclo itera un valore superiore al numero massimo di iterazioni
Considera l'esempio di codice seguente che applica tutte le condizioni specificate.
public class SimpleLoopTest {
numeri privati int [] = {5, -77,8, -11,4,1, -20,6,2,10};
/** Compute total of positive numbers in the array
* @param numItems number of items to total.
*/
public int findSum(int numItems)
{
int total = 0;
if (numItems <= 10)
{
for (int count=0; count < numItems; count = count + 1)
{
if (numbers[count] > 0)
{
total = total + numbers[count];
}
}
}
return total;
}
}
la classe pubblica TestPass estende TestCase {
public void testname() throws Exception {
SimpleLoopTest s = new SimpleLoopTest();
assertEquals(0, s.findSum(0)); //Test 1
assertEquals(0, s.findSum(-1)); //Test 2
assertEquals(5, s.findSum(1)); //Test 3
assertEquals(5, s.findSum(2)); //Test 4
assertEquals(17, s.findSum(5)); //Test 5
assertEquals(26, s.findSum(9)); //Test 6
assertEquals(36, s.findSum(10)); //Test 7
assertEquals(0, s.findSum(11)); //Test 8
}
}
Test dei cicli annidati
Un ciclo annidato è un ciclo all'interno di un ciclo.
Il ciclo esterno cambia solo dopo che il ciclo interno è completamente finito / interrotto.
In questo caso, i casi di test dovrebbero essere progettati in modo tale che
Inizia nel ciclo più interno. Imposta tutti i loop esterni ai loro valori minimi. Eseguire un semplice test di loop sul loop più interno (Test3 / Test4 / Test5 / Test6 / Test7). Continua fino a quando tutti i loop sono stati testati
Test di loop concatenati
Due anelli sono concatenati se è possibile raggiungerne uno dopo aver lasciato l'altro sullo stesso percorso dall'ingresso all'uscita. A volte questi due anelli sono indipendenti l'uno dall'altro. In questi casi possiamo applicare le tecniche di progettazione specificate come parte del test a ciclo singolo.
Ma se i valori di iterazione in un ciclo sono direttamente o indirettamente correlati ai valori di iterazione di un altro ciclo e possono verificarsi sullo stesso percorso, possiamo considerarli come cicli annidati.