Слайд 1Технології тестування програмного забезпечення
Лекція 1. Поняття тестування та верифікації
Слайд 2Основні визначення
Валідація ПЗ (Validation) — процес, що дозволяє визначити, наскільки точно
з позицій потенційного користувача деяка модель представляє задану суть реального
миру.
Верифікація (в загальному сенсі) - це підтвердження відповідності кінцевого продукту визначеним еталонним вимогам.
Верифікація ПЗ (Verification) - процес, який дозволяє визначити, що розроблене програмне забезпечення точно реалізує концептуальний опис даної системи. Процес перевірки відповідності системи заданими стандартами. .
Validation: did we make the right thing?
Verification: did we make the thing right?
Слайд 3Основні визначення
Глен Маерс
Тестування це процес виконання програм з наміром знайти
помилки.
Glen Myers
"Testing is the process of executing a program
with the intent of finding errors"
Слайд 4Основні визначення
Пол Йоргенсен
Тестування сфокусовано на помилках і збоях. Тест -
виконання дій над ПЗ з метою знайти помилки або продемонструвати
працездатність.
Paul Jorgensen
"Testing is obviously concerned with errors, faults, failures and incidents. A test is the act of exercising software with test cases with an objective of Finding failure Demonstrate correct execution"
Слайд 5Узагальнене визначення тестування
Тестування - процес перевірки відповідності заявлених до продукту
вимог і реально реалізованої функціональності, здійснюваний шляхом спостереження за його
роботою в штучно створених ситуаціях і на обмеженому наборі тестів, обраних певним чином
Слайд 6Історія розвитку тестування ПЗ
Початок - 9 вересня 1947 року.
Вчені Гарвардського
університету тестували обчислювальну машину Mark II Aiken Relay Calculator і
знайшли метелика, що застряг між контактами електромеханічного реле. Извлеченное комаха була вклеєна в технічний щоденник з супровідним написом: "First actual case of bug being found"
Слайд 7Історія розвитку тестування ПЗ
Баг (Bug - жучок) - жаргонне слово,
зазвичай позначає помилку в програмі або системі, яка видає несподіваний
або неправильний результат.
Більшість багів виникають через помилки, допущені розробниками програми в її вихідному коді, або в її дизайні.
Вважається, що випадок з витяганням метелика поклав початок використанню слова «debugging» у значенні «налагодження програми»
Слайд 8Історія розвитку тестування ПЗ
Після цього протягом тривалого часу розробка ПЗ
приділяла основну увагу великомасштабним науковим і військовим програмами, пов'язаними з
системами корпоративних баз даних, системами управління об'єктами, алгоритмами обробки даних.
Тестові сценарії записувалися на папір.
Тестування зазвичай починалося лише після завершення плану-графіка проекту.
Тестування виконувалося тим же персоналом.
Остаточний набір тестових процедур міг ефективно протестувати всю систему повністю.
Слайд 9Історія розвитку тестування ПЗ
Поява настільних комп'ютерів відкрило нову еру в
сфері інформаційних технологій.
Пакетна обробка даних витіснялася системами, що працюють в
реальному часі під управлінням стандартної операційної системи.
Тепер робочі потоки могли викликатися в будь-якому порядку. Ця особливість призвела до появи величезної кількості процедур тестування, здатних підтримати нескінченне число перестановок і поєднань.
Слайд 10Історія розвитку тестування ПЗ
Наступний етап - поява клієнт-серверних додатків, в
тому числі і додатків, що працюють в мережі Інтернет.
Тепер бібліотеки
реалізованих об'єктів могли розташовуватися не тільки на локальній, але і на віддаленій робочій станції з доступом до них через мережу.
Клієнт-серверна архітектура включає в себе три основних компоненти: клієнт, сервер і мережу. Зв'язність цих компонент збільшує ймовірність і число можливих помилок.
Процедури тестування не здатні виконати всі можливі функціональні сценарії.
Слайд 11Історія розвитку тестування ПЗ
Стрімке збільшення числа тестових сценаріїв і все
зростаюча складність їх застосування призвели до усвідомлення необхідності впровадження автоматизації
в процес тестування програмного забезпечення.
Найбільші успіхи - в автоматизації запису і подальшого автоматичного відтворення дій користувача (регресійне тестування, regression testing)
Найбільші перспективи в даний момент - автоматизація генерації тестів і генерації оракулів
Слайд 12Основні визначення
Оракул (Oracle) (Тестовий оракул) - це система, метод або
методика для передбачення або оцінки коректності поведінки системи, призначеної для
тестування, в певних умовах
Налагодження (debug, debugging) - процес пошуку, локалізації та виправлення помилок у програмі [IEEE Std.610-12.1990]
Основна проблема тестування - визначення достатності безлічі тестів для істинності висновку про правильності реалізації програми, а також знаходження безлічі тестів, що має таку властивість.
Слайд 13Еволюція уявлень про тестування
Перевірка відповідності між реальною поведінкою програми і
її очікуваною поведінкою на кінцевому наборі тестів, вибраному певним чином.
[IEEE Guide to Software Engineering Body of Knowledge, SWEBOK, 2004]
Технічне дослідження програми для отримання інформації про її якість з точки зору певного кола зацікавлених осіб. [С. Kaner, 1999]
Це не дія. Це інтелектуальна дисципліна, що має на меті одержання надійного програмного забезпечення без зайвих зусиль на його перевірку. [B. Beizer. Software Testing Techniques, Second Edition. NY: van Nostrand Reinhold, 1990]
Процес спостереження за виконанням програми у спеціальних умовах і винесення на цій основі оцінки будь-яких її аспектів. [ANSI / IEEE standard 610.12-1990: Glossary of SE Terminology. NY: IEEE, 1987]
Процес виконання програми з наміром знайти помилки. [Г.Майерс. Надійність програмного забезпечення. М: Світ, 1980]
Слайд 14Що таке тестування
Пошук дефектів
Порівняння продукту з вимогами
Порівняння продукту з очікуваннями
користувачів
Оцінка продукту на відповідність стандартам
Оцінка готовності продукту до випуску
...
Слайд 16Взаємодія тестувальників і програмістів
Всі знають, що ...
Тестувальники заводять дефекти на
розробників
Розробники виправляють дефекти
А між іншим, ще ...
Розробники надають тестувальникам масу
корисної інформації, що допомагає тестуванню
Тестувальники допомагають програмістам виправляти помилки
Слайд 17Взаємодія тестувальників і аналітиків
Всі знають, що ...
Аналітик збирає вимоги клієнтів
і формулює вимоги до продукту (техзавдання, функціональні специфікації і т.д.)
Аналітик
завжди правий
А між іншим, ще ...
Аналітик теж може помилятися
Тестувальник - клієнт, який використовує програмний продукт більше всіх
Слайд 18Взаємодія тестувальників і керівника проекту
Всі знають, що ...
Керівник проекту несе
відповідальність за випуск продукту в строк
А між іншим, ще ...
Керівник
проекту несе відповідальність за якість продукту, що випускається
Для оцінки якості продукту керівнику проекту потрібна відповідна інформація
Слайд 19Взаємодія тестувальників і клієнтів
Всі знають, що ...
Розробка ПЗ існує завдяки
наявності клієнтів
А між іншим, ще ...
Якість продукту визначається задоволеністю клієнтів
Клієнт
залучений в процес розробки так само як і інші учасники
Якісне тестування можливо лише знаючи яким чином клієнти будуть використовувати продукт
Слайд 20Кроки життєвого циклу розробки ПЗ
Слайд 21Зростання вартості виправлення дефектів в процесі розробки програми
Слайд 22Модель зовнішньої та внутрішньої якості ПЗ ISO/IEC 9126 (2001)
Слайд 23Тестування (testing) – це:
Процес використання ПЗ при умові аналізу
або запису отримуваних результатів з метою перевірки (оцінки) деяких властивостей
тестованого об'єкту. (The process of operating а system or component under specified conditions, observing or recording the results, and making an evaluation of some aspect of the system or component).
Процес аналізу ПЗ з метою виявлення відмінностей між створеним станом ПЗ та зазначеним у специфікації (що свідчить про прояв помилки) при експериментальній перевірці відповідного пункту вимог. (The process of analyzing а software item to detect the differences between existing and required conditions (that is, bugs))
Контрольоване виконання програми на множині тестових даних і аналіз результатів цього виконання для пошуку помилок.
Слайд 24Тест (Test)
Тест (Test) – контрольна задача для перевірки коректності функціонування
ПЗ. Групу взаємозв’язаних тестів називають комплектом тестів (test suite).
Слайд 25Контрольний приклад (test case).
Контрольний приклад в сенсі тестування – записи,
що відносяться до тесту, а саме, звіти, що містять:
Вхідні
дані тесту – інформація, яку програма отримує із зовнішнього джерела, як то пристрій, інша програма або людина.
Умови виконання – вимоги для проведення тесту, наприклад, певний стан бази даних або конфігурація пристрою.
Очікувані вихідні дані – передбачуваний результат роботи коду.
Слайд 26Якість ПЗ
Методи забезпечення якості є техніками, що гарантують досягнення певних
показників якості при їх застосуванні.
Методи контролю якості дозволяють переконатися,
що певні характеристики якості ПЗ досягнуті. Самі по собі вони не можуть допомогти їх досягненню, вони лише дають змогу визначити, чи вдалося отримати в результаті те, що хотілося, чи ні, а також знайти помилки, дефекти і відхилення від вимог.
Слайд 27Методи контролю якості ПЗ можна класифікувати таким чином:
Методи та техніки,
пов'язані з аналізом властивостей ПЗ під час його роботи. Це,
перш за все, всі види тестування, а також вимірювання кількісних показників якості, які можна визначити за наслідками роботи ПЗ, — ефективність за часом й іншими ресурсами, надійність, доступність та ін.
Методи та техніки визначення показників якості на основі симуляції роботи ПЗ за допомогою моделей різного роду. До цього вигляду відносяться перевірка на моделях (model checking), а також прототипіювання (макетування), що використовується для оцінки якості прийнятих рішень.
Методи та техніки, націлені на виявлення порушень формалізованих правил побудови початкового коду ПЗ, проектних моделей та документації. До методів такого роду відноситься інспекція коду, що полягає в цілеспрямованому пошуку певних дефектів і порушень вимог в коді на основі набору шаблонів; автоматизовані методи пошуку помилок в коді, не засновані на його виконанні; методи перевірки документації на узгодженість і відповідність стандартам.
Методи та техніки звичайного або формалізованого аналізу проектної документації і початкового коду для виявлення їх властивостей. До цієї групи відносяться численні методи аналізу архітектури ПЗ, методи формального доказу властивостей ПЗ і формального аналізу ефективності вживаних алгоритмів.