База знань

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

Mans hand pointing to a rules message on a chalkboard.

Тестування програмного забезпечення – креативна та  інтелектуальна робота. Розробка правильних і ефективних тестів – досить непросте заняття.

Принципи тестування, наведені нижче, були розроблені протягом 40 років і є загальними положеннями, якими керуються у тестуванні.

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

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

  1. Повне тестування неможливо

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

  1. Попереднє тестування

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

  1. Накопичення дефектів

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Набагато більше інформації на курсі базовий модуль тестування