Уверљиви и веродостојни подаци за тестирање су од суштинског значаја за гарантовање квалитета и исправног функционисања ваших апликација. Креирање синтетичких података који подражавају реалне ситуације је драгоцена вештина у различитим фазама тестирања.
Стандардна библиотека језика Go не укључује функције за генерисање лажних података, али у оквиру његовог екосистема постоји велики број доступних пакета. Један од популарних избора за ту сврху је пакет GoFakeit.
Почетак рада са GoFakeit-ом
GoFakeit представља пакет који омогућава креирање лажних података у Go апликацијама.
GoFakeit нуди широку лепезу могућности, укључујући насумично генерисање података различитих типова. Такође пружа прилагодљиве опције за форматирање, подршку за локализацију и реалистичко генерисање времена и датума.
Да бисте додали GoFakeit као зависност у ваш пројекат, након што сте иницијализовали нови Go пројекат, покрените следећу команду у радном директоријуму:
go get github.com/brianvoe/gofakeit/v6
Када сте додали GoFakeit као зависност, можете га увести у свој код на следећи начин:
import (
"github.com/brianvoe/gofakeit/v6"
)
Све у свему, GoFakeit пружа све неопходне функције које се обично очекују од пакета за генерисање лажних података.
Генерисање једноставних лажних података уз помоћ GoFakeit-а
GoFakeit омогућава генерисање различитих типова података, укључујући имена, имејл адресе, бројеве телефона, насумичне фразе и друге сличне податке.
Ево примера како можете да генеришете основне лажне податке користећи GoFakeit:
package mainimport (
"fmt"
"github.com/brianvoe/gofakeit/v6"
)func main() {
name := gofakeit.Name()
fmt.Println("Name:", name)
email := gofakeit.Email()
fmt.Println("Email:", email)
phone := gofakeit.Phone()
fmt.Println("Phone:", phone)
company := gofakeit.Company()
fmt.Println("Company:", company)
creditCard := gofakeit.CreditCardNumber()
fmt.Println("Credit Card:", creditCard)
hackerPhrase := gofakeit.HackerPhrase()
fmt.Println("Hacker Phrase:", hackerPhrase)
jobTitle := gofakeit.JobTitle()
fmt.Println("Job Title:", jobTitle)
currency := gofakeit.CurrencyShort()
fmt.Println("Currency:", currency)
}
Главна функција генерише неколико насумичних вредности користећи GoFakeit и приказује их на конзоли помоћу функције Println из пакета fmt.
GoFakeit такође обезбеђује ознаке struct-а (структуре) које омогућавају генерисање лажних података за појединачна поља структуре. Када се користе ове ознаке, GoFakeit ће иницијализовати та поља насумичним подацима.
import (
"fmt"
"time""github.com/brianvoe/gofakeit/v6"
)type Person struct {
ID string `fake:"{uuid}"`
FirstName string `fake:"{firstname}"`
LastName string `fake:"{lastname}"`
Age int `fake:"{number:18,60}"`
Email string `fake:"{email}"`
Address string `fake:"{address}"`
CreatedAt time.Time `fake:"{date}"`
}func main() {
var person Persongofakeit.Struct(&person)
fmt.Printf("ID: %s\\n", person.ID)
fmt.Printf("First Name: %s\\n", person.FirstName)
fmt.Printf("Last Name: %s\\n", person.LastName)
fmt.Printf("Age: %d\\n", person.Age)
fmt.Printf("Email: %s\\n", person.Email)
fmt.Printf("Address: %s\\n", person.Address)
fmt.Printf("Created At: %s\\n", person.CreatedAt)
}
Сва поља структуре `Person` имају придружене лажне ознаке. У главној функцији, променљива `person` представља инстанцу структуре `Person`.
Метода `gofakeit.Struct` попуњава извезена поља структуре насумичним подацима на основу вредности наведених у ознакама. Главна функција затим исписује вредности тих поља на конзолу.
Генерисање сложенијих лажних података
Помоћу GoFakeit-а можете генерисати сложеније лажне податке, укључујући случајне реченице, пасусе и Lorem ipsum текст, користећи функције `Sentence`, `Paragraph` и `LoremIpsumParagraph`.
package mainimport (
"fmt""github.com/brianvoe/gofakeit/v6"
)func generateRandomSentence() string {
sentence := gofakeit.Sentence(6)
return sentence
}func generateRandomParagraph() string {
paragraph := gofakeit.Paragraph(3, 4, 8, "/n")
return paragraph
}func generateLoremIpsum() string {
loremIpsum := gofakeit.LoremIpsumParagraph(3, 5, 12, "\\n")
return loremIpsum
}func main() {
gofakeit.Seed(0)
fmt.Println("Random Sentence:")
fmt.Println(generateRandomSentence())
fmt.Println("\\nRandom Paragraph:")
fmt.Println(generateRandomParagraph())
fmt.Println("\\nLorem Ipsum Text:")
fmt.Println(generateLoremIpsum())
}
Функција `generateRandomSentence` генерише случајну реченицу користећи GoFakeit-ову функцију `Sentence`. Функција `generateRandomParagraph` генерише насумични пасус користећи функцију `Paragraph`.
Функција `generateLoremIpsum` генерише насумични Lorem ipsum пасус користећи функцију `LoremIpsumParagraph`.
Главна функција позива функције `generateRandomSentence`, `generateRandomParagraph` и `generateLoremIpsum`, а затим исписује њихове резултате на конзоли.
Могућност генерисања лажних података за тестирање базе података
GoFakeit олакшава тестирање динамичким генерисањем података како би се обезбедила компатибилност са различитим захтевима.
Можете користити Go-ов уграђени пакет `database/sql` да попуните вашу SQL базу података лажним подацима у сврху тестирања. Ово вам омогућава да тестирате различите граничне случајеве и побољшате безбедност базе података.
Често постављана питања
П: Како могу искористити ове лажне податке у тестирању?
Потребно је да креирате јединичне тестове и да им обезбедите синтетичке податке за тестирање како бисте проверили да ли мањи делови вашег кода раде исправно.
П: Које друге алате за тестирање нуди језик Go?
Go има одличну уграђену подршку кроз свој пакет за тестирање. Овај пакет вам омогућава да поредите код, користите fuzzy тестирање за варирање тестних података и да организујете тестове у хијерархијску структуру.
П: Шта је порекло Lorem Ipsum текста?
Lorem ipsum је уобичајена врста текста који се користи као чувар места и који програмери и дизајнери често користе уместо стварног текста. Његова корисност лежи у чињеници да је лажан, али ипак изгледа као прави текст.