Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тестування (testing) - процес виконання програми (чи частини програми) з наміром (чи метою) знайти помилки

Основні визначення. Економіка тестування.

Тестування - процес виконання програми з наміром знайти помилки.

Самостійна робота

План лекції

Тема 12. Тестування та налагодження програмних застосувань.

Лекція № 12

1. Основні визначення. Економіка тестування.

2. Тестування програми як "чорного ящика". Тестування програми як "білого ящика".

3. Аксіоми (принципи) тестування.

4. Філософія тестування. Тестування модулів.

5.Покрокове тестування. Висхідне тестування. Низхідне тестування.

6.Метод "великого стрибка". Метод сандвіча. Модифікований метод сандвіча.

7.Комплексне тестування. Проектування комплексного тіста. Виконання комплексного тіста.

Зміст лекції

Багато організацій, що займаються створенням програмного забезпечення, до 50% засобів, виділених на розробку програм, витрачають на тестування, що складає мільярди доларів по всьому світу в цілому. Та усе ж, незважаючи на величезні капіталовкладення, знань про суть тестування явно не вистачає, і більшість програмних продуктів неприйнятна, ненадійно навіть після "Грунтовного тестування".

Тестування виявляється досить незвичайним процесом (вісь чому воно і вважається важким), оскільки це процес руйнівний. Адже мета перевіряючого (тестовика) - змусити програму збитися. Він задоволений, якщо це йому вдається; якщо ж програма на його тісті не збивається, він не задоволений.

""Тестування - процес, що підтверджує правильність програми і що демонструє, що помилок в програмі немає". Основний недолік подібного визначення полягає в тому, що воно абсолютно неправильно; фактично це майже визначення антоніма слова "тестування". Тому визначення описує нездійсненне завдання, а оскільки тестування частенько усе ж виконується з успіхом, принаймні з деяким успіхом, то таке визначення логічно некоректно. Правильне визначення тестування таке:

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

Доказ (proof) - спроба знайти помилки в програмі безвідносно до зовнішнього для програми середовища. Більшість методів доказу припускають формулювання тверджень про поведінку програми і потім вивід і доказ математичних теорем про правильність програми. Докази можуть розглядатися як форма тестування, хоча сморід і не припускають прямого виконання програми. Багато дослідників вважають доказ альтернативою тестуванню - погляд багато в чому помилковий.

Контроль (verification) - спроба знайти помилки, виконуючи програму в тестовій, або модельованою, середовищу.

Випробування (validation) - спроба знайти помилки, виконуючи програму в заданому реальному середовищі.

Атестація (certification) - авторитетне підтвердження правильності програми. При тестуванні з метою атестації виконується порівняння з деяким заздалегідь визначеним стандартом.

Відладка (debugging) не є різновидом тестування. Хоча слова "відладка" і "тестування" часто використовуються як синоніми, під ними маються на увазі різні відіа діяльності. Тестування - діяльність, спрямована на виявлення помилок; відладка спрямована на встановлення точної природи відомої помилки, а потім - на виправлення цієї помилки. Ці два відіа діяльності пов'язано - результати тестування є початковими даними для відладки.

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

Модуля Тестування, або автономне тестування (module testing, unit testing), - контроль окремого програмного модуля, зазвичай в ізольованому середовищі (т. е. ізольовано від усіх інших модулів). Тестування модуля іноді включає також математичний доказ.

Тестування сполучень (integration testing) - контроль сполучень між частинами системи (модулями, компонентами, підсистемами).

Тестування зовнішніх функцій (external function testing) - контроль зовнішньої поведінки системи, визначеної зовнішніми специфікаціями.

Комплексне тестування (system testing) - контроль і/або випробування системи по відношенню до початкових цілей. Комплексне тестування є процесом контролю, якщо воно виконується в модельованому середовищі, і процесом випробування, якщо виконується в середовищі реальному, життєвому.

Тестування прийнятності (acceptance testing) - перевірка відповідності програми вимогам користувача.

Тестування налаштування (installation testing) - перевірка відповідності шкірного конкретного варіанту установки системи з метою виявити будь- які помилки, що виникли в процесі налаштування системи.

 

12.2. Тестування програми як "чорного ящика". Тестування програми як "білого ящика".

Тестування програми як "чорного ящика"

Одним із способів вивчення поставленого питання є дослідження стратегії тестування, званою стратегією "чорного ящика", тестуванням з управлінням за даними або тестуванням з управлінням по входу-виходу. При використанні цієї стратегії програма розглядається як "чорний ящик". Іншими словами, таке тестування має на меті з'ясування обставин, в яких поведінка програми не відповідає специфікації. Тестові ж дані використовуються тільки відповідно до специфікації програми (т. е. без урахування знань про її внутрішню структуру).

При такому підході виявлення усіх помилок в програмі є критерієм вичерпного вхідного тестування. Останнє може бути досягнуте, якщо як тестові набори використовувати усі можливі набори вхідних даних.

Якщо таке випробування представляється складним, то ще складніше створити вичерпний тест для великої програми. Образно кажучи, число тестів можна оцінити "числом більшим, ніж нескінченність".

Побудова вичерпного вхідного тіста неможлива. Це підтверджується двома аргументами: по-перше, не можна створити тест, що гарантує відсутність помилок; по-друге, розробка таких тестів суперечить економічним вимогам. Оскільки вичерпне тестування виключається, нашою метою повинна статі максимізація результативності капіталовкладень в тестування (іншими словами, максимізація числа помилок, що виявляються одним тестом). Для цього мі можемо розглядати внутрішню структуру програми і робити деякі розумні, але, звичайно, що не мають повної гарантії достовірності припущення.

Тестування програми як "білого ящика"

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

Порівнянний спосіб побудови тестів при цій стратегії з вичерпним вхідним тестуванням стратегії "чорного ящика". Необізнаному може здатися, що досить побудувати такий набір тестів, в якому кожен оператор виконується хоч би один раз; неважко показати, що це невірно. Не вдаючись до деталей, вкажемо лише, що вичерпному вхідному тестуванню може бути поставлене у відповідність вичерпне тестування маршрутів. Мається на увазі, що програма перевірена повністю, якщо за допомогою тестів вдається здійснити виконання програми по усіх можливих маршрутах її потоку (графа) передач управління.

Останнє твердження має два слабкі пункти. Перший з них полягає в тому, що число маршрутів, що не повторюють один одного, в програмі - астрономічне. Другий слабкий пункт твердження полягає в тому, що, хоча вичерпне тестування маршрутів є повним тестом і хоча кожен маршрут програми може бути перевірений, сама програма міститиме помилки. Це пояснюється таким чином.

По-другу, програма може бути невірною внаслідок того, що пропущені деякі маршрути. Вичерпне тестування маршрутів не виявить їх відсутності.

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

По- третє, вичерпне тестування маршрутів не може виявити помилок, поява яких залежить від оброблюваних даних.

 

<== предыдущая лекция | следующая лекция ==>
Керівництво програміста. Керівництво оператора. Опис мови | Філософія тестування
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 826; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.