Водич за ТестНГ: Шта је то, напомене & амп; Оквир у селену

Шта је ТестНГ?

ТестНГ је оквир за аутоматизацију тестирања у којем НГ представља „Следећа генерација“. ТестНГ је инспирисан ЈУнит-ом који користи напомене (@). ТестНГ превазилази недостатке ЈУнит-а и дизајниран је да олакша тестирање од краја до краја.

Коришћењем ТестНГ-а можете да генеришете одговарајући извештај и лако можете сазнати колико је тест случајева прошло, неуспело и прескочено. Неуспешне тест случајеве можете извршити одвојено.

На пример:

  • Претпоставимо да имате пет тест случајева, за сваки тест случај је написана једна метода (претпоставимо да је програм написан главном методом без употребе тестНГ). Када први пут покренете овај програм, три методе се успешно извршавају, а четврта метода није успела. Затим исправите грешке присутне у четвртој методи, сада желите да покренете само четврту методу јер се прве три методе ионако успешно извршавају. Ово није могуће без коришћења ТестНГ-а.
  • ТестНГ у селенијуму нуди опцију, тј. Датотеку тестнг-фаилед.кмл у директоријуму тест-оутпут. Ако желите да покренете само неуспешне тест случајеве, значи да покрећете ову КСМЛ датотеку. Извршиће само неуспешне тест случајеве.

Поред горе наведеног концепта, научићете више о ТестНГ-у, као што су предности ТестНГ-а, како креирати методе тестирања помоћу @тест напомена, како претворити ове класе у датотеку програмског пакета и извршити кроз ецлипсе као и из командне линије .

У овом водичу за ТестНГ научићете

  • Зашто користити ТестНГ са селеном?
  • Предности ТестНГ-а у односу на ЈУнит
  • Направите тест случај користећи ТестНГ напомене
  • Како створити нову тестНГ датотеку за тестирање
    • Кодирање нашег првог примера ТестНГ тест случаја
    • Покретање теста
  • Провера извештаја које је креирао ТестНГ
  • Напомене које се користе у ТестНГ-у
  • Вишеструки тест случајеви
  • Параметри
    • Више параметара
    • Резиме напомена о ТестНГ-у

Зашто користити ТестНГ са селеном?

Подразумевани тестови селена не генеришу одговарајући формат резултата тестова. Користећи ТестНГ у селенијуму, можемо да генеришемо резултате теста.

Већина корисника селена користи ово више од Јунита због његових предности. Постоји толико много карактеристика ТестНГ-а, али ми ћемо се фокусирати само на најважније које можемо користити у Селенијуму. Следе кључне карактеристике Селениум ТестНГ:

  • Генеришите извештај у одговарајућем формату, укључујући број покренутих тест случајева, број положених тест случајева, број неуспелих тест случајева и број прескочених тест случајева.
  • Вишеструки тест примери могу се лакше груписати претварањем у датотеку тестнг.кмл. У којој можете одредити приоритете који тест случај треба прво извршити.
  • Исти тест случај може се извршити више пута без петљи само помоћу кључне речи која се назива „број призивања“.
  • Коришћењем тестнг-а можете извршити више тест случајева на више прегледача, тј. Унакрсно тестирање прегледача.
  • ТестНГ оквир се лако може интегрисати са алатима попут ТестНГ Мавен, Јенкинс, итд.
  • Напомене које се користе у тестирању врло су лако разумљиве, на пример: @БефореМетход, @АфтерМетход, @БефореТест, @АфтерТест
  • ВебДривер нема изворни механизам за генерисање извештаја. ТестНГ може да генерише извештај у читљивом формату какав је приказан доле.
  • ТестНГ поједностављује начин кодирања тестова. У нашим тестовима више није потребна статичка главна метода. Редослед радњи регулисан је лако разумљивим напоменама које не захтевају да методе буду статичне.
  • Неухваћени изузеци аутоматски обрађују ТестНГ без превременог прекида тестирања. Ови изузеци се пријављују као неуспели кораци у извештају.

Предности ТестНГ-а у односу на ЈУнит

Три су главне предности ТестНГ-а у односу на ЈУнит:

  • Биљешке је лакше разумјети
  • Тест случајеви се могу лакше групирати
  • Могуће је паралелно тестирање

