
- •Місце тестування у життєвому циклі програмних продуктів
- •Жц розробки пз із завданнями і діями для процесу тестування
- •Визначте процеси досягнення надійності на жц
- •Задачі процесу тестування
- •Моделі якості пз
- •Визначте характеристики якості пс і їхнє призначення
- •Основні цілі й завдання системи керування якістю.
- •Які методи визначають показники якості?
- •Визначте метрики програмного продукту і їхні складові.
- •Методи контролю якості
- •Методи забезпечення якості
- •Поняття тестування
- •Основні задачі процесу тестування
- •Рівні тестування
- •Види тестування
- •Поняття тестів та тестового покриття
- •Перевірка на моделях
- •Помилки в програмах
- •Завдання і цілі процесу верифікації
- •Забезпечення якості
- •Метрики по забезпеченню якості
- •Метрики якості
- •Метрики програмного продукту
- •Метрики використання
- •Поняття якості пз
- •Рівні подання моделі якості пз
- •Що таке сертифікація програмного продукту
- •Процес верифікації
- •Процес валідації
- •Підхід до валідації сценарію вимог
- •Верифікація об’єктних моделей
- •Процес тестування за життєвим циклом
- •Поняття тесту
- •Тестові артефакти
- •Тест план
- •Тестовий випадок (Test Case)
- •Тест дизайн
- •Важливість і пріоритет дефекту
- •Градація серйозності дефектів
- •Вимоги до кількості відкритих багів
- •Помилки при написанні баг репортів
- •Техніка, що базується на інтуїції і досвіді інженера (Based on the software engineer’s intuition and experience)
- •Техніка, що базується на специфікації (Specification-based techniques)
- •Техніка, орієнтована на код (Code-based techniques)
- •Тестування, орієнтоване на дефекти (Fault-based techniques)
- •Техніки, що базуються на умовах використання
- •Техніки, що базуються на природі додатку
- •Функціональні види тестування
- •Нефункціональні види тестування
Техніка, що базується на інтуїції і досвіді інженера (Based on the software engineer’s intuition and experience)
Спеціалізоване тестування (Ad hoc testing)
Можливо, найбільш застосована техніка. Тести грунтуються на досвіді, інтуїції і знаннях інженера, що розглядає проблему з погляду аналогій, що були раніше. Даний вид тестування може бути корисний для ідентифікації тих тестів, які не охоплюються більш формалізованою технікою.
Дослідницьке тестування (Exploratory testing)
Таке тестування визначається як одночасне навчання, проектування тесту і його виконання. Даний вид тестування заздалегідь не визначається в плані тестування і такі тести створюються, виконуються і модифікуються динамічно, в міру необхідності. Ефективність дослідницьких тестів безпосередньо залежить від знань інженера, що формуються на основі поведінки тестованого продукту в процесі проведення тестування, ступеня знайомства із застосуванням, платформою, типами можливих збоїв і дефектів, ризиками, що асоціюються з конкретним продуктом і тому подібне
Техніка, що базується на специфікації (Specification-based techniques)
Еквівалентне розділення <застосування> (Equivalence partitioning)
Дана область застосування розділяється на колекцію наборовши або еквівалентних класів, які вважаються еквівалентними з погляду даних зв'язків і характеристик <специфікації>. Репрезентативний набір тестів (іноді – тільки один тест) формується з тестів еквівалентних класів (або наборів класів).
Аналіз граничних значень (Boundary-value analysis)
Тести будуються з орієнтацією на використання тих величин, які визначають граничні характеристики тестованої системи. Розширенням цієї техніки є тести оцінки живучості (robustness testing) системи, що проводяться з величинами, що виходять за рамки специфікованих меж значень.
Таблиці ухвалення рішень (Decision table)
Такі таблиці представляють логічні зв'язки між умовами (можуть розглядатися як “входи”) і діями (можуть розглядатися як “виходи”). Набір тестів будується послідовним розглядом всіх можливих кросс-связей в такій таблиці.
Тести на основі кінцевого автомата (Finite-state machine-based)
Будуються як комбінація тестів для всіх станів і переходів між станами, представлених у відповідній моделі (переходів і станів застосування).
Тестування на основі формальної специфікації (Testing from formal specification)
Для специфікації, визначених з використанням формальної мови, можливо автоматично створювати і тести для функціональних вимог. У ряді випадків можуть будується на основі моделі, частиною специфікації, що не використовує формальної мови опису, що є.
Випадкове тестування (Random testing)
На відміну від статистичного тестування (розглядатиметься в 5.1.5.1 “Operational profile”), самі тести генеруються випадковим чином за списком заданого набору специфікованих характеристик.
Техніка, орієнтована на код (Code-based techniques)
Тести, що базуються на блок-схемі (Control-flow-based criteria)
Набір тестів будується виходячи з покриття всіх умов і вирішень блок-схеми. Якоюсь мірою нагадує тести на основі кінцевого автомата. Відмінність – в джерелі набору тестів.
Максимальна віддача від тестів на основі блок-схеми виходить коли тести покривають різні шляхи блок-схеми – по-сути, сценарії потоків робіт (поведінки) тестованої системи. Адекватність таких тестів оцінюється як відсоток покриття всіх можливих шляхів блок-схеми.
Тести на основі потоків даних (Data-flow-based criteria)
В даних тестах відстежується повний життєвий цикл величин (змінних) – з моменту народження (визначення), на всьому протязі використання, аж до знищення (невизначеності). У реальній практиці використовуються нестроге тестування такого вигляду, орієнтоване, наприклад, тільки на перевірку завдання початкових значень всіх змінних або всіх входжень змінних в код, з погляду їх використання.
Посилальні моделі для тестування, орієнтованого на код (Reference models for code-based testing – flowgraph, call graph)
Є не стільки технікою тестування, скільки контролем структури програми, представленої у вигляді дерева викликів (наприклад, sequence-диаграммы, визначеної в нотації UML і побудованої на основі аналізу коди).