Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
По Суслову.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.41 Mб
Скачать

3.2. План модульного тестування

Тестування програми необхідно проводити за типом «модульне тестування», де кожну підфункцію програми перевіряють окремо. Спочатку необхідно написати юніт тести «чорного ящика», який не має на увазі вникання в код модуля, а потім на все не покриття випадки виконання модуля методом «чорного ящика», дописати тести "білого ящика", які разом з тестами «чорного ящика» покриють весь код програми на 100% і допоможуть розробнику протестувати працездатність програми. Після того як «модульне тестування» буде завершено, необхідно розробити юніт тест, який перевірить працездатність роботи всіх модулів воєдино.

• Модуль «Перевірка вхідних даних»

Назва функції: checkVantashErrors

Суть: користувач вводить у форму показану на малюнку 1 дані для обробки програмою. Потім процес передає потік даних модулям «Генерування всіляких шляхів графа» і «Розставлення ваги для кожної пари вершин»

Вхідні дані для модуля:

1. Масив елементів вершин. Один елемент з масиву вершин, вказується значення (ім'я вершини).

Вихідні дані модуля:

1. Попередження сформовані при обробці вхідних даних.

Фрагмент коду програми для даного блоку:

public ArrayList<String> checkVantashErrors(ArrayList<String> Vantash){

ArrayList<String> Errors = new ArrayList<String>();

if (Vantash == null || Vantash.isEmpty()){

Errors.add("Вы не ввели ни одной вершины");

}

else {

for(String tmp : Vantash){

if (checkValidVantash(tmp) == false){

Errors.add("Вершины должны быть только буквами английского алфавита:"+tmp);

}

}

}

return Errors;

}

Рисунок 3 - Блок схема модуля «Ввод входных данных»

• Модуль «Генерування всіляких шляхів графа»

Назва функції: createPathes

Суть: На основі введених даних, блок генерує всілякі шляхи обходу вершин графа і додає ці значення в системний масив Paths. По завершенню - передає управління системі.

Вхідні дані для модуля: вершини графа, початкова вершина.

Вихідні дані модуля: відсутні.

Фрагмент коду програми для даного блоку:

public void createPathes(String s, String param,String StartParam){

if (s.length() == 0)

Paths.add(StartParam+param);

for (int i=0; i<s.length(); i++) {

String nextChar = s.substring(i,i+1);

createPathes(s.replace(nextChar, ""), param + nextChar,StartParam);

}

}

Рисунок 4 - Блок схема модуля «Генерування всіляких шляхів графа»

• Модуль «Розставлення ваги для кожної пари вершин»

Назва функції: createEdges

Суть: На основі введених даних, блок генерує для кожної пари вершин ребро з випадковим вагою і додає ці значення в системний масив edges. По завершенню - передає управління системі.

Вхідні дані для модуля: вершини графа.

Вихідні дані модуля: відсутні.

Фрагмент коду програми для даного блоку:

public void createEdges(String Vantashes){

Random randomGenerator = new Random();

String rab = "";

while (!Vantashes.isEmpty()){

rab = rab.concat(Vantashes.substring(0, 1));

Vantashes = Vantashes.substring(1);

String tmpVantashes = Vantashes;

String tmpChar = rab.substring(rab.length()-1);

while (!tmpVantashes.isEmpty()){

String tmpVantash = tmpVantashes.substring(0,1);

tmpVantashes = tmpVantashes.substring(1);

int val = randomGenerator.nextInt(100);

addEdge (tmpChar,tmpVantash,val);

Console.WriteLine(tmpChar+tmpVantash+"="+val);

}

}

}

Рисунок 5 - Блок схема модуля «Генерування всіляких шляхів графа»

• Модуль «Підрахунок ваг шляхів»

Назва функції: calculatePathes

Суть: Після того, як система отримала всі шляхи, а так само ваги всіх ребер графа, викликається модуль підрахунку ваги кожного шляху. По завершенню - передає управління у модуль «Пошук найкращого шляху».

Вхідні дані для модуля: відсутні (всі міститися в системних змінних).

Вихідні дані модуля: відсутні.

Фрагмент коду програми для даного блоку:

public void calculatePathes(){

for (String a : Paths){

int pointer = 0;

int summ = 0;

while (a.length()-2 >= pointer){

String tmp = a.substring(pointer, pointer+2);

pointer++;

summ += powerOfEdge(tmp);

}

result.put(a,summ);

}

this.resultSort();

}