WHITE BOX TESTING: CYCLOMATIC COMPLEXITY, BASIS PATH, AND CONTROL FLOW

PROBLEM 1: STUDENT GRADE CLASSIFICATION


Algorithm


START

INPUT percentage

IF percentage >= 60 THEN

    grade = "First Class"

    PRINT "First Class with Distinction"

ELSE IF percentage >= 50 AND percentage < 60 THEN

    grade = "First Class"

    PRINT "First Class"

ELSE IF percentage >= 40 AND percentage < 50 THEN

    grade = "Second Class"

    PRINT "Second Class"

ELSE IF percentage >= 35 AND percentage < 40 THEN

    grade = "Pass"

    PRINT "Pass Class"

ELSE

    grade = "Fail"

    PRINT "Fail"

END IF

STOP

 Flow Chart


        [START]

           |

           v

    [Input percentage]

           |

           v

    <percentage >= 60?>

       /        \

     YES         NO

      |           |

      v           v

 [First Class  <percentage >= 50?>

 Distinction]   /           \

      |       YES            NO

      |        |             |

      |        v             v

      |   [First Class]  <percentage >= 40?>

      |        |          /            \

      |        |        YES             NO

      |        |         |              |

      |        |         v              v

      |        |   [Second Class]  <percentage >= 35?>

      |        |         |           /           \

      |        |         |         YES            NO

      |        |         |          |             |

      |        |         |          v             v

      |        |         |      [Pass Class]   [Fail]

      |        |         |          |             |

      \--------+---------+----------+-------------/

                          |

                          v

                      [STOP]

Control Flow Diagram (CFD)


Nodes:

1. Start

2. Input percentage

3. Check percentage >= 60

4. Print "First Class with Distinction"

5. Check percentage >= 50

6. Print "First Class"

7. Check percentage >= 40

8. Print "Second Class"

9. Check percentage >= 35

10. Print "Pass Class"

11. Print "Fail"

12. Stop


Edges:

1 → 2

2 → 3

3 → 4 (True)

3 → 5 (False)

4 → 12

5 → 6 (True)

5 → 7 (False)

6 → 12

7 → 8 (True)

7 → 9 (False)

8 → 12

9 → 10 (True)

9 → 11 (False)

10 → 12

11 → 12

 Cyclomatic Complexity Calculation


Method 1: Using Formula V(G) = E - N + 2

- Edges (E) = 14

- Nodes (N) = 12

- V(G) = 14 - 12 + 2 = 4


Method 2: Using Decision Points V(G) = D + 1

- Decision points (D) = 4 (four IF conditions)

- V(G) = 4 + 1 = 5


Method 3: Using Regions

- Number of regions = 5

- V(G) = 5


 Independent Paths (Basis Path Testing)


1. Path 1: 1 → 2 → 3 → 4 → 12 (percentage >= 60)

   - Test Case: percentage = 65

   - Expected Output: "First Class with Distinction"


2. Path 2: 1 → 2 → 3 → 5 → 6 → 12 (50 <= percentage < 60)

   - Test Case: percentage = 55

   - Expected Output: "First Class"


3. Path 3: 1 → 2 → 3 → 5 → 7 → 8 → 12 (40 <= percentage < 50)

   - Test Case: percentage = 45

   - Expected Output: "Second Class"


4. Path 4: 1 → 2 → 3 → 5 → 7 → 9 → 10 → 12 (35 <= percentage < 40)

   - Test Case: percentage = 37

   - Expected Output: "Pass Class"


5. Path 5: 1 → 2 → 3 → 5 → 7 → 9 → 11 → 12 (percentage < 35)

   - Test Case: percentage = 30

   - Expected Output: "Fail"


 Test Cases for Basis Path Coverage


| Test Case ID | Input (percentage) | Expected Output | Path Covered |

| TC1 | 65 | First Class with Distinction | Path 1 |

| TC2 | 55 | First Class | Path 2 |

