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

Малюнок 6 - Блок схема модуля «Підрахунок ваг шляхів»

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

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

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

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

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

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

public void resultSort(){

int max = 0;

String path = null;

for (Map.Entry<String, Integer> tmp : result.entrySet())

{

if (max <= tmp.getValue()){

max = tmp.getValue();

path = tmp.getKey();

}

}

Console.WriteLine("The best path is "+path+" with weight="+max);

}

Малюнок 7 - Блок схема модуля «Пошук найкращого шляху»

3.3 Тести «чорного ящика» і «білого ящика» для модулів.

Для покриття 100% коду юніт тестами, необхідно починати з тестів «чорного ящика», а потім при необхідності дописувати тести "білого ящика".

3.3.1 Тести «чорного ящика»

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

3.3.1.1 Юніт тест для модуля checkVantashErrors

Користувач вводить дані, які є вхідними даними для даного модуля.

Необхідно перевірити три випадки:

• Вхідні дані - порожні, результат: тест не пройдено, якщо при виконанні модуля повернеться пусте значення.

• Вхідні дані - некоректні, результат: тест не пройдено, якщо при виконанні модуля повернеться пусте значення.

• Вхідні дані - коректні, результат: тест пройдено, якщо повернеться пусте значення.

Програмный код тесту:

[Test]

public void blackTestCheckVantashErrors() {

Console.WriteLine("Testing function checkVantashErrors");

Console.WriteLine("-------Start with empty-----------");

ArrayList<String> Vantash = null;

ArrayList result = instance.checkVantashErrors(Vantash);

if (result.isEmpty())

fail("Vantashes are empty");

Console.WriteLine("-------Start with incorrect Vantashes-------");

Vantash = new ArrayList<String>(Arrays.asList("AS","BE","YC","UD"));

result = instance.checkVantashErrors(Vantash);

if (result.isEmpty())

fail("Vantashes are incorrect");

Console.WriteLine("---Start with correct Vantashes---");

Vantash = new ArrayList<String>(Arrays.asList("A","B","C","D"));

result = instance.checkVantashErrors(Vantash);

if (!result.isEmpty())

fail("Vantashes are correct");

Console.WriteLine("---------Finished Ok---------");

}

3.3.1.2 Юніт тест для модуля createPathes

На цьому етапі вже створені коректні вершини графа.

Входять даних нету, необхідно перевірити один випадок:

• Відповідність кількості створених шляхів функцією, очікуваному значенню створених шляхів при даних вершинах графа. Якщо кількість створених функцією шляхів не буде відповідати очікуваному кількістю, то тест не буде пройдено.

Програмный код тесту:

[Test]

public void blackTestCreatePathes() {

Console.WriteLine("Testing function createPathes");

Console.WriteLine("----------Start--------------");

String s = "BCDEFG";

String param = "";

String StartParam = "A";

instance.createPathes(s, param, StartParam);

//count ammount of pathes

int ammount = 1;

int size = s.length()+1;

for(int i=2; i<size; i++){

ammount *= i;

}

if(instance.Paths.size() != ammount)

fail("Pathes has not been created correctly");

Console.WriteLine("---------Finished Ok---------");

}

3.3.1.3 Юніт тест для модуля createEdges

На цьому етапі вже створені коректні вершини графа.

Входять даних нету, необхідно перевірити один випадок:

• Відповідність кількості створених вузлів функцією, очікуваному значенню створених вузлів при даних вершинах графа. Якщо кількість створених функцією вузлів не відповідатиме очікуваному кількістю, то тест не буде пройдено.

Програмний код тесту:

[Test]

public void blackTestCreateEdges() {

Console.WriteLine("Testing function createEdges");

Console.WriteLine("----------Start--------------");

String Vantashes = "ABCDEFG";

instance.createEdges(Vantashes)

//count ammount of edges

int ammount = 0;

int size = Vantashes.length();

for(int i=1; i<size; i++){

ammount += i;

}

Console.WriteLine("Ammount of edges="+ammount);

Console.WriteLine("Size of edges = "+instance.edges.size());

if (instance.edges.size()/2 != ammount)

fail("Error in creating Edges");

Console.WriteLine("---------Finished Ok---------");

}

3.3.1.4 Юніт тест для модуля calculatePathes

На цьому етапі вже створені всілякі шляхи обходу графа, а так само відомі ваги для кожного вузла.

Входять даних нету, необхідно перевірити два випадки:

• Відповідність кількості створених шляхів зі значеннями ваги даного шляху, очікуваному значенню створених шляхів при даних вершинах графа. Якщо кількість підрахованих функцією шляхів не буде відповідати кількості шляхів, то тест не буде пройдено.