Биљешке у ТестНГ-у су редови кода који могу контролирати како ће се извршавати метода испод њих . Увек им претходи симбол @. Веома рани и брзи тестНГ пример је следећи.

О напоменама ће бити речи касније у одељку под називом „Напомене које се користе у ТестНГ-у“, тако да је сасвим у реду ако још увек не разумете горњи Пример ТестНГ-а. За сада је важно напоменути да је напомене у ТестНГ-у лакше кодирати и разумети него у ЈУнит-у.

Могућност паралелног покретања тестова је доступна у ТестНГ-у, али не и у ЈУнит-у, тако да је ТестНГ оквир пожељнији од тестера који користе Селениум Грид.

Направите тест случај користећи ТестНГ напомене

Сада ћемо научити како да направимо свој први тест случај помоћу ТестНГ напомена у селенијуму:

Пре него што креирамо тест случај, прво би требало да подесимо нови ТестНГ пројекат у Ецлипсе-у и именујемо га као „ФирстТестНГПројецт“.

Постављање новог ТестНГ пројекта

Корак 1: Кликните на Филе> Нев> Јава Пројецт

Корак 2: Унесите „ФирстТестНГПројецт“ као назив пројекта, а затим кликните на Нект.

Корак 3: Сада ћемо почети да увозимо ТестНГ библиотеке у наш пројекат. Кликните на картицу „Библиотеке“, а затим на „Додај библиотеку“

… "

Корак 4: У дијалогу Додај библиотеку одаберите „ТестНГ“ и кликните на Нект.

Корак 5: Кликните на Финисх.

Треба да приметите да је ТестНГ уврштен на листу Библиотека.

Корак 6: Сада ћемо додати ЈАР датотеке које садрже АПИ Селениум. Ове датотеке се налазе у управљачком програму Јава клијента који смо преузели са хттп://доцс.селениумхк.орг/довнлоад/ када смо инсталирали Селениум и Ецлипсе у претходним поглављима.

Затим идите тамо где сте поставили датотеке Селениум ЈАР.

Након додавања спољних ЈАР-ова, ваш екран би требало да изгледа овако.

Корак 7: Кликните Заврши и потврдите да је наш ФирстТестНГПројецт видљив у прозору Ецлипсе-овог Пацкаге Екплорер-а.

Како створити нову тестНГ датотеку за тестирање

Сада када смо завршили са постављањем нашег пројекта у овом водичу за ТестНГ, креирајмо нову датотеку ТестНГ.

Корак 1: Кликните десним тастером миша на директоријум пакета „срц“, а затим одаберите Ново> Остало

Корак 2: Кликните на фасциклу ТестНГ и одаберите опцију „ТестНГ цласс“. Кликните на Нект.

Корак 3: Унесите вредности назначене испод у одговарајућа поља за унос и кликните на Финисх. Приметите да смо нашу Јава датотеку назвали „ФирстТестНГФиле“.

Ецлипсе би требало аутоматски да креира образац за нашу ТестНГ датотеку приказану доле.

Кодирање нашег првог примера ТестНГ тест случаја

Створимо сада наш први тест случај који ће проверити да ли је почетна страница Мерцури Тоурс-а тачна. Унесите свој код како је приказано у доњем примеру ТестНГ:

пакет фирсттестнгпацкаге;импорт орг.опенка.селениум. *;импорт орг.опенка.селениум.фирефок.ФирефокДривер;импорт орг.тестнг.Ассерт;импорт орг.тестнг.аннотатионс. *;публиц цласс фирсттестнгфиле {јавни Стринг басеУрл = "хттп://демо.гуру99.цом/тест/невтоурс/";Стринг дриверПатх = "Ц: \\ гецкодривер.еке";јавни управљачки програм за ВебДривер;@Тестјавна празнина верифиХомепагеТитле () {Систем.оут.принтлн („покретање прегледача фирефок“);Систем.сетПроперти ("вебдривер.гецко.дривер", дриверПатх);дривер = нови ФирефокДривер ();дривер.гет (басеУрл);Стринг очекујеТитле = "Добродошли: Мерцури Тоурс";Стринг ацтуалТитле = дривер.гетТитле ();Ассерт.ассертЕкуалс (стварни наслов, очекивани наслов);дривер.цлосе ();}}

