GeorgievskaEmilija / JUnit-Everybranch-everypath

Basic testing with JUnit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Втора лабораториска вежба по Софтверско инженерство

Емилија Георгиевска, бр. на индекс 183044

Група на код: 3

Control Flow Graph

alt ControlFlowGraph

Цикломатска комплексност

Цикломатска комплексност = број на предикатни јазли + 1, 9+1 = 10
Цикломатска комплексност = број на региони - 10
Цикломатска комплексност = број на јазли - број на темиња + 2, 33 - 25 + 2 = 10

Тест случаи според критериумот Every branch

alt ControlFlowGraph

Тест случаи според критериумот Every path

Следни патеки се возможни:

  • 1,2 - 3 - 4 - 26
    ex=assertThrows(RuntimeException.class, () -> lab.function(user1, users));
    assertTrue(ex.getMessage().contains("The user is not instantiated"));

  • 1,2 - 3 - 5 - 6 - 26
    ex=assertThrows(RuntimeException.class, () -> lab.function(user2, users));
    assertTrue(ex.getMessage().contains("The user is missing some mandatory information"));

  • 1,2 - 3 - 5 - 7,8 - 9 -26
    assertFalse( lab.function(user3, users));

  • 1,2 - 3 - 5- 7,8 - 10 -11 -26
    assertFalse(lab.function(user4, users));

  • 1,2 - 3- 5- 7,8 - 10 - 12,13 - 14.1 - 14.2 - 15 - 17 - 19 - 20 - 14.3 -14.2 - 21- 22 - 23 - 26
    assertFalse(lab.function(user5, users));

  • 1,2 - 3- 5- 7,8 - 10 - 12,13 - 14.1 - 14.2 - 15 - 17 - 19 - 20 - 14.3 -14.2 - 21- 22 - 24 - 25- 26
    assertFalse(lab.function(user5, users));

  • 1,2 - 3- 5- 7,8 - 10 - 12,13 - 14.1 - 14.2 - 15 - 16 - 17 - 18 - 19 - 14.3 -14.2 - 21- 22 - 23 - 26
    assertFalse(lab.function(user5, users));

  • 1,2 - 3- 5- 7,8 - 10 - 12,13 - 14.1 - 14.2 - 15 - 16 - 17 - 18 - 19 - 14.3 -14.2 - 21- 22 - 24 - 25 - 26
    assertFalse(lab.function(user5, users));

  • 1,2 - 3- 5- 7,8 - 10 - 12,13 - 14.1 - 14.2 - 15 -16- 17 -18- 19 - 20 -14.3 -21 -22 -23 -26
    //FALSE PATH assertFalse(lab.function(user5, users));

Објаснување на напишаните unit tests

EVERYBRANCH

Тука се генерираат сите можни гранења, и треба да се изгенерира тест случаи кои ќе ги опфатат сите можни гранења. Минималниот број на тест случаи кои јас ги напишав се 6. Тест случаевите се:

1.Лозинката е null, што доведува до терминирање на програмата
Ги опфаќа јазлите 12, 3, 5, 6, 26

2.Корисникот е null, што доведува до терминирање на програмата
Ги опфаќа јазлите 12, 3, 4, 26

3.Лозинката го содржи корисничкото име, што пак доведува до погрешен излез од програмата
Ги опфаќа јазлите 12, 3, 5, 7 8, 9 , 26

4.Должината на лозинката е помала од 8 карактери
Ги опфаќа јазлите 1 2, 3, 5, 7 8, 10, 11 , 26

5.Лозинката да ги исполни сите претходни случаеви но се вели дека треба да содржи број, буква, специјален знак. Овој тест случај е пример кога нема едно од овие 3.
Ги опфаќа јазлите 1 2, 3, 5, 7 8, 10, 12 13, 14.1, 14.2, 15, 16, 17, 18, 19, 14.3, 21, 22, 23, 26

6.Единствен случај кога се очекува позитивен исход е кога ќе се исполнат сите претходни случаи , односно се внесени и име и лозинка, лозинката не е пократка од 8 карактери, во лозинката не е содржано корисничкото име, и лозинката содржи број, буква, специјален знак.

Ги опфаќа јазлите 1 2, 3, 5, 7 8, 10, 12 13, 14.1, 14.2, 15, 16, 17, 18, 19, 20, 14.3, 21, 22 (недостасува на сликата) , 24, 25, 26

Со овие 6 тест случаи се опфатени сите можни сценарија.

EVERY PATH

Овoj критериум ги разгледува сите можни патеки од почетокот до јазлите кои означуваат крај на функцијата. Притоа не се возможни сите патеки.
Пример за невозможна патека:
1,2 - 3- 5- 7,8 - 10 - 12,13 - 14.1 - 14.2 - 15 -16- 17 -18- 19 - 20 -14.3 -21 -22 -23 -26 . Oваа патека не е возможна бидејќи ако лозинката ги прошла сите проверки за тоа дека содржи број, специјален знак и буква, не може да падне на условот ? if (!digit || !upper || !special).

Има само една патека која не носи до јазелот - > return true (ги изминува јазлите 1 2, 3, 5, 7 8, 10, 12 13, 14.1, 14.2, 15, 16, 17, 18, 19, 20, 14.3, 21, 22, 24, 25, 26 ) , и тоа кога е точно внесена(не е нул, или празен стринг), има повеќе од 8 знаци во кои има буква, број, специјален знак, и не го содржи името на корисникот(додека сите овие не носат по патеки кои водат до return false).

About

Basic testing with JUnit


Languages

Language:HTML 30.9%Language:JavaScript 25.6%Language:Java 25.1%Language:CSS 18.4%