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

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();

}