Обратите пажњу на следеће.

  • ТестНГ не захтева да имате главни () метод.
  • Методе не морају бити статичне.
  • Користили смо напомену @Тест. @Тест се користи да би се утврдило да ли је метода под њим тест случај . У овом случају поставили смо методу верифиХомепагеТитле () да буде наш тест случај, па смо изнад њега поставили напомену „@Тест“.
  • Будући да користимо напомене у ТестНГ-у, морали смо да увозимо пакет орг.тестнг.аннотатионс. *.
  • Користили смо класу Ассерт. Класа Ассерт се користи за спровођење операција верификације у ТестНГ-у . Да бисмо га користили, морамо да увежемо пакет орг.тестнг.Ассерт.

У једној датотеци ТестНГ можете имати више тест случајева (дакле, више напомена @Тест). О томе ће се детаљније позабавити касније у одељку „Напомене које се користе у ТестНГ-у“.

Покретање теста

Да бисте покренули тест, једноставно покрените датотеку у Ецлипсеу као и обично. Ецлипсе ће пружити два излаза - један у прозору Конзоле, а други у прозору ТестНГ Ресултс.

Провера извештаја које је креирао ТестНГ

Прозор конзоле у ​​Ецлипсе-у даје текстуални извештај о резултатима нашег тест случаја, док прозор ТестНГ Ресултс даје графички.

Генерисање ХТМЛ извештаја

ТестНГ има могућност генерисања извештаја у ХТМЛ формату.

Корак 1: Након покретања наше ФирстТестНГФиле коју смо креирали у претходном одељку, кликните десним тастером миша на назив пројекта (ФирстТестНГПројецт) у прозору Пројецт Екплорер, а затим кликните на опцију „Рефресх“ (Освежи).

Корак 2: Приметите да је креирана фасцикла „тест-оутпут“. Проширите га и потражите датотеку индек.хтмл. Ова ХТМЛ датотека је извештај о резултатима најновијег пробног рада.

Корак 3: Двапут кликните на ту датотеку индек.хтмл да бисте је отворили у уграђеном Ецлипсе веб прегледачу. Ову страницу можете освежити било када након поновног покретања теста једноставним притиском на тастер Ф5, као у обичним веб прегледачима.

Напомене које се користе у ТестНГ-у

У претходном одељку упознали сте се са ознаком @Тест. Сада ћемо проучавати напредније напомене и њихову употребу.

Вишеструки тест случајеви

У једној тестНГ датотеци можемо користити више @Тест напомена. Подразумевано се методе означене са @Тест извршавају по абецеди. Погледајте доњи код. Иако методе ц_тест, а_тест и б_тест нису распоређене по абецеди у коду, извршиће се као такве.

Покрените овај код и на генерисаној страници индек.хтмл кликните на „Хронолошки приказ“.

Параметри

Ако желите да се методе извршавају у другом редоследу, користите параметар "приоритет". Параметри су кључне речи које модификују функцију напомене .

  • Параметри захтевају да им доделите вредност. То радите стављањем знака поред њих, а затим вредности.
  • Параметри су затворени у пар заграда које се постављају одмах након напомене, као што је доле приказан исечак кода.

ТестНГ ће извршити напомену @Тест са најнижом вредношћу приоритета до највеће. Нема потребе да ваше приоритетне вредности буду узастопне.

Извештај ТестНГ ХТМЛ потврдиће да су методе извршене на основу растуће вредности приоритета.

Више параметара

Осим „приоритета“, @Тест има још један параметар под називом „алваисРун“, који може бити постављен само на „труе“ или „фалсе“. Да бисте користили два или више параметара у једној напомени, одвојите их зарезом као што је приказан доле.

@Тест (приоритет = 0, алваисРун = труе)

@БефореТест и @АфтерТест

@БефореТест

методе под овом напоменом извршиће се пре првог тест случаја у датотеци ТестНГ .

@АфтерТест

методе под овом напоменом извршиће се након извршавања свих тест случајева у датотеци ТестНГ .

Размотрите доњи код.