| TC3 | 45 | Second Class | Path 3 |

| TC4 | 37 | Pass Class | Path 4 |

| TC5 | 30 | Fail | Path 5 |

| TC6 | 60 | First Class with Distinction | Boundary |

| TC7 | 50 | First Class | Boundary |

| TC8 | 40 | Second Class | Boundary |

| TC9 | 35 | Pass Class | Boundary |



 PROBLEM 2: ODD OR EVEN NUMBER

Algorithm


START

INPUT number

IF number % 2 == 0 THEN

    PRINT "Even"

ELSE

    PRINT "Odd"

END IF

STOP

 Flow Chart

[START]

           |

           v

    [Input number]

           |

           v

    <number % 2 == 0?>

       /        \

     YES         NO

      |           |

      v           v

  [Print "Even"] [Print "Odd"]

      |           |

      \-----------/

           |

           v

        [STOP]

 Control Flow Diagram (CFD)


Nodes:

1. Start

2. Input number

3. Check number % 2 == 0

4. Print "Even"

5. Print "Odd"

6. Stop


Edges:

1 → 2

2 → 3

3 → 4 (True)

3 → 5 (False)

4 → 6

5 → 6

 Cyclomatic Complexity Calculation


Method 1: Using Formula V(G) = E - N + 2

- Edges (E) = 6

- Nodes (N) = 6

- V(G) = 6 - 6 + 2 = 2


Method 2: Using Decision Points V(G) = D + 1

- Decision points (D) = 1

- V(G) = 1 + 1 = 2


 Independent Paths


1. Path 1: 1 → 2 → 3 → 4 → 6 (number is even)

   - Test Case: number = 10

   - Expected Output: "Even"


2. Path 2: 1 → 2 → 3 → 5 → 6 (number is odd)

   - Test Case: number = 7

   - Expected Output: "Odd"


 Test Cases


| Test Case ID | Input (number) | Expected Output | Path Covered |

| TC1 | 10 | Even | Path 1 |

| TC2 | 7 | Odd | Path 2 |

| TC3 | 0 | Even | Boundary |

| TC4 | -4 | Even | Negative Even |

| TC5 | -5 | Odd | Negative Odd |

| TC6 | 2 | Even | Smallest Even |

| TC7 | 1 | Odd | Smallest Odd |


 PROBLEM 3: PRIME NUMBER CHECK


Algorithm


START

INPUT number

IF number <= 1 THEN

    PRINT "Not Prime"

    GOTO STOP

END IF

IF number == 2 THEN

    PRINT "Prime"

    GOTO STOP

END IF

IF number % 2 == 0 THEN

    PRINT "Not Prime"

    GOTO STOP

END IF

SET i = 3

WHILE i * i <= number DO

    IF number % i == 0 THEN

        PRINT "Not Prime"

        GOTO STOP

    END IF

    i = i + 2

END WHILE

PRINT "Prime"

STOP

 Flow Chart


            [START]

               |

               v

        [Input number]

               |

               v

        <number <= 1?>

           /      \

         YES       NO

          |         |

          v         v

    [Not Prime] <number == 2?>

          |       /        \

          |     YES         NO

          |      |           |

          |      v           v

          | [Prime]    <number % 2 == 0?>

          |      |         /        \

          |      |       YES         NO

          |      |        |           |

          |      |        v           v

          |      |   [Not Prime]  [i = 3]

          |      |        |           |

          |      |        |           v

          |      |        |    <i*i <= number?>

          |      |        |       /         \

          |      |        |     YES          NO

          |      |        |      |            |

          |      |        |      v            v

          |      |        | <number % i == 0?> [Prime]

          |      |        |   /        \        |

          |      |        | YES         NO      |

          |      |        |  |          |       |

          |      |        |  v          v       |

          |      |        | [Not Prime] [i=i+2] |

          |      |        |  |          |       |

          |      |        |  |          |       |

          \------+--------+--+----------+-------/

                 |

                 v

              [STOP]

