unit-testing
Unit testen van Loops (Java)
Zoeken…
Invoering
Lussen beschouwd als een van de belangrijke besturingsstructuren in elke programmeertaal. Er zijn verschillende manieren waarop we lusdekking kunnen bereiken.
Deze methoden verschillen op basis van het type lus.
Enkele lussen
Geneste lussen
Aaneengeschakelde lussen
Enkele lus test
Dit zijn lussen waarin hun luslichaam geen andere lussen bevat (de binnenste lus in het geval van genest).
Om lusdekking te krijgen, moeten testers de onderstaande testen uitvoeren.
Test 1: Ontwerp een test waarbij de body van de lus helemaal niet moet worden uitgevoerd (dwz nul iteraties)
Test 2: ontwerp een test waarbij lus-regelvariabele negatief is (negatief aantal iteraties)
Test 3: Ontwerp een test waarin de lus slechts één keer wordt herhaald
Test 4: Ontwerp een test waarin de lus tweemaal herhaalt
Test 5: Ontwerp een test waarin de lus een bepaald aantal keren itereert, bijvoorbeeld m waarbij m <maximaal aantal iteraties mogelijk
Test 6: Ontwerp een test waarbij de lus één keer kleiner is dan het maximale aantal iteraties
Test 7: Ontwerp een test waarin de lus het maximale aantal iteraties herhaalt
Test 8: Ontwerp een test waarbij de lus één meer herhaalt dan het maximale aantal iteraties
Beschouw het onderstaande codevoorbeeld dat alle gespecificeerde voorwaarden toepast.
openbare klasse SimpleLoopTest {
private int [] nummers = {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;
}
}
public class TestPass breidt TestCase uit {
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
}
}
Nested Loops-test
Een geneste lus is een lus binnen een lus.
De buitenste lus verandert pas nadat de binnenste lus volledig is voltooid / onderbroken.
In dit geval moeten testgevallen zodanig worden ontworpen dat
Begin bij de binnenste lus. Stel alle buitenste lussen in op hun minimumwaarden. Voer eenvoudige lustests uit op de binnenste lus (Test3 / Test4 / Test5 / Test6 / Test7). Ga door tot alle geteste lussen
Samengevoegde lustentest
Twee lussen worden aaneengeschakeld als het mogelijk is om de ene te bereiken na het verlaten van de andere op hetzelfde pad van ingang naar uitgang. Soms zijn deze twee lussen onafhankelijk van elkaar. In die gevallen kunnen we de ontwerptechnieken toepassen die zijn gespecificeerd als onderdeel van testen met één lus.
Maar als de iteratiewaarden in een lus direct of indirect gerelateerd zijn aan de iteratiewaarden van een andere lus en ze op hetzelfde pad kunnen voorkomen, kunnen we ze beschouwen als geneste lussen.