пакет фирсттестнгпацкаге;импорт орг.опенка.селениум. *;импорт орг.опенка.селениум.фирефок.ФирефокДривер;импорт орг.тестнг.Ассерт;импорт орг.тестнг.аннотатионс. *;публиц цласс фирсттестнгфиле {јавни Стринг басеУрл = "хттп://демо.гуру99.цом/тест/невтоурс/";Стринг дриверПатх = "Ц: \\ гецкодривер.еке";јавни управљачки програм за ВебДривер;@БефореТестпублиц воид лаунцхБровсер () {Систем.оут.принтлн („покретање прегледача фирефок“);Систем.сетПроперти ("вебдривер.гецко.дривер", дриверПатх);дривер = нови ФирефокДривер ();дривер.гет (басеУрл);}@Тестјавна празнина верифиХомепагеТитле () {Стринг очекујеТитле = "Добродошли: Мерцури Тоурс";Стринг ацтуалТитле = дривер.гетТитле ();Ассерт.ассертЕкуалс (стварни наслов, очекивани наслов);}@АфтерТестјавна празнина терминатеБровсер () {дривер.цлосе ();}}

Примењујући логику представљену табелом и кодом изнад, можемо предвидети да ће секвенца којом ће се извршавати методе бити:

  • 1. ст - лаунцхБровсер ()
  • 2 нд - верифиХомепагеТитле ()
  • 3- ти - терминатеБровсер ()

Постављање блокова напомена може се заменити без утицаја на хронолошки редослед којим ће се извршавати . Хајде да разумемо са ТестНГ примером и покушајмо да преуредимо блокове за напомене тако да ваш код изгледа слично ономе доле.