Control Flow Diagram (CFD)


Nodes:

1. Start

2. Input number

3. Check number <= 1

4. Print "Not Prime" (for <= 1)

5. Check number == 2

6. Print "Prime" (for 2)

7. Check number % 2 == 0

8. Print "Not Prime" (for even)

9. i = 3

10. Check i * i <= number

11. Check number % i == 0

12. Print "Not Prime" (divisible)

13. i = i + 2

14. Print "Prime"

15. Stop


Edges:

1 → 2

2 → 3

3 → 4 (True)

3 → 5 (False)

4 → 15

5 → 6 (True)

5 → 7 (False)

6 → 15

7 → 8 (True)

7 → 9 (False)

8 → 15

9 → 10

10 → 11 (True)

10 → 14 (False)

11 → 12 (True)

11 → 13 (False)

12 → 15

13 → 10

14 → 15

Cyclomatic Complexity Calculation


Method 1: Using Formula V(G) = E - N + 2

- Edges (E) = 17

- Nodes (N) = 15

- V(G) = 17 - 15 + 2 = 4


Method 2: Using Decision Points V(G) = D + 1

- Decision points (D) = 5

- V(G) = 5 + 1 = 6

 Independent Paths


1. Path 1: 1 → 2 → 3 → 4 → 15 (number <= 1)

   - Test Case: number = 0

   - Expected Output: "Not Prime"


2. Path 2: 1 → 2 → 3 → 5 → 6 → 15 (number == 2)

   - Test Case: number = 2

   - Expected Output: "Prime"


3. Path 3: 1 → 2 → 3 → 5 → 7 → 8 → 15 (even number)

   - Test Case: number = 4

   - Expected Output: "Not Prime"


4. Path 4: 1 → 2 → 3 → 5 → 7 → 9 → 10 → 11 → 12 → 15 (divisible by odd)

   - Test Case: number = 9

   - Expected Output: "Not Prime"


5. Path 5: 1 → 2 → 3 → 5 → 7 → 9 → 10 → 11 → 13 → 10 → 14 → 15 (prime)

   - Test Case: number = 7

   - Expected Output: "Prime"


6. Path 6: 1 → 2 → 3 → 5 → 7 → 9 → 10 → 14 → 15 (small prime)

   - Test Case: number = 3

   - Expected Output: "Prime"


Test Cases


| Test Case ID | Input (number) | Expected Output | Path Covered | Reason |

| TC1 | 0 | Not Prime | Path 1 | number <= 1 |

| TC2 | 1 | Not Prime | Path 1 | number <= 1 |

| TC3 | -5 | Not Prime | Path 1 | Negative |

| TC4 | 2 | Prime | Path 2 | Only even prime |

| TC5 | 4 | Not Prime | Path 3 | Even composite |

| TC6 | 9 | Not Prime | Path 4 | Odd composite (3²) |

| TC7 | 15 | Not Prime | Path 4 | Odd composite |

| TC8 | 7 | Prime | Path 5 | Odd prime |

| TC9 | 11 | Prime | Path 5 | Odd prime |

| TC10 | 3 | Prime | Path 6 | Smallest odd prime |

| TC11 | 17 | Prime | Path 5 | Larger prime |

| TC12 | 25 | Not Prime | Path 4 | Perfect square |



SUMMARY OF CYCLOMATIC COMPLEXITY


| Problem | Cyclomatic Complexity | Independent Paths | Test Cases Required |

| Student Grade Classification | 5 | 5 | 9 |

| Odd or Even | 2 | 2 | 7 |

| Prime Number | 6 | 6 | 12 |


Note: Cyclomatic Complexity indicates the minimum number of test cases required to achieve basis path coverage and represents the complexity of the program.

Comments

Popular posts from this blog

BLACK BOX TESTING: BOUNDARY VALUE ANALYSIS AND EQUIVALENCE PARTITIONING