introduction contract testing with examples
Овај водич за тестирање уговора описује шта је то тестирање по уговору потрошача, како функционише и зашто бисте га требали користити у својој стратегији тестирања:
Шта је испитивање по уговору?
Потрошачко тестирање по уговору је облик АПИ тестирања који заиста омогућава померање улево. Алат за уговор који користимо је Пацт.ио , а о томе ћемо сазнати касније у овој серији водича.
Тестирање уговора је метода за независну верификацију интеграције две апликације како би се тестирало шта је прослеђено и видело да ли се оно што се враћа поклапа са „уговором“.
Тестови по уговору се лепо уклапају у архитектуру микро сервиса, радећи у агилном окружењу. Стога ће се примери заснивати на искуству које смо стекли радећи у овом окружењу.
Шта ћете научити:
- Списак лекција у овој серији за тестирање по уговору
- Испитивање уговора на основу потрошача
- Уговорно тестирање против интеграционог тестирања
- Континуирано интеграција
- Закључак
Списак лекција у овој серији за тестирање по уговору
Туториал # 1: Увод у испитивање уговора са примерима [Овај водич]
Туториал # 2: Како написати тест потрошачког пакта на ЈаваСцрипт-у
Туториал # 3: Како објавити уговор о уговору за посредника у уговору
Туториал # 4: Потврдите уговор о уговору и континуирану примену помоћу Пацт ЦЛИ
Испитивање уговора на основу потрошача
Полазна тачка је ваша АПИ документација која чини уговор за ваше тестове, у овом тренутку обично развојни тимови узимају АПИ документ и развијају се према вики документу (или у било којем формату који се налази у вашој организацији, као што је Ворд Доцумент).
На пример, веб апликација где фронт-енд развија Теам Криптон, а АПИ развија Теам Тхорон. Пројекат започиње почетним састанком на коме су представљени и договорени услови између тимова.
Сваки тим узима захтеве и започиње стварање заосталих предмета дорађивањем прича. Развој започиње у оба тима пратећи корисничке приче, тестирање интеграције остављено је за каснији спринт. Како тим Криптон проналази додатне захтеве, у вези са сценаријима грешака, АПИ документација се у складу с тим ажурира.
Теам Тхорон додаје тест случајеве повезане са ажурираним сценаријима на основу документације.
Већ можемо да уочимо неколико недостатака у овом процесу, а додао сам још неколико за срећу:
- О променама АПИ документа можда се неће ефикасно комуницирати.
- Фронт-енд тим искључује бацк-енд услугу и обрнуто.
- Бацк-енд тим креира случајеве интеграционих тестова на основу документације.
- Интеграционо окружење је први пут да се тестира потпуна интеграција.
- Различита верзија АПИ-ја за интеграционо окружење у односу на производњу.
Потрошачко тестирање уговора има две стране, тј. Потрошача и добављача. Ту се преокреће традиционално размишљање о тестирању у микросервисима.
Тхе Потрошач је кустос сценарија, укључујући захтев и очекивани одговор. Ово вам омогућава да пратите Бедов закон што налаже да бисте требали бити флексибилни у ономе што ваш АПИ може прихватити, али конзервативни у ономе што се шаље. Враћајући се на недостатке бр. 1, 3 и 4, промене документације сноси потрошач.
На пример, у околности када Теам Тхорон промени поље низа да не прихвати нулл вредности, тестови потрошача не би одразили промену и зато не би успели. Или бар док промене нису урађене у тиму Криптон.
[слика извор ]
Тхе Провидер проверава сценарије које пружа потрошач у односу на њихово „развојно“ окружење. Ово омогућава примену ваших микросервиса Паралелна промена у којем се наводи да бисте требали проширити функционалност АПИ-ја, након чега слиједи прелазак на нову верзију. Враћајући се на недостатак бр. 2, кварови које обично креирају позадински тимови за потребе сопственог тестирања сада се могу заснивати на потрошачким сценаријима користећи Пацт Стуб Сервер .
Обавезујући елемент две стране је „уговор“ који треба да се дели између тимова. Пакт пружа платформу која омогућава дељење уговора под називом Пакт Брокер (доступно као управљана услуга са Пацтфлов.ио ).
Тхе Брокер чува резултате потрошачких сценарија. Уговор се затим чува код брокера заједно са верзијом АПИ-ја. Ово омогућава тестирање на више верзија АПИ-ја, тако да се компатибилност може потврдити пре објављивања, као што је истакнуто у недостатку бр. 5.
Додатна предност Пацт Брокер-у на старијим платформама је видљивост потрошача. Нису сви потрошачи познати ауторима АПИ-ја, посебно није начин на који се троше.
Конкретно, позивајући се на појаву када су подржане две верзије АПИ-ја, дошло је до проблема са подацима у верзији 1 (В1) због чега је АПИ узроковао прљави подаци у бази података.
Промена је примењена у В1 АПИ-ја и гурнута у производњу, међутим, потрошач се ослањао на формат који је проузроковао проблем са подацима, чиме је прекинуо њихову интеграцију са АПИ-јем.
Како то функционише
Горњи пример приказује ток аутентификације, веб услуга захтева од корисника да се аутентификују како би приступили осетљивим подацима. Веб услуга шаље захтев АПИ-ју за генерисање токена користећи корисничко име и лозинку. АПИ враћа токен носиоца који се додаје захтеву за податке као заглавље за потврду идентитета.
Потрошачки тест конструише ПОСТ захтев за токен прослеђивањем тела са корисничким именом и лозинком.
Током теста се окреће лажни сервер који валидира захтев који конструишете, заједно са очекиваним одговором који у овом примеру укључује вредност за токен.
Резултат теста потрошача генерише датотеку уговора о пакту. Ово ће бити ускладиштено у брокеру пакта као верзија 1.
Тада добављач повлачи верзију 1 од брокера пакта и поново репродукује овај захтев у њиховом локалном окружењу, проверавајући да ли се захтев и одговор подударају са захтевима потрошача.
Улоге и одговорности
Осигурање квалитета (КА) / Тестер: Стварање уговора помоћу Пацт.ио-а и рад са БА за генерисање тест сценарија.
Програмер: Упаривање са КА за стварање тестова и помагање умотавања АПИ-ја за примену у континуирану интеграцију (ЦИ).
Пословни аналитичар (БА): Израда сценарија и рад са архитектом на верификацији погођених страна.
решење Архитекта (Можда неће постојати у вашој организацији): Активирање промена АПИ-ја и координација са БА о примени, такође саопштавање промена потрошачима (помоћу Пацт Брокера да бисте разумели на кога се то може односити).
Релеасе Манагемент: (Да, знам да је старомодно, али и даље постоји у мом свету): Испуњен уверењем да ће промене бити објављене успешно због покривања уговора.
Цео тим: Верификујте резултате да бисте утврдили да ли се издања могу гурнути у производњу помоћу алата Пацт ЦЛИ, Могу ли да поставим .
Уговорно тестирање против интеграционог тестирања
Интеграционо тестирање мора постојати да би се потврдило да ли систем ради пре промоције у производно окружење, али сценарији се могу знатно смањити.
Утицај овога могао би бити:
- Брже повратне информације пре пуштања у интеграционо окружење.
- Мање ослањања на стабилност интеграционог окружења.
- Мање окружења која подржавају више верзија АПИ-ја.
- Смањене нестабилне инстанце окружења због проблема са интеграцијом.
Интеграција | Уговор | |
---|---|---|
Јасно је утврдити неуспех | Много слојева | Веома лако |
Конфигурација АПИ-ја | да | Немој |
Провере примене | да | Немој |
Израда верзија АПИ-ја | да | да |
Локално отклоните грешке | Немој | да |
Еколошки проблеми | да | Немој |
Време повратне информације | Спор | Брзо |
Прво, уговорно тестирање не замењује интеграционо тестирање. Али вероватно може заменити неке од ваших постојећих сценарија тестирања интеграције, померити се улево и пружа брже повратне информације о вашем животном циклусу развоја софтвера.
У интеграцијском тестирању провјерават ћете контекст у којем живи АПИ, попут архитектуре окружења, процеса имплементације итд.
Због тога желите да покренете основне сценарије теста који би потврдили конфигурацију, на пример, крајња тачка здравствене провере за апи верзију. Такође доказивањем да ли је размештање било успешно враћањем одговора 200.
Током тестирања уговора, тестирате специфичности АПИ-ја, што укључује рубне случајеве који се односе на структуру АПИ-ја, садржај (нпр. Вредности поља, кључеви постоје) и одговоре на грешке. На пример, да ли АПИ обрађује нулл вредности или су оне уклоњене из АПИ одговора (још један стварни пример).
Неке погодности (ако већ нисте продати)
У наставку су наведене неке од предности које треба искористити приликом продаје уговора за шире пословање:
- Брже постављање софтвера
- Један извор истине
- Видљивост свих потрошача
- Једноставност тестирања на различите верзије АПИ-ја.
Често постављана питања
Нека уобичајена питања док покушавате да наговорите људе да усвоје тестирање по уговору укључују:
П # 1) Већ имамо 100% покривеност тестом, тако да нам није потребна.
Одговор: Па то је немогуће, али тестирање по уговору има много других предности, а не само покривање тестова.
П # 2) Одговорност архитекте решења је да саопштава промене АПИ-ја.
Одговор: Квалитет је одговорност целог тима.
П # 3) Зашто креирамо тест сценарије за АПИ тим?
Одговор: АПИ тим не зна како веб услуга функционише, па зашто би онда она била тамо одговорна.
П # 4) Наши тестови од краја до краја покривају читав ток од почетка до краја, укључујући и друге тачке интеграције.
Одговор: Тачно зашто делимо тестове да бисмо тестирали једну ствар и није ваша одговорност да тестирате проток од краја до краја система за који не знате како функционише.
П # 5) У спремишту којег тима живе тестови?
Одговор: Обоје. Потрошач у свом спремишту, а добављач у свом. Тада у централној тачки, уговор живи изван било ког од њих.
Аргументи
Ово су аргументи против којих нам је тешко расправљати када је у питању прелазак на уговор за тестирање:
- Сваггер документација већ постоји и може се користити за генерисање интеграционих тестова.
- Тимови поседују и фронт-енд и бацк-енд услуге са ефикасним механизмом за промене АПИ-ја.
Континуирано интеграција
Како се ово уклапа у ваш пакет за континуирану интеграцију? Пожељно место за тестирање по уговору је уз ваше јединствене тестове.
Потрошачки тестови окрећу лажни сервер који не захтева спољне зависности изван теста.
Тестови добављача захтевају инстанцу АПИ-ја, стога локални АПИ може бити умотан помоћу ин-мемори сервер за тестирање . Међутим, ако није лако локално умотати свој АПИ, заобилазно решење које смо раније користили је када смо издвојили окружење и распоредили код у ово окружење као део аутоматских провера захтева за повлачењем.
ка питања и одговори за интервју са тестерима
[слика извор ]
Закључак
У овом упутству научили смо шта значи тестирање уговора и како то изгледа у инфраструктури микро-услуга, и видели смо како то изгледа на примеру из стварног света.
Научене су лекције о томе како вам тестирање уговора може помоћи да померите своје интеграционо тестирање улево. Поред тога, видели смо како то може да смањи трошкове ваше организације смањењем времена повратних информација у вези са проблемима интеграције.
Тестирање по уговору није само алат за техничко испитивање, оно намеће сарадњу развојних тимова саопштавањем промена и подстицањем тестирања као једне целине. Све у свему, ово би требао бити предуслов свима који желе да пређу на континуирану имплементацију.
СЛЕДЕЋА Лекција
Препоручено читање
- Како написати тест потрошачког пакта на ЈаваСцрипт-у
- Потврдите уговор о уговору и континуирану примену помоћу Пацт ЦЛИ
- Како објавити уговор о уговору за посредника у уговору
- Континуирани процес интеграције: Како побољшати квалитет софтвера и смањити ризик
- Разлике између јединственог тестирања, интеграционог тестирања и функционалног тестирања
- Шта је интеграционо тестирање (Водич са примером интеграционог тестирања)
- 10 најбољих алата за тестирање интеграције за писање интеграционих тестова
- Континуирано постављање у ДевОпс