пакет фирсттестнгпацкаге;импорт орг.опенка.селениум. *;импорт орг.опенка.селениум.фирефок.ФирефокДривер;импорт орг.тестнг.Ассерт;импорт орг.тестнг.аннотатионс. *;публиц цласс фирсттестнгфиле {јавни Стринг басеУрл = "хттп://демо.гуру99.цом/тест/невтоурс/";Стринг дриверПатх = "Ц: \\ гецкодривер.еке";јавни управљачки програм за ВебДривер;@АфтерТест // Јумбледјавна празнина терминатеБровсер () {дривер.цлосе ();}@БефореТест // Јумбледпублиц воид лаунцхБровсер () {Систем.оут.принтлн („покретање прегледача фирефок“);Систем.сетПроперти ("вебдривер.гецко.дривер", дриверПатх);дривер = нови ФирефокДривер ();дривер.гет (басеУрл);}@Тест // Јумбледјавна празнина верифиХомепагеТитле () {Стринг очекујеТитле = "Добродошли: Мерцури Тоурс";Стринг ацтуалТитле = дривер.гетТитле ();Ассерт.ассертЕкуалс (стварни наслов, очекивани наслов);}}

Покрените горњи код и приметите то

@БефореМетход и @АфтерМетход

@БефореМетход

методе под овом напоменом извршиће се пре сваке методе у сваком тест случају .

@АфтерМетход

методе под овом напоменом извршиће се након сваке методе у сваком тест случају.

Претпоставимо да у Мерцури Тоурсу волимо да верификујемо наслове циљних страница две доње везе.

Ток нашег теста био би:

  • Идите на почетну страницу и потврдите њен наслов.
  • Кликните РЕГИСТРУЈ СЕ и потврдите наслов циљне странице.
  • Вратите се на почетну страницу и проверите да ли још увек има тачан наслов.
  • Кликните на ПОДРЖИ и потврдите наслов циљне странице.
  • Вратите се на почетну страницу и проверите да ли још увек има тачан наслов.

Доњи код илуструје како се @БефореМетход и @АфтерМетход користе за ефикасно извршавање горе поменутог сценарија.

пакет фирсттестнгпацкаге;импорт орг.опенка.селениум. *;импорт орг.опенка.селениум.фирефок.ФирефокДривер;импорт орг.тестнг.Ассерт;импорт орг.тестнг.аннотатионс. *;@Тестпублиц цласс фирсттестнгфиле {јавни Стринг басеУрл = "хттп://демо.гуру99.цом/тест/невтоурс/";Стринг дриверПатх = "Ц: \\ гецкодривер.еке";јавни управљачки програм за ВебДривер;јавни Стринг очекује се = нулл;јавни Стринг цуррент = нулл;@БефореТестпублиц воид лаунцхБровсер () {Систем.оут.принтлн („покретање прегледача фирефок“);Систем.сетПроперти ("вебдривер.гецко.дривер", дриверПатх);дривер = нови ФирефокДривер ();дривер.гет (басеУрл);}@БефореМетходјавна празнина верифиХомепагеТитле () {Стринг очекујеТитле = "Добродошли: Мерцури Тоурс";Стринг ацтуалТитле = дривер.гетТитле ();Ассерт.ассертЕкуалс (стварни наслов, очекивани наслов);}@Тест (приоритет = 0)јавни воид регистер () {дривер.финдЕлемент (Би.линкТект ("РЕГИСТРУЈ СЕ")). цлицк ();очекује се = "Региструј се: Мерцури Тоурс";стварна = дривер.гетТитле ();Ассерт.ассертЕкуалс (стварно, очекивано);}@Тест (приоритет = 1)јавна воид подршка () {дривер.финдЕлемент (Би.линкТект ("ПОДРШКА")). цлицк ();очекује се = "У изради: Мерцури Тоурс";стварна = дривер.гетТитле ();Ассерт.ассертЕкуалс (стварно, очекивано);}@АфтерМетходјавна воид гоБацкТоХомепаге () {дривер.финдЕлемент (Би.линкТект ("Почетна")). цлицк ();}@АфтерТестјавна празнина терминатеБровсер () {дривер.цлосе ();}}

Након извршења овог теста, ваш ТестНГ треба да пријави следећу секвенцу.

Једноставно речено, @БефореМетход треба да садржи методе које треба да покренете пре сваког тест случаја, док @АфтерМетход треба да садржи методе које треба да покренете након сваког тест случаја.

Резиме напомена о ТестНГ-у

@БефореСуите : Означена метода ће се покренути пре него што се покрену сви тестови у овом пакету.

@АфтерСуите : Означена метода ће се покренути након што се изврше сви тестови у овом пакету.

@БефореТест : Означена метода ће се покренути пре него што се покрене било која метода испитивања која припада класама унутар ознаке.

@АфтерТест : Означена метода ће се покренути након покретања свих метода испитивања које припадају класама унутар ознаке.

@БефореГроупс : Списак група које ће овај метод конфигурације раније покретати. Ова метода ће се гарантовати да се изврши непосредно пре него што се позове прва метода испитивања која припада било којој од ових група.

@АфтерГроупс : Списак група за којима ће се овај метод конфигурације покретати. Ова метода ће се гарантовано изводити убрзо након позива последњег метода испитивања који припада било којој од ових група.

@БефореЦласс : Означена метода ће се покренути пре него што се позове прва метода испитивања у тренутној класи.

@АфтерЦласс : Означена метода ће се покренути након покретања свих метода испитивања у тренутној класи.

@БефореМетход : Означена метода ће се покренути пре сваке методе испитивања.

@АфтерМетход : Означена метода ће се покретати након сваке методе испитивања.

@Тест : Означена метода је део тест случаја

Закључак

  • ТестНГ је тестни оквир који је способан да олакша разумевање селенијских тестова и генерише извештаје који су лако разумљиви.
  • Главне предности ТестНГ-а у односу на ЈУнит су следеће.
    • Биљешке је лакше користити и разумјети.
    • Тест случајеви се могу лакше групирати.
    • ТестНГ нам омогућава да креирамо паралелне тестове.
  • Прозор конзоле у ​​Ецлипсе генерише резултат заснован на тексту, док је прозор ТестНГ кориснији јер нам даје графички излаз резултата теста плус друге значајне детаље као што су:
    • Време извођења сваке методе.
    • Хронолошки редослед извршења метода
  • ТестНГ је способан да генерише ХТМЛ извештаје.
  • Биљешке могу користити параметре баш као и уобичајене методе Јава ТестНГ.
  • ТестНГ Датапровидер је начин за прослеђивање параметара у тест функцију која у једном извршењу прослеђује различите вредности у тест случајевима.

Занимљиви Чланци...