переповнення буфера - виявляє вихід за межі буферів при обробці даних;
· Тестування конфігурації сервера - допомагає виявити помилки, пов'язані з розкриттям конфігурації апаратних і програмних засобів, а також з некоректними налаштуваннями параметрів безпеки серверного ПЗ.
Завдання проектувальника системи полягає в тому, щоб зробити витрати на організацію атаки вище, ніж ціна одержуваної в результаті інформації.
У процесі тестування локалізації (localization testing) перевіряються різні аспекти, пов'язані з регіональними особливостями (перевірка роботи різних мовних версій, систем вимірювань, форматів дат, нумерації днів тижня, порядку сортування і т.д.)
Тестування сумісності (compatibility testing) - перевірка сумісності системи з різними варіантами програмно-апаратного оточення (операційними системами, різними браузерами, мережевим ПЗ, СУБД, стороннім ПЗ, апаратною платформою).
. Види і рівні тестування
. 1 Види тестування
Виділяють три рівні тестування: модульне, інтеграційне і системне.
Модульне тестування - тестування, що має метою перевірити працездатність окремих модулів (функції або класу). Модульне тестування зазвичай виконується незалежно для кожного програмного модуля і є, мабуть, найбільш поширеним видом тестування, особливо для систем малих і середніх розмірів. В якості критерію повноти використовується відсоток покриття тестами ключових елементів модуля (оператори, гілки логічних умов і т.д.). Стандарт IEEE 1008-1987 визначає зміст фаз процесу модульного тестування.
Модульні тести перевіряють, що певні дії на модуль призводять до бажаного результату. Як правило. Модульні тести створюються з використанням методу «білого ящика». При наявності залежностей модуля, що тестується від інших модулів замість них використовуються так звані mock-об'єкти, що надають фіктивну реалізацію їх інтерфейсів. З використанням mock-об'єктів можуть бути протестовані такі аспекти функціонування, які неможливо перевірити з використанням реальних залежних модулів. Існують спеціальні бібліотеки (наприклад, Moq), що спрощують завдання створення mock-об'єктів. У роботі (Месарош Дж. «Шаблони тестування xUnit. Рефакторинг коду тестів») описуються найбільш вдалі підходи до організації модульного тестування.
Модульне тестування дозволяє програмістам безпечно проводити рефакторинг, будучи впевненими, що змінений модуль раніше працює коректно. Модульні тести можуть використовуватися в якості специфікації, так як при тестуванні фактично перевіряється їх очікуване поведінка.
Для більшості популярних мов програмування високого рівня існують інструменти і бібліотеки модульного тестування (наприклад, інструменти сімейства xUnit: NUnit, JUnit, CppUnit).
Інтеграційне тестування (integration testing) - одна з фаз тестування ПЗ, при якому окремі програмні модулі об'єднуються і тестуються в комплексі. Зазвичай інтеграційне тестування проводиться після модульного тестування і передує системному тестуванню. Метою даного виду тестування є знаходження проблем взаємодії модулів взаємодії модулів (компонент, підсистем). При наявності резерву часу на дане стадії тестування ведеться ітераційно, з поступовим підключенням подальших підсистем. Тестування виконується через інтерфейс модулів з використанням методу «чорного ящика».
Існує декілька стратегій проведення інтеграційного тестування, які грунтуються на знаннях про архітектуру системи.
Монолітне тестування припускає, що окремі компоненти системи серйозного тестування не проходили. Система перевіряється вся в цілому після розробки всіх модулів. Цей підхід не слід плутати з системним тестуванням. Незважаючи на те що при монолітному тестуванні перевіряється робота всієї системи в цілому, основне завдання цього тестування - визначити проблеми взаємодії окремих модулів системи. Основні недоліки монолітного тестування полягають в складності виявлення джерел помилок, а також в складності автоматизації даного виду тестування. На практиці найчастіше в різних частинах проекту застосовуються всі розглянуті в попередньому розділі методи в сукупності. Кожен модуль тестують у міру готовності окремо, а потім включають у вже готову композицію. Для одних частин тестування виходить низхідним, для інших - висхідним.
Раніше розглядався підхід до організації інтеграційної тестування на основі застосування систем безперервної інтеграції, використання яких дозволяє швидко виявляти проблеми взаємодії модулів.
Системне тестування - це тестування повною, інтегрованої системи з метою перевірки її відповідності системним вимогам і показникам якості. Системні тести в...