Тестування програмного забезпечення (англ. software testing) — це процес технічного дослідження, призначений для виявлення інформації про якість продукту відносно контексту, в якому його мають використовувати. Техніка тестування також включає як процес пошуку помилок або інших дефектів, так і випробування програмних складових із метою оцінки.
Тестування програмного забезпечення — процес перевірки відповідності заявлених до продукту вимог і реально реалізованої функціональності, який здійснюють шляхом спостереження за його роботою в штучно створених ситуаціях і на обмеженому наборі тестів, обраних певним чином.
Можуть оцінювати:
- відповідність вимогам, якими керувалися проєктувальники та розробники,
- правильність відповіді для всіх можливих вхідних даних,
- виконання функцій за прийнятний час,
- практичність,
- сумісність із програмним забезпеченням та операційними системами,
- відповідність задачам замовника.
Оскільки число можливих тестів навіть для нескладних програмних компонентів практично нескінченне, тому стратегія тестування полягає в тому, щоби провести всі можливі тести з урахуванням наявного часу та ресурсів. Як результат програмне забезпечення (ПЗ) тестують стандартним виконанням програми з метою виявлення багів (помилок або інших дефектів).
Тестування ПЗ може надавати об'єктивну, незалежну інформацію про якість ПЗ, ризики відмови, як для користувачів, так і для замовників.
Тестування можна проводити, як тільки створено виконуваний код (навіть частково завершений). Процес розробки зазвичай передбачає, коли та як буде відбуватися тестування. Наприклад, при поетапному процесі більшість тестів відбувається після визначення системних вимог і тоді вони реалізуються в тестових програмах. На противагу цьому, відповідно до вимог гнучкої розробки ПЗ, програмування і тестування часто відбувається одночасно.
Вступ
Тестування програмного забезпечення — техніка контролю якості, що перевіряє відповідність між реальною і очікуваною поведінкою програми завдяки кінцевому набору тестів, які обираються певним чином.
Якість не є абсолютною, це суб'єктивне поняття. Тому тестування, як процес своєчасного виявлення помилок та дефектів, не може повністю забезпечити коректність програмного забезпечення. Воно тільки порівнює стан і поведінку продукту зі специфікацією. При цьому треба розрізняти тестування програмного забезпечення й забезпечення якості програмного забезпечення, до якого належать всі складові ділового процесу, а не тільки тестування.
Зазвичай, поняття якості обмежується такими поняттями як коректність, надійність, практичність, безпечність, але може містити більше технічних вимог, котрі описані у стандарті ISO 9126. Склад та зміст супутньої документації процесу тестування визначається стандартом IEEE 829—1998 Standard for Software Test Documentation. Існує багато підходів до тестування програмного забезпечення, але ефективне тестування складних продуктів — це по суті дослідницький та творчий процес, а не тільки створення та виконання рутинної процедури.
Історія розвитку тестування програмного забезпечення
Перші програмні системи розробляли в межах програм наукових досліджень або програм для потреб міністерств оборони. Тестування таких продуктів проводили суворо формалізовано із записом усіх тестових процедур, тестових даних, отриманих результатів. Тестування виділялося в окремий процес, який починався після завершення кодування, але при цьому, як правило, виконувалося тим же персоналом.
У 1960-х багато уваги приділялося «вичерпному» тестуванню, яке повинно проводитися з використанням усіх шляхів у коді або всіх можливих вхідних даних. Було відзначено, що в цих умовах повне тестування ПЗ неможливе, тому що, по-перше, кількість можливих вхідних даних дуже велика, по-друге, існує безліч шляхів, по-третє, складно знайти проблеми в архітектурі та специфікаціях. З цих причин «вичерпне» тестування було відхилено й визнано теоретично неможливим.
На початку 1970-х тестування ПЗ розглядалося як «процес, спрямований на демонстрацію коректності продукту» або як «діяльність із підтвердження правильності роботи ПЗ». У програмній інженерії, яка в той час зароджувалася, верифікація ПЗ визначалася як «доказ правильності». Хоча концепція була теоретично перспективною, на практиці вона вимагала багато часу й не охоплювала всі аспекти тестування. Було вирішено, що доказ правильності — неефективний метод тестування ПЗ. Однак, у деяких випадках демонстрація правильної роботи використовується і в наші дні, наприклад, приймально-здавальні випробування. У другій половині 1970-х тестування представлялося як виконання програми з наміром знайти помилки, а не довести, що вона працює. Успішний тест — це тест, який виявляє раніше невідомі проблеми. Цей підхід цілком протилежний попередньому. Зазначені два визначення являють собою «парадокс тестування», в основі якого лежать два протилежних твердження: з одного боку, тестування дозволяє переконатися, що продукт працює добре, а з іншого — виявляє помилки у ПЗ, показуючи, що продукт не працює. Друга мета тестування є продуктивнішою з точки зору поліпшення якості, оскільки не дозволяє ігнорувати недоліки ПЗ.
У 1980-х тестування розширилося таким поняттям як запобіганням дефектам. Проєктування тестів — найефективніший із відомих методів запобігання помилок. В цей же час почали висловлюватися думки, що необхідна методологія тестування, зокрема, що тестування повинно включати перевірки впродовж усього циклу розроблення, при цьому це має бути керований процес. В ході тестування треба перевірити не тільки зібрану програму, але й вимоги, код, архітектуру, самі тести. «Традиційне» тестування, яке існувало до початку 1980-х, відносилося тільки до скомпільованої, готової системи (зараз це зазвичай називається системне тестування), але надалі тестувальники стали залучатися в усі аспекти життєвого циклу розроблення. Це дозволяло раніше знаходити проблеми у вимогах та архітектурі й тим самим скорочувати терміни та бюджет розроблення. У середині 1980-х з'явилися перші інструменти для автоматизованого тестування. Передбачалося, що комп'ютер зможе виконати більше тестів, ніж людина, причому зробить це більш надійно. Спочатку ці інструменти були вкрай простими й не мали можливості написання сценаріїв на скриптових мовах.
На початку 1990-х у поняття «тестування» стали включати планування, проєктування, створення, підтримку й виконання тестів та тестових оточень, а це означало перехід від тестування до забезпечення якості, що охоплює весь цикл розроблення ПЗ. У цей час починають з'являтися різні програмні інструменти для підтримки процесу тестування: більш просунуті середовища для автоматизації з можливістю створення скриптів і генерації звітів, системи управління тестами, ПЗ для проведення навантажувального тестування. У середині 1990-х із розвитком Інтернету й розробленням великої кількості вебзастосунків особливої популярності стало набувати «гнучке тестування» (за аналогією з гнучкими методологіями програмування).
У 2000-х з'явилося ще ширше визначення тестування, коли в нього було додано поняття «оптимізація бізнес-технологій». BTO направляє розвиток інформаційних технологій згідно з цілями бізнесу. Основний підхід полягає в оцінці та максимізації значущості всіх етапів життєвого циклу розроблення ПЗ для досягнення необхідного рівня якості, продуктивності, доступності.
Основні поняття та визначення
Тестування — це одна з технік контролю якості, що охоплює
- Планування робіт (Test Management)
- Проєктування тестів (Test Design)
- Виконання тестування (Test Execution)
- Аналіз отриманих результатів (Test Analysis).
Верифікація (Verification) — це процес оцінки системи або її компонентів із метою визначити чи задовольняють результати поточного етапу розробки умовам, сформованим на початку цього етапу. Тобто чи виконуються цілі, терміни, завдання з розробки проєкту, визначені на початку поточної фази. Валідація (Validation) — це визначення відповідності розроблюваного програмного забезпечення очікуванням і потребам користувача, вимогам до системи.
План Тестування (Test Plan) — це документ, що описує весь обсяг робіт із тестування, починаючи з опису об'єкта, стратегії, розкладу, критеріїв початку і закінчення тестування, до необхідного в процесі роботи обладнання, спеціальних знань, а також оцінки ризиків із варіантами їх вирішення.
Тест дизайн (Test Design) — це етап процесу тестування програмного забезпечення, на якому проєктуються і створюються тестові випадки (тест кейси), відповідно до визначених раніше критеріями якості та цілями тестування.
Тестовий випадок (Тест кейс/Test Case) — це документ, що описує сукупність кроків, конкретних умов і параметрів, необхідних для перевірки реалізації тестованої функції або її частини.
Баг/Дефект Репорт (Bug Report) — це документ, що описує ситуацію або послідовність дій (Steps), що призвела до некоректної роботи об'єкта тестування (Misbehavior), із зазначенням причин та очікуваного результату (Expected Result).
Тестове Покриття (Test Coverage) — це одна з метрик оцінки якості тестування, що представляє із себе щільність покриття тестами вимог або коду, що виконується.
Деталізація Тест Кейсів (Test Case Specification) — це рівень деталізації опису тестових кроків і необхідного результату, при якому забезпечується розумне співвідношення часу проходження до тестового покриття.
Час Проходження Тест Кейса (Test Case Pass Time) — це час від початку проходження кроків тест кейса до отримання результату тесту.
Методи тестування
Статичне та динамічне тестування
Тестова діяльність, що пов'язана з аналізом результатів розробки програмного забезпечення, називається статичним тестуванням. Воно передбачає перевірку програмних кодів, контроль та перевірку програми без запуску на комп'ютері. Тестова діяльність, що передбачає експлуатацію програмного продукту, називається динамічним тестуванням. Динамічне та статичне тестування доповнюють одне одного.
На етапі статичного тестування перевіряється вся документація, отримана як результат життєвого циклу програми. Це і технічне завдання, і специфікація, і вихідний текст програми мовою програмування. Всю документацію аналізують на предмет дотримання стандартів програмування. У результаті статичної перевірки встановлюється, наскільки програма відповідає заданим критеріям та вимогам замовника. Усунення неточностей та помилок у документації — запорука того, що створюваний програмний засіб має високу якість.
Динамічні методи застосовуються в процесі безпосереднього виконання програми. Коректність програмного засобу перевіряється на безлічі тестів або наборів підготовлених вхідних даних. При прогоні кожного тесту збирають та аналізують дані про відмови та збої в роботі програми.
Тестування «білої скриньки»
Відома: внутрішня структура програми.
Досліджуються: внутрішні елементи програми і зв'язки між ними.
Об'єктом тестування тут є не зовнішня, а внутрішня поведінка програми. Перевіряється коректність побудови всіх елементів програми та правильність їхньої взаємодії один з одним. Зазвичай аналізують керуючі зв'язки елементів, рідше — інформаційні зв'язки. Тестування за принципом «білої скриньки» характеризується ступенем, в якому тести виконують або покривають логіку (вихідний текст) програми.
Особливості тестування «білої скриньки»
Зазвичай тестування «білої скриньки» засноване на аналізі керуючої структури програми. Програма вважається повністю перевіреною, якщо проведено вичерпне тестування маршрутів (шляхів) її графа управління.
У цьому випадку формуються тестові варіанти, в яких:
- Гарантується перевірка всіх незалежних маршрутів програми.
- Знаходяться гілки True, False для всіх логічних рішень.
- Виконуються всі цикли (у межах їхніх кордонів та діапазонів).
- Аналізується правильність внутрішніх структур даних.
Недоліки тестування «білої скриньки»:
- Кількість незалежних маршрутів може бути дуже велика.
- Повне тестування маршрутів не гарантує відповідності програми вихідним вимогам до неї.
- У програмі можуть бути пропущені деякі маршрути.
- Не можна виявити помилки, поява яких залежить від даних.
Переваги тестування «білої скриньки» пов'язані з тим, що принцип «білої скриньки» дозволяє врахувати особливості програмних помилок:
- Кількість помилок мінімально в «центрі» і максимально на «периферії» програми.
- Попередні припущення про ймовірність потоку керування або даних у програмі часто бувають некоректними. У результаті типовим може стати маршрут, модель обчислень за яким опрацьована слабо.
- При записі алгоритму програмного забезпечення у вигляді тексту мовою програмування можливе внесення типових помилок трансляції (синтаксичних та семантичних).
- Деякі результати в програмі залежать не від вихідних даних, а від внутрішніх станів програми.
Кожна з цих причин є аргументом для проведення тестування за принципом «білої скриньки». Тести «чорної скриньки» не зможуть реагувати на помилки таких типів.
Тестування «чорної скриньки»
Відомі: функції програми.
Досліджується: робота кожної функції на всій області визначення.
Основне місце програми тестів «чорної скриньки» — інтерфейс ПЗ.
Ці тести демонструють:
- Як виконуються функції програми.
- Як приймаються вихідні дані.
- Як виробляються результати.
- Як зберігається цілісність зовнішньої інформації.
При тестуванні «чорної скриньки» розглядаються системні характеристики програм, ігнорується їхня внутрішня логічна структура. Вичерпне тестування, як правило, неможливе. Наприклад, якщо в програмі 10 вхідних величин і кожна приймає по 10 значень, то кількість тестових варіантів становитиме 1010. Тестування «чорної скриньки» не реагує на багато особливостей програмних помилок.
Тестування «чорної скриньки» (функціональне тестування) дозволяє отримати комбінації вхідних даних, які забезпечують повну перевірку всіх функціональних вимог до програми. Програмний виріб тут розглядається як «чорна скринька», чию поведінку можна визначити тільки дослідженням його входів та відповідних виходів. При такому підході бажано мати:
- Набір, утворений такими вхідними даними, які призводять до аномалій у поведінці програми (назвемо його IT);
- Набір, утворений такими вхідними даними, які демонструють дефекти програми (назвемо його OT).
Будь-який спосіб тестування «чорної скриньки» повинен:
- Виявити такі вхідні дані, які з високою ймовірністю належать набору IT;
- Сформулювати такі очікувані результати, які з високою імовірністю є елементами набору OT.
Принцип «чорної скриньки» не альтернативний принципу «білої скриньки». Скоріше це доповнює підхід, який виявляє інший клас помилок.
Тестування «чорної скриньки» забезпечує пошук наступних категорій помилок:
- Некоректних чи відсутніх функцій;
- Помилок інтерфейсу;
- Помилок у зовнішніх структурах даних або в доступі до зовнішньої бази даних;
- Помилок характеристик (необхідна ємність пам'яті і т. д.);
- Помилок ініціалізації та завершення.
Подібні категорії помилок способами «білої скриньки» не виявляються.
Види тестування програмного забезпечення
Класифікація за ознаками
За ступенем автоматизації:
- Ручне тестування (manual testing)
- Автоматизоване тестування (automated testing)
- Напівавтоматизоване тестування (semiautomated testing)
За ступенем підготовленості до тестування:
- Тестування по документації (formal testing)
- Тестування ad hoc або інтуїтивне тестування (ad hoc testing) — тестування без тест плану та документації, що базується на методиці передбачення помилки на власному досвіді тестувальника.
За знанням системи:
- Тестування чорної скриньки (black box)
- Тестування білої скриньки (white box)
- Тестування сірої скриньки (grey box)
За ступенем ізольованості компонентів:
- Компонентне (модульне) тестування (component/unit testing)
- Інтеграційне тестування (integration testing)
- Системне тестування (system/end-to-end testing)
За часом проведення тестування:
- Альфа-тестування (alpha testing)
- Тестування при прийманні або Димове тестування (smoke testing)
- Тестування нової функціональності (new feature testing)
- Регресивне тестування (regression testing)
- Тестування при здачі (acceptance testing)
- Бета-тестування (beta testing)
За об'єктом тестування:
- Функціональне тестування (functional testing)
- Тестування продуктивності (performance testing)
- Навантажувальне тестування (load testing)
- Стрес-тестування (stress testing)
- Тестування стабільності (stability/endurance/soak testing)
- Тестування зручності використання або Юзабіліті-тестування (usability testing)
- Тестування інтерфейсу користувача (UI testing)
- Тестування безпеки (security testing)
- Тестування локалізації (localization testing)
- Тестування сумісності (compatibility testing)
За ознакою позитивності сценаріїв:
- Позитивне тестування (positive testing)
- Негативне тестування (negative testing)
Опис видів тестування
Інсталяційне тестування
Інсталяційне тестування запевняє, що система встановлена правильно і коректно працює на апаратному забезпеченні конкретного клієнта.
Тестування сумісності
Основною метою якого є перевірка коректної роботи продукту в певному середовищі. Середовище може включати в себе наступні елементи:
- Апаратна платформа
- Мережеві пристрої
- Периферія (принтери, CD/DVD-приводи, вебкамери та ін.);
- Операційна система (Unix, Windows, MacOS, …)
- Бази даних (Oracle, MS SQL, MySQL, …)
- Системне програмне забезпечення (вебсервер, фаєрвол, антивірус, …)
- Браузери (Internet Explorer, Firefox, Opera, Chrome, Safari)
Смоук тестування (Smoke testing)
Мінімальний набір тестів на явні помилки. Цей тест зазвичай виконується самим програмістом. Програму, що не пройшла такий тест, не має сенсу передавати на глибше тестування.
Регресивне тестування
Виявляє помилки у вже протестованих ділянках початкового коду. Такі помилки — коли після внесення змін до програми перестає працювати те, що мало б працювати, — називають регресивними помилками.
Регресивне тестування (за деякими джерелами) включає:
- new bug-fix — перевірка виправлення знайдених дефектів;
- old bug-fix — перевірка, що виявлені раніше й виправлені дефекти не відтворюються в системі знову;
- side-effect — перевірка того, що не порушилася працездатність працюючої раніше функціональності, якщо її код міг бути зачеплений під час виправлення деяких дефектів в іншій функціональності.
Функціональне тестування
Перевіряє, чи реалізовані функціональні вимоги, тобто можливості ПЗ в певних умовах вирішувати завдання, потрібні користувачам. Функціональні вимоги визначають, що саме робить продукт, які завдання вирішує.
Функціональні вимоги включають у себе:
- Функціональна придатність
- Точність
- Можливість до взаємодії
- Відповідність стандартам та правилам
- Захищеність
Нефункціональне тестування
Описує тести, необхідні для визначення характеристик ПЗ, які можуть бути виміряні різними величинами. В цілому, це тестування того, «як» система працює. Далі перелічені основні види нефункціональних тестів:
- Всі види тестування продуктивності:
- навантажувальне тестування
- стресове тестування
- тестування стабільності та надійності
- об'ємне тестування
- Інсталяційне тестування
- Тестування зручності користування
- Тестування на «відмову» та відновлення
- Конфігураційне тестування
Деструктивне тестування
Намагається привести ПЗ чи підсистему до збою. Воно перевіряє, чи ПЗ продовжує функціонувати навіть при отриманні неправильних або неочікуваних вхідних даних, встановлюючи тим самим надійність перевірки вхідних даних і управління помилками підпрограм.
Тестування швидкодії
Проводиться з метою встановлення, як швидко працює система або її частина, під певним навантаженням. Також може слугувати для перевірки й підтвердження інших атрибутів якості системи, таких як масштабування, надійність та використання ресурсів.
В тестуванні швидкодії виділяють такі напрямки:
- навантажувальне
- стрес
- тестування стабільності
- конфігураційне
Тестування зручності використання
Виконується з метою визначення зручності використання ПЗ для його подальшого застосування. Це метод оцінки зручності продукту у використанні, оснований на залученні користувачів як тестувальників, випробувачів і підсумовуванні отриманих від них висновків.
Рівні тестування
Модульне тестування
Належить до тестів, які перевіряють функціональність певного розділу коду, зазвичай на функціональному рівні. В об'єктно-орієнтованому середовищі, це, як правило, тестування на рівні класу, а мінімальні модульні тести містять у собі конструктори та деструктори.
Такі типи тестів зазвичай пишуться розробниками під час роботи над кодом (стиль «білої скриньки»), щоб впевнитись, що дана функція працює так, як очікувалося. Одна функція може мати кілька тестів, щоб переглянути всі випадки використання коду. Модульне тестування саме по собі не може перевірити функціонування частини ПЗ, а використовується щоб гарантувати, що основні блоки ПЗ працюють незалежно один від одного.
Модульне тестування — це процес розробки ПЗ, що охоплює синхронізовані застосування широкого спектра для запобігання дефектів та для виявлення стратегій із метою зниження ризиків розробки ПЗ, часу та витрат. Воно виконується розробником ПЗ або інженером, під час будівельної фази життєвого циклу розробки ПЗ. Модульне тестування спрямоване на усунення помилок проєктування. Ця стратегія спрямована на підвищення якості одержуваного ПЗ, до такого рівня, як вимагає процес контролю якості.
Залежно від очікуваної організації розробки ПЗ, модульне тестування може включати статичний аналіз коду, аналіз потоку даних аналізу метрик, експертні оцінки коду, аналізу покриття коду та інші методи перевірки ПЗ.
Інтеграційне тестування
Інтеграційне тестування є типом тестування ПЗ, яке прагне перевірити інтерфейси між компонентами від програмного дизайну. Програмні компоненти можуть бути інтегровані як у рамках ітеративного підходу, так і всі разом.
Інтеграційне тестування працює над виявленням дефектів у інтерфейсах та взаємодії інтегрованих компонентів (модулів). Воно проводиться до тих пір, поки великі групи тестованих компонентів ПЗ, які відповідають потрібній архітектурі, починають працювати як система.
Рівні інтеграційного тестування:
- компонентний інтеграційний рівень (Component Integration testing). Перевіряється взаємодія між компонентами системи після проведення компонентного тестування;
- системний інтеграційний рівень (System Integration Testing). Перевіряється взаємодія між різними системами після проведення системного тестування.
Підходи до інтеграційного тестування:
- знизу вгору (Bottom Up Integration). Усі низькорівневі модулі, процедури або функції збираються воєдино і потім тестуються. Після чого збирається наступний рівень модулів для проведення інтеграційного тестування. Цей підхід вважається корисним, якщо всі або практично всі модулі розроблюваного рівня готові. Також цей підхід допомагає визначити за результатами тестування рівень готовності додатків;
- зверху вниз (Top Down Integration). У першу чергу тестуються компоненти верхнього рівня ієрархії об'єктів із використанням заглушок замість компонентів нижчого рівня;
- великий вибух («Big Bang» Integration). Усі або практично усі розроблені модулі збираються разом у вигляді закінченої системи або її основної частини й потім проводиться інтеграційне тестування. Такий підхід дуже хороший для збереження часу. Проте, якщо тест кейси та їхні результати записані неправильно, то сам процес інтеграції дуже ускладниться, що стане перепоною для команди тестування при досягненні основної мети інтеграційного тестування.
Системне тестування
Тестує інтегровану систему для перевірки відповідності всім вимогам. Крім того, системне тестування ПЗ повинно гарантувати, що програма працює так, як очікувалося, а також, що її не можна знищити або пошкодити її робоче середовище, яке викличе процеси в цьому середовищі, що переведуть систему в неробочий стан. Системне інтеграційне тестування перевіряє, чи система інтегрується в будь-яку зовнішню систему (або системи) відповідно до системних вимог.
- Альфа-тестування — імітація реальної роботи з системою штатними розробниками або реальна робота з системою потенційними користувачами/замовником. Найчастіше альфа-тестування проводиться на ранній стадії розробки продукту, але у деяких випадках може застосовуватися для закінченого продукту як внутрішнього приймального тестування. Іноді альфа-тестування виконується під відлагоджувачем або з використанням середовища, яке допомагає швидко виявляти знайдені помилки. Виявлені помилки можуть бути передані тестувальникам для додаткового дослідження у середовищі, подібному тому, в якому буде використовуватися програма.
- Бета-тестування — у деяких випадках виконується поширення версії з обмеженнями (за функціональністю або часом роботи) для певної групи осіб, з тим щоб переконатися, що продукт містить достатньо мало помилок. Іноді бета-тестування виконується для того, щоб отримати зворотний зв'язок про продукт від його майбутніх користувачів.
Часто для вільного/відкритого ПЗ стадія альфа-тестування характеризує функціональне наповнення коду, а бета-тестування — стадію виправлення помилок. При цьому, як правило, на кожному етапі розробки проміжні результати роботи доступні кінцевим користувачам.
Тестові скрипти
Тестувальники використовують тестові скрипти на різних рівнях: як у модульному, так і в інтеграційному та системному тестуванні. Тестові скрипти, як правило, пишуться для перевірки компонентів, у яких найвища ймовірність появи відмов або вчасно не знайдена помилка може бути дорогою.
Покриття коду
Покриття коду, за своєю суттю, є тестуванням методом білого ящика. Тестоване ПЗ збирається зі спеціальними налаштуваннями або бібліотеками й/або запускається в особливому середовищі, внаслідок чого для кожної використовуваної (виконуваної) функції програми визначається місцезнаходження цієї функції у вихідному коді. Цей процес дозволяє розробникам та фахівцям із забезпечення якості визначити частини системи, які, при нормальній роботі, використовуються дуже рідко або ніколи не використовуються (такі як код обробки помилок тощо). Це дозволяє зорієнтувати тестувальників на тестування найбільш важливих режимів.
Як правило, інструменти та бібліотеки, які використовуються для отримання покриття коду, вимагають значних витрат продуктивності та/або пам'яті, неприпустимих при нормальному функціонуванні ПЗ. Тому вони можуть використовуватися тільки в лабораторних умовах.
Приймальне тестування
Формальний процес тестування, який перевіряє відповідність системи вимогам і проводиться з метою: визначення чи задовольняє система приймальним критеріям; винесення рішення замовником або іншою уповноваженою особою приймається додаток чи ні.
Приймальне тестування виконується на основі набору типових тестових випадків та сценаріїв, розроблених на основі вимог до цього додатку. Рішення про проведення приймального тестування приймається тоді, коли: продукт досяг необхідного рівня якості; замовник ознайомлений із Планом приймальних Робіт (Product Acceptance Plan) або іншим документом, де описаний набір дій, пов'язаних із проведенням приймального тестування, дата проведення, відповідальні тощо.
Фаза приймального тестування триває до тих пір, доки замовник не виносить рішення про відправлення програми на доопрацювання або видачі додатка.
Життєвий цикл тестування програмного забезпечення
Життєвий цикл тестування програмного забезпечення — це всі дії, що виконуються під час тестування програмного продукту.
Життєвий цикл програмного забезпечення (SDLC — Software Development Life Cycle) — період часу, який починається з моменту прийняття рішення про необхідність створення програмного продукту і закінчується в момент його повного вилучення з експлуатації. Цей цикл — процес побудови і розвитку програмного забезпечення.
Етап 1 — Планування (Planning).
На цій фазі клієнт пояснює основні деталі і концепції проєкту, обговорюється необхідний ресурс, час і бюджет, що необхідний для розробки.
Етап 2 — Аналіз вимог (Requirements analysis).
Ця фаза розрахована для підготовки набору вимог. Потім йде етап узгодження вимог. Як результат ми маємо отримати узгоджений документ з вимогами.
Етап 3 — Дизайн і розробка (Design & Development).
На цій фазі визначаються основні концепції дизайну програмного забезпечення. Після узгодження дизайну починається безпосередньо розроблення продукту.
Етап 4 — Впровадження (Implementation).
Охоплює програмування і отримання кінцевого продукту (бібліотеки, білди, документація).
Етап 5 — Тестування (Testing).
На цій фазі проводиться перевірка на відповідність вимогам і підтвердження того, що продукт розроблений згідно з ними.
Етап 6 — Оцінка (Evaluation).
На фазі оцінки (або пререлізу) продукт оцінюється замовником і вносяться останні уточнення.
Етап 7 — Реліз (Release).
Заключна фаза розробки, враховуються уточнення, що зроблені замовником на фазі оцінки. Підготовка продукту в «коробці».
Етап 8 — Підтримка (Support).
Фаза технічної підтримки продукту. Тестоване програмне забезпечення повинно проходити кожен з етапів тестування, обумовлених (власниками продукту), менеджментом компанії розробника та тест-дизайнерами для того, щоб вважати програмний продукт відносно якісним або придатним до використання.
Організація процесу тестування ПЗ
Процес тестування об'єднує різні способи тестування в сплановану послідовність кроків, які приводять до успішної побудови програмної системи (ПС) [3] [13] [64] [69]. Методика тестування ПС може бути представлена у вигляді спіралі, що розгортається
На початку здійснюється тестування елементів (модулів), перевіряюче результати етапу кодування ПС. На другому кроці виконується тестування інтеграції, орієнтоване на виявлення помилок етапу проєктування ПС. На третьому обороті спіралі проводиться тестування правильності, перевіряюче коректність етапу аналізу вимог до ПС. На завершальному витку спіралі проводиться системне тестування, що виявляє дефекти етапу системного аналізу ПС.
Охарактеризуємо кожен крок процесу тестування.
1.Тестування елементів. Мета — індивідуальна перевірка кожного модуля. Використовуються способи тестування «білого ящика».
2.Тестування інтеграції. Мета — тестування збірки модулів в програмну систему. Здебільшого застосовують способи тестування «чорного ящика».
3.Тестування правильності. Мета — перевірити реалізацію в програмній системі всіх функціональних і поведінкових вимог, а також вимоги ефективності. Використовуються суто способи тестування «чорного ящика».
4.Системне тестування. Мета — перевірка правильності об'єднання і взаємодії всіх елементів комп'ютерної системи, реалізації всіх системних функцій.
Організація процесу тестування у вигляді еволюційної спіралі, що розгортається, забезпечує максимальну ефективність пошуку помилок. Проте виникає питання — коли закінчувати тестування?
На практиці зазвичай застосовують статистичний критерій: «Можна з 95%-ю впевненістю сказати, що проведено достатнє тестування, якщо імовірність безвідмовної роботи ПП протягом 1000 годин складає щонайменше 0,995».
Науковий підхід при відповіді на це питання полягає в застосуванні математичної моделі відмов. Наприклад, для логарифмічної моделі Пуассона формула розрахунку поточної інтенсивності відмов має вигляд:
λ(t) = | λ0 | , | (8.1) |
λ0 × p ×t +1 |
де λ (t) — поточна інтенсивність програмних відмов (кількість відмов в одиницю часу);
λ0 — початкова інтенсивність відмов (на початку тестування); р — експоненціальне зменшення
інтенсивності відмов за рахунок помилок, що виявляються і усуваються; t — тривалість тестування. За допомогою рівняння можна передбачити зниження помилок в ході тестування, а також
час, потрібний для досягнення допустимо низької інтенсивності відмов.
Див. також
Примітки
- ; Falk, Jack; Nguyen, Hung Quoc (1999). Testing Computer Software, 2nd Ed. New York, et al: John Wiley and Sons, Inc. с. 480. ISBN .
Література
- Лайза Криспин, Джанет Грегори. Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = Agile Testing: A Practical Guide for Testers and Agile Teams. — М. : «Вильямс», 2010. — 464 с. — (Addison-Wesley Signature Series) — 1000 прим. — .
- Канер Кем, Фолк Джек, Нгуен Енг Кек. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений. — Киев : ДиаСофт, 2001. — 544 с. — .
- Калбертсон Роберт, Браун Крис, Кобб Гэри. Быстрое тестирование. — М. : «Вильямс», 2002. — 374 с. — .
- Синицын С. В., Налютин Н. Ю. Верификация программного обеспечения. — М. : БИНОМ, 2008. — 368 с. — .
- Савин Роман. Тестирование DOT COM или Пособие по жестокому обращению с багами в интернет-стартапах — М.: Дело, 2007. — 312 c. — .
- The Test Management Guide — A to Z and FAQ Knowledgebase (англ.)Бейзер Б. Тестирование чёрного ящика. Технологии функционального тестирования программного обеспечения и систем. — СПб. : Питер, 2004. — 320 с. — .
Посилання
- (англ.)
- Текст лекцій до курсу «Технології розробки і тестування програм» Дідковська М. В.
- Quality Assurance Group — Навчання, Перекваліфікація, Підвищення рівня кваліфікацій в сфері Забезпечення Якості, Контролю Якості та Тестування ПЗ(укр.)
- (укр.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Testuvannya programnogo zabezpechennya angl software testing ce proces tehnichnogo doslidzhennya priznachenij dlya viyavlennya informaciyi pro yakist produktu vidnosno kontekstu v yakomu jogo mayut vikoristovuvati Tehnika testuvannya takozh vklyuchaye yak proces poshuku pomilok abo inshih defektiv tak i viprobuvannya programnih skladovih iz metoyu ocinki Testuvannya programnogo zabezpechennya proces perevirki vidpovidnosti zayavlenih do produktu vimog i realno realizovanoyi funkcionalnosti yakij zdijsnyuyut shlyahom sposterezhennya za jogo robotoyu v shtuchno stvorenih situaciyah i na obmezhenomu nabori testiv obranih pevnim chinom Mozhut ocinyuvati vidpovidnist vimogam yakimi keruvalisya proyektuvalniki ta rozrobniki pravilnist vidpovidi dlya vsih mozhlivih vhidnih danih vikonannya funkcij za prijnyatnij chas praktichnist sumisnist iz programnim zabezpechennyam ta operacijnimi sistemami vidpovidnist zadacham zamovnika Oskilki chislo mozhlivih testiv navit dlya neskladnih programnih komponentiv praktichno neskinchenne tomu strategiya testuvannya polyagaye v tomu shobi provesti vsi mozhlivi testi z urahuvannyam nayavnogo chasu ta resursiv Yak rezultat programne zabezpechennya PZ testuyut standartnim vikonannyam programi z metoyu viyavlennya bagiv pomilok abo inshih defektiv Testuvannya PZ mozhe nadavati ob yektivnu nezalezhnu informaciyu pro yakist PZ riziki vidmovi yak dlya koristuvachiv tak i dlya zamovnikiv Testuvannya mozhna provoditi yak tilki stvoreno vikonuvanij kod navit chastkovo zavershenij Proces rozrobki zazvichaj peredbachaye koli ta yak bude vidbuvatisya testuvannya Napriklad pri poetapnomu procesi bilshist testiv vidbuvayetsya pislya viznachennya sistemnih vimog i todi voni realizuyutsya v testovih programah Na protivagu comu vidpovidno do vimog gnuchkoyi rozrobki PZ programuvannya i testuvannya chasto vidbuvayetsya odnochasno VstupTestuvannya programnogo zabezpechennya tehnika kontrolyu yakosti sho pereviryaye vidpovidnist mizh realnoyu i ochikuvanoyu povedinkoyu programi zavdyaki kincevomu naboru testiv yaki obirayutsya pevnim chinom Yakist ne ye absolyutnoyu ce sub yektivne ponyattya Tomu testuvannya yak proces svoyechasnogo viyavlennya pomilok ta defektiv ne mozhe povnistyu zabezpechiti korektnist programnogo zabezpechennya Vono tilki porivnyuye stan i povedinku produktu zi specifikaciyeyu Pri comu treba rozriznyati testuvannya programnogo zabezpechennya j zabezpechennya yakosti programnogo zabezpechennya do yakogo nalezhat vsi skladovi dilovogo procesu a ne tilki testuvannya Zazvichaj ponyattya yakosti obmezhuyetsya takimi ponyattyami yak korektnist nadijnist praktichnist bezpechnist ale mozhe mistiti bilshe tehnichnih vimog kotri opisani u standarti ISO 9126 Sklad ta zmist suputnoyi dokumentaciyi procesu testuvannya viznachayetsya standartom IEEE 829 1998 Standard for Software Test Documentation Isnuye bagato pidhodiv do testuvannya programnogo zabezpechennya ale efektivne testuvannya skladnih produktiv ce po suti doslidnickij ta tvorchij proces a ne tilki stvorennya ta vikonannya rutinnoyi proceduri Istoriya rozvitku testuvannya programnogo zabezpechennyaPershi programni sistemi rozroblyali v mezhah program naukovih doslidzhen abo program dlya potreb ministerstv oboroni Testuvannya takih produktiv provodili suvoro formalizovano iz zapisom usih testovih procedur testovih danih otrimanih rezultativ Testuvannya vidilyalosya v okremij proces yakij pochinavsya pislya zavershennya koduvannya ale pri comu yak pravilo vikonuvalosya tim zhe personalom U 1960 h bagato uvagi pridilyalosya vicherpnomu testuvannyu yake povinno provoditisya z vikoristannyam usih shlyahiv u kodi abo vsih mozhlivih vhidnih danih Bulo vidznacheno sho v cih umovah povne testuvannya PZ nemozhlive tomu sho po pershe kilkist mozhlivih vhidnih danih duzhe velika po druge isnuye bezlich shlyahiv po tretye skladno znajti problemi v arhitekturi ta specifikaciyah Z cih prichin vicherpne testuvannya bulo vidhileno j viznano teoretichno nemozhlivim Na pochatku 1970 h testuvannya PZ rozglyadalosya yak proces spryamovanij na demonstraciyu korektnosti produktu abo yak diyalnist iz pidtverdzhennya pravilnosti roboti PZ U programnij inzheneriyi yaka v toj chas zarodzhuvalasya verifikaciya PZ viznachalasya yak dokaz pravilnosti Hocha koncepciya bula teoretichno perspektivnoyu na praktici vona vimagala bagato chasu j ne ohoplyuvala vsi aspekti testuvannya Bulo virisheno sho dokaz pravilnosti neefektivnij metod testuvannya PZ Odnak u deyakih vipadkah demonstraciya pravilnoyi roboti vikoristovuyetsya i v nashi dni napriklad prijmalno zdavalni viprobuvannya U drugij polovini 1970 h testuvannya predstavlyalosya yak vikonannya programi z namirom znajti pomilki a ne dovesti sho vona pracyuye Uspishnij test ce test yakij viyavlyaye ranishe nevidomi problemi Cej pidhid cilkom protilezhnij poperednomu Zaznacheni dva viznachennya yavlyayut soboyu paradoks testuvannya v osnovi yakogo lezhat dva protilezhnih tverdzhennya z odnogo boku testuvannya dozvolyaye perekonatisya sho produkt pracyuye dobre a z inshogo viyavlyaye pomilki u PZ pokazuyuchi sho produkt ne pracyuye Druga meta testuvannya ye produktivnishoyu z tochki zoru polipshennya yakosti oskilki ne dozvolyaye ignoruvati nedoliki PZ U 1980 h testuvannya rozshirilosya takim ponyattyam yak zapobigannyam defektam Proyektuvannya testiv najefektivnishij iz vidomih metodiv zapobigannya pomilok V cej zhe chas pochali vislovlyuvatisya dumki sho neobhidna metodologiya testuvannya zokrema sho testuvannya povinno vklyuchati perevirki vprodovzh usogo ciklu rozroblennya pri comu ce maye buti kerovanij proces V hodi testuvannya treba pereviriti ne tilki zibranu programu ale j vimogi kod arhitekturu sami testi Tradicijne testuvannya yake isnuvalo do pochatku 1980 h vidnosilosya tilki do skompilovanoyi gotovoyi sistemi zaraz ce zazvichaj nazivayetsya sistemne testuvannya ale nadali testuvalniki stali zaluchatisya v usi aspekti zhittyevogo ciklu rozroblennya Ce dozvolyalo ranishe znahoditi problemi u vimogah ta arhitekturi j tim samim skorochuvati termini ta byudzhet rozroblennya U seredini 1980 h z yavilisya pershi instrumenti dlya avtomatizovanogo testuvannya Peredbachalosya sho komp yuter zmozhe vikonati bilshe testiv nizh lyudina prichomu zrobit ce bilsh nadijno Spochatku ci instrumenti buli vkraj prostimi j ne mali mozhlivosti napisannya scenariyiv na skriptovih movah Na pochatku 1990 h u ponyattya testuvannya stali vklyuchati planuvannya proyektuvannya stvorennya pidtrimku j vikonannya testiv ta testovih otochen a ce oznachalo perehid vid testuvannya do zabezpechennya yakosti sho ohoplyuye ves cikl rozroblennya PZ U cej chas pochinayut z yavlyatisya rizni programni instrumenti dlya pidtrimki procesu testuvannya bilsh prosunuti seredovisha dlya avtomatizaciyi z mozhlivistyu stvorennya skriptiv i generaciyi zvitiv sistemi upravlinnya testami PZ dlya provedennya navantazhuvalnogo testuvannya U seredini 1990 h iz rozvitkom Internetu j rozroblennyam velikoyi kilkosti vebzastosunkiv osoblivoyi populyarnosti stalo nabuvati gnuchke testuvannya za analogiyeyu z gnuchkimi metodologiyami programuvannya U 2000 h z yavilosya she shirshe viznachennya testuvannya koli v nogo bulo dodano ponyattya optimizaciya biznes tehnologij BTO napravlyaye rozvitok informacijnih tehnologij zgidno z cilyami biznesu Osnovnij pidhid polyagaye v ocinci ta maksimizaciyi znachushosti vsih etapiv zhittyevogo ciklu rozroblennya PZ dlya dosyagnennya neobhidnogo rivnya yakosti produktivnosti dostupnosti Osnovni ponyattya ta viznachennyaTestuvannya ce odna z tehnik kontrolyu yakosti sho ohoplyuye Planuvannya robit Test Management Proyektuvannya testiv Test Design Vikonannya testuvannya Test Execution Analiz otrimanih rezultativ Test Analysis Verifikaciya Verification ce proces ocinki sistemi abo yiyi komponentiv iz metoyu viznachiti chi zadovolnyayut rezultati potochnogo etapu rozrobki umovam sformovanim na pochatku cogo etapu Tobto chi vikonuyutsya cili termini zavdannya z rozrobki proyektu viznacheni na pochatku potochnoyi fazi Validaciya Validation ce viznachennya vidpovidnosti rozroblyuvanogo programnogo zabezpechennya ochikuvannyam i potrebam koristuvacha vimogam do sistemi Plan Testuvannya Test Plan ce dokument sho opisuye ves obsyag robit iz testuvannya pochinayuchi z opisu ob yekta strategiyi rozkladu kriteriyiv pochatku i zakinchennya testuvannya do neobhidnogo v procesi roboti obladnannya specialnih znan a takozh ocinki rizikiv iz variantami yih virishennya Test dizajn Test Design ce etap procesu testuvannya programnogo zabezpechennya na yakomu proyektuyutsya i stvoryuyutsya testovi vipadki test kejsi vidpovidno do viznachenih ranishe kriteriyami yakosti ta cilyami testuvannya Testovij vipadok Test kejs Test Case ce dokument sho opisuye sukupnist krokiv konkretnih umov i parametriv neobhidnih dlya perevirki realizaciyi testovanoyi funkciyi abo yiyi chastini Bag Defekt Report Bug Report ce dokument sho opisuye situaciyu abo poslidovnist dij Steps sho prizvela do nekorektnoyi roboti ob yekta testuvannya Misbehavior iz zaznachennyam prichin ta ochikuvanogo rezultatu Expected Result Testove Pokrittya Test Coverage ce odna z metrik ocinki yakosti testuvannya sho predstavlyaye iz sebe shilnist pokrittya testami vimog abo kodu sho vikonuyetsya Detalizaciya Test Kejsiv Test Case Specification ce riven detalizaciyi opisu testovih krokiv i neobhidnogo rezultatu pri yakomu zabezpechuyetsya rozumne spivvidnoshennya chasu prohodzhennya do testovogo pokrittya Chas Prohodzhennya Test Kejsa Test Case Pass Time ce chas vid pochatku prohodzhennya krokiv test kejsa do otrimannya rezultatu testu Metodi testuvannyaStatichne ta dinamichne testuvannya Testova diyalnist sho pov yazana z analizom rezultativ rozrobki programnogo zabezpechennya nazivayetsya statichnim testuvannyam Vono peredbachaye perevirku programnih kodiv kontrol ta perevirku programi bez zapusku na komp yuteri Testova diyalnist sho peredbachaye ekspluataciyu programnogo produktu nazivayetsya dinamichnim testuvannyam Dinamichne ta statichne testuvannya dopovnyuyut odne odnogo Na etapi statichnogo testuvannya pereviryayetsya vsya dokumentaciya otrimana yak rezultat zhittyevogo ciklu programi Ce i tehnichne zavdannya i specifikaciya i vihidnij tekst programi movoyu programuvannya Vsyu dokumentaciyu analizuyut na predmet dotrimannya standartiv programuvannya U rezultati statichnoyi perevirki vstanovlyuyetsya naskilki programa vidpovidaye zadanim kriteriyam ta vimogam zamovnika Usunennya netochnostej ta pomilok u dokumentaciyi zaporuka togo sho stvoryuvanij programnij zasib maye visoku yakist Dinamichni metodi zastosovuyutsya v procesi bezposerednogo vikonannya programi Korektnist programnogo zasobu pereviryayetsya na bezlichi testiv abo naboriv pidgotovlenih vhidnih danih Pri progoni kozhnogo testu zbirayut ta analizuyut dani pro vidmovi ta zboyi v roboti programi Testuvannya biloyi skrinki Dokladnishe Strukturne testuvannya Vidoma vnutrishnya struktura programi Doslidzhuyutsya vnutrishni elementi programi i zv yazki mizh nimi Ob yektom testuvannya tut ye ne zovnishnya a vnutrishnya povedinka programi Pereviryayetsya korektnist pobudovi vsih elementiv programi ta pravilnist yihnoyi vzayemodiyi odin z odnim Zazvichaj analizuyut keruyuchi zv yazki elementiv ridshe informacijni zv yazki Testuvannya za principom biloyi skrinki harakterizuyetsya stupenem v yakomu testi vikonuyut abo pokrivayut logiku vihidnij tekst programi Osoblivosti testuvannya biloyi skrinki Zazvichaj testuvannya biloyi skrinki zasnovane na analizi keruyuchoyi strukturi programi Programa vvazhayetsya povnistyu perevirenoyu yaksho provedeno vicherpne testuvannya marshrutiv shlyahiv yiyi grafa upravlinnya U comu vipadku formuyutsya testovi varianti v yakih Garantuyetsya perevirka vsih nezalezhnih marshrutiv programi Znahodyatsya gilki True False dlya vsih logichnih rishen Vikonuyutsya vsi cikli u mezhah yihnih kordoniv ta diapazoniv Analizuyetsya pravilnist vnutrishnih struktur danih Nedoliki testuvannya biloyi skrinki Kilkist nezalezhnih marshrutiv mozhe buti duzhe velika Povne testuvannya marshrutiv ne garantuye vidpovidnosti programi vihidnim vimogam do neyi U programi mozhut buti propusheni deyaki marshruti Ne mozhna viyaviti pomilki poyava yakih zalezhit vid danih Perevagi testuvannya biloyi skrinki pov yazani z tim sho princip biloyi skrinki dozvolyaye vrahuvati osoblivosti programnih pomilok Kilkist pomilok minimalno v centri i maksimalno na periferiyi programi Poperedni pripushennya pro jmovirnist potoku keruvannya abo danih u programi chasto buvayut nekorektnimi U rezultati tipovim mozhe stati marshrut model obchislen za yakim opracovana slabo Pri zapisi algoritmu programnogo zabezpechennya u viglyadi tekstu movoyu programuvannya mozhlive vnesennya tipovih pomilok translyaciyi sintaksichnih ta semantichnih Deyaki rezultati v programi zalezhat ne vid vihidnih danih a vid vnutrishnih staniv programi Kozhna z cih prichin ye argumentom dlya provedennya testuvannya za principom biloyi skrinki Testi chornoyi skrinki ne zmozhut reaguvati na pomilki takih tipiv Testuvannya chornoyi skrinki Vidomi funkciyi programi Doslidzhuyetsya robota kozhnoyi funkciyi na vsij oblasti viznachennya Osnovne misce programi testiv chornoyi skrinki interfejs PZ Ci testi demonstruyut Yak vikonuyutsya funkciyi programi Yak prijmayutsya vihidni dani Yak viroblyayutsya rezultati Yak zberigayetsya cilisnist zovnishnoyi informaciyi Pri testuvanni chornoyi skrinki rozglyadayutsya sistemni harakteristiki program ignoruyetsya yihnya vnutrishnya logichna struktura Vicherpne testuvannya yak pravilo nemozhlive Napriklad yaksho v programi 10 vhidnih velichin i kozhna prijmaye po 10 znachen to kilkist testovih variantiv stanovitime 1010 Testuvannya chornoyi skrinki ne reaguye na bagato osoblivostej programnih pomilok Testuvannya chornoyi skrinki funkcionalne testuvannya dozvolyaye otrimati kombinaciyi vhidnih danih yaki zabezpechuyut povnu perevirku vsih funkcionalnih vimog do programi Programnij virib tut rozglyadayetsya yak chorna skrinka chiyu povedinku mozhna viznachiti tilki doslidzhennyam jogo vhodiv ta vidpovidnih vihodiv Pri takomu pidhodi bazhano mati Nabir utvorenij takimi vhidnimi danimi yaki prizvodyat do anomalij u povedinci programi nazvemo jogo IT Nabir utvorenij takimi vhidnimi danimi yaki demonstruyut defekti programi nazvemo jogo OT Bud yakij sposib testuvannya chornoyi skrinki povinen Viyaviti taki vhidni dani yaki z visokoyu jmovirnistyu nalezhat naboru IT Sformulyuvati taki ochikuvani rezultati yaki z visokoyu imovirnistyu ye elementami naboru OT Princip chornoyi skrinki ne alternativnij principu biloyi skrinki Skorishe ce dopovnyuye pidhid yakij viyavlyaye inshij klas pomilok Testuvannya chornoyi skrinki zabezpechuye poshuk nastupnih kategorij pomilok Nekorektnih chi vidsutnih funkcij Pomilok interfejsu Pomilok u zovnishnih strukturah danih abo v dostupi do zovnishnoyi bazi danih Pomilok harakteristik neobhidna yemnist pam yati i t d Pomilok inicializaciyi ta zavershennya Podibni kategoriyi pomilok sposobami biloyi skrinki ne viyavlyayutsya Div takozh Mutacijne testuvannyaVidi testuvannya programnogo zabezpechennyaKlasifikaciya za oznakami Za stupenem avtomatizaciyi Ruchne testuvannya manual testing Avtomatizovane testuvannya automated testing Napivavtomatizovane testuvannya semiautomated testing Za stupenem pidgotovlenosti do testuvannya Testuvannya po dokumentaciyi formal testing Testuvannya ad hoc abo intuyitivne testuvannya ad hoc testing testuvannya bez test planu ta dokumentaciyi sho bazuyetsya na metodici peredbachennya pomilki na vlasnomu dosvidi testuvalnika Za znannyam sistemi Testuvannya chornoyi skrinki black box Testuvannya biloyi skrinki white box Testuvannya siroyi skrinki grey box Za stupenem izolovanosti komponentiv Komponentne modulne testuvannya component unit testing Integracijne testuvannya integration testing Sistemne testuvannya system end to end testing Za chasom provedennya testuvannya Alfa testuvannya alpha testing Testuvannya pri prijmanni abo Dimove testuvannya smoke testing Testuvannya novoyi funkcionalnosti new feature testing Regresivne testuvannya regression testing Testuvannya pri zdachi acceptance testing Beta testuvannya beta testing Za ob yektom testuvannya Funkcionalne testuvannya functional testing Testuvannya produktivnosti performance testing Navantazhuvalne testuvannya load testing Stres testuvannya stress testing Testuvannya stabilnosti stability endurance soak testing Testuvannya zruchnosti vikoristannya abo Yuzabiliti testuvannya usability testing Testuvannya interfejsu koristuvacha UI testing Testuvannya bezpeki security testing Testuvannya lokalizaciyi localization testing Testuvannya sumisnosti compatibility testing Za oznakoyu pozitivnosti scenariyiv Pozitivne testuvannya positive testing Negativne testuvannya negative testing Opis vidiv testuvannya Instalyacijne testuvannya Instalyacijne testuvannya zapevnyaye sho sistema vstanovlena pravilno i korektno pracyuye na aparatnomu zabezpechenni konkretnogo kliyenta Testuvannya sumisnosti Osnovnoyu metoyu yakogo ye perevirka korektnoyi roboti produktu v pevnomu seredovishi Seredovishe mozhe vklyuchati v sebe nastupni elementi Aparatna platforma Merezhevi pristroyi Periferiya printeri CD DVD privodi vebkameri ta in Operacijna sistema Unix Windows MacOS Bazi danih Oracle MS SQL MySQL Sistemne programne zabezpechennya vebserver fayervol antivirus Brauzeri Internet Explorer Firefox Opera Chrome Safari Smouk testuvannya Smoke testing Minimalnij nabir testiv na yavni pomilki Cej test zazvichaj vikonuyetsya samim programistom Programu sho ne projshla takij test ne maye sensu peredavati na glibshe testuvannya Regresivne testuvannya Viyavlyaye pomilki u vzhe protestovanih dilyankah pochatkovogo kodu Taki pomilki koli pislya vnesennya zmin do programi perestaye pracyuvati te sho malo b pracyuvati nazivayut regresivnimi pomilkami Regresivne testuvannya za deyakimi dzherelami vklyuchaye new bug fix perevirka vipravlennya znajdenih defektiv old bug fix perevirka sho viyavleni ranishe j vipravleni defekti ne vidtvoryuyutsya v sistemi znovu side effect perevirka togo sho ne porushilasya pracezdatnist pracyuyuchoyi ranishe funkcionalnosti yaksho yiyi kod mig buti zacheplenij pid chas vipravlennya deyakih defektiv v inshij funkcionalnosti Funkcionalne testuvannya Dokladnishe Funkcionalne testuvannya Pereviryaye chi realizovani funkcionalni vimogi tobto mozhlivosti PZ v pevnih umovah virishuvati zavdannya potribni koristuvacham Funkcionalni vimogi viznachayut sho same robit produkt yaki zavdannya virishuye Funkcionalni vimogi vklyuchayut u sebe Funkcionalna pridatnist Tochnist Mozhlivist do vzayemodiyi Vidpovidnist standartam ta pravilam ZahishenistNefunkcionalne testuvannya Dokladnishe Nefunkcionalne testuvannya Opisuye testi neobhidni dlya viznachennya harakteristik PZ yaki mozhut buti vimiryani riznimi velichinami V cilomu ce testuvannya togo yak sistema pracyuye Dali perelicheni osnovni vidi nefunkcionalnih testiv Vsi vidi testuvannya produktivnosti navantazhuvalne testuvannya stresove testuvannya testuvannya stabilnosti ta nadijnosti ob yemne testuvannya Instalyacijne testuvannya Testuvannya zruchnosti koristuvannya Testuvannya na vidmovu ta vidnovlennya Konfiguracijne testuvannyaDestruktivne testuvannya Dokladnishe Destruktivne testuvannya Namagayetsya privesti PZ chi pidsistemu do zboyu Vono pereviryaye chi PZ prodovzhuye funkcionuvati navit pri otrimanni nepravilnih abo neochikuvanih vhidnih danih vstanovlyuyuchi tim samim nadijnist perevirki vhidnih danih i upravlinnya pomilkami pidprogram Testuvannya shvidkodiyi Provoditsya z metoyu vstanovlennya yak shvidko pracyuye sistema abo yiyi chastina pid pevnim navantazhennyam Takozh mozhe sluguvati dlya perevirki j pidtverdzhennya inshih atributiv yakosti sistemi takih yak masshtabuvannya nadijnist ta vikoristannya resursiv V testuvanni shvidkodiyi vidilyayut taki napryamki navantazhuvalne stres testuvannya stabilnosti konfiguracijneTestuvannya zruchnosti vikoristannya Vikonuyetsya z metoyu viznachennya zruchnosti vikoristannya PZ dlya jogo podalshogo zastosuvannya Ce metod ocinki zruchnosti produktu u vikoristanni osnovanij na zaluchenni koristuvachiv yak testuvalnikiv viprobuvachiv i pidsumovuvanni otrimanih vid nih visnovkiv Rivni testuvannyaModulne testuvannya Nalezhit do testiv yaki pereviryayut funkcionalnist pevnogo rozdilu kodu zazvichaj na funkcionalnomu rivni V ob yektno oriyentovanomu seredovishi ce yak pravilo testuvannya na rivni klasu a minimalni modulni testi mistyat u sobi konstruktori ta destruktori Taki tipi testiv zazvichaj pishutsya rozrobnikami pid chas roboti nad kodom stil biloyi skrinki shob vpevnitis sho dana funkciya pracyuye tak yak ochikuvalosya Odna funkciya mozhe mati kilka testiv shob pereglyanuti vsi vipadki vikoristannya kodu Modulne testuvannya same po sobi ne mozhe pereviriti funkcionuvannya chastini PZ a vikoristovuyetsya shob garantuvati sho osnovni bloki PZ pracyuyut nezalezhno odin vid odnogo Modulne testuvannya ce proces rozrobki PZ sho ohoplyuye sinhronizovani zastosuvannya shirokogo spektra dlya zapobigannya defektiv ta dlya viyavlennya strategij iz metoyu znizhennya rizikiv rozrobki PZ chasu ta vitrat Vono vikonuyetsya rozrobnikom PZ abo inzhenerom pid chas budivelnoyi fazi zhittyevogo ciklu rozrobki PZ Modulne testuvannya spryamovane na usunennya pomilok proyektuvannya Cya strategiya spryamovana na pidvishennya yakosti oderzhuvanogo PZ do takogo rivnya yak vimagaye proces kontrolyu yakosti Zalezhno vid ochikuvanoyi organizaciyi rozrobki PZ modulne testuvannya mozhe vklyuchati statichnij analiz kodu analiz potoku danih analizu metrik ekspertni ocinki kodu analizu pokrittya kodu ta inshi metodi perevirki PZ Integracijne testuvannya Integracijne testuvannya ye tipom testuvannya PZ yake pragne pereviriti interfejsi mizh komponentami vid programnogo dizajnu Programni komponenti mozhut buti integrovani yak u ramkah iterativnogo pidhodu tak i vsi razom Integracijne testuvannya pracyuye nad viyavlennyam defektiv u interfejsah ta vzayemodiyi integrovanih komponentiv moduliv Vono provoditsya do tih pir poki veliki grupi testovanih komponentiv PZ yaki vidpovidayut potribnij arhitekturi pochinayut pracyuvati yak sistema Rivni integracijnogo testuvannya komponentnij integracijnij riven Component Integration testing Pereviryayetsya vzayemodiya mizh komponentami sistemi pislya provedennya komponentnogo testuvannya sistemnij integracijnij riven System Integration Testing Pereviryayetsya vzayemodiya mizh riznimi sistemami pislya provedennya sistemnogo testuvannya Pidhodi do integracijnogo testuvannya znizu vgoru Bottom Up Integration Usi nizkorivnevi moduli proceduri abo funkciyi zbirayutsya voyedino i potim testuyutsya Pislya chogo zbirayetsya nastupnij riven moduliv dlya provedennya integracijnogo testuvannya Cej pidhid vvazhayetsya korisnim yaksho vsi abo praktichno vsi moduli rozroblyuvanogo rivnya gotovi Takozh cej pidhid dopomagaye viznachiti za rezultatami testuvannya riven gotovnosti dodatkiv zverhu vniz Top Down Integration U pershu chergu testuyutsya komponenti verhnogo rivnya iyerarhiyi ob yektiv iz vikoristannyam zaglushok zamist komponentiv nizhchogo rivnya velikij vibuh Big Bang Integration Usi abo praktichno usi rozrobleni moduli zbirayutsya razom u viglyadi zakinchenoyi sistemi abo yiyi osnovnoyi chastini j potim provoditsya integracijne testuvannya Takij pidhid duzhe horoshij dlya zberezhennya chasu Prote yaksho test kejsi ta yihni rezultati zapisani nepravilno to sam proces integraciyi duzhe uskladnitsya sho stane pereponoyu dlya komandi testuvannya pri dosyagnenni osnovnoyi meti integracijnogo testuvannya Sistemne testuvannya Testuye integrovanu sistemu dlya perevirki vidpovidnosti vsim vimogam Krim togo sistemne testuvannya PZ povinno garantuvati sho programa pracyuye tak yak ochikuvalosya a takozh sho yiyi ne mozhna znishiti abo poshkoditi yiyi roboche seredovishe yake vikliche procesi v comu seredovishi sho perevedut sistemu v nerobochij stan Sistemne integracijne testuvannya pereviryaye chi sistema integruyetsya v bud yaku zovnishnyu sistemu abo sistemi vidpovidno do sistemnih vimog Alfa testuvannya imitaciya realnoyi roboti z sistemoyu shtatnimi rozrobnikami abo realna robota z sistemoyu potencijnimi koristuvachami zamovnikom Najchastishe alfa testuvannya provoditsya na rannij stadiyi rozrobki produktu ale u deyakih vipadkah mozhe zastosovuvatisya dlya zakinchenogo produktu yak vnutrishnogo prijmalnogo testuvannya Inodi alfa testuvannya vikonuyetsya pid vidlagodzhuvachem abo z vikoristannyam seredovisha yake dopomagaye shvidko viyavlyati znajdeni pomilki Viyavleni pomilki mozhut buti peredani testuvalnikam dlya dodatkovogo doslidzhennya u seredovishi podibnomu tomu v yakomu bude vikoristovuvatisya programa Beta testuvannya u deyakih vipadkah vikonuyetsya poshirennya versiyi z obmezhennyami za funkcionalnistyu abo chasom roboti dlya pevnoyi grupi osib z tim shob perekonatisya sho produkt mistit dostatno malo pomilok Inodi beta testuvannya vikonuyetsya dlya togo shob otrimati zvorotnij zv yazok pro produkt vid jogo majbutnih koristuvachiv Chasto dlya vilnogo vidkritogo PZ stadiya alfa testuvannya harakterizuye funkcionalne napovnennya kodu a beta testuvannya stadiyu vipravlennya pomilok Pri comu yak pravilo na kozhnomu etapi rozrobki promizhni rezultati roboti dostupni kincevim koristuvacham Testovi skripti Testuvalniki vikoristovuyut testovi skripti na riznih rivnyah yak u modulnomu tak i v integracijnomu ta sistemnomu testuvanni Testovi skripti yak pravilo pishutsya dlya perevirki komponentiv u yakih najvisha jmovirnist poyavi vidmov abo vchasno ne znajdena pomilka mozhe buti dorogoyu Pokrittya kodu Pokrittya kodu za svoyeyu suttyu ye testuvannyam metodom bilogo yashika Testovane PZ zbirayetsya zi specialnimi nalashtuvannyami abo bibliotekami j abo zapuskayetsya v osoblivomu seredovishi vnaslidok chogo dlya kozhnoyi vikoristovuvanoyi vikonuvanoyi funkciyi programi viznachayetsya misceznahodzhennya ciyeyi funkciyi u vihidnomu kodi Cej proces dozvolyaye rozrobnikam ta fahivcyam iz zabezpechennya yakosti viznachiti chastini sistemi yaki pri normalnij roboti vikoristovuyutsya duzhe ridko abo nikoli ne vikoristovuyutsya taki yak kod obrobki pomilok tosho Ce dozvolyaye zoriyentuvati testuvalnikiv na testuvannya najbilsh vazhlivih rezhimiv Yak pravilo instrumenti ta biblioteki yaki vikoristovuyutsya dlya otrimannya pokrittya kodu vimagayut znachnih vitrat produktivnosti ta abo pam yati nepripustimih pri normalnomu funkcionuvanni PZ Tomu voni mozhut vikoristovuvatisya tilki v laboratornih umovah Prijmalne testuvannya Formalnij proces testuvannya yakij pereviryaye vidpovidnist sistemi vimogam i provoditsya z metoyu viznachennya chi zadovolnyaye sistema prijmalnim kriteriyam vinesennya rishennya zamovnikom abo inshoyu upovnovazhenoyu osoboyu prijmayetsya dodatok chi ni Prijmalne testuvannya vikonuyetsya na osnovi naboru tipovih testovih vipadkiv ta scenariyiv rozroblenih na osnovi vimog do cogo dodatku Rishennya pro provedennya prijmalnogo testuvannya prijmayetsya todi koli produkt dosyag neobhidnogo rivnya yakosti zamovnik oznajomlenij iz Planom prijmalnih Robit Product Acceptance Plan abo inshim dokumentom de opisanij nabir dij pov yazanih iz provedennyam prijmalnogo testuvannya data provedennya vidpovidalni tosho Faza prijmalnogo testuvannya trivaye do tih pir doki zamovnik ne vinosit rishennya pro vidpravlennya programi na doopracyuvannya abo vidachi dodatka Zhittyevij cikl testuvannya programnogo zabezpechennyaZhittyevij cikl testuvannya programnogo zabezpechennya ce vsi diyi sho vikonuyutsya pid chas testuvannya programnogo produktu Zhittyevij cikl programnogo zabezpechennya SDLC Software Development Life Cycle period chasu yakij pochinayetsya z momentu prijnyattya rishennya pro neobhidnist stvorennya programnogo produktu i zakinchuyetsya v moment jogo povnogo viluchennya z ekspluataciyi Cej cikl proces pobudovi i rozvitku programnogo zabezpechennya Etap 1 Planuvannya Planning Na cij fazi kliyent poyasnyuye osnovni detali i koncepciyi proyektu obgovoryuyetsya neobhidnij resurs chas i byudzhet sho neobhidnij dlya rozrobki Etap 2 Analiz vimog Requirements analysis Cya faza rozrahovana dlya pidgotovki naboru vimog Potim jde etap uzgodzhennya vimog Yak rezultat mi mayemo otrimati uzgodzhenij dokument z vimogami Etap 3 Dizajn i rozrobka Design amp Development Na cij fazi viznachayutsya osnovni koncepciyi dizajnu programnogo zabezpechennya Pislya uzgodzhennya dizajnu pochinayetsya bezposeredno rozroblennya produktu Etap 4 Vprovadzhennya Implementation Ohoplyuye programuvannya i otrimannya kincevogo produktu biblioteki bildi dokumentaciya Etap 5 Testuvannya Testing Na cij fazi provoditsya perevirka na vidpovidnist vimogam i pidtverdzhennya togo sho produkt rozroblenij zgidno z nimi Etap 6 Ocinka Evaluation Na fazi ocinki abo prerelizu produkt ocinyuyetsya zamovnikom i vnosyatsya ostanni utochnennya Etap 7 Reliz Release Zaklyuchna faza rozrobki vrahovuyutsya utochnennya sho zrobleni zamovnikom na fazi ocinki Pidgotovka produktu v korobci Etap 8 Pidtrimka Support Faza tehnichnoyi pidtrimki produktu Testovane programne zabezpechennya povinno prohoditi kozhen z etapiv testuvannya obumovlenih vlasnikami produktu menedzhmentom kompaniyi rozrobnika ta test dizajnerami dlya togo shob vvazhati programnij produkt vidnosno yakisnim abo pridatnim do vikoristannya Organizaciya procesu testuvannya PZProces testuvannya ob yednuye rizni sposobi testuvannya v splanovanu poslidovnist krokiv yaki privodyat do uspishnoyi pobudovi programnoyi sistemi PS 3 13 64 69 Metodika testuvannya PS mozhe buti predstavlena u viglyadi spirali sho rozgortayetsya Na pochatku zdijsnyuyetsya testuvannya elementiv moduliv pereviryayuche rezultati etapu koduvannya PS Na drugomu kroci vikonuyetsya testuvannya integraciyi oriyentovane na viyavlennya pomilok etapu proyektuvannya PS Na tretomu oboroti spirali provoditsya testuvannya pravilnosti pereviryayuche korektnist etapu analizu vimog do PS Na zavershalnomu vitku spirali provoditsya sistemne testuvannya sho viyavlyaye defekti etapu sistemnogo analizu PS Oharakterizuyemo kozhen krok procesu testuvannya 1 Testuvannya elementiv Meta individualna perevirka kozhnogo modulya Vikoristovuyutsya sposobi testuvannya bilogo yashika 2 Testuvannya integraciyi Meta testuvannya zbirki moduliv v programnu sistemu Zdebilshogo zastosovuyut sposobi testuvannya chornogo yashika 3 Testuvannya pravilnosti Meta pereviriti realizaciyu v programnij sistemi vsih funkcionalnih i povedinkovih vimog a takozh vimogi efektivnosti Vikoristovuyutsya suto sposobi testuvannya chornogo yashika 4 Sistemne testuvannya Meta perevirka pravilnosti ob yednannya i vzayemodiyi vsih elementiv komp yuternoyi sistemi realizaciyi vsih sistemnih funkcij Organizaciya procesu testuvannya u viglyadi evolyucijnoyi spirali sho rozgortayetsya zabezpechuye maksimalnu efektivnist poshuku pomilok Prote vinikaye pitannya koli zakinchuvati testuvannya Na praktici zazvichaj zastosovuyut statistichnij kriterij Mozhna z 95 yu vpevnenistyu skazati sho provedeno dostatnye testuvannya yaksho imovirnist bezvidmovnoyi roboti PP protyagom 1000 godin skladaye shonajmenshe 0 995 Naukovij pidhid pri vidpovidi na ce pitannya polyagaye v zastosuvanni matematichnoyi modeli vidmov Napriklad dlya logarifmichnoyi modeli Puassona formula rozrahunku potochnoyi intensivnosti vidmov maye viglyad l t l0 8 1 l0 p t 1 de l t potochna intensivnist programnih vidmov kilkist vidmov v odinicyu chasu l0 pochatkova intensivnist vidmov na pochatku testuvannya r eksponencialne zmenshennya intensivnosti vidmov za rahunok pomilok sho viyavlyayutsya i usuvayutsya t trivalist testuvannya Za dopomogoyu rivnyannya mozhna peredbachiti znizhennya pomilok v hodi testuvannya a takozh chas potribnij dlya dosyagnennya dopustimo nizkoyi intensivnosti vidmov Div takozhYakist programnogo zabezpechennya Tehnologiya rozrobki programnogo zabezpechennya Zvorotne semantichne trasuvannya JUnit Bagtreker Alfa testuvannya Zabezpechennya yakosti Headless brauzer PsevdolokalizaciyaPrimitki Falk Jack Nguyen Hung Quoc 1999 Testing Computer Software 2nd Ed New York et al John Wiley and Sons Inc s 480 ISBN 0 471 35846 0 LiteraturaLajza Krispin Dzhanet Gregori Gibkoe testirovanie prakticheskoe rukovodstvo dlya testirovshikov PO i gibkih komand Agile Testing A Practical Guide for Testers and Agile Teams M Vilyams 2010 464 s Addison Wesley Signature Series 1000 prim ISBN 978 5 8459 1625 9 Kaner Kem Folk Dzhek Nguen Eng Kek Testirovanie programmnogo obespecheniya Fundamentalnye koncepcii menedzhmenta biznes prilozhenij Kiev DiaSoft 2001 544 s ISBN 9667393879 Kalbertson Robert Braun Kris Kobb Geri Bystroe testirovanie M Vilyams 2002 374 s ISBN 5 8459 0336 X Sinicyn S V Nalyutin N Yu Verifikaciya programmnogo obespecheniya M BINOM 2008 368 s ISBN 978 5 94774 825 3 Savin Roman Testirovanie DOT COM ili Posobie po zhestokomu obrasheniyu s bagami v internet startapah M Delo 2007 312 c ISBN 978 5 7749 0460 0 The Test Management Guide A to Z and FAQ Knowledgebase angl Bejzer B Testirovanie chyornogo yashika Tehnologii funkcionalnogo testirovaniya programmnogo obespecheniya i sistem SPb Piter 2004 320 s ISBN 5 94723 698 2 Posilannya angl Tekst lekcij do kursu Tehnologiyi rozrobki i testuvannya program Didkovska M V Quality Assurance Group Navchannya Perekvalifikaciya Pidvishennya rivnya kvalifikacij v sferi Zabezpechennya Yakosti Kontrolyu Yakosti ta Testuvannya PZ ukr ukr