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