База знань

Принципи тестування

Mans hand pointing to a rules message on a chalkboard.
Тестування програмного забезпечення – креативна та інтелектуальна робота. Розробка правильних та ефективних тестів – досить непросте заняття. Принципи тестування, приведені нижче, були розроблені в останні 40 років та є загальною інструкцією для тестування в цілому.

  1. Тестування показує наявність дефектів

Тестування може показати наявність дефектів в програмі, але не довести їх відсутність. Тим не менш, важливо складати тест-кейси, які будуть знаходити якомога більше багів. Таким чином, при належому тестовому покритті, тестування дозволяє знизити вірогідність наявності дефектів в програмному забезпеченні. В той же час, навіть якщо дефекти не були знайдені в процесі тестування, не можна стверджувати, що їх немає.

  1. Вичерпне тестування неможливе

Неможливо провести вичерпне тестування, яке би покривало всі комбінації користувацького вводу та станів системи, за виключенням найбільш примітивних випадків. Замість цього необхідно використовувати аналіз ризиків та розташування пріоритетів, що дозволить більш ефективно розподілити зусилля по забезпеченню якості ПЗ.

  1. Раннє тестування

Тестування повинне починатися якомога раніше в життєвому циклі розробки програмного забезпечення, і його зусилля повинні бути сконцентровані на визначених цілях.

  1. Скупчення дефектів

Різні модулі системи можуть містити різну кількість дефектів – тобто, щільність скупчення дефектів в різних елементах прогарми може відрізнятися. Зусилля по тестуванню повинні розподілятися пропорційно фактичної щільності дефектів. В основному, більшу частину дефектів знаходять в обмеженій кількості модулів. Це прояв принципу Парето: 80% проблем містяться в 20% модулів.

  1. Парадокс пестициду

Проганяючи одні й ті ж тести знову та знову, Ви зіткнетеся з тим, що вони знаходять все менше нових помилок. Оскільки система еволюціонує, багато із раніше знайдених дефектів виправляють і старі тест-кейси більше не спрацьовують.

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

  1. Тестування залежить від контенту

Вибір методології, техніки та типу тестування буде напряму залежати від природи самої програми. Наприклад, програмне забезпечення для медичних цілей потребує більш строгої та ретельної перевірки, ніж, скажімо, комп’ютерна гра. З тих же міркувань, сайт із великою відвідуваністю повинен пройти через серйозне тестування продуктивності, щоб показати можливості роботи в умовах великого навантаження.

  1. Міф про відсутність помилок

Той факт, що тестування не виявило дефектів, ще не значить, що програма готова до релізу. Знаходження та виправлення дефектів будуть не важливі, якщо система виявиться незручною у використанні, та не буде задовольняти очікуванням та вимогам користувача.

І ще декілька важливих принципів:

– тестування повинне проводитися незалежними спеціалістами;

– залучайте кращих професіоналів;

– тестуйте як позитивні, так і негативні сценарії;

– не допускайте змін в програмі в процесі тестування;

– вказуйте очікуваний результат виконання тестів.