Тестирование программного обеспечения — это процесс, который оценивает показатели программ с помощью инструментов, скриптов или вручную.
Тестирование является неотъемлемой частью цикла разработки программного обеспечения. Всестороннее тестирование предоставляет подробную информацию о целостности вашего приложения.
Вы можете предотвратить и исправить ошибки, написав тесты, оценив производительность программы и автоматизировав рабочие процессы.
Начало работы с тестированием в Go
Стандартная библиотека Go предоставляет развивающуюся тестирование упаковка. тестирование Пакет имеет бенчмаркинг, фаззинг, пропуск, суб-тестирование, суб-бенчмаркинг и другие функции.
Тестировать с этим пакетом легко. Вот простая тестовая структура, которая будет служить моделью для теста:
тип Случаи структура {
// ожидаемый результат теста
ожидал инт// вывод функции
действительный инт
// значение, которое вы передаете функции
аргумент нить
}
Вот простая функция, которая преобразует строки в целые числа. Ваш тест будет проверять эту функцию.
импорт (
"стрконв"
)функцияStringToInteger(ул. нить)инт {
целое число, ошибка := strconv. Атой (ул.)если ошибся != ноль {
возвращаться0
}
возвращаться целое число
}
StringToInteger функция возвращает 0 если ошибка при конвертации и целое число если ошибок нет.
Вот тестовая функция для StringToInteger:
функцияТестстрингтоцелое(тест * тестирование. Т) {
ожидаемыйInt := StringToInteger("3")caseInstance := Случаи {
ожидаемый: ожидаемыйInt,
действительный: 3,
}
если caseInstance.expected == caseInstance.actual {
// здесь какой-то код
} еще {
тест. Потерпеть неудачу()
}
}
Тестстрингтоцелое тестовая функция принимает тестирование. Т объект в качестве аргумента. ожидаемыйInt переменная содержит результат преобразования строки. caseInstance переменная — это конкретизированная структура Cases для теста. если оператор сравнивает ожидаемые и фактические значения.
Потерпеть неудачу Метод возвращает неудачный тест в операторе else, если значения не равны.
Go предоставляет тест команда для автоматизации и получения информации о ваших тестах и программах.
идти тест
идти помогите проверить
Страница справки содержит подробную информацию о том, как пройти тест работает:
Экосистема Go содержит множество библиотек, которые делают тестирование более доступным и гибким. Существует множество функций помимо тестирование пакет, в том числе регрессионное и модульное тестирование.
Пакет для свидетельских показаний
Пакет «Свидетельствовать» — один из самых популярных фреймворков Go для тестирования пакетов. Он предоставляет инструменты, которые вам понадобятся для написания эффективных тестов, с простыми утверждениями, имитацией и функциями набора тестов.
Testify подходит для разработки через тестирование, поскольку пакет предоставляет насмехаться упаковка. Это обеспечивает механизм для написания фиктивных объектов, которые можно использовать вместо реальных объектов при тестировании.
В пакете также предусмотрено:
- Ан утверждать пакет, который предоставляет полезные методы для написания удобных, читаемых тестов.
- А требовать пакет, аналогичный утверждать пакет для возврата логических результатов.
- А люкс пакет для наборов тестов со структурами.
Свидетельство распространяется на тестирование пакет, и вы можете использовать пройти тест команда для запуска тестов, написанных с помощью пакета Testify.
Testify поддерживает версии Go начиная с 1.13. Вы можете добавить пакет в качестве зависимости проекта с помощью этой команды:
идти получить github.com/stretchr/testify
Вот простой тест утверждения с пакетом Testify утверждать упаковка:
упаковка главный
импорт (
"тестирование"
"github.com/stretchr/testify/assert" // утверждать только пакет
)// по соглашению имя функции должно быть "Something"
функцияTestSomething(т * тестирование. Т) {
// утверждение равенства
утверждать. Равно (т, 123, 123, "они должны быть равны")
// утверждение неравенства
утверждать. Неравно (t, 123, 456, "они не должны быть равными")
}
TestSomething тестовая функция принимает структуру типа тестирования тестирование пакет в качестве аргумента. Равный а также Не равный методы для утверждений на основе равенства и неравенства от Testify утверждать упаковка.
Пакет GoConvey
GoConvey это инструмент тестирования Go, предназначенный для выразительности над тестирование упаковка. Это включает в себя терминал (CLI) и браузер (GUI) тестирование функциональности.
Пакет GoConvey интегрируется с тестирование пакет, предоставляющий пользовательский веб-интерфейс для работы с собственными тестами Go. Он также включает в себя функциональные возможности для регрессионных тестов, настраиваемые выходные данные и генерацию тестового кода. Вы можете запускать тесты автоматически, получать доступ к форматам покрытия в HTML и настраивать графический интерфейс.
Запустите эту команду в терминале рабочей области Go, чтобы установить пакет Go Convey.
идти получить github.com/smartystreets/goconvey
Вот простой пример написания тестов с помощью пакета GoConvey.
упаковка главный
импорт (
. "github.com/smartystreets/goconvey/передача"
"тестирование"
)функцияTestSomething(т * тестирование. Т) {
// Только передавать t в вызовы Convey верхнего уровня
Convey("Объявить переменную", t, функция() {
х := 1Передать("приращение переменной", функция() {
х++
Convey("утверждать равенство", функция() {
Итак, (x, ShouldEqual, 2)
})
})
})
}
Вам нужно будет импортировать передавать package, используя точечную нотацию для теста.
Функция Convey из Передавать package помогает с определением объема теста. Последний Передавать вызов функции в примере кода утверждает равенство между Икс переменная и 2, с использованием Долженравно функция.
Ожидаемый пакет HTTP
Ожидание HTTP package — это простой в использовании, краткий, декларативный пакет для сквозного тестирования HTTP и REST API Go. Вы можете использовать его для постепенного создания HTTP-запросов и рекурсивной проверки ответов и их полезной нагрузки.
httpожидание package — это набор компоновщиков цепочек для HTTP-запросов и утверждений для HTTP-ответов и полезной нагрузки. Он построен на http, тестирование, и другие пакеты. Пакет также хорошо работает со встроенным httpтест упаковка.
httpожидание предоставляет функциональные возможности для создания запросов с построением URL, заголовков, файлов cookie и полезных данных. Он обрабатывает утверждения ответа, утверждения полезной нагрузки, красивую печать и веб-сокеты.
Запустите эту команду в терминале вашего рабочего каталога, чтобы установить httpожидание упаковка.
идти получить github.com/gavv/httpexpect
Вот простой пример тестирования функции-обработчика с помощью httpожидание упаковка.
упаковка главный
импорт (
"ФМТ"
"github.com/gavv/httpexpect/v2"
"сеть/http"
"сеть/http/httptest"
"тестирование"
)функцияпримерHandler()http.Обработчик {
возвращаться http. HandlerFunc(функция(писатель http. ResponseWriter, запрос *http. Запрос) {
ФМТ. Фпринтлн (писатель, «Привет, мир»)
})
}функцияОбработчик тестового примера(т * тестирование. Т) {
// создать http. Обработчик
обработчик := примерHandler()// запускаем сервер с помощью httptest
сервер := httptest. Новый сервер (обработчик)
отложить сервер. Закрывать()// создать HTTP-экземпляр ожидания
ожидать := httpожидать. Новый (т, сервер. URL)
// это работает?
ожидать. ПОЛУЧИТЬ("/").
Ожидать().
Статус (http. СостояниеОК).JSON().Массив().Пустой()
}
примерHandler Функция обработчика возвращает обработчик HTTP для httpожидание упаковка. Обработчик тестового примера function объявляет экземпляр функции-обработчика. Затем он создает новый сервер для тестирования конечной точки с httpтест упаковка.
ожидать переменная ваша httpожидание экземпляр, попадающий в ПОЛУЧИТЬ запрашивать корневой путь конечной точки на сервере. Статус функция возвращает код состояния (в таком случае, 200), если проверка прошла успешно.
Пишите комплексные и интуитивно понятные тесты
Тесты имеют большое значение для оценки целостности вашего приложения, и существует множество шаблонов и методов тестирования, которые вы можете использовать для своих программ. В основе вашего рабочего процесса тестирования вы должны писать интуитивно понятные тесты, которые вы можете улучшать по мере изменения ваших программ с течением времени.