Системне тестування програмного забезпечення
Системне тестування програмного забезпечення - це тестування програмного забезпечення (ПО), що виконується на повної, інтегрованій системі, з метою перевірки відповідності системи вихідним вимогам. Системне тестування відноситься до методів тестування чорного ящика, і, тим самим, не вимагає знань про внутрішній устрій системи.
Основним завданням системного тестування є перевірка як функціональних, так і не функціональних вимог до системи в цілому.
При цьому виявляються дефекти, такі як неправильне використання ресурсів системи, непередбачені комбінації даних користувача рівня, несумісність з оточенням, непередбачені сценарії використання, відсутня або неправильна функціональність, незручність використання і т.д. Для мінімізації ризиків, пов'язаних з особливостями поведінки системи в тому чи іншому середовищі, під час тестування рекомендується використовувати оточення максимально наближене до того, на яке буде встановлено продукт після видачі.
Можна виділити два підходи до системного тестування:
-на базі вимог (requirements based)
Для кожного вимоги пишуться тестові випадки (test cases), перевіряючі виконання даної вимоги.
-на базі випадків використання (use case based) За часом проведення тестування
# 9632; Альфа-тестування (alpha testing)
# 9632; Тестування нової функціональності (new feature testing)
# 9632; Регресійне тестування (regression testing)
# 9632; Бета-тестування (beta testing)
# 9632; Атестаційна тестування
Альфа-тестування - імітація реальної роботи з системою штатними розробниками, або реальна робота з системою потенційними користувачами / замовником. Найчастіше альфа- тестування проводиться на ранній стадії розробки продукту, але в деяких випадках може застосовуватися для закінченого продукту в якості внутрішнього приймального тестування. Іноді альфа-тестування виконується під отладчиком або з використанням оточення, яке допомагає швидко виявляти знайдені помилки. Виявлені помилки можуть бути передані тестувальникам для додаткового дослідження в оточенні, подібному тому, в якому буде використовуватися програма.
Бета-тестування - в деяких випадках виконується поширення версії з обмеженнями (по функціональності або часу роботи) для певної групи осіб, з тим щоб переконатися, що продукт містить досить мало помилок. Іноді бета-тестування виконується для того, щоб отримати зворотній зв'язок про продукт від його майбутніх користувачів.
Регресійне тестування (англ. Regression testing, від лат. Regressio - рух назад) - збірна назва для всіх видів тестування програмного забезпечення, спрямованих на виявлення помилок в уже
протестованих ділянках вихідного коду. Такі помилки - коли після внесення змін до програми перестає працювати то, що повинно було продовжувати працювати, - називають регресійний помилками (англ. Regression bugs).
Регресійне тестування (за деякими джерелами) включає new bug-fix - перевірка виправлення знайденого раніше дефекту, old bug-fix - перевірка, що виправлений раніше і верифікований дефект не відтворюється в системі знову, а також side-effect - перевірка того, що на не порушилася працездатність працює раніше функціональності, якщо її код міг бути порушений при виправленні деяких дефектів в інший функціональності. Зазвичай використовуються методи регресійного тестування включають повторні прогони попередніх тестів, а також перевірки, чи не потрапили регресивні помилки в чергову версію в результаті злиття коду.
З досвіду розробки ПО відомо, що повторна поява одних і тих же помилок - випадок досить частий. Іноді це відбувається через слабку техніки управління версіями або через людську помилку при роботі з системою управління версіями. Але настільки ж часто вирішення проблеми буває «недовго живуть»: після наступної зміни в програмі рішення перестає працювати. І нарешті, при переписуванні будь-якої частини коду часто спливають ті ж помилки, що були в попередній реалізації.
Тому вважається хорошою практикою при виправленні помилки створити тест на неї і регулярно проганяти його при подальших змінах програми. Хоча регресійне тестування може бути виконано і вручну, але частіше за все це робиться за допомогою спеціалізованих програм, що дозволяють виконувати всі регресійні тести автоматично. У деяких проектах навіть використовуються інструменти для автоматичного прогону регресійних тестів через заданий інтервал часу. Зазвичай це виконується після кожної вдалої компіляції (в невеликих проектах) або щоночі або щотижня.
Регресійне тестування може бути використано не тільки для перевірки коректності програми, часто воно також використовується для оцінки якості отриманого результату. Так, при розробці компілятора, при прогоні регресійних тестів розглядається розмір одержуваного коду, швидкість його виконання і час компіляції кожного з тестових прикладів.
Атестаційна тестування використовується для того, щоб визначити, чи відповідає реалізація системи стандарту, на якому заснована дана реалізація.
Щоб полегшити це завдання, було розроблено безліч тестових процедур і тестових конфігурацій - або розробниками стандартів, або зовнішніми організаціями, що спеціалізуються на тестуванні відповідності стандартам.