
- •I. Вступ.
- •Загальні поняття.
- •Основні визначення.
- •II. Основна частина.
- •Філософія тестування
- •Інтеграція модулів.
- •Висхідне тестування.
- •Низхідне тестування.
- •Модифікований низхідний метод
- •Метод великого стрибка.
- •Метод сандвіча
- •Модифікований метод сандвіча.
- •Порівняльна характеристика методів тестування.
- •III. Випробування програмних продуктів (аналіз).
- •Мета і особливості випробуванні.
- •Технологічна схема випробування.
- •Планерування і оцінка завершеності випробувань.
- •Стенди відладки і випробування програм.
- •IV. Сертифікація програмних продуктів.
- •Стандартизація систем якості.
- •Класифікація показників якості
- •Вибір номенклатури показників якості
- •Групи показників якості
- •Список використаної літератури:
- •Майерс. Мистецтво тестування програмного забезпечення.
- •Майерс. Надійність програмного забезпечення.
- •Кулаків. Управління якістю програмного забезпечення.
,ПЛАН
ВСТУП.
ЗАГАЛЬНІ ПОНЯТТЯ.
ОСНОВНІ ВИЗНАЧЕННЯ.
ТЕСТУВАННЯ ПРОГРАМНИХ ПРОДУКТІВ.
ФІЛОСОФІЯ ТЕСТУВАННЯ.
ІНТЕГРАЦІЯ МОДУЛІВ.
ВИСХІДНЕ ТЕСТУВАННЯ.
НИЗХІДНЕ ТЕСТУВАННЯ.
МОДИФІКОВАНИЙ НИЗХІДНИЙ МЕТОД.
МЕТОД ВЕЛИКОГО СТРИБКА.
МЕТОД САНДВІЧА.
МОДИФІКОВАНИЙ МЕТОД САНДВІЧА.
ПОРІВНЯЛЬНА ХАРАКТЕРИСТИКА МЕТОДІВ ТЕСТУВАННЯ.
ВИПРОБУВАННЯ ПРОГРАМНИХ ПРОДУКТІВ (АНАЛІЗ).
МЕТА І ОСОБЛИВОСТІ ВИПРОБУВАННІ.
ТЕХНОЛОГІЧНА СХЕМА ВИПРОБУВАННЯ.
ПЛАНЕРУВАННЯ І ОЦІНКА ЗАВЕРШЕНОСТІ ВИПРОБУВАНЬ.
СТЕНДИ ВІДЛАДКИ І ВИПРОБУВАННЯ ПРОГРАМ.
СЕРТИФІКАЦІЯ ПРОГРАМНИХ ПРОДУКТІВ.
СТАНДАРТИЗАЦІЯ СИСТЕМ ЯКОСТІ.
КЛАСИФІКАЦІЯ ПОКАЗНИКІВ ЯКОСТІ.
ВИБІР НОМЕНКЛАТУРИ ПОКАЗНИКІВ ЯКОСТІ
ГРУПИ ПОКАЗНИКІВ ЯКОСТІ
I. Вступ.
Загальні поняття.
Багато організацій, що займаються створенням програмного забезпечення, до 50% засобів, виділених на розробку програм, витрачають на тестування, що складає мільярди доларів по всьому світу в цілому. Та все ж, не дивлячись на величезні капиталовложения, знань про суть тестування явно не вистачає і більшість програмних продуктів неприйнятна ненадійно навіть після «основательного тестування».
Про стан справ краще всього свідчить той факт, що большинство людей, що працюють в області обробки даних, навіть не може правильно визначити слово «тестування», і це насправді головна причина невдач.
«Тестування — процес, підтверджуючий правильність программы і демонструє, що помилок в програмі немає.» Основний недолік подібного визначення полягає в тому, що воно неправильне; фактично це майже визначення антонима слова «тестування». Читач з деяким досвідом программирования вже, ймовірно, розуміє, що неможливо продемонструвать відсутність помилок в програмі. Тому визначення описує нездійсненне завдання, а оскільки тестування частенько все ж виконується з успіхом, принаймні з деяким успіхом, то таке визначення логічно некоректно. Правильне визначення тестування таке: Тестування — процес виконання програми з наміром знайти помилки.
Неможливо гарантувати відсутність помилок в нетривіальній програмі; в кращому разі можна спробувати показати наявність помилок. Якщо програма правильно поводиться для солідного набору тестів, немає підставі стверджувати, що в ній немає помилок; з усією певністю можна лише стверджувати, що не відомо, коли ця програма не працює. Звичайно, якщо є причини вважати даний набір тестів здатним з великою вірогідністю виявити всі можливі помилки, то можна говорити про деякий рівень упевненості в правильності програми, встановлюваному цими тестами.
Психологічні експерименти показують, що більшість людей, поставивши мету (наприклад, показати, що помилок немає), орієнтуються в своїй діяльності на досягнення цієї мети. Тестувальник підсвідомо не дозволить собі діяти проти мети, тобто підготувати тест, який виявив би одну з тих, що залишилися в програмі помилок. Оскільки ми всі визнаємо, що досконалість в проектуванні і кодуванні будь-якої програми недосяжно і тому кожна програма містить деяку кількість помилок, найпліднішим тестуванням буде знайти деякі з них. Якщо ми хочемо добитися цього і уникнути психологічного бар'єру, що заважає нам діяти проти поставленої мети, наша мета повинна полягати в тому, аби знайти якомога більше помилок. Сформулюємо базовий висновок:
Якщо ваша мета — показати відсутність помилок, ви їх знайдете не надто багато. Якщо ж ваша мета — показати наявність помилок, ви знайдете значну їх частину.
Надійність неможливо внести до програми в результаті тестування, вона визначається правильністю етапів проектування. Найкраще вирішення проблеми надійності — із самого початку не допускати помилок в програмі. Проте вірогідність того, що удасться бездоганно спроектувати велику програму, нескінченно мала. Роль тестування полягає якраз в тому, аби визначити місцезнаходження нечисленних помилок, що залишилися в добре спроектованій програмі. Спроби за допомогою тестування досягти надійності погано спроектованої програми абсолютно безплідні.
Тестування виявляється досить незвичайним процесом (ось чому воно і вважається важким), оскільки цей процес руйнівний. Адже мета перевіряючого (тестувальника) — змусити програму збитися. Він задоволений, якщо це йому удається; якщо ж програма на його тесті не збивається, він не задоволений.
Ще одна причина, по якій важко говорити про тестування, — це той факт, що про нього відоме дуже мало що. Якщо сьогодні ми розташовуємо 5% тих знанні про проектування і власне програмування (кодуванні), які будуть у нас до 2000 р., то про тестування нам відомо менше 1%.