• Коректність підрахунку ваги шляху, якщо підрахунок функцією буде не дорівнює очікуваному значенню, то тест не буде пройдено.

Програмний код тесту:

[Test]

public void blackTestCalculatePathes() {

Console.WriteLine("Testing function calculatePathes");

Console.WriteLine("----------Start--------------");

instance.addEdge("A", "B", 10);

instance.addEdge("A", "C", 5);

instance.addEdge("A", "D", 8);

instance.addEdge("B", "C", 4);

instance.addEdge("B", "D", 6);

instance.addEdge("C", "D", 15);

instance.Paths.add("ABCD");

instance.Paths.add("ABDC");

instance.Paths.add("ACBD");

instance.Paths.add("ACDB");

instance.Paths.add("ADBC");

instance.Paths.add("ADCB");

instance.calculatePathes();

if (instance.Paths.size() != instance.result.size())

fail("Pathes has not been calculated");

if (instance.result.get("ABCD") != 29)

fail("Incorrect calculation");

Console.WriteLine("---------Finished Ok---------");

}

3.3.1.5 Юніт тест для модуля resultSort

На цьому етапі вже створені всі шляхи графа і підраховані ваги для кожного шляху.

Входять даних нету, необхідно перевірити один випадок:

• Коректність сортування шляхів, залежно від їх ваги за спаданням від максимальної величини, якщо сортовані значення результатом не будуть рівні очікуваному, то тест не буде пройдено.

Програмний код тесту:

[Test]

public void blackTestResultSort(){

Console.WriteLine("Testing function resultSort");

Console.WriteLine("----------Start--------------");

instance.result.put("ABCD", 50);

instance.result.put("ABDC",40);

instance.result.put("ACBD",60);

instance.result.put("ACDB",55);

instance.result.put("ADBC",52);

instance.result.put("ADCB",58);

String result = instance.resultSort();

if (!result.equals("ACBD"))

fail ("sortedIncorrect");

Console.WriteLine("---------Finished Ok---------");

}

3.3.2 Тести "білого ящика"

3.3.2.1 Юніт тест для модуля checkVantashErrors

Необхідно перевірити два можливих шляхи виклику помилки:

• Якщо вхідні дані пусте значення - повертається значення повинно містити об'єкт «Ви не ввели жодної вершини».

• Якщо вхідні дані - невірне значення, то повертається значення повинно містити об'єкт "Вершини повинні бути тільки літерами англійського алфавіту: AT".

Програмний код тесту:

[Test]

public void whiteTestCheckVantashErrors() {

Console.WriteLine("Testing function checkVantashErrors using white box method");

Console.WriteLine("-------Start with empty-----------");

ArrayList<String> Vantash = null;

ArrayList result = instance.checkVantashErrors(Vantash);

if (!result.contains("Вы не ввели ни одной вершины"))

fail("Error is incorrect");

Console.WriteLine("---Start with incorrect Vantashes---");

Vantash = new ArrayList<String>(Arrays.asList("AT","B","C","D"));;

result = instance.checkVantashErrors(Vantash);

if (!result.contains("Вершины должны быть только буквами английского алфавита:AT"))

fail("Error is incorrect");

Console.WriteLine("---------Finished Ok---------");

}

3.3.3 Тест на працездатність взаємодії модулів

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

Програмний код тесту:

[Test]

public void testProgram() {

Console.WriteLine("Testing full work of program");

Console.WriteLine("----------------------------");

String input = "A,B,C,D,E,F,G";

String startParam = "A";

ArrayList<String> Vantash = new ArrayList<String>(Arrays.asList(input.split(",")));

ArrayList<String> Errors;

Errors = instance.checkVantashErrors(Vantash);

if (Errors.isEmpty()){

Console.WriteLine("Input is correct, continue");

for(String s : Vantash){

instance.addVantash(s);

}

if (instance.Vantash.size() == Vantash.size()){

Console.WriteLine("Vantashes added correctly, continue");

String Vantashes = input.replace(",", "");

instance.createEdges(Vantashes);

//Count ammount of

int ammount = 0;

int size = Vantashes.length();

for(int i=1; i<size; i++){

ammount += i;

}

if (instance.edges.size()/2 == ammount){

Console.WriteLine("Edges created correctly, continue");

instance.createPathes(Vantashes.substring(1), "", startParam);

//count ammount of pathes

ammount = 1;

size = Vantashes.length();

for(int i=2; i<size; i++){

ammount *= i;

}

if (instance.Paths.size() == ammount){

Console.WriteLine("Paths created correctly, continue");

instance.calculatePathes();

Console.WriteLine("Tesh finished correctly");

Console.WriteLine("--------Test Finished---------");

}

else fail("Paths has not been created correctly");

}

else fail ("Edges has not been created correctly");

}

else fail("Vantashes has not been added correctly");

}

else fail ("Input has not been checked correctly");

}

  1. Програма і методика випробувань

