Тестирање софтвера је процес који процењује метрику програма помоћу алата, скрипти или ручно.

Тестирање је саставни део циклуса развоја софтвера. Свеобухватно тестирање пружа детаљне информације о интегритету ваше апликације.

Можете спречити и поправити грешке писањем тестова, проценом перформанси програма и аутоматизацијом токова посла.

Почетак рада са тестирањем у Го

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

Тестирање са овим пакетом је једноставно. Ево једноставне тест структуре која ће послужити као модел за тест:

тип Случајеви струцт {
// очекивани излаз теста
очекиван инт

// излаз функције
стварни инт

// вредност коју прослеђујете функцији
расправа низ
}

Ево једноставне функције која претвара низове у целе бројеве. Ваш тест ће тестирати ову функцију.

увоз (
"стрцонв"
)

фунцСтрингТоИнтегер(стр низ)инт {
цео број, грешка := стрцонв. Атои (улица)

ако ерр != нула {
повратак0
}

повратак цео број
}

Тхе СтрингТоИнтегер функција враћа 0 ако постоји грешка при конверзији и цео број ако нема грешака.

Ево тестне функције за СтрингТоИнтегер:

фунцТестСтрингТоИнтегер(тест *тестирање. Т) {
очекиваниИнт := СтрингТоИнтегер("3")

цасеИнстанце := Случајеви {
очекивано: очекивано,
стварни: 3,
}

ако цасеИнстанце.екпецтед == цасеИнстанце.ацтуал {
// неки код овде
} друго {
тест. Фаил()
}
}

Тхе ТестСтрингТоИнтегер тест функција прихвата а тестирање. Т објекат као свој аргумент. Тхе очекиваниИнт променљива садржи резултат конверзије стрингова. Тхе цасеИнстанце променљива је инстанцирана структура Цасес за тест. Тхе ако исказ упоређује очекиване и стварне вредности.

Тхе Фаил метода враћа неуспели тест у наредби елсе ако вредности нису једнаке.

Го пружа а тест команду за аутоматизацију и преузимање увида у ваше тестове и програме.

иди тест
иди помоћни тест

Страница помоћи пружа детаљне информације о томе како иди тестирај Извођење радова:

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

Пакет сведочења

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

Тестифи је погодан за развој заснован на тестовима пошто пакет пружа а ругати се пакет. Ово обезбеђује механизам за писање лажних објеката које можете користити уместо стварних објеката у тестирању.

Пакет такође пружа:

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

Сведочење се протеже на тестирање пакет и можете користити иди тестирај команду за покретање тестова написаних у пакету Тестифи.

Тестифи подржава Го верзије од 1.13. Можете додати пакет као зависност пројекта помоћу ове команде:

иди набавите гитхуб.цом/стретцхр/тестифи

Ево једноставног теста тврдњи са пакетом Тестифи тврдити пакет:

пакет главни

увоз (
"тестирање"
"гитхуб.цом/стретцхр/тестифи/ассерт" // само потврдити пакет
)

// име функције треба да буде "Нешто" по конвенцији
фунцТестСометхинг(т *тестирање. Т) {
// потврђивање једнакости
тврдити. Једнако (т, 123, 123, "требало би да буду једнаки")

// тврдња неједнакости
тврдити. НотЕкуал (т, 123, 456, "не би требало да буду једнаки")
}

Тхе ТестСометхинг тест функција узима структуру типа тестирања тестирање пакет као аргумент. Тхе Једнако и Није једнако методе су за једнакост и тврдње засноване на неједнакости из Тестифи’с тврдити пакет.

ГоЦонвеи пакет

ГоЦонвеи је алатка за Го тестирање припремљена за експресивност преко тестирање пакет. Садржи терминал (ЦЛИ) и претраживач (ГУИ) тестирање функционалности.

