Какво е тестване, базирано на модел?
⚡ Умно обобщение
Тестването, базирано на модел, проверява поведението на софтуера по време на изпълнение спрямо прогнозите, направени от ABS.tract модел на системата, генериращ тестови случаи автоматично от крайни машини, диаграми на състоянията или UML нотации, а не ръчно.

Какво е тестване, базирано на модел?
Тестване на базата на модел е техника за тестване на софтуер, при която поведението на тествания софтуер по време на изпълнение се проверява спрямо прогнозите, направени от модел. Моделът е описание на поведението на системата, изразено чрез входни последователности, действия, условия, изход и потока от данни от входа към изхода. Използваемият модел трябва да бъде практически разбираем, многократно използваем и споделяем, и трябва да описва точно тестваната система.
Съществуват множество модели, като всеки от тях описва различен аспект от системното поведение. Често срещани примери са:
- Поток от данни
- Контролен поток
- Графики на зависимости
- Таблици за решения
- Машини за преход на състоянието
Тестването, базирано на модел, описва как една система се държи в отговор на действие, определено от модела. Задайте действието, след което проверете дали системата реагира така, както моделът предвижда. Всяко разминаване между двете е или дефект в софтуера, или грешка в модела, и двете си струва да бъдат открити.
Това е олекотен формален метод за валидиране на система и се прилага както за хардуерно тестване, така и за софтуерно тестване. Тъй като тестовете идват от спецификация на поведение, а не от кода, техниката е в съответствие с... тестване на черна кутия семейство на техники за тестване на софтуер.
Пример за тестване, базирано на модел
Най-лесният начин да разчетете поведенчески модел е да го следвате. Диаграмата по-долу моделира малка задача за редактиране на текст, като всяко поле представлява състояние, в което приложението може да се намира, а всяка стрелка представлява действие, което потребителят може да предприеме.
Моделът обяснява опростен подход за писане на поезия в Notepad и възможните действия, свързани с всяка стъпка. За всяко действие, като например стартиране на приложението, въвеждане на стихотворение или запазване на файла, тестов случай могат да бъдат генерирани и резултатът да бъде проверен. Преминаването по различен път през една и съща диаграма, например стартиране и затваряне без запазване, създава различен тестов случай без допълнителни разходи за проектиране, което е икономическият аргумент за цялата техника.
Видове MBT
Има два вида рамки за тестване, базирани на модели, като разликата между тях е просто кога се произвеждат стъпките на тестване:
- Офлайн / априори: Генериране на тестови пакети преди изпълнението им. Тестовият пакет е колекция от тестови случаи и в този режим пакетът се съхранява, преглежда и изпълнява повторно като всеки друг тестване за автоматизация актив.
- Онлайн / в движение: Генериране на тестови пакети по време на изпълнението на теста, където следващата стъпка се избира въз основа на това как системата действително е реагирала на предишната.
Офлайн генерирането е подходящо за регулирани среди, които се нуждаят от преглеждаем и повтаряем набор от данни. Онлайн генерирането е подходящо за продължителни проучвателни сесии срещу системи със състояние, защото генераторът може да реагира на реалния отговор, а не на прогнозирания.
Как работи тестването, базирано на модел
Независимо коя рамка се използва, техниката следва едни и същи пет етапа. Всеки етап създава артефакт, който следващият етап консумира, поради което моделът, а не тестовият скрипт, се превръща в нещо, което екипът поддържа.
- Стъпка 1: Изградете модела. Преведете изискванията или спецификацията в ABStract модел на очаквано поведение, дефиниращ състоянията, преходите между тях и входните данни, които задействат всеки преход.
- Стъпка 2: Изберете критериите за избор на тест. Критериите казват на генератора кога да спре. Често срещани са покритие на всички състояния, което посещава всяко състояние поне веднъж; покритие на всички преходи, което упражнява всяка стрелка поне веднъж; и покритие на пътя или потока от данни за по-задълбочено проучване.
- Стъпка 3: Генериране на коремни мускулиtract тестови случаи. Инструментът обхожда модела и генерира последователности от коремни мускули.tract стъпки, които отговарят на избраните критерии, заедно с очаквания резултат на всяка стъпка.
- Стъпка 4: Конкретизирайте коремните мускулиtract-тестове. Адаптерният слой картографира всеки абс.tracт да предприеме реално действие срещу системата, като например взаимодействие с потребителския интерфейс, API обаждане или протоколно съобщение. Тази картаping се пише веднъж и се използва повторно от всеки генериран тест.
- Стъпка 5: Изпълнете и произнесете присъди. Конкретните тестове се провеждат срещу тестваната система, всеки наблюдаван отговор се сравнява с прогнозата на модела и се записва оценка за успешен или неуспешен резултат. tracобратно към елемента на модела, който го е създал.
- tracСъздадената в стъпка 5 възможност е практическата полза. Когато дадено изискване се промени, моделът се променя и засегнатите тестове се регенерират, а не се пренаписват, поради което екипите, които правят често регресионно тестване срещу стабилна спецификация, ползата е най-голяма.
Различни модели в тестването
За да се разбере MBT (Международно поведенческа биологична терапия), е необходимо да се разберат някои от моделите, обяснени по-долу. Всеки един от тях заменя изразителната сила с усилието, така че изборът зависи от това колко сложно е всъщност тестваното поведение.
Крайни държавни машини
Този модел помага на тестерите да оценят резултата в зависимост от избрания вход. Различни комбинации от входните данни могат да доведат до съответно състояние на системата.
Системата ще има специфично състояние и текущо състояние, което се управлява от набор от входни данни, дадени от тестерите.
Разгледайте примера по-долу. Система позволява на служителите да влизат в приложение. Текущото състояние на служителя е „Отсъстващ“ и става „Влязъл“, след като служителят влезе в системата. В състояние „Влязъл“ служителят може да преглежда, отпечатва и сканира документи в системата.
Машината на състоянията за този пример е показана тук, като всяка стрелка е обозначена с входа, който причинява прехода.
Държавни диаграми
Диаграмата на състоянията е разширение на машината с крайни състояния и може да се използва за сложни системи в реално време. Диаграмите на състоянията описват различни поведения на системата, те имат определен брой състояния, а поведението на системата се анализира и представя под формата на събития за всяко състояние. Разширението, което е важно на практика, е йерархията: диаграмата на състоянията позволява вложени и паралелни състояния, така че машина, която би се нуждаела от десетки плоски състояния, може да бъде нарисувана компактно.
Например, дефектите се генерират в инструмента за управление на дефекти със статус „Нов“. След като даден дефект бъде отстранен от разработчиците, статусът трябва да се промени на „Поправен“. Ако даден дефект не е отстранен, статусът се променя на „Отворен отново“. Диаграмите на състоянията трябва да бъдат проектирани така, че да се извиква събитие за всяко състояние.
Този жизнен цикъл на дефекта е изобразен по-долу, като всяко състояние е показано като състояние, а всяко действие в работния процес е събитие, което премества дефекта между тях.
Унифициран език за моделиране (UML)
Унифициран език за моделиране (UML) е стандартизиран език за моделиране с общо предназначение. UML включва набор от техники за графична нотация, използвани за създаване на визуални модели, които могат да опишат много сложно системно поведение.
UML има означения като:
- Дейности
- Актьори
- Бизнес процес
- Компоненти
- Програмен език
Диаграмите на активността и машината на състоянията са тези, които генераторите на тестове четат най-често, както е показано на примерния UML модел по-долу.
Инструменти за тестване, базирани на модели
Моделът на хартия не генерира нищо сам по себе си. Необходим е генератор, който да обхожда модела и да генерира тестови пътища, а пазарът на инструменти се разделя на генератори с отворен код и търговски платформи за проектиране на тестове.
- GraphWalker — инструмент с отворен код, който чете модели, оформени като насочени графи, и генерира тестови пътища от тях, с избираеми генератори и условия за спиране.
- fMBT — набор от инструменти за тестване с отворен код, базиран на модели, от Intel, който поддържа генериране и изпълнение на тестове спрямо модели на състояния.
- Конформик — търговски продукт за автоматизиран дизайн на тестове, който извлича тестови случаи и скриптове от графични поведенчески модели.
- MaTeLo и MBTsuite — търговски платформи, насочени към статистически модели на употреба и генериране на тестове в съществуващи рамки за автоматизация.
- Spec Explorer - Microsoftе разширение за тестване, базирано на модели, за Visual Studio, широко цитирано в литературата за тестване на протоколи.
Изборът зависи по-малко от списъците с функции, отколкото от два въпроса: коя нотация екипът може действително да изготви и дали инструментът може да генерира тестове в вече използваната рамка за автоматизация. Генератор, който създава пакети, които никой не може да изпълни, добавя стъпка към процеса, вместо да премахва такава.
Тестване, базирано на модел, срещу традиционен дизайн на тестове
Струва си да се отбележи контрастът с ръчно написания дизайн на тестове, защото двата подхода се провалят на различни места, а не просто единият е по-добър.
| Аспект | Тестване на базата на модел | Традиционен дизайн на теста |
|---|---|---|
| Източник на тестови случаи | Генерирано автоматично от поведенчески модел | Написано индивидуално от тестер от изискванията |
| Ефект от промяна на изискването | Актуализирайте модела, генерирайте отново засегнатите тестове | Намерете и редактирайте всеки засегнат тестов случай ръчно |
| Обхват | Измерено спрямо критерии на модела, като например всички състояния или всички преходи | Измерва се спрямо изискванията и зависи от преценката на тестващия |
| Предварителни разходи | Високо: умения за моделиране, настройка на инструмента и адаптивен слой | Ниско: тестерът може да започне да пише веднага |
| Най-добро пасване | Дългоживеещи системи със стабилна спецификация, поддържащи състоянието | Кратки проекти, еднократни филми и проучвателна работа |
| Основен режим на повреда | Грешен или остарял модел тихо генерира грешни тестове | Пропуски и дубликати се натрупват в голям пакет |
Еволюцията по-долу поставя техниката в контекст: ръчното изпълнение на тестове отстъпи място на автоматизираното изпълнение, а подходите, базирани на модели, преместват автоматизацията едно ниво по-напред, в самия дизайн на тестовете.
Предизвикателства на моделно базирано тестване
Внедряването на MBT в организацията изисква значителни инвестиции на пари и усилия. Следните недостатъци на MBT са... софтуерно инженерство:
- Тестерите се нуждаят от умения за моделиране, които традиционният дизайн на тестове не изисква.
- Кривата на обучение е дълга и първият проект обикновено струва повече, отколкото спестява.
- Самият модел може да бъде труден за разбиране и преглед, особено след като се разрасне.
- Модел, който се отклонява от спецификацията, генерира уверени, грешни тестове.
- Адаптерният слой, който превръща коремните мускулиtracСтъпките към реални действия трябва да бъдат написани и поддържани отделно.
- Размерът на модела нараства бързо, така че моделът с неограничено състояние може да генерира повече пътища, отколкото който и да е екип може да изпълни.
Нито едно от тези твърдения не е причина да се избягва техниката, но заедно те обясняват защо MBT обикновено се въвежда първо в една стабилна подсистема, а не в цяла... жизнен цикъл на софтуерно тестване веднага.
Предимства на моделно-базираното тестване
На фона на тези разходи, предимствата на MBT са:
- Лесна поддръжка на тестови случаи и тестов набор, тъй като се редактира моделът, а не отделните тестове.
- Намаляване на разходите през целия жизнен цикъл на дългосрочен проект.
- Подобрен покритие на теста, тъй като генераторът изследва пътища, които човек би пропуснал.
- Различни генерирани пакети могат да работят паралелно на произволен брой машини.
- Ранно откриване на дефекти, защото неяснотите се появяват още по време на изграждането на модела, преди да се изпълни какъвто и да е код.
- Увеличение на броя на откритите дефекти при едно и също тестово усилие.
- Спестяване на време при проектиране на тестове, след като моделът и адаптерът съществуват.
- Подобрено удовлетворение от работата на тестерите, тъй като усилията се изместват от повтарящо се писане на скриптове към моделиране и анализ.
Тестерите така или иначе изграждат ментални модели, докато работят, а MBT просто премества тези ментални модели на хартия, където те могат да бъдат прегледани, версирани и използвани повторно. Къде техниката се вписва заедно с другите налични подходи е посочено в видове софтуерно тестване.





