10.07.2015 Views

ДИПЛОМНА РАБОТА - Св. Климент Охридски

ДИПЛОМНА РАБОТА - Св. Климент Охридски

ДИПЛОМНА РАБОТА - Св. Климент Охридски

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

С О Ф И Й С К И У Н И В Е Р С И Т Е Т" С В . К Л И М Е Н Т О Х Р И Д С К И "Факултет по Математика и ИнформатикаКатедра „Информационни Технологии”Д И П Л О М Н А Р А Б О Т Атема:Тестване базирано на моделиДипломант: Мирослава Владкова Иванова, фак.номер:М21228Специалност: ИнформатикаСпециализация: Разпределени системи и мобилни технологииНаучен ръководител: доц. Силвия ИлиеваКонсултант: ст.ас. Елиза СтефановаСофия‚ 2007 г.1


Съдържание<strong>ДИПЛОМНА</strong> <strong>РАБОТА</strong> ....................................................................................... 1Увод ............................................................................................................................................................. 4Основни цели на разработката ................................................................................................. 4Структура на дипломната работа ............................................................................................ 5ГЛАВА 1. ОБЗОР ...................................................................................... 61.1Класически техники за тестване ...................................................................................... 61.1.1. Ръчно тестване ...................................................................................................................... 61.1.2. Автоматизирани тестове.................................................................................................... 61.1.3. Изпълнение на случайни действия .............................................................................. 81.1.4 Сравнителен анализ на класическите техники за тестване .............................. 91.2 Видове тестване ........................................................................................................................ 101.2.1Tестване в процеса на разработка. .............................................................................. 101.2.2 Тестване според характеристиките, които се тестват ........................................ 111.2.3 White-box и black-box тестване ..................................................................................... 131.3 Анализ на тестването базирано на модели ............................................................ 13ГЛАВА 2. ТЕСТВАНЕ БАЗИРАНО НА МОДЕЛИ ...................................... 172. 1 Модели ....................................................................................................................................... 172. 2 Модели в софтуерното тестване................................................................................... 182.2.1 Машина с краен брой състояния (finite state machine) ...................................... 182.2.2 Диаграма на състояние (Statechart) ........................................................................... 222.2.3 Вериги на Марков (Markov Chains) .............................................................................. 232.2.4 Граматики (Grammars) ...................................................................................................... 252.2.5 Таблици на решения(Decision Tables) ........................................................................ 272.3 Основни задачи при тестването базирано на модели .................................... 282.3.1 Разбираемост на системата, която ще бъде тествана ...................................... 282.3.2 Избор на модел ..................................................................................................................... 312.3.3 Дефиниране на модела ..................................................................................................... 342.3.4 Генериране на модели ....................................................................................................... 352.3.5 Изпълнение на тестовете ................................................................................................. 362.3.6 Оценяване на резултатите .............................................................................................. 372.3.7 Използване на резултатите от теста ........................................................................... 382.3.8 Приложения за тестване базирано на модели ....................................................... 382.3.9 AGEDIS ...................................................................................................................................... 402


ГЛАВА 3. ПРИЛОЖЕНИЕ НА ТЕСТВАНЕТО БАЗИРАНО НА МОДЕЛИ 473.1 Описание на модела .............................................................................................................. 473.2 Реализация .................................................................................................................................. 493.3 Алгоритми за навигация ..................................................................................................... 523.4 Изпълнение на предишна тестова версия .............................................................. 58ГЛАВА 4. ИЗСЛЕДВАНЕ НА ВЛИЯНИЕТО НА ПАРАМЕТРИТЕ –ГРАФИК, ЦЕНА И КАЧЕСТВО ........................................................................ 594.1 График(Schedule) .................................................................................................................... 594.2 Цена(Cost) .................................................................................................................................... 604.3 Качество(Quality)..................................................................................................................... 62ГЛАВА 5. ПОДХОД ЗА ПРИЛАГАНЕ НА ТЕСТВАНЕ БАЗИРАНО НАМОДЕЛИ 66Заключение .......................................................................................................................................... 69Използвана литература ................................................................................................................ 70Речник на използваните термини ......................................................................................... 70Приложение ......................................................................................................................................... 733


