Software Quality Assurance & Testing
For students and professionals

Introduction to the Software Assurance & Testing (ukrainian)


Дисципліна «Якість програмного забезпечення та тестування» вивчає задачі забезпечення якості при розробці програмного забезпечення і продовжує підготовку студента за напрямом 6.050103 «Програмна інженерія».

Основною метою дисципліни є вивчення сучасних парадигм та технологій забезпечення якості програмного забезпечення при його розробці.

Головними задачами вивчення дисципліни є оволодіння студентами методами тестування, верифікації і валідації; вивчення студентами підходів до створення звітності по проблемах при розробці програмного забезпечення; ознайомлення студентів з сучасними статистичними методами та інструментальними засобами контролю якості.
В результаті вивчення дисципліни студент повинен:

ЗНАТИ:

  • поняття якості;
  • основні принципи культури якості;
  • стандарти якості;
  • методи верифікації й валідації;
  • статистичні підходи до контролю якості;
  • процеси інспекції і рецензування.

ВМІТИ:

  • аналізувати процес розробки програмного забезпечення з метою оцінки якості;
  • здійснювати ефективні і кваліфіковані інспекції;
  • використовувати статистичні методи для оцінювання щільності дефектів та імовірності відмови;
  • проектувати і реалізовувати плани з комплексного тестування;
  • застосовувати різноманітні методи тестування ефективно і кваліфіковано;
  • розраховувати покриття і результативність тестування на основі багатьох критеріїв;
  • використовувати засоби для автоматизованого тестування;
  • створювати звіти на основі результатів випробувань.

ЗМІСТ НАВЧАЛЬНОЇ ДИСЦИПЛІНИ

Тема 1. Основи якості програмного забезпечення.

Область знань «якість програмного забезпечення». Аспекти визначення якості та її атрибути. Концепції і культура якості. Кодекс етики програмної інженерії. Парадигма «вбудови» якості в інженерії програмного забезпечення. Базові ідеї моделі «розгортання» якості . Компоненти моделі. Матриця «дім якості». Методологія «розгортання» якості для програмних систем. Сертифікація програмного забезпечення. Забезпечення гарантії якості в життєвому циклі. Значення і вартість якості. Діяльність групи якості по моніторингу процесів на кожній стадії життєвого циклу. Профілі процесів контролю якості. Елементи профілю процесу. Форми документів процесу контролю якості. Процеси підвищення якості. План якості. Стандарти в інженерії якості. Інструменти аналізу якості.

Тема 2.  Характеристики і моделі якості.

Метрика як основа вимірювання. Класифікація мір якості. Класифікація метрик якості. Ключові метрики для контролю розробки програмного забезпечення. Узагальнена модель якості. Метрики в узагальненій моделі якості. Ієрархічні та не ієрархічні моделі якості програмних систем. Байєсовський підхід до моделювання якості. Графічні моделі якості. Методи оцінки значень показників якості. Основні поняття в проблематиці надійності програмних систем. Класифікація моделей оцінки надійності. Побудова і застосування метрик і моделей якості. Специфікація вимог до якості.

Тема 3.  Процеси управління якістю програмного забезпечення.

Перевірка тексту програм за столом і наскрізь. Оцінка управління. Технічні оцінки. Прогонки. Аудити. Елементи процесу інспекції. Етап планування процесу інспекції. Етап огляду. Етап підготовки. Інспекційна нарада. Етап додаткового обговорення. Етап переробки робочого продукту. Перевірка внесених змін або повторна інспекція. Підвищення ефективності процесу інспекції. Вимоги до робочих продуктів, що проходять процес інспектування. Процеси перевірки в життєвому циклі та їх призначення. Мета і задачі верифікації та валідації. Управління верифікацією та валідацією. Класифікація методів перевірки програмних систем. Огляд аналітичних методів. Огляд методів колективної перевірки.

Тема 4. Основи тестування програмного забезпечення. Види і рівні тестування.

Термінологія тестування. Збій і відмова. Класифікація дефектів, знайдених при тестуванні. Типи дефектів. Критерії відбору і адекватності тестів. Метрики підрахунку дефектів. Метрики покриття. Метрики динаміки знаходження дефектів. Критерії завершення тестування. Модель процесу тестування. Структура процесу тестування. Створення групи з тестування. Аналіз ризиків. Визначення об’єктів тестування. Розробка плану тестування. Розробка тестів. Розподіл обов’язків по виконанню процесу тестування. Ефективність тестування. Проблема оракула. Теоретичні і практичні обмеження. Зв’язок тестування з іншими видами діяльності. Автономне та інтеграційне тестування. Тестування програмного забезпечення системи. Системне тестування. Модульне тестування. Тестування методами «білого ящику», «сірого ящику» і «чорного ящику». Інтеграційне тестування. Системне тестування. Кваліфікаційні випробування. Тестування інсталяцій. Альфа- і бета-тестування. Регресійне і повторне тестування. Функціональне тестування. Тестування безпеки. Тестування ергономічності. Тестування технічних характеристик. Тестування на надійність. Тестування швидкодії. Тестування конфігурації. Порівняльне тестування. Тестування для перевірки системи після відновлення. Розробка, що управляється тестуванням.

Тема 5. Техніки тестування.

Класифікація технік тестування. Техніки, що базуються на досвіді й інтуїції. Спеціалізоване тестування. Дослідне тестування. Техніки, що базуються на специфікації. Еквівалентне розділення. Аналіз граничних значень. Таблиці прийняття рішень. Техніки, що базуються на аналізі коду. Тести на основі скінченого автомату. Тестування на основі формальної специфікації. Випадкове тестування. Техніки, орієнтовані на код. Тести, що базуються на блок-схемі. Тести на основі потоках даних. Тестування, орієнтоване на дефекти. Тестування мутацій. Техніки, що базуються на аналізі подальшого використання. Статистичне тестування. Операційний профіль. Функціональне і структурне тестування. Тестування об’єктно-орієнтованих програм. Тестування веб-застосувань. Тестування графічного інтерфейсу користувача. Тестування систем реального часу. Тестування критичних систем. Класифікація інструментів тестування. Вибір інструментів тестування. Методи аналізу показників функціональності. Методи вимірювання, що базуються на концепції функціонального розміру. Визначення розміру веб-застосувань. Стандартизація методів вимірювання розміру. Огляд основних методів оцінки затрат.

Тема 6. Аналіз результатів тестування. Методології покращення якості в сучасній парадигмі.

Вимірювання результатів тестування. Аналіз причин і наслідків відмови. Підготовка рішень і рекомендацій по результатах тестування. Підготовка звіту про результати тестування. Перевірка рішень і звіту групою з тестування, розробниками і замовниками. Цикл управління якістю. Підхід до управління якості в системі Ф. Тейора. Статистичне управління процесами. Філософія тотального управління якістю. Методи покращення якості. Процеси розробки та методології підготовки програмних рішень. Процеси розробки в Agile-методологіях. Екстремальне програмування. Методологія SCRUM. Підхід «чистої кімнати» до забезпечення якості. Порівняння методологій покращення процесу розробки.

Author: Mariya Bezverkha.