data driven parameterized testing with spock framework
Истражите начине писања тестова на основу података или параметарисаних помоћу Споцк оквира:
У ово Бесплатна серија водича за обуку Споцк-а , истражили смо све о Јединствено тестирање у Споцку и Тестна тела, тврдње и извештавање у нашем претходном водичу.
У овом упутству ћемо покушати да разумемо шта су параметризовани тестови и како можете да искористите уграђене функције Споцка да бисте постигли тестирање на основу података.
Почнимо!!
Погледајте видео водич
Шта ћете научити:
- Шта су параметарски тестови?
- Писање параметарских тестова са Споцком
- Животни циклус блока „где“
- савети и Трикови
- Закључак
- Препоручено читање
Шта су параметарски тестови?
За све који су радили на аутоматизацији / јединичним тестовима, тестирање на основу података није нови појам.
Параметарски тестови нису ништа друго доли тестови било које врсте који деле исту логику извршавања и разликују се само у улазним подацима и исходу у неким случајевима.
Пример: Претпоставимо да имате апликацију Калкулатор, да бисте у потпуности могли да тестирате функционалност, можда бисте желели да покренете тестове на различитим улазним скуповима.
Пример: Негативне вредности, разломљени бројеви, нормални цели бројеви, цели бројеви који се приближавају максимално дозвољеном опсегу итд. Без обзира које улазне вредности имате, желите да покренете исту логику извршавања.
Још један добар разлог за писање параметарских тестова је тај што се не тестира само срећна путања већ се тестира путања грешака или негативни сценарији.
Пример: Претпоставимо да постоји апликација која враћа да ли је дата екстензија датотеке ваљана или не. Подаци засновани на подацима могу брзо омогућити програмеру да изврши тестове за подржане екстензије датотека и све сценарије грешака или негативне улазне тестове.
Сада традиционално можете да размишљате о писању или копирању тестова за више улазних вредности, али то није исправан или паметан начин за постизање ове врсте извршења теста. Штавише, како се број тестова у вашој апликацији повећава, постаће тешко одржавати ове тестове.
Писање параметарских тестова са Споцком
Блок где:
Блок вхере у Споцк тесту је блок који садржи податке за параметризовани тест. По жељи може садржати и улазне и очекиване излазне вредности. Важна напомена о овом блоку је да би ово требало да буде последњи блок у Споцк тесту.
Кад се то каже, може се комбиновати са свим осталим блоковима као што је дато, када и тада, али би требало да буде последњи блок.
Погледајмо Пример да бисмо га боље разумели
Користићемо апликацију калкулатора која узима 2 улазна параметра и враћа збир испоручених улаза. Написаћемо параметарски тест који даје више улаза и очекиване излазне вредности.
def 'sample parameterized test'() input2
У горњем узорку кода можете видети следеће:
- Блок „где“ који садржи податке за покретање теста.
- Блок „где“ је последњи блок теста.
- „Где“ се комбинује са осталим блоковима, тј. Даје се, када и тада.
- Приказивање података је посебан формат који се назива табеле података, а који ћемо детаљно размотрити у наредним одељцима овог водича.
- Ред заглавља података су у основи својства / улазне променљиве које се могу директно користити у тесту. На пример. Погледајте изјаву у блоку „када“ где смо директно користили инпут1 и инпут2 као улазни параметри без њиховог експлицитног дефинисања.
Коришћење табела података
Покушајмо сада детаљно да разумемо табеле података. Сваки ред табеле података представља податке за појединачни сценарио (извршење теста).
Према договору, тј. Улазним вредностима претходи једна цев ('|'), док излазним вредностима претходи двострука цев ('||'). Ово нема никакав логички значај, али је конвенционално и побољшава читљивост. Стога су оба примера у наставку тачна.
input1 |input2 |expectedResult 10 |15 |25 -4 |6 |2 input1 |input2 || expectedResult 10 |15 || 25 -4 |6 || 2
Ред заглавља, као што је приказано горе, има име за сваки од параметара испоручених као подаци за тестирање. Овде је важно напоменути да се ови називи параметара не би требали сукобљавати са било којим постојећим локалним / глобалним променљивим у тесту, иначе ће бити грешке током компајлирања за решавање имена променљивих.
Важна ствар коју треба имати на уму током коришћења табела података је да су потребне најмање 2 колоне. Ако вам је потребна само једна колона, празан ступац са вредностима као подвлаком представља заобилазно решење као у наставку.
input1 ||_ 10 ||_ -4 ||_
Предност овог формата је једноставност, читљивост и проширивост. Додавање новог уноса података једноставно је као додавање новог реда са вредностима података.
Још једна ствар коју треба приметити овде је да се табеле података могу користити за држање било које врсте променљивих, класа, објеката, набрајања итд. Што је чини још моћнијом. Како је гроови опционално куцани језик, ако експлицитни тип није наведен, променљиве у табели података подразумевају у зависности од врсте достављених података.
Да видимо још једну Пример користећи табеле података са листом низова као улазом и излазом као бројем елемената у низу.
def 'sample parameterized test with list data type'() when: def actualCount = input1.size() then: actualCount == expectedCount where: input1
У горњем примеру можете приметити да смо унос пружили као низ низова Низова, а излаз је величина ове листе низова. Дакле, даје велику флексибилност при уносу података различитих врста.
Такође можете једноставно споменути било који израз који враћа податке и одговарајуће врсте уноса и користи их у табелама података директно.
Животни циклус блока „где“
За тестове који садрже блок и узорке података у облику табела података, сваки ред података представља једно извршавање методе испитивања.
На пример, ако постоји 5 редова података, а тест садржи блокове „дато“ и „када“, тада ће се за такав ред података блокови теста извршити једном. Дакле, укупно ће бити извршено 5 метода испитивања.
савети и Трикови
Погледајмо неколико савета и трикова за параметризоване тестове током рада са овим табелама података.
# 1) Приказивање резултата извршења појединачних редова одвојено. Као што смо видели у одељку животног циклуса, за сваки ред података постоји једно извршавање тест кода. Да би се ови редови или резултати приказали одвојено за сваки такав ред, за такве тестове се може користити напомена „@Унирај“.
Покушајмо ово да разумемо на примеру:
Користићемо исту апликацију калкулатора са 3 сета улазних података који се достављају у методу која се испитује.
како покренути повезану листу у јави
def 'sample parameterized test'() -20
Без напомене „@Унролл“, погледајмо како резултат изгледа у терминалу (као и ХТМЛ извештаји). Са овом врстом излаза постаје тешко открити који је скуп улаза проузроковао неуспех теста.
Сада да видимо како се излаз теста извештава одвојено за сваки ред након додавања напомене „@Унролл“ у методу теста (која има табеле података као улаз података).
#два) Сада, хајде да схватимо како да додамо значајне информације у ове тестове вођене подацима (уместо неких аутоматски додатих индекса као на снимку екрана горе).
Можемо користити резервирана места за својства улаза и излаза (према табели података), а затим можемо видети вредности попуњене у именима тестова подацима из табела података.
Искористимо исти пример и ажурирамо назив теста да бисмо добили податке из улаза и очекиваног излаза како је поменуто у табелама података:
@Unroll def 'result of adding #input1 & #input2 should be #expectedResult'() given: def app = new CalculatorApp() when: def resultSum = app.add(input1, input1) then: resultSum == 2 * input1 where: input1
Сада да видимо како изгледа излаз у терминалу и ХТМЛ извештајима:
Дакле, као што овде можете видети, подаци из улаза и излаза се сада приказују заједно са именима теста када се извршавају. На овај начин је много лакше решавање проблема и отклањање грешака, јер јасно указује на то који је инпут проузроковао неуспех или неисправно понашање теста.
Закључак
У овом упутству смо научили о писању параметарских тестова са Споцк оквиром. Такође смо разговарали о разним карактеристикама табела података и како се оне могу користити.
Погледајте наш предстојећи водич да бисте знали како да користите Моцкс анд Стубс са Споцк-ом !!
ПРЕВ Туториал |. | СЛЕДЕЋА Лекција
Препоручено читање
- Писање јединствених тестова са Споцк Фрамеворк-ом
- Споцк интервју питања са одговорима (најпопуларније)
- Споцк за интеграцију и функционална испитивања са селеном
- Споцк ругање и стубирање (примери са видео водичима)
- Водич за Споцк: Тестирање са Споцком и Гроовием
- Оквир вођен подацима у програму Селениум ВебДривер који користи Апацхе ПОИ
- Како извршити тестирање на основу података помоћу алата ТестЦомплете
- Како функционише тестирање на основу података (примери КТП и селена)