УводТестването е най-известният метод, чрез който се осигурявакачеството на софтуерните продукти. Тестването на еднасофтуерна система означава откриване на несъответствия междуреалното и очакваното поведение. Един начин за подобряване натестването е използването на модели, които описват очакванотоповедение според изискванията на системата. Процеса на тестванечрез модели е познат като “тестване базирано на модели”. Тойобикновено се отнася до генериране на тестови случаи и оценка нарезултатите въз основа на модел на поведение на системата.Понастоящем съществуват различни методи за дефиниране намодели на софтуера - например машина с краен брой състояния(finite state machine), граматики (Grammars) и други.Основни цели на разработкатаЦелта на дипломната работа е да се проучат и приложатметодите за тестване, базирано на модели и анализ върхуконкретно софтуерно приложение.Задачи, произтичащи от целта:• Да се направи обзор/сравнителен анализ на класическитеподходи за тестване и тестване, на базата на модели.• Да се приложи тестване на базата на модели в реалноприложение.• Да се изследва влиянието на параметрите – напримерграфик, цена и качество.• Да се анализират резултатите и да се предложатпрепоръки/подход за прилагане на тестване на базата намодели.4


Структура на дипломната работаДипломната работа включва: Увод, Изложение, Заключение,Речник на използваните съкращения и термини, Списък сизползвана литература и Приложение.Увод – Кратко въведение в темата и описание на структурата надипломната работа.В Глава 1 се разглежда състоянието в областта – представя сетестването базирано на модели; извършва се сравнение междукласическите подходи за тестване и тестването базирано намодели.Глава 2 е посветена изцяло на тестването базирано на модели.Представят се видовете модели, които могат да се използват всофтуерното тестване. Анализират се основните характеристики натестването базирано на модели и се разглеждат стъпките приприлагането му.Глава 3 представя приложение на тестването базирано на модели вреално време. Създаден е модел на поведение на уеб базираноприложение. Показано е определянето на много тестови случаи,чрез този модел.Глава 4 съдържа изследване на влиянието на следните параметри– график, цена и качествоГлава 5 анализира резултатите и предлага подход за прилагане натестването базирано на модели.Използвана литератураРечник на използваните термини и съкращенияПриложение: Програмни кодове от реализираното софтуерноприложение5


Глава 1.ОбзорТестването на една софтуерна система означава откриване наразличията между реалното и очакваното поведение на системата.При по-сложните софтуерни системи и кратките им срокове заизпълнение е почти невъзможно да се направи пълно гарантиранена качеството. В тази глава са предствени класическите техники затестване и е направен сравнителен анализ между тях.1.1Класически техники за тестванеВ следващия параграф се представят част от класическитетехники за тестване. Това са ръчно тестване, автоматизиранитестове и тестване със случайни действия.1.1.1. Ръчно тестванеНай – често в практиката се използва ръчното тестване. Топредставлява ръчна намеса и взаимодействие на човека съссистемата, която тества. Тестват се всички функционалности, коитосе съдържат в приложението. Сравняват се текущите състояние съсочакваните. При ръчното тестване винаги има вероятност да сеизпусне проверката на някой тестови случай.1.1.2. Автоматизирани тестовеАвтоматизираното тестване включва използването настратегии и инструменти, които извършват дейностите по тестванена даден софтуерен продукт, и при които намесата на човек есвързана основно с изследване на получените резултати от тезидейности.6


Автоматизираното тестване е основано на тестови скриптове иинструменти за тестване. Те са програми, които предоставятмеханизми за поддържане на различни подходи за автоматизиранитестове. Биват реализирани на следните програмни езици - VB, C,C + +, JAVA, PERL.При тестването се изпълняват тестови скриптове:• Инициира се системата, която ще се тества (System UnderTest - SUT)• Обхождане на множеството от тестове, като за всеки случайсе изпълняват следните дейностиo Инициализация на SUTo Инициализация на изходните данни, различни оточакваните (ако е възможно)o Въвеждане на даннитеo Изпълнение на SUTo Извличане на изходните данни и съхраняването им домомента, когато доклада (report) за теста може да бъдесъздаденПример:За целта на примера ще използваме калкулатора в MicrosoftWindows [3] и ще разгледаме как тази техника може да бъдеприложена върху него.Приложението има меню, което дава възможност да се изберемодел(Фигура 1): стандартен (standard) или научен (scientific). Привторият модел има по-голяма възможност за избор нафункционалност: Hex, Decimal, Octal, Binary, Qword, Dword, Word,Byte.7


