Цикломатска комплексност = број на предикатни јазли + 1, 9+1 = 10
Цикломатска комплексност = број на региони - 10
Цикломатска комплексност = број на јазли - број на темиња + 2, 33 - 25 + 2 = 10
Следни патеки се возможни:
-
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));
Тука се генерираат сите можни гранења, и треба да се изгенерира тест случаи кои ќе ги опфатат сите можни гранења. Минималниот број на тест случаи кои јас ги напишав се 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 тест случаи се опфатени сите можни сценарија.
Ов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).