Кіріспе

Бағдарламалық қамтамасыз етуді сынау құралы, веб-сервер және вики

FitNesse – веб-сервер, вики және бағдарламалық қамтамасыз етуді автоматтандырылған сынау құралы. Ол Уорд Каннингэмнің Біріктірілген Тестілеу Негіздемесіне негізделген және жүйе функциясының егжей-тегжейлі, оқуға ыңғайлы сипаттамасын жасауды жеңілдететін қабылдау тестілеуін қолдауға бағытталған, бірлік тестілеуден емес. FitNesse әзірленген жүйенің пайдаланушыларына ерекше форматталған деректерді енгізуге мүмкіндік береді (оның форматы бағдарламашы емес пайдаланушыларға да қолжетімді). Бұл деректер түсіндіріледі және тесттер автоматты түрде құрылады. Содан кейін жүйе осы тесттерді орындайды және нәтижелер пайдаланушыға қайтарылады. Бұл тәсілдің артықшылығы – пайдаланушылардан өте жылдам кері байланыс алу. Сыналып жатқан жүйенің әзірлеушісі белгілі бір деңгейде қолдау көрсетуі керек (белгілі бір талаптарға сәйкес келетін "құралдар" деп аталатын сыныптар). FitNesse Java тілінде жазылған (Мика Мартин, Роберт К. Мартин және басқалардың көмегімен). Бағдарлама бастапқыда тек Java-ны қолдады, бірақ уақыт өте келе басқа бірнеше тілдерге де нұсқалар қосылды (C++, Python, Ruby, Delphi, C# және т.б.).

FitNesse - сынақ әдісі

FitNesse бастапқыда Fit фреймворкіне арналған қолдануға өте ыңғайлы интерфейс ретінде құрастырылған. Сондықтан оның мақсаты – қара қорапты қабылдау және регрессиялық тестілеудің шапшаң әдісін қолдау. Мұндай тестілеу стилінде бағдарламалық жасақтаманы әзірлеу жобасындағы функционалды тестілеушілер бағдарламалық жасақтаманы әзірлеушілермен бірлесіп тестілеу жиынтығын жасайды. FitNesse тестілеуі қара қорап тестілеу принципіне негізделген, онда тестіленіп жатқан жүйе қара қорап ретінде қарастырылады және алдын ала анықталған кіріс деректеріне жауап ретінде алынған нәтижелер бойынша тестіленеді. Функционалды тестілеуші функционалдық тұрғыдан тесттерді жобалауға және оларды FitNesse құралында бейнелеуге жауапты, ал бағдарламалық жасақтаманы әзірлеуші FitNesse құралын тестіленіп жатқан жүйеге қосуға жауапты, соның арқасында FitNesse тестті орындай алады және алынған нәтижелерді күтілетін нәтижелермен салыстырады. «Бағдарламалық жасақтаманы әзірлеуге Fit» кітабында сипатталғандай, осы тестілеу әдісінің мақсаты – тестілеушілер мен әзірлеушілердің бірлескен жұмысы арқылы екі топтың жүйе мен талаптарды жақсырақ түсінуіне, олардың бір-бірімен байланысын жақсартуға және ортақ тіл табуына көмектесу.

FitNesse - сынақ құралы

Фитнесте сынақтар кіріс және күтілетін нәтижелердің үйлесімділігі ретінде сипатталады. Бұл үйлесімдер шешім кестесінің әртүрлі нұсқалары болып табылады. FitNesse құралы осы нұсқалардың көптеген түрлерін қолдайды, нақты шешім кестелерінен бастап, сұраныстарды орындайтын кестелерге дейін, тіпті тест скрипттерін (яғни, нәтижеге жету үшін орындалуы тиіс қадамдардың нақты тізбегін) көрсететін кестелерге дейін. Ең жалпы түрі – бұл тестілеушілер қалағандай түсіндіруге болатын толық еркін пішіндегі кесте. Дегенмен, барлық сынақтар қандай да бір кесте түрінде беріледі. FitNesse тек сынақтарды оңай жасауға бағытталған, бұл тестілеушілер мен әзірлеушілерге сынақты орындаудың техникалық жақтарына тонудың орнына, жоғары сапалы сынақтар жасауға назар аударуға мүмкіндік береді. FitNesse-тің жұмыс істеу принципіне сәйкес, сынақтарды оңай жасау үш факторға байланысты: кестелерді оңай жасау; кестелерді сынақ жүйесіне шақыруға оңай түрлендіру; сынақтарды құжаттаудағы жеңілдік және икемділік. Осы талаптарды қанағаттандыру үшін FitNesse вики механизмін пайдаланады. Уикилер классикалық түрде HTML беттерін оңай және жылдам жасауға мүмкіндік береді, әсіресе кестелерді көрсетуді жеңілдетеді. Осы қасиеттері WikiWiki тілін FitNesse үшін "пайдаланушы интерфейсі" ретінде тамаша таңдауға мүмкіндік береді: бір жағынан, ол өте еркін пішіндегі кестелерді оңай көрсетуге мүмкіндік береді, екінші жағынан, осы кестелердің мазмұнын қарапайым мәтінмен шектейді. Бұл WikiWiki тілі белгілі бір сынақ үшін қажетті кесте пішінін қабылдай алады, сонымен бірге осы кестелердің мазмұнын бағдарламалық құралға шақыруға оңай түрлендірілетін әріптік-сандық мәтінмен шектейді. Соңында, FitNesse-дегі әрбір сынақ вики-бет болғандықтан, әрбір сынақ кестесін вики-мәтінге ендіруге болады; бұл функционалдық тестілеушіге түсінікті макетпен сипаттамалық мәтінді жылдам қосуға мүмкіндік береді.

FitNesse бағдарламалық құрал ретінде

FitNesse – Java-да жасалған және бір орындалатын jar файлы түрінде таратылатын құрал. Орындалатын файлға вики-қозғалтқыш, кіріктірілген веб-сервер, тестілеу қозғалтқышы және FitNesse-тің өзіндік стилінде веб-сайт құруға қажетті барлық ресурстар (суреттер, стильдік кестелер және т.б.) кіреді. FitNesse тест құралы ретінде қолданудың қарапайымдығына ерекше мән беріледі. Сондықтан ол барлық қажетті компоненттермен бірге келеді: іске қосылғанда құрал кіріктірілген веб-серверді іске қосады, бұл сынақ беттерін жергілікті желіде немесе интернет арқылы бірдей оңайлықпен қолжетімді етуге мүмкіндік береді. Кіріктірілген сервер өте жеңіл, сондықтан оны ноутбуктан да, толыққанды серверлік машинадан да іске қосуға болады. Іске қосылғаннан кейін құрал өзінің вики-қозғалтқышын кіріктірілген серверге орналастырады. Бұл вики-қозғалтқыш та қарапайымдыққа бағытталған, яғни оның жұмыс істеуі үшін қосымша деректер базасы қажет емес – ол вики-қозғалтқышымен түсіндірілетін және кіріктірілген веб-сервер арқылы көрсетілетін вики беттерінің файлдық жиынтығын ғана құрайды. Құралмен жасалған әдепкі викиде FitNesse пайдаланушы нұсқаулығы және мысалдар бар. Әдепкі құжат репозиторийі FitNesse стилінде әдепкі викиді жариялау үшін қажеттінің бәрімен бірге құрылады (яғни барлық суреттер, стильдік кестелер, JavaScript файлдары және т.б. негізгі вики беттері репозиторийімен бірге жасалады). Вики-қозғалтқыш өте қарапайым, бірақ басқа вики-қозғалтқыштарға тән негізгі мүмкіндіктердің барлығын ұсынады: іздеу жүйесі, әрбір беттің өзгеру тарихы және файлдар туралы мәліметтер. Ол сондай-ақ файлдарды жоюға, жылжытуға және қайта атайтын қайта құру операцияларын ұсынады. Бұдан өзге, вики-қозғалтқыш тесттерге арналған арнайы мүмкіндіктерді де ұсынады, мысалы, тесттерді іске қосуға арналған стандартты түймелер, жеке тест беттерін және тесттер жиынтығын анықтау тәсілдері, сондай-ақ трендтерді талдау үшін тест нәтижелерінің тарихи шолуы. Соңында, қозғалтқыш беттерді құлыптау және викиге қол жеткізуді қамтамасыз ету үшін шағын қауіпсіздік мүмкіндіктерін ұсынады.

Сынау қозғалтқыштары

Жоғарыда сипатталған нақты бейнелеу (сондай-ақ, бекіткіш әдістерін шақыру) сынақ қозғалтқышы арқылы жүзеге асырылады. FitNesse осы қозғалтқыштардың екеуін қолдайды: Fit қозғалтқышы және SLIM қозғалтқышы.

Қалыпты

Fit – жай ғана қозғалтқыш емес, ол өзі жеке сынақ жүйесі болып табылады. Ол тесттерді іске қосу, вики-беттерді түсіндіру және нәтижелер беттерін жасау мүмкіндіктерін біріктіреді. FitNesse бастапқыда Fit үшін пайдаланушы интерфейсі ретінде құрылған, осылайша құралдың аты қалыптасқан. Fit – тестілеудегі жауапкершілікті бөліп қарастырудың орнына, көптеген жауапкершілікті біріктіретін құрылым. Бағдарламалық жасақтаманы дамытушы бұған байланысты белгілі бір құн төлейді, себебі Fit қозғалтқышының құрылғылары Fit негізгі сыныптарынан мұраға алуы тиіс. Бұл Java-да ыңғайсыздық тудыруы мүмкін, өйткені бұл құрылым дамытушының сыныпты мұралаудың жалғыз мүмкіндігін иеленеді. Сондай-ақ, құрылғы өзінің мәні бойынша ауыр салмақты конструкция болып табылады. Осы мәселелер соңғы жылдары FitNesse командасын SLIM сынақ қозғалтқышына көшуге итермеледі.

SLIM

SLIM (Жай тізімді шақыру әдісі) – Fit-ке балама. SLIM қозғалтқышы Slim протоколының іске асырылуы болып табылады. Wiki негізіндегі тестілеудің барлық элементтерін біріктіру орнына, SLIM қозғалтқышы тек құрылғыны шақыруға ғана назар аударады; ол FitNesse wiki қозғалтқышымен қашықтан шақырылатын жеке сервер ретінде жұмыс істейді. Wiki бетін түсіндіру және нәтижелер бетін жасау енді wiki қозғалтқышының құрамына кіреді. SLIM қозғалтқышы әлдеқайда жеңіл арматураларды, қарапайым POJO-ларды пайдалануға мүмкіндік береді. Бұл арматуралардың ешқандай шеңбер кластарын кеңейтуі немесе пайдалануы қажет емес, бұл олардың құрылымын жеңілдетеді және арматураны жобалаушыға сыналып жатқан жүйені дұрыс және ең қарапайым тәсілмен шақыруға назар аударуға мүмкіндік береді. Сонымен қатар, мұрагерлік мүмкіндігі сақталады, қажет болған жағдайда арматураны әзірлеушілерге арматура иерархиясын құруға рұхсат береді.