конспект лекцій (ТСПП). Конспект лекцій з дисципліни 07 технологія створення програмних продуктів напряму 050101 Компютерні науки
Скачать 14.87 Mb.
|
12.7.Метод "великого стрибка". Метод сандвіча. Модифікований метод сандвіча.Метод "великого стрибка" Ймовірно, найпоширеніший підхід до інтеграції модулів - метод "великого стрибка". Відповідно до цього методу кожен модуль тестується автономно. Після закінчення тестування модулів вони інтегруються в систему усе відразу. Метод "великого стрибка" в порівнянні з іншими підходами має багато недоліків і мало достоїнств. Заглушки і драйвери потрібні для кожного модуля. Модулі не інтегруються до самого останнього моменту, а це означає, що протягом довгого часу серйозні помилки в сполученнях можуть залишитися невиявленими. Якщо програма мала (як, наприклад, програма завантажувача) і добре спроектована, метод "великого стрибка" може виявитися прийнятним. Проте для великих програм метод "великого стрибка" зазвичай згубний. Метод сандвіча Тестування методом сандвіча є компроміс між висхідним і низхідним підходами. Тут робиться спроба скористатися достоїнствами обох методів, уникнувши їх недоліків. При використанні цього методу одночасно починають висхідне і низхідне тестування, збираючи програму як знизу, так і згори і зустрічаючись врешті-решт десь в середині. Точка зустрічі залежить від конкретної тестованої програми і має бути заздалегідь визначена при вивченні її структури. Наприклад, якщо розробник може представити свою систему у вигляді рівня прикладних модулів, потім рівня модулів обробки запитів, потім рівня примітивних функцій, то він може вирішити застосовувати низхідний метод на рівні прикладних модулів (програмуючи заглушки замість модулів обробки запитів), а на інших рівнях застосувати висхідний метод. Метод сандвіча зберігає таку гідність низхідного і висхідного підходів, як початок інтеграції системи на самому ранньому етапі. Оскільки вершина програми вступає в лад рано, ми, як в низхідному методі, вже на ранньому етапі отримуємо працюючий каркас програми. Оскільки нижні рівні програми створюються висхідним методом, знімаються проблеми низхідного методу, які були пов'язані з неможливістю тестувати деякі умови в глибині програми. Модифікований метод сандвіча При тестуванні методом сандвіча виникає та ж проблема, що і при низхідному підході, хоча тут вона коштує не так гостро. Проблема ця в тому, що неможливо досконально тестувати окремі модулі. Висхідний етап тестування по методу сандвіча вирішує цю проблему для модулів нижніх рівнів, але вона може як і раніше залишатися відкритій для нижньої половини верхній частині програми. У модифікованому методі сандвіча нижні рівні також тестуються строго від низу до верху. А модулі верхніх рівнів спочатку тестуються ізольовано, а потім збираються низхідним методом. Таким чином, модифікований метод сандвіча також є компромісом між висхідним і низхідним підходами. 12.8.Комплексне тестування. Проектування комплексного тіста. Виконання комплексного тіста.Комплексне тестування Комплексне тестування, ймовірно, найнезрозуміліша форма тестування. В усякому разі комплексне тестування не є тестуванням усіх функцій повністю зібраної системи; тестування такого типу називається тестуванням зовнішніх функцій. Комплексне тестування - процес пошуків невідповідності системи її початковим цілям. Елементами, що беруть участь в комплексному тестуванні, служать сама система, опис цілей продукту і уся документація, яка поставлятиметься разом з системою. Зовнішні специфікації, які були ключовим елементом тестування зовнішніх функцій, грають лише незначну роль в комплексному тестуванні. Частина аргументів на користь цього має бути вже очевидною: вимірні цілі потрібні, щоб визначити правила для процесів проектування. Інші міркування повинні прояснитися зараз. Якщо цілі сформульовані, наприклад, у вигляді вимоги, щоб система була досить швидкою, цілком надійною і щоб в розумних межах забезпечувалася безпека, тоді немає способу визначити при тестуванні, в якій мірі система досягає своїх цілей. Якщо ви не сформулювали мети вашого продукту або якщо ці цілі неизмеримы, ви не можете виконати комплексне тестування. Комплексне тестування може бути процесом і контролю, і випробувань. Процесом випробувань воно є тоді, коли виконується в реальному середовищі користувача або в обстановці, яка спеціально створена так, щоб нагадувати середовище користувача. Проте така розкіш часто недоступна з ряду причин, і в подібних випадках комплексне тестування системи є процесом контролю (тобто виконується в імітованій, або тестовою, середовищу). Наприклад, у разі бортової обчислювальної системи космічного корабля або системи протиракетного захисту питання про реальне середовище (запуск справжнього космічного корабля або постріл справжньою ракетою) зазвичай не стоїть. Крім того, як ми побачимо далі, деякі типи комплексних тестів не осуществимы в реальній обстановці з економічних міркувань, і краще всього виконувати їх в модельованому середовищі. Проектування комплексного теаа Комплексне тестування - найбільш творчий з усіх видів тестування, що обговорювалися досі. Розробка хороших комплексних тестів вимагає часто навіть більше винахідливості, чим само проектування системи. Тут немає простих рекомендацій типу тестування усіх гілок або побудови функціональних діаграм. Проте наступні 15 пунктів дають деяке уявлення про те, які види тестів можуть знадобитися (мал. 5.3). Тестування стресів. Поширений недолік великих систем полягає в тому, що вони функціонують нібито нормально при слабкому або помірному навантаженні, але виходять з ладу при великому навантаженні і в стресових ситуаціях реального середовища. Тестування стресів є спробами піддати систему крайньому "тиску", наприклад, спробу одночасно підключити до системи розподілу часу 100 терміналів, наситити банківську систему потужним потоком вхідних повідомлень або систему управління - процесами аварійних сигналів від усіх її процесів. Одна з причин, по якій тестування стресів опускають (окрім очевидних логічних проблем, що розглядаються в наступному розділі), полягає в тому, що персонал, що займається тестуванням, хоча і визнає потенційну користь таких тестів, вважає, що такі жорсткі стресові ситуації ніколи не виникнуть в реальному середовищі. Це припущення рідко виправдовується. Наприклад, бувають випадки, коли усі користувачі системи розподілу часу намагаються підключитися в один і той же час (наприклад, коли сталася відмова системи на 1-2 хвилини і система тільки що відновлена). У банківських систем, обслуговуючих термінали покупців, бувають пікові навантаження в перші години роботи магазинів і під час обідньої перерви.
порушать програмні засоби захисту, наприклад, механізм захисту пам'яті операційної системи або механізми захисту даних системи управління базою даних. Одним з шляхів розробки подібних тестів є вивчення відомих проблем захисту в цих системах і генерація тестів, які дозволяють перевірити, як вирішуються аналогічні проблеми в тестованій системі.
Тестування надійності/готовності. Звичайно, призначення усіх видів тестування - підвищити надійність тестованої програми, але якщо в початковому документі, що відбиває цілі програми, є особливі вказівки, що стосуються надійності, можна розробити спеціальні тести для її перевірки. Ключовий момент в комплексному тестуванні полягає в спробі довести, що система не задовольняє початковим вимогам до надійності (середній час між відмовами, кількість помилок, здатність до виявлення, виправленню помилок і/або стійкість до помилок і т. д.). Тестування надійності украй складно, та все ж слід постаратися тестувати якомога більше цих вимог. Наприклад, в систему можна навмисно внести помилки (як апаратні, так і програмні), щоб тестувати засоби виявлення, виправлення і забезпечення стійкості. Інші вимоги до надійності тестувати майже неможливо. Література
Лекція № 13 |