Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Філософія тестування

Аксіоми (принципи) тестування.

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

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

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

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

Приведемо ще разів три найбільш важливих принципу тестування.

Тестування - це процес виконання програм з метою виявлення помилок.

Хорошим вважається тест, який має високу вірогідність виявлення ще не виявленої помилки.

Вдалим вважається тест, який виявляє ще не виявлену помилку.

 

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

Прибічник підходу, відповідного лівій межі спектру (мал. 5.2), проектує свої тести, досліджуючи зовнішні специфікації або специфікації сполучення програми або модуля, які він тестує. Програму він розглядає як "чорний ящик". Позиція його така: "Мене не цікавить, як виглядає ця програма і чи виконав я усі команди або усі шляхи.

 

 


Мал. 5.2. Схема спектру підходів до проектування тестів

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

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

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

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

 

<== предыдущая лекция | следующая лекция ==>
Тестування (testing) - процес виконання програми (чи частини програми) з наміром (чи метою) знайти помилки | Покрокове тестування
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 410; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.