Програма і методика випробувань містять опис тестів і порядок їх виконання для перевірки відповідності системи «Програмне забезпечення для автоматизації обліку вантажоперевезень» функціональним вимогам, представленим у технічному завданні на створення автоматизованої системи вантажоперевезень.

4.1 Об’єкти випробувань

Об’єктом тестових випробувань являється система «Прокат автомобілів», далі по тексту система «ПА».

4.2 Мета випробувань

Ціллю випробувань являється перевірка відповідності функцій системи «ПЗ» вимогам технічного завдання.

4.3 Загальні положення

Випробування проводяться на основі наступних документів:

  • Система ПА. Програма і методика випробувань.

  • ГОСТ 34.60392. Інформаційна технологія. Види випробувань автоматизованих систем.

  • ГОСТ РД 50-34.698-90. Автоматизовані системи вимог до змісту документів.

4.4 Проведення випробувань

В процесі тестування були перевірена уся функціональність системи. У наступних таблицях наведений перелік випробувань основних функціональних можливостей (табл. 2.1 – 2.16).

Таблиця 4.1 – Додавання нового авто

Мета тесту:

Перевірка функції «Додавання нового авто»

Початковий стан системи:

Відкрита сторінка «Керування автомобілями»

Вхідні дані:

Марка, Модель, Колір, Рік, Об’єм двигуна, Тип кузова, Тип пального, Тип коробки передач, Описання, Ціна

Схема проведення тесту:

Натиснути кнопку «Добавити», заповнити усі поля на сторінці, натиснути кнопку «Добавити»

Очікуваний результат:

Нове авто додано

Стан системи після проведення випробування:

Відкрита сторінка «Додавання фотографії»

Таблиця 4.2 – Перевірка заповнення усіх атрибутів авто

Мета тесту:

Перевірка функції «Перевірка заповнення усіх атрибутів авто»

Початковий стан системи:

Відкрита сторінка «Додавання нового авто»

Вхідні дані:

Марка або Модель, Колір, Рік, Об’єм двигуна, Тип кузова, Тип пального, Тип коробки передач, Описання, Ціна

Схема проведення тесту:

Натиснути кнопку «Добавити»

Очікуваний результат:

Вікно повідомлення про помилку вводу. Додавання нового авто не виконано:

Стан системи після проведення випробування:

Відкрита сторінка «Додавання нового авто»

Таблиця 4.3 – Редагування авто

Мета тесту:

Перевірка функції «Редагування авто»

Початковий стан системи:

Відкрита сторінка «Керування автомобілями»

Вхідні дані:

Марка, Модель, Колір, Рік, Об’єм двигуна, Тип кузова, Тип пального, Тип коробки передач, Описання, Ціна

Схема проведення тесту:

Натиснути кнопку . Відредагувати неправильні поля. Натиснути кнопку «Застосувати».

Очікуваний результат:

Запис відредагований

Стан системи після проведення випробування:

Відкрита сторінка «Керування автомобілями»

Таблиця 4.4 – Видалення авто

Мета тесту:

Перевірка функції «Видалення авто»

Початковий стан системи:

Відкрита сторінка «Керування автомобілями»

Вхідні дані:

Схема проведення тесту:

Натиснути кнопку біля авто, яку потрібно видалити. Підтвердити бажання видалити авто натиснувши кнопку «ОК»

Очікуваний результат:

Авто видалено

Стан системи після проведення випробування:

Відкрита сторінка «Керування автомобілями»

Таблиця 4.5 – Додавання фото при створенні авто

Мета тесту:

Перевірка функції «Додавання фото при створенні авто»

Початковий стан системи:

Відкрита сторінка «Створення авто»

Вхідні дані:

Файл фото, назва фото

Схема проведення тесту:

Натиснути кнопку «Добавити», заповнити усі поля на сторінці, натиснути кнопку «Добавити»

Очікуваний результат:

Фото додано. Повідомленні про успіх додавання та фото відображається на тій самій сторінці.

Стан системи після проведення випробування:

Відкрита сторінка «Додавання фото»

Таблиця 4.6 – Перегляд замовлення

Мета тесту:

Перевірка функції «Перегляд замовлення»

Початковий стан системи:

Відкрита сторінка «Перегляд замовлень»

Вхідні дані:

Схема проведення тесту:

Натиснути кнопку

Очікуваний результат:

Відкрита сторінка «Перегляд замовлення»

Стан системи після роведення випробування:

Відкрита сторінка «Перегляд замовлення»