Тестування програмного забезпечення
Дослідження алгоритму роботи та коду програми. Оцінка методом "чорного ящика". Тестування і налагодження розробленої програми на алгоритмічній мові високого рівня. Оцінювання якості програмного забезпечення за об’єктно-орієнтованими метриками зв’язності.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 11.03.2021 |
Размер файла | 143,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
НАЦІОНАЛЬНИЙ АВІАЦІЙНИЙ УНІВЕРСИТЕТ
Факультет кібербезпеки, комп'ютерної та програмної інженерії
Кафедра комп'ютерних систем управління
Курсова робота
З дисципліни: «Інженерія програмного забезпечення»
Тема роботи: Тестування програмного забезпечення
Київ - 2019
Зміст
Варіант
1. Формальний опис розроблювальної системи
2. Алгоритм роботи програми
3. Код програми
4. Тестування програми
5. Тестування і налагодження розробленої програми на алгоритмічній мові високого рівня
6. Цикломатична складність 3 способами
7. Оцінювання якості пз за об'єктно-орієнтованими метриками зв'язності
Висновок
Список використаних джерел
Варіант
Завдання
Є вказівник на масив з єдиним елементом. Користувач вводить число. Якщо воно позитивне, записується у масив. Далі користувач вводить друге число, якщо воно позитивне, виділяють пам'ять для двох елементів масиву та записують в масив нове число. Це повторюється поки користувач не вводить негативне число. програмний орієнтований метрика код
Програма написана мовою високого рівня С++ та буде виконуватись у консольному вікні. На програму діє лише 1 обмеження - заборонений ввід будь яких символів окрім чисел.
Результатом виконання програми: буде виведено масив із введеними користувачем числами.
1. Формальний опис розроблювальної системи
Функціональне призначення:
Програма призначена для занесення елементу в масив з динамічним розширенням пам'яті. Програма використовується самостійно. Користувач має змогу ввести значення масиву.
Опис логічної структури:
До складу програми входять наступні модулі:
- інтерфейсний (функція main);
- виконавчий (функція main).
Інтерфейсний модуль керує взаємодією користувача з програмою після чого викликає виконавчий модуль. Виконавчий модуль відповідає за занесення елемента у масив та виділення пам'яті паді наступний.
Програма написана мовою програмування С++ з використанням компілятора і середи розробки MVS2019.
В якості структури даних, яка зберігає елементи, виступає одновимірний масив.
Структура програми подана у пункті 3 під назвою програмний код.
Умови застосування:
Програма експлуатується на ПК під керуванням ОС Windows 10. Для роботи в діалоговому режимі використовується монітор, клавіатура та мишка. Вхідні дані зберігаються на ОЗП або у кеш пам'яті процесора.
Вхідні та вихідні дані:
Вхідними даними для програми є набір цифр, які користувач вводить з клавіатури. Вихідними даними є виведена на екран інформація про повернений оброблений масив.
Склад і функції:
Програма складається тільки з виконавчої функції main(). В якості контейнера для зберігання матриці обраний одновимірний масив. Функція main за допомогою циклу викликає ввід вхідних значень у програму, також за допомогою наступного циклу відбувається занесення даних у масив та їх послідуючий вивід у вікно консолі.
2. Алгоритм роботи програми
3. Код програми
#include <iostream>
#include <Windows.h>
#include <cstdlib>
#include <assert.h>
#include <limits>
int main(int argc, char const* argv[]) {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
void* memory = malloc(sizeof(double));
assert(memory);
size_t capacity = 1;
size_t elements = 0;
while (true) {
double num;
std::cout << "Введите число: ";
std::cin >> num;
if (std::cin.fail()) {
std::cout << "Неверный ввод" << '\n';
break;
}
if (num < 0) {
break;
}
if (capacity == elements) {
capacity++;
void* tempPtr = realloc(memory, sizeof(double) * capacity); //++capasity вначале увеличит свое значение, а потом уже пойдет в функцию
assert(tempPtr);
memory = tempPtr;
}
//Приводим к типу double, для дальнейшей записи в него числа
double * int_memory = reinterpret_cast< double *>(memory);
int_memory[elements] = num;
elements++;
std::cout << "Записанные числа: ";
for (size_t i = 0; i < elements; i++) {
std::cout << int_memory[i] << "; ";
}
std::cout << '\n';
std::cout << "Текущий массив занимает: " << sizeof(double) * capacity << " байт\n";
}
free(memory);
system("pause");
return 0;
}
4. Тестування програми
Оцінювання методом «чорного ящика»
Тестові набори
Поле вводу |
Вивід |
Коментар |
|
1 |
1; |
Очікування на наступний елемент |
|
34 |
1; 34; |
Очікування на наступний елемент |
|
99999999 |
1; 34; 99999999; |
Очікування на наступний елемент |
|
К |
Невірний ввід |
Завершення роботи програми |
|
-98 |
-98 |
Завершення роботи програми |
|
0.87 |
0.87 |
Очікування на наступний елемент |
|
0.000000003 |
0.98; 0.000000003; |
Очікування на наступний елемент |
|
0,45 |
Невірний ввід |
Завершення роботи програми |
|
3! |
Невірний ввід |
Завершення роботи програми |
Тест-кейси
1 |
Модуль вводу |
Підмодуль виділення пам'яті |
Пам'ять виділено |
||
Пам'ять не виділено |
Завершення програми |
||||
Підмодуль вводу |
Ввід числа |
Ввести число: Натиснути «Enter» |
|||
Підмодуль коректності вводу |
Ціле або з плаваючою комою |
Очікування наступного числа |
|||
2 |
Модуль вводу |
Підмодуль виділення пам'яті |
Пам'ять виділено |
||
Пам'ять не виділено |
Завершення програми, очищення пам'яті |
||||
Підмодуль вводу |
Ввід числа |
Ввести число: Натиснути «Enter» |
|||
Підмодуль коректності вводу |
Від'ємне число |
Невірний ввід, завершення програми, очищення пам'яті |
|||
3 |
Модуль вводу |
Підмодуль виділення пам'яті |
Пам'ять виділено |
||
Пам'ять не виділено |
Завершення програми, очищення пам'яті |
||||
Підмодуль вводу |
Ввід числа |
Ввести число: Натиснути «Enter» |
|||
Підмодуль коректності вводу |
Будь-який інший символ |
Невірний ввід, завершення програми, очищення пам'яті |
5. Тестування і налагодження розробленої програми на алгоритмічній мові високого рівня
Граф програми
1а. Виділяємо пам'ять aassert(memory);
1б. Виводимо повідомлення про помилку std::cin.fail()
1в. Очищення пам'яті free(memory);
1г. Завершення програми return 0;
2. Цикл запису чисел while (true)
3а. Введено число
3б. Введено символ > 1б.
3в. Число від'ємне num < 0 > 1б.
4. Якщо capacity == elements, то наступне число capacity++;
5а. Пам'ять наступному числу
void* tempPtr = realloc(memory, sizeof(double) * capacity);
5б. assert(); > 1б.
6. Вивід масиву cout << int_memory[i] > 1в.
Незалежні маршрути
Маршрут 1: 1а > 1б > 1в > 1г;
Маршрут 2: 1а > 2 > 3а > 3б > 1в > 1г
Маршрут 3: 1а > 2 > 3а > 3в > 1в > 1г
Маршрут 4: 1а > 2 > 3а > 4 > 1а
Маршрут 5: 1а > 2 > 3а > 4 > 5а > 5б > 1в
Маршрут 6: 1а > 2 > 3а > 4 > 5а > 6
Для того щоб пройти по всім маршрутам необхідно зробити три тести
cin >> 4; cin >> «символ(-и)»;
cin >> -4;
6. Цикломатична складність 3 способами
Для обчислення цикломатичного числа Маккейба CC (Cyclomatic Complexity) застосовується вираз: CC L N 2 P , де L - число дуг орієнтованого графа; N - число вершин; P - число компонентів зв'язності.
Потоковий граф має 6 регіони
V(G) = 16 дуг - 12 вузлів + 2 = 6
V(G) = 5 предикатних вузли + 1 = 6
Тестування гілок та операторів відношення
Перевіримо умову складену з трьох простих умов:
num = «символ» || num ? 0 || 0 ? num
Вхідні дані 1: num = «символ», на виході маємо:
Вхідні дані 2: num ? 0 || 0 ? num, на виході маємо:
Тестування циклу
Так як цикл у моїй програмі всього один, то для його тестування досить одного блоку даних:
Вхідні дані memory {4; 0.1; R}
int memory {4; R}
Перший прохід вивід:
4;
Другий прохід вивід:
4; 0.1;
Третій прохід вивід:
«Невірний ввід»
7. Оцінювання якості пз за об'єктно-орієнтованими метриками зв'язності
n1 = 0 - число унікальних операторів програми, включаючи символи-роздільники, імена процедур і знаки операцій (словник операторів);
n2 = 1 - число унікальних операндів програми (словник операндів) ;
N1 = 8 - загальне число операторів в програмі;
N2 = 7 - загальне число операндів в програмі;
n1' = 2 - теоретичне число унікальних операторів;
n2' = 1 - теоретичне число унікальних операндів;
n = 6 - словник програми;
N = 50 - довжина програми;
n' = 3 - теоретичний словник програми;
N' = 0 * 8 + 1 * 7 = 7 - теоретична довжина програми (для стилістично коректних програм відхилення N від N' не перевищує 10%);
V = 50 * 3.58 = 179 - обсяг програми;
V' = 50 * 3 = 150 - теоретичний об'єм програми, де n * - теоретичний словник програми;
L = 0.89 - рівень якості програмування, для ідеальної програми L = 1;
L' = 0.0741 - рівень якості програмування, заснований лише на параметрах реальної програми без урахування теоретичних параметрів;
EC = 1088 - складність розуміння програми;
D = 16 - трудомісткість кодування програми;
Y' = 4,25 - рівень мови вираження;
I = 8.5 - інформаційний зміст програми, дана характеристика дозволяє визначити розумові витрати на створення програми;
E = 142.4 - оцінка необхідних інтелектуальних зусиль при розробці програми, що характеризує число необхідних елементарних рішень при написанні програми.
Висновок
Під час виконання цієї курсової роботи я: розробив програму на мові високого рівня С++ та побудував для неї алгоритм, закріпив знання та навички з методів тестування роботи програми, розробив тест-кейси, побудував граф програми; закріпив знання набуті під час виконання лабораторних робіт.
Список використаних джерел
1. Інженерія програмного забезпечення - Кучеров Д.П., Артамонов Є.Б., Київ 2017
Размещено на Allbest.ru
Подобные документы
Тестування програмного забезпечення як процес його дослідження для отримання інформації про якість. Автоматизація тестування програми Join It - Jigsaw Puzzle. Методика тестування, структура пакету та його модулів. Вимоги до програмного забезпечення.
дипломная работа [2,4 M], добавлен 24.07.2013Проблеми процесу тестування програмного забезпечення. Розробка алгоритму автоматичної генерації тестів і тестового набору для ручного виконання. Побудова тестів для системи "Банкомат" і для баг-трекінгової системи, представленої графом із циклами.
дипломная работа [1,2 M], добавлен 26.02.2014Огляд існуючих методів розробки компіляторів, детальний опис мови. Характеристика та специфіка процесу розробки програми компілятора на рівні блок-схем і тексту програми. Подання тексту компілятора, а також результатів тестування розробленої програми.
курсовая работа [510,2 K], добавлен 03.06.2011Огляд засобів створення програмного забезпечення сучасних мікроконтролерів. Аналіз методів та налаштувань контролерів. Засоби генерації коду налаштувань. Детальний опис розробки програми генератора налаштувань ядра Cortex M4 та методики її тестування.
курсовая работа [1,3 M], добавлен 20.05.2015Вивчення історії кафедри "Комп’ютерної інженерії". Дослідження процесу складання, монтажу, налагодження, тестування апаратного забезпечення комп’ютерних систем і мереж. Науково-дослідні роботи у лабораторії "Програмного забезпечення комп’ютерних систем".
отчет по практике [23,9 K], добавлен 01.03.2013Програма автотестування (POST). Призначення діагностичного програмного забезпечення, категорії програм діагностики. Використання утилітів пошуку несправностей, неполадок і оптимізації. Проведення тестування комп’ютера за допомогою програми CHECKІT.
лабораторная работа [13,6 K], добавлен 03.10.2010Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.
курсовая работа [991,4 K], добавлен 06.08.2013Дослідження етапів розробки програмної реалізації криптографічного алгоритму RC5. Опис об'єкту, що потребує захисту: операційне середовище, тип програмного забезпечення. Блок-схема алгоритму функціонування програми криптозахисту. Листінг тесту програми.
курсовая работа [4,4 M], добавлен 28.10.2010Класифікація об'єктно-орієнтованих мов програмування. Розробка алгоритмічного та програмного забезпечення комп'ютерної системи управління процесом випалювання будівельних матеріалів. Тестування програмного забезпечення, оцінка його ефективності.
курсовая работа [1,6 M], добавлен 25.04.2015Розробка програми калькулятора, що може виконувати найголовніші арифметичні операції над двома числами. Вимоги до апаратного і програмного забезпечення. Опис форм та компонентів програми. Розробка алгоритмів програмного забезпечення. Опис коду програми.
курсовая работа [57,1 K], добавлен 31.05.2013