top 15 popular specflow interview questions
Најчешће постављана питања и одговори за спецфлов интервјуе:
Наш претходни Туториал о спецфлов-у је укратко представљен Како се генеришу извештаји о тестовима и извршавају селективни тестови .
У овом упутству ћемо погледати најпопуларнија питања о интервјуу за Спецфлов заједно са њиховим одговорима.
Прочитајте Комплетна серија спецфлов тренинга за лако разумевање концепта. Спецфлов је алат који подржава праксе БДД-а у .НЕТ оквиру. То је оквир отвореног кода који се хостује на ГитХуб-у. Помаже у коришћењу АТДД (Аццептанце Тест Дривер Девелопмент) за .НЕТ.
Најпопуларнија питања и одговори за интервју за Спецфлов
У наставку су наведена најпопуларнија питања за интервју за Спецфлов са одговорима и примерима за ваше лако разумевање.
К # 1) Која је разлика између датотеке карактеристика и датотека повезивања?
Одговор: Писање БДД тестова у Спецфлов има две главне компоненте, наиме
- Датотеке са карактеристикама: Који садрже тестове написане као Сценарији на језику специфичном за домен (ДСЛ) и у основи су обични енглески фајлови који су погодни и разумљиви за све заинтересоване стране у пројекту. У стварности су то стварне датотеке за тестирање и тумаче се преко веза или дефиниција корака.
- Степ Биндингс: Ове датотеке кода су стварна логика интелигенције која стоји иза извршавања теста. Сваки корак у сценарију (који је део датотеке карактеристика) веже се за датотеку дефиниције корака која се заправо извршава приликом покретања теста.
Отуда комбинација датотека карактеристика и дефиниције корака или веза омогућава Спецфлов-у (или било ком другом БДД-у) да покреће тестове.
П # 2) Шта је БДД и по чему се разликује од ТДД или АТДД?
Одговор: Сва ова три појма, тј. БДД, ТДД и АТДД донекле су повезани са тестом вођеним развојем, али се заиста у многочему разликују
- ТДД: ТДД у основи креира тестове из перспективе програмера. Једноставним речима, то је скуп тестова које програмер пише да би његов код прошао (или пропао). То је у основи техника која чини да ваш код пропадне док се не одговоре на све специфичне захтеве. У основи следи циклус рефактора за код док тестови не постану зелени.
- БДД: БДД је уско повезан са ТДД-ом, али је релевантнији из перспективе „споља“, што заправо значи да су БДД тестови више везани за потребе пословања / производа и дефинишу жељено понашање система у облику сценарија. ТДД, за разлику од њих, нуди више грануларних нивоа тестова. Такође, БДД спецификације су обично обичан текст на енглеском језику који је лак за разумевање и омогућава већу сарадњу између свих заинтересованих страна у пројекту.
- АТДД: Фокус Развоја на основу испитивања прихватања више је из перспективе прихватања Корисника. Ови тестови такође дефинишу понашање купаца, али са становишта интеграције или коначног производа, где се крајњи случај употребе купца претвара у тест сценарио и сав развојни рад усмерен је на испуњавање ових захтева.
П # 3) Шта садржи аутоматски генерисана датотека за функцију Спецфлов?
Одговор: Датотеке са кодом спецфлов-а су аутоматски генерисане датотеке са наставком „.цс“. Ове датотеке имају логику везивања од корака до стварне дефиниције корака.
Неколико тачака у вези са аутоматски генерисаним датотекама су:
- Ове датотеке не би требало ручно мењати или уређивати. Чак и ако покушате да то учините, промене се неће сачувати.
- Након сваке промене у датотеци карактеристика, компајлер поново генерише ову датотеку да ухвати исправке.
П # 4) Како се приступа везама корака раширеним кроз различите изворне датотеке?
Одговор: Датотеке корачног повезивања могу се поново користити, чак и ако постоје у одвојеним изворним датотекама, а подударање повезивања се одвија путем регуларног израза.
Датотеке везивања корака су у основи делимичне класе које приписује [Повез] атрибут. Ово осигурава да су сва повезивања корака доступна глобално и да се могу користити са сценаријским корацима у различитим или истим датотекама карактеристика.
П # 5) Како се могу решити двосмислене имплементације везивања корака?
Одговор: Спецфлов пружа механизам за избегавање двосмислене имплементације везивања корака помоћу концепта тзв Сцопед Биндингс.
Ово је корисно у сценаријима у којима имате сличне кораке у сценаријима у истим или различитим датотекама карактеристика и ако желите да оба корака третирате другачије.
У нормалном сценарију, пошто се сва подударања корака дешавају путем регуларног израза, а то је похлепно подударање, мораћете да осигурате да напишете мало другачији текст (тако да се не подударају са истом имплементацијом) за кораке, иако они утичу читљивост.
Користећи Сцопед Биндингс, можете одредити ознаке са одређеном имплементацијом везивања или целокупном датотеком везивања и осигурати да подударање има и додатни филтер категорије.
Кораци које треба следити наведени су у наставку:
до) Означи сценарио категоријом користећи синтаксу - @Таг. Пример: Доле наведени сценарио обележавамо ознаком - @сцопедБиндинг
@scopedBinding Scenario: Youtube should search for the given keyword and should navigate to search results page Given I have navigated to youtube website And I have entered India as search keyword When I press the search button Then I should be navigate to search results page
б) Сада користите исту ознаку на везивању корака, што ће осигурати да се поред подударања регуларног израза, догоди и подударање ознаке или категорије (и осигурава да други кораци не одговарају овој имплементацији, чак и ако је подударање регуларног израза успешно)
У горњем примеру желимо да обухватимо везивање за корак. „ А Индију сам унео као кључну реч за претрагу ”, Додаћемо атрибут Сцопе са параметром Сцопинг као ознаку.
[Given(@'I have entered (.*) as search keyword'), Scope(Tag ='scopedBinding')] public void GivenIHaveEnteredIndiaAsSearchKeyword(String searchString) { // step binding implementation }
Слично опсегу са ознаком, такође је могуће имати увезане оквире са насловима Феатуре и Сценарио.
П # 6) Како се тестни контекст може сачувати током извођења различитих сценарија?
Одговор: Контекст теста се може чувати помоћу различитих приступа током извођења тестова спецфлов-а, а сваки приступ има своје предности и недостатке.
- Коришћење СценариоЦонтект и ФеатуреЦонтект: Замислите ФеатуреЦонтект и СценариоЦонтект као глобални речник парова кључ / вредност и доступан му је током извршавања обележја, односно извршења сценарија. Поље вредности може да ускладишти било коју врсту Објекта и током преузимања треба га убацити у објекат по жељи.
- Коришћење поља у датотекама за повезивање: Овај приступ омогућава дељење контекста између имплементација везивања у истим и / или различитим датотекама везивања у истом простору имена. Није другачије у одржавању стања помоћу променљивих класе и по потреби се може поставити или дохватити кроз имплементације везивања.
- Коришћење сопственог ДИ оквира за Спецфлов: Спецфлов пружа оквир за убризгавање контекста и може се користити за прослеђивање контекста у облику једноставних ПОЦО класа / објеката. Објекти / класе контекста могу се убризгавати кроз поља конструктора и могу се преносити кроз различите датотеке везивања Корак.
Погледајте пример испод са 2 предмета убризганих убризгавањем у конструктор.
[Binding] public class StepImplementationClass { private readonly Context1 _context1; private readonly Context2 _context2; public YoutubeSearchFeatureSteps(Context1 context1, Context2 context2) { _context1 = context1; _context2 = context2; } }
П # 7) Која су ограничења Спецфлов-а или БДД-а уопште?
Одговор: БДД, као што и само име говори, дефинише понашање апликације која у основи претвара случајеве употребе у тестне сценарије.
Отуда одсуство заинтересованих страна попут предузећа, производа и / или купаца може утицати на стварне спецификације за које ће програмери применити тестове писања, па би то могло резултирати не пружањем стварне вредности оног што је могло пружити и имати све заинтересоване стране били доступни током дефинисања сценарија.
Рекавши да већина случајева професионалци надмудрују недостатке БДД-а и заиста је врло корисна техника за тестирање / потврђивање спецификација. Како је то мање-више језички агностично, јер постоје БДД оквири доступни за готово све главне програмске језике, као што су Цуцумбер за Јаву, РСпец за Руби и Спецфлов за .НЕТ.
П # 8) Шта су преображаји аргументова корака?
Одговор: Аргументне трансформације, као што назив говори, нису ништа друго до трансформисање корака сценарија.
Схватите то као додатни слој подударања који се дешава пре него што се догоди стварно подударање корака и он може бити користан за трансформисање различите врсте корисничког уноса, уместо да има различите имплементације појединачних корака за исту врсту уноса.
За било који корак трансформације потребан атрибут је СтепАргументТрансформатион
На пример, погледајте пример кода у наставку:
Given I have entered 50 days into the timestamp to minute converter Given I have entered 1 day, 2 hours, 3 minutes into the timestamp to minute converter Given I have entered 1 day, 1 hour, 1 minute, 30 seconds into the timestamp to minute converter
Позивајући се на горњи узорак кода, сва три корака су повезана. Али, да је прошло уобичајено подударање регуларног израза, тада бисте морали да напишете три различите имплементације корака.
Када су постављене корачне трансформације аргумената, могуће је трансформисати вредности и створити а Ознака времена објект из наведених параметара и вратите се натраг у првобитну имплементацију корака.
Погледајмо примену трансформације.
[StepArgumentTransformation(@'(?:(d*) day(?:s)?(?:, )?)?(?:(d*) hour(?:s)?(?:, )?)?(?:(d*) minute(?:s)?(?:, )?)?(?:(d*) second(?:s)?(?:, )?)?')] public TimeSpan convertToTimeSpan(String days, String hours, String minutes, String seconds) { // timestamp conversion logic }
Дакле, овде трансформишемо улаз сценарија у средњу вредност (попут ТимеСтамп) и враћамо трансформисану вредност у стварну имплементацију везивања као што је приказано у доњем примеру.
[Given(@'I have entered (.*) into the timestamp to minute converter')] public void GivenIHaveEnteredDaysIntoTheTimestampToMinuteConverter(TimeSpan tsTransformed) { // binding implementation }
Приметите, како се трансформисана вредност типа ТимеСпан сада враћа натраг у стварни метод имплементације везивања Корак.
П # 9) Које различите типове кука пружа Спецфлов?
Одговор:
Спецфлов пружа мноштво прилагођених удица или посебних догађаја помоћу којих се руковаоци догађајима (у основи методе / функције) могу везати за извршавање неке логике подешавања / уклањања.
Спецфлов пружа следеће куке:
- БефореФеатуре / АфтерФеатуре: Догађај покренут пре и после функције започиње и довршава извршење.
- БефореСценарио / АфтерСценарио: Догађај покренут пре и после извршавања сценарија започиње и довршава, респективно.
- БефореСценариоБлоцк / АфтерСценариоБлоцк: Догађај покренут пре и после блока сценарија, тј. Када било који од блокова сценарија који припадају „Дато“, „Када“ или „Тада“ започне или заврши.
- БефореСтеп / АфтерСтеп: Догађај покренут пре и после сваког корака сценарија.
- БефореТестРун / АфтерТестРун: Овај догађај се покреће само једном током целог извођења теста и једном након завршетка теста.
Овде је важно напоменути да се ови догађаји подразумевано покрећу и њима се рукује ако и само ако су за ове куке предвиђене везе. Такође, није обавезно применити ове куке у паровима и свака кука може постојати независно једна од друге.
П # 10) По чему се СценариоЦонтект разликује од ФеатуреЦонтект?
Одговор: И СценариоЦонтект и ФеатуреЦонтект су статичне класе које пружа оквир Спецфлов и заиста су корисне за извршавање задатака као што су просљеђивање информација између веза, добијање важних информација попут контекста извршења функције / сценарија итд.
Да видимо како се обојица разликују:
Као што назив имплицира, СценариоЦонтект пружа податке или информације на нивоу извршења Сценарио, док ФеатуреЦонтект обрађује ствари на нивоу функције.
Поједностављено, све што је ускладиштено у феатуреЦонтект-у биће доступно свим сценаријима који су присутни у тој датотеци карактеристика, док ће СценариоЦонтект бити доступан само за повезивања док извршење временског сценарија није у току.
П # 11) Колико је важан редослед датума, када и тада?
Одговор: Спецфлов не намеће никаква ограничења по редоследу Дато, када и тада . Више се ради о логичком редоследу сценарија теста и било којој пракси тестирања уопште, тј. Као у јединственим тестовима обично следимо три А ' Распоредите, делујте и потврдите ”.
Дакле, за сценарије спецфлов-а нема ограничења за наручивање и такође не захтева да сва три одељка буду присутна.
Повремено постављање може бити минималистичко и можда чак и није потребно. Стога за те сценарије можете једноставно прескочити „ Дато ”Блокирајте и покрените сценарио помоћу„ Када ' блокирати.
П # 12) Шта су СценариоИнфо и ФеатуреИнфо?
Одговор: СпецфловЦонтект и ФеатуреЦонтект даље пружају угнежђене статичке класе, наиме СценариоИнфо и ФеатуреИнфо.
СценариоИнфо даје приступ информацијама око сценарија који се тренутно извршава.
Неке ствари које можете упознати са овом наставом дате су у наставку:
- Наслов: Наслов сценарија. Синтакса: СценариоЦонтект.Цуррент.СценариоИнфо.Титле
- Ознаке: Списак ознака у облику Низ[]. Синтакса: СценариоЦонтект.Цуррент.СценариоИнфо.Тагс
С. имилар то СценариоИнфо, ФеатуреИнфо такође пружа информације које се односе на тренутну функцију која се тренутно извршава.
Поред наслова и ознака, пружа и друге корисне ствари, попут оног који је циљни језик за који код карактеристике иза датотеке генерише код, детаље о језику у којем је написана датотека функције итд.
Синтакса за добијање вредности за ФеатуреИнфо остаје иста као СценариоИнфо као у наставку:
ФеатуреЦонтект.Цуррент.ФеатуреИнфо
П # 13) Разлика између табела са контурама сценарија и тачкама спектра.
Одговор:
СценариоОутлине је у основи начин за извршавање сценарија вођених подацима помоћу Спецфлов-а где је листа улаза дата у Примери одељак у сценарију, а сценарио се извршава једном, у зависности од броја пружених примера.
Погледајте узорак кода испод да бисте га јасније разумели.
Scenario Outline: Youtube keyword search And I have entered as search keyword When I press the search button Then I should be navigate to search results page Examples: | searchTerm | | India | | America
Табеле су само средство за пружање табеларних података са било којим кораком Сценарија и прослеђују се као аргумент табеле Спецфлов у имплементацији корака, који се касније може анализирати на жељени тип објекта по потреби.
Више детаља потражите у одељку „подебљано“ у примерку кода испод:
Scenario: Pass data through Specflow tables for StudentInfo object Given I have entered following info for Student | FirstName | LastName | Age | YearOfBirth | | test | student | 20 | 1995 | When I press add Then i student should get added to database and entered info should be displayed on the screen
Слично атрибуту Ознаке - можете користити било коју информацију коју пружа СценариоИнфо за контролу тока извршавања било које имплементације корака.
К # 14) Контрола теста која се извршава путем СценариоИнфо.
Слично везама опсега, које могу дозволити додавање додатног критеријума филтера уз истовремено подударање дефиниције корака кроз ознаке, такође можете искористити контролу извршења теста путем информација даних у програму СценариоИнфо.
На пример, Имате 2 сценарија са ознакама, тј. @ Таг1 и @ таг2 и оба садрже исту дефиницију корака. Сада треба да додате прилагођену логику у зависности од ознака сценарија.
Тако у имплементацији дефиниције корака можете једноставно добити све ознаке повезане са сценаријем СценариоЦонтект.Цуррент.СценариоИнфо.Тагс и проверите присуство ознаке у сценарију који се извршава и одлучите који код желите да извршите.
Погледајте узорак кода у наставку ради бољег разумевања:
[When(@'I press add')] public void WhenIPressAdd() { String[] tags = ScenarioContext.Current.ScenarioInfo.Tags; String expectedTag = 'tag1'; if(tags.Any(s => s == expectedTag)) { // do something } else { // do something else } }
Слично атрибуту Ознаке - можете користити било коју информацију коју пружа СценариоИнфо за контролу тока извршавања било које имплементације корака.
П # 15) Како се тестови спецфлов-а могу изводити у континуираном начину интеграције?
Одговор:
Са модерним методологијама за развој софтвера, континуирана интеграција је врста модне речи и обично се назива скупом пракси, где се свака предаја изворном коду сматра кандидатом за продукцију.
Отуда свако урезивање у суштини покреће различите типове тестова као капије квалитета како би се осигурало да промена која се извршава не доведе до неуспеха или прекида ниједног теста.
Спецфлов - као што знамо, врло добро се интегрише са познатим оквирима попут НУнит и МСУнит и може се лако покретати кроз конзолске апликације ових оквира за тестирање с обзиром на ДЛЛ компајлираног пројекта који има Спецфлов функције и имплементације корака.
Отуда, да би се постигли тестови Спецфлов који се изводе као део континуираног подешавања интеграције, следи листа корака на високом нивоу које се могу следити:
# 1) Саставите пројекат који садржи функцију Спецфлов и дефиницију корака да бисте добили компајлирани ДЛЛ.
#два) Сада користите НУнит или МСУнит покретачке конзоле и обезбедите компајлирани ДЛЛ као извор теста (Ови оквири пружају друге могућности, као и тест филтере, у зависности од категорија итд.).
Овај корак се може интегрисати са цевоводом континуиране интеграције и може се извршити кроз љуску или ДОС скрипту помоћу ЦИ алата попут Јенкинса или Бамбуса итд.
# 3) Када се извршавање теста заврши, генерисани извештај о излазу (који је специфичан за коришћени покретач конзоле), може се претворити у читљивији ХТМЛ извештај помоћу Спецрун извршна датотека је доступна као део НугетПацкаге-а.
Овај корак се такође може извршити кроз командну линију која је доступна у свим главним оквирима континуиране интеграције.
# 4) Када се горњи корак заврши, спремни смо за извештај о извршеним тестовима и резимиране метрике детаља о извршењу теста.
балансирање оптерећења бежичног рутера са двоструким ван-ом
Надамо се да сте уживали у читавом спектру водича у овој серији обука Спецфлов. Ова серија водича заиста би била најбољи водич за било коју почетницу или искуснију особу која жели да обогати своје знање о Спецфлов-у!
ПРЕВ Туториал ИЛИВрати се на ПРВИ Водич
Препоручено читање
- Питања и одговори за интервјуе
- Споцк интервју питања са одговорима (најпопуларније)
- Нека занимљива питања за испитивање софтверског тестирања
- 20 најпопуларнијих питања и одговора у интервјуу за ТестНГ
- Топ 30+ популарних питања и одговора за интервју са краставцима
- 50 најпопуларнијих питања и одговора за интервју са ЦЦНА
- 40 најпопуларнијих питања и одговора за Ј2ЕЕ интервјуе које бисте требали прочитати
- 25+ најпопуларнијих питања и одговора за интервју за АДО.НЕТ