А.
І. Горошко,
студента
Полтавського національного технічного університету імені Юрія Кондратюка,
факультет інформаційних та телекомунікаційних технологій та систем
О.
О. Бородина,
аспірант
Полтавського національного технічного університету імені Юрія Кондратюка,
факультет інформаційних та телекомунікаційних технологій та систем
ТЕСТУВАННЯ
ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
Актуальність дослідження. За останні роки
програмна індустрія досягла такого рівня розвитку, при якому вимоги до
забезпечення якості стали обов’язковим пунктом договорів на предмет розробки
програмних систем. Актуальність розробки якісного ПЗ підтверджується насамперед
економічними чинниками. Можна стверджувати, що рівень помилок за останні 20
років практично не змінився, не дивлячись на застосування об’єктно-орієнтованої
технології, автоматичних налагоджувачів, більш якісних засобів тестування та
більш суворий контроль типів у таких сучасних мовах програмування, як Java, Ada
та ін. Згідно з даними звіту Національного інституту по стандартах та
технології США[2] «об’єм економічних витрат внаслідок несправного ПЗ у США
досягає мільярдів доларів на рік, що складає за деякими оцінками близько 1%
національного валового внутрішнього продукту».
Один із загальних законів практичного
програмування полягає в тому, що жодна програма не дає бажаних результатів при
першій спробі трансляції та виконання. Певне уявлення про справжні причини
появи помилок у роботі програми дає таке процентне співвідношення джерел збоїв:
вхідні дані (1%), помилки користувача (5%), аппаратні збої (1%), помилки у
роботі системне програмного забезпечення (3%), розробка системи (15%),
програмування (75%) [9]. Таким чином, програмне забезпечення виступає чи не
основним джерелом ризику в проектах розробки програмних рішень. Традиційно у програмному
забезпеченні
(надалі ПЗ) диференціюють два типи помилок: синтаксичні помилки, семантичні
(логічні) помилки. Вважаємо, що сучасний висококваліфікований програміст
повинен не тільки писати ефективні програми, але й вміти знаходити в них
усілякі помилки. Сучасна практика навчання програмуванню орієнтована, в
основному, тільки на виконання програмістом першої половини своєї роботи.
Зв’язок з дослідженнями інших науковців
в цій сфері.
За словами Б.Гейтса, актуальність надійних обчислень має, також найвищий
пріоритет у розвитку сучасних інформаційних технологій. Ця тенденція отримала
спеціальну назву – так звана «платформа для достовірних обчислень» [3]. Тому
поняття «надійне ПЗ означає» спроможність ПЗ виконувати покладені на нього
функції при надходженні вимог на їх виконання. Відомий розробник складних
програмних проектів Дж.Фокс (фірма IBM) навіть стверджував: «Вірне ПЗ не зазнає
несправностей» [4]. За думкою іншої видатної постаті у комп’ютерному світі
Д.Паттерсона, який втілює у життя створення «відновлюваних (після відмови)
комп’ютерних платформ («Recovery Oriented Computing»), світова гонка лише за
продуктивністю електронно-обчислювальних машин призвела лише до залежності людини
від технологій». У своєму всесвітньо відомому маніфесті Д. Паттерсон стверджує:
«Ми повинні створювати інформаційні технології, на які світ дійсно може
покластися так, як він спирається на технології інших типів, повністю довіряючи
їм».
Виділення невирішеної частини проблеми. На сучасному
етапі більшість українських компаній по створенню ПЗ намагаються побудувати
алгоритми програмування, удосконалити мови програмування, покращити інтерфейс,
технологію компіляції у програмний код, але мало хто розробляє засоби
тестування та контролю якості програмних рішень. Весь прогрес у цій сфері
відбувається на основі фіксації негативного досвіду користувачів, а це погіршує
репутацію компаній, призводить до великих економічних втрат користувачів та
елементарних незручностей при роботі. Тому на українському ринку програмного
забезпечення потрібні компанії, що будуть мати кардинально новий підхід до
створення ПЗ.
Мета дослідження: оцінити методи
тестування програмного забезпечення та визначити найбільш оптимальний для тестування
програмного забезпечення на промислових підприємствах України.
Виклад основного матеріалу. На сучасному
етапі розвитку науки тестування програмного забезпечення – це процес, що
використовується для виміру якості розроблюваного програмного забезпечення.
Зазвичай, поняття якості обмежується такими поняттями, як коректність, повнота,
безпечність, але може містити більше технічних вимог, які описані в стандарті
ISO 9126[9]. З точки зору цього стандарту якість (програмних засобів) можна
визначити як сукупну характеристику досліджуваного ПЗ з урахуванням наступних
складових: надійність, супроводжуваність, практичність, ефективність,
мобільність, функціональність. Більш повний список атрибутів і критеріїв можна
знайти в стандарті ISO 9126 Міжнародної організації зі стандартизації. Склад і
зміст документації, супутньої процесу тестування, визначається стандартом IEEE
829-1998 - «Standard for Software Test Documentation» [6].
Вважаємо, що «тестування» – це процес
технічного дослідження, який виконується на вимогу замовників, і призначений
для вияву інформації про якість продукту відносно контексту, в якому він має
використовуватись. Тестування, як етап
розробки ПЗ, також має особливий набір принципів необхідних для тестера. Вони
вказують, як перевіряти системи ПЗ, і визначають правила поведінки
тестера-професіонала. Гленфорд Майєрс в своїй книзі «Мистецтво тестування
ПЗ»[6,7] виділив список обов'язкових принципів.
У
залежності від цілей на промислових об'єктах тестування ПЗ
можна умовно розділити на наступні види:
функціональне; нефункціональне; пов'язане зі змінами.
Функціональні тести базуються на
функціях та особливостях, а також на взаємодії з іншими системами, і можуть
бути представлені на всіх рівнях тестування: компонентному або модульному
(Component/Unittesting), інтеграційному (Integrationtesting), системному
(Systemtesting) і приймальному (Acceptancetesting). Функціональні види
тестування розглядають зовнішню поведінку системи.
Нефункціональне тестування описує
тести, необхідні для визначення характеристик програмного забезпечення, які
можуть бути виміряні різними величинами. У цілому, це тестування того,
"Як" система працює.
Вважаємо, що тестування повинне бути
розглянуте як динамічний процес виконання програми із цінними вхідними даними.
Такий підхід, разом з прикладами тестування, наданим вище, припускає, що
тестування не лише виявляє дефекти, але і використовується для оцінки якості
ПЗ. Результати тесту дозволяють порівняти поточну якість з рівнем, описаним в
документації. Неможливість досягти необхідної якості або будь-які відхилення
обов'язково повинні бути розглянуті.
Одним
з найбільш прогресивних підходів до організації процесу тестування є
інструментарій IBM Rational Unified Process. Загальна методологія розробки ПЗ
Rational Unified Process виділяє досить великий набір видів тестування. Їх
можна з певною часткою умовності розділити таким чином: 1) функціональне
тестування (Function testing): 2) тестування навантаження (Load testing). Для
цього використовують такі інструменти: 1) IBM Rational Test Manager –
управління тестуванням; 2) IBM Rational Purify Plus (Purify, Pure Coverage,
Quantify) – аналіз роботи системи в режимі RunTime; 3) IBM Rational Robot –
функціональне тестування і тестування навантаження; 4) IBM Rational Test
Factory – автоматизація створення тестів; IBM Rational XDE Tester – функціональне тестування Java і
web-додатків. Саме тані типи тестування будуть доцільними на українських
підпрємствах, враховуючи спецфіку кожного із них.
Висновки.
1.
На українському ринку програмного забезпечення потрібні компанії, що будуть
мати кардинально новий підхід до створення ПЗ та їх тестування, а також зможуть
повністю адаптувати уже наявні програми під вимоги українського споживача.
2.
На основі всієї вище наведеної інформації для промислових підприємств України
доцільним буде використання нефункціонального виду тестування і використання
інструментів IBM Rational Robot, а саме функціональне –тестування і тестування
навантаження.
Список
використаної літератури:
1.
The Economic Impacts of Inadequate Infrastructure for Software Testing Research
[Electronic resource]. Triangle Institute, NIST Planning Report No 02-3, RTI
Health,Social, and Economics Research. – Research Triangle Park, NC, May 2002 –Mode
of access:
http://spinroot.com/spin/Doc/course/NISTreport02-3.pdf
2.
Gates B. Trustworthy Computing[Electronic resource] / B.Gates. – Microsoft
Corporation, Executive E-mail, July 18, 2002. – Mode of access:
http://www.microsoft.com/mscorp/execmail/2002/07-18twc.mspx
3.
Фокс, Дж. Программное обеспечение и его разработка [Текст] / Дж. Фокс.– Пер. с
англ. – М.: Мир,1985. – 368 с.
4. Майерс Г.
Искусство тестирования программ[Текст] / Г. Майерс. – Пер. – М.: Финансы и
статистика, 1982. – 172с.
5. Myers G.J. The Art Of Software Testing [Text] /
G.J. Myers – New York: John Wiley & Sons, Inc., 2004. – 254 р. – ISBN 0-
471 -46912-2.
6. Про Тестинг –
Тестирование Программного Обеспечения [Electronic resource] . – Mode of access:
http://www.protesting.ru/testing/testtypes.html
7. Канер С., Фолк Дж., Енг Кек Нгуен. Тестирование программного
обеспечен-[http://software-testing.ru/forum/index.php?/forum/78-literatura-po-testirovaniiu-po/]
8. Винниченко И.В. Автоматизация процессов тестирования [http://software-testing.ru/forum/index.php?/forum/78-literatura-po-testirovaniiu-po/]
9. Блэк Р. Ключевые процессы тестирования
[http://software-testing.ru/forum/index.php? /forum/78-literatura-po-testirovaniiu-po/]