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