ГоЦонвеи пакет се интегрише са тестирање пакет, који пружа веб кориснички интерфејс за рад са изворним Го тестовима. Такође укључује функционалност за регресионе тестове, прилагодљиве излазе и генерисање тестног кода. Можете аутоматски покренути тестове, приступити форматима покривености у ХТМЛ-у и прилагодити ГУИ.

Покрените ову команду у терминалу свог Го радног простора да бисте инсталирали Го Цонвеи пакет.

иди набавите гитхуб.цом/смартистреетс/гоцонвеи

Ево једноставног примера писања тестова са ГоЦонвеи пакетом.

пакет главни

увоз (
. "гитхуб.цом/смартистреетс/гоцонвеи/цонвеи"
"тестирање"
)

фунцТестСометхинг(т *тестирање. Т) {
// Само прослеђује т у Цонвеи позиве највишег нивоа
Пренеси("Објави променљиву", т, фунц() {
к := 1

Пренеси("променљива повећања", фунц() {
к++

Пренеси("потврди једнакост", фунц() {
Дакле (к, требало би једнако, 2)
})
})
})
}

Мораћете да увезете пренети пакет који користи нотацију тачака за тест.

Функција Пренеси из Пренети пакет помаже у одређивању опсега теста. Последњи Пренети позив функције у примеру кода потврђује једнакост између Икс променљива и 2, помоћу СхоулдЕкуал функција.

ХТТП Екпецт Пацкаге

Тхе ХТТП Екпецт пакет је једноставан за коришћење, сажет, декларативни пакет за Го-ово енд-то-енд ХТТП и РЕСТ АПИ тестирање. Можете га користити да постепено правите ХТТП захтеве и рекурзивно прегледате одговоре и њихов садржај.

Тхе хттпекпецт пакет је скуп ланчаних градитеља за ХТТП захтеве и тврдње о ХТТП одговорима и корисним учитавањима. Изграђен је на хттп, тестирање, и други пакети. Пакет такође добро функционише са уграђеним хттптест пакет.

хттпекпецт пружа функционалност за прављење захтева са конструкцијом УРЛ-а, заглављима, колачићима и корисним оптерећењем. Он се бави тврдњама одговора, тврдњама корисног оптерећења, лепим штампањем и ВебСоцкетс.

Покрените ову команду у терминалу вашег радног директоријума да бисте инсталирали хттпекпецт пакет.

иди набавите гитхуб.цом/гавв/хттпекпецт

Ево једноставног примера тестирања функције руковаоца са хттпекпецт пакет.

пакет главни

увоз (
"фмт"
"гитхуб.цом/гавв/хттпекпецт/в2"
"нет/хттп"
"нет/хттп/хттптест"
"тестирање"
)

фунцекамплеХандлер()хттп.Хандлер {
повратак хттп. ХандлерФунц(фунц(писац хттп. РеспонсеВритер, захтев *хттп. Захтев) {
фмт. Фпринтлн (писац, "Здраво, свет")
})
}

фунцТестекамплеХандлер(т *тестирање. Т) {
// креирај хттп. Хандлер
обрађивач := екамплеХандлер()

// покренути сервер користећи хттптест
сервер := хттптест. НевСервер (управљач)
одложити сервер. Близу()

// креирај хттп очекивану инстанцу
очекуј := хттпекпецт. Ново (т, сервер. УРЛ)

// да ли ради?
очекивати. ДОБИТИ("/").
Очекујте().
Статус (хттп. СтатусОК).ЈСОН().Арраи().Емпти()
}

Тхе екамплеХандлер функција руковаоца враћа ХТТП обрађивач за хттпекпецт пакет. Тхе ТестекамплеХандлер функција декларише инстанцу функције руковаоца. Затим креира нови сервер за тестирање крајње тачке са хттптест пакет.

Тхе очекивати променљива је ваша хттпекпецт пример који погађа ДОБИТИ захтевајте коренску путању крајње тачке на серверу. Тхе Статус функција враћа статусни код (у овом случају, 200) ако тест успе.

Пишите свеобухватне и интуитивне тестове

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