Фигура 1 Калкулатор в Microsoft Windows.Статичен автoматичен тест при калкулатора може да бъде въвформата на скрипт (script), който описва една и същапоследователност от действия в един същи ред. Пример:o Стартиране на Калкулаторo Избиране на “Standard” от Viewo Избиране на “Scientific” от Viewo Избор на възможностите на калкулатораo Затваряне на приложениетоЦелта на този пример беше да покажем недостатъкът на тазитехника. Всеки скрипт е изцяло фиксиран и трябва да бъдеподдържан индивидуално. Няма възможност да се изпълнятразлични варианти на последователност от действия.1.1.3. Изпълнение на случайни действияСлучайните тестове се прилагат на приложенията, катодействията които се извършват са случайно избрани. При тях нямазначение какво се случва след дадено действие и какво трябва дасе изпълни. Да вземем за пример калкулатора, които разгледахме.8


При стартиран калкулатор модел Scientific може да натискамепроизволни клавиши на клавиатурата, докато в един момент снатискането на F6 избираме Decimal.1.1.4 Сравнителен анализ на класическите техники затестванеТук ще направим един сравнителен анализ на класическитетехники за тестване – ръчно тестване, автоматизирани тестове иизпълнение на случайни действия.o Системaта тествана от нас, променя малко или много своятафункционалност. Това означава, че атоматизираните тестове,които са били създадени трябва да бъдат промененисъобразно новата функционалност за да може да поддържатновото поведение. За съжаление това е много скъпо струващпроцес.o Автоматизирани тестове могат да откриват само специфичначаст от грешките и тези тестове стават безсмислени след катоопределените грешки са открити и поправени. Този феномене известен като “pesticide pardox”.o Изпълнението на случайни действия за тестове води дотрудно контролиране на последователността от действия,дори невъзможно, което пък говори за неизпълнение натестовете покриващи цялата функционалност.o Ръчното тестване не е подходящо за сложните системи.Класическите техники за тестване имат и свойте недостатъци.Скриптовете(scripts) написани при автоматизираните тестове немогат да се използват след промяна на функционалността насистемата. Ръчното тестване е ефективно за малки системи, аизпълняването на случайни действия може да доведе до9


неизпълнение на тестове.Тестването базирано на модели решава тези проблеми катопредоставя описание на поведението или модел на системата,която се тества. Отделен компонент използва този модел дагенерира тестовите случаи. След това тези тестови случаи сеизпълняват за системата, която се тества.1.2 Видове тестванеСледващият параграф описва видовете тестване, основнитеим характеристики и дава изчерпателна дефиниция на тестванетобазирано на модели.1.2.1Tестване в процеса на разработка.При изработването на една софтуерна система, процеса натестване се състои от няколко различни фази. Тъй като по време навсяка фаза се сравняват изискванията на системата с реалнатареализация, във всяка една от тях е приложимо тестванетобазирано на модели.Във всяка фаза е необходимо да се определят тестовите случаи.При тест процесите се използват различни видове и начини натестване. Ще разгледаме някои от използваните в практикатаопределения за тест процеси:• Unit TestingТестване на най-малката програмна структурна единица – метод,клас, компонент или модул; обикновенно това се прави отпрограмистите, като се дебъгва програмен код или се записват икодират автоматизирани тестове за многократно изпълнение; По10


време на тази фаза на тестване тестването базирано на моделиможе да се използва, за да се тества даден отделен модул. Чрезмоделиране на отделните входните данни за всеки отделенкомпонент могат бързо да се генерират множество oт различнитестове, които базирани на изискванията да верифициратфункционалността им.• System TestingBlack-box тип тестване, което се базира на пълния обемспецифицирани изисквания на потребителите; покрива пълнототестване на всички комбинирани и интегрирани части насистемата. Ако по време на този етап се приложи тестването,базирано на модели, може да се гарантира, че изискванията саизпълнени.• Integration TestingТестване дали комбинирани части на приложението функциониратзаедно правилно; "частите", които се интегрират могат да бъдатмодули, подсистеми, индивидуални приложения, приложения наклиент и сървър на мрежа, и т.н. Тестват се дали интерфейситемежду отделните компоненти са дефинирани и реализираникоректно. Проверява се дали отделните компоненти на систематаработят заедно, както е описано в спецификацията и дизайна насистемата. Ако тук се приложи тестването, базирано на модели,много по-рано ще се открият несъответсвията между изискваниятаи реализацията на системата.1.2.2 Тестване според характеристиките, които се тестват11


Според характеристиките, които се тестват може да се определятняколко основни видове тестване: Тестване на сигурността (Security) - тестване на степента назащита на системата от вътрешен и външен неоторизирандостъп. Издръжливост (Robustness) - тества се дали системата седържи коректно при появата на неoчаквани входни данни.Прилагат се известните “stress” тестове за особено голямонатоварване на потребителския интерфейс, широка гама отзапитвания към голяма база данни и др. Производителност (Performance) - измерва се времето заизвършване на дадена работа. Използваемост (Usability) - тества се използваемостта насистема според дефинирани стандарти. Надежност (Reliability) - тества се надежността на системата. Финален (Acceptance) – финален /приемателен/ тест, базиранна изискванията на крайните потребители; или определен заизползване от потребителите за определен период от време. Възстановяване (Recovery) – тестване на степента навъзстановяване на системата след софтуерен или хардуеренсрив Съвместимост (Compatability) – тества се съвместимостта насофтуера по отношение на хардуер, операционни системи,мрежи, browsers /за web приложения/ и др. Повторно-тестване (Regression) – повторно тестване следмодифициране или добавяне на нови функционалности насофтуера, или промяна на средата /environment/, в която щефункционира; при този тип тестване е особено подходящо12


използването на автоматизирани тестови средства (testingtools).1.2.3 White-box и black-box тестванеСлед като са завършени дизайна и реализацията на даденоприложение или част от него, то трябва да се тества. Проверяватсе дали са изпълнени функционалните изисквания и дали успешноса реализирани. Изпълняват се тестове, които проверяватвъзможните сценарии на употреба. Така нареченото функционалнотестване бива white-box и black-box. White-boxОсновава се на познания за вътрешния дизайн и / или напрограмен код – вътрешна програмна логика, оператори,процедури, условия и т.н. Black-boxНе е основано на каквото и да е познание за вътрешен дизайн илипрограмен код на софтуерния продукт; тестовете са основаниединствено на функционалните и технологичните изисквания напотребителите.1.3 Анализ на тестването базирано на моделиМоже да се дефинира, че тестването базирано на модели е “blackbox”тестване, в което определянето на тестовите случаи иверификацията на тестовете са базирани на модел на очакваното13


поведение на системата [3]. На фигура 2 е показано как тестванетобазирано на модели е свързано с други методи на тестване.Фигура 2 Тестване базирано на модели и други методи на тестванеИзграждането на тестването базирано на модели започва отизискванията на системата. За да се изгради модела е необходимомного добро познаване на системата, която ще се тества,характеристиките на потребителите, условията при които даденодействие може да се случи [1]. Определеният модел се използва загенериране на тестови случай (test cases). Спецификацията натестовите случай включва информация за очакваните входниданни. Моделът може да генерира информация за входните данни,такива каквито се очакват от системата. След изпълняването натестовете, входните данни се сравняват с очакваните.Характеристиките се използват, за да се идентифицират грешкитев системата. Тестовите данни се използват също, за да се направят14


сравнения, до каква степен тестването е покрилофункционалността.Фигура 3 Основните дейности при тестването базирано на моделиНа фигура 3 е показано как тестването базирано на модели есвързано с автоматизираното тестване. Основните дейности притестването базирано на модели са оцветени в зелено [1] –изграждането на модел, генериране на очаквани входни и изходниданни, стартиране на тестове и т.н.15


Специфичните действия са:• Изграждане на модел• Генериране на очаквани входни данни• Генериране на очаквани изходни данни• Стартиране на тестове• Сравнение на действителните входни данни със очакванитетакива• Определяне на следващи действия (дали да се променямодела, генериране на още тестове, спиране на тестването ит.н.)Тестването базирано на модели, дава резултат в следните области[1]:• Повишава се комуникацията между разработчиците итестерите• Възможност за ранно откриване на различия вспецификацията и дизайна• Има възможност за автоматично генериране на множествотестове. Чрез много от другите подходи тестовете сегенерират ръчно.• Лесно подновяване на тестовете след промяна наспецификацията.• Способност за оценяванае на regression тестове.• Възможност да се определи модела на поведение насистемата, според изискванията на потребителя.16


Глава 2.17

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!