Jak wygenerować fałszywe dane testowe za pomocą Go

Rzetelne i autentyczne dane testowe odgrywają zasadniczą rolę w zapewnieniu jakości i sprawnego działania Twoich aplikacji. Tworzenie sztucznych danych, które naśladują realne sytuacje, stanowi cenną umiejętność w wielu formach testowania oprogramowania.

Standardowa biblioteka języka Go nie oferuje natywnego wsparcia dla generowania fałszywych danych, jednak bogaty ekosystem Go udostępnia szereg pakietów. Jednym z popularniejszych narzędzi do generowania takich danych jest Gofakeit.

Wprowadzenie do Gofakeit

Gofakeit to biblioteka dedykowana do generowania sztucznych danych w programach napisanych w Go.

Gofakeit oferuje szeroki wachlarz funkcji, w tym możliwość losowego generowania danych różnorodnych typów. Zapewnia również elastyczne opcje konfiguracji, pozwalające dostosować generowane dane do konkretnych formatów, obsługę różnych ustawień regionalnych oraz realistyczne generowanie dat i godzin.

Aby dodać Gofakeit jako zależność zewnętrzną do Twojego projektu, po zainicjowaniu nowego projektu Go, wykonaj poniższe polecenie w katalogu roboczym projektu:

 go get github.com/brianvoe/gofakeit/v6

Po dodaniu Gofakeit jako zależności, możesz zaimportować pakiet w następujący sposób:

 import (
    "github.com/brianvoe/gofakeit/v6"
)

Podsumowując, Gofakeit dostarcza większość potrzebnych funkcjonalności pakietu do generowania fałszywych danych.

Generowanie podstawowych danych testowych przy użyciu Gofakeit

Gofakeit umożliwia generowanie różnorodnych rodzajów danych, w tym imion, adresów e-mail, numerów telefonów, fraz biznesowych i wielu innych.

Poniżej przedstawiono sposób generowania podstawowych fałszywych danych za pomocą Gofakeit:

 package main
import (
    "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)
}

Powyższa funkcja main generuje zestaw fałszywych wartości przy użyciu Gofakeit, a następnie wyświetla je na konsoli za pomocą funkcji Println z pakietu fmt.

Gofakeit pozwala również na użycie tagów struct do automatycznego generowania fałszywych danych dla poszczególnych pól struktur. Dzięki tym tagom, Gofakeit automatycznie wypełni pola struktury odpowiednimi losowymi danymi.

 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 Person

    gofakeit.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)
}

Wszystkie pola struktury Person posiadają odpowiednie tagi struktury do generowania fałszywych danych. W funkcji main tworzona jest zmienna person, będąca instancją struktury Person.

Metoda gofakeit.Struct wypełnia pola struktury losowymi danymi na podstawie wartości tagów. Następnie funkcja main wyświetla wypełnione pola na konsoli.

Generowanie złożonych, sztucznych danych

Gofakeit pozwala na generowanie bardziej skomplikowanych danych, takich jak losowe zdania, akapity, a nawet teksty lorem ipsum. Można to osiągnąć za pomocą funkcji Zdanie, Akapit i LoremIpsumParagraph.

 package main
import (
    "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())
}

Funkcja generateRandomSentence generuje losowe zdanie za pomocą funkcji Sentence. Funkcja generateRandomParagraph tworzy losowy akapit wykorzystując funkcję Paragraph.

Funkcja generateLoremIpsum generuje losowy akapit Lorem Ipsum za pomocą funkcji LoremIpsumParagraph.

Funkcja main wywołuje te trzy funkcje i wyświetla ich wyniki na konsoli.

Wykorzystanie fałszywych danych do testowania baz danych

Gofakeit znacząco ułatwia testowanie, umożliwiając dynamiczne generowanie danych, które mogą sprostać różnorodnym wymaganiom testowym.

Możesz wykorzystać wbudowany pakiet database/sql języka Go, aby wypełnić bazę danych SQL fałszywymi danymi. Takie podejście pozwala na przeprowadzenie bardziej dogłębnych testów, ujawniając potencjalne problemy i wzmacniając bezpieczeństwo bazy danych.

Najczęściej zadawane pytania

P: W jaki sposób można wykorzystać wygenerowane fałszywe dane?

Należy stosować je w testach jednostkowych, aby upewnić się, że poszczególne, mniejsze części kodu działają prawidłowo w różnych warunkach.

P: Jakie inne narzędzia testowe oferuje język Go?

Go udostępnia solidne wsparcie dla testowania poprzez wbudowany pakiet testing. Pozwala on na testowanie kodu, wykorzystywanie fuzzingu do generowania zróżnicowanych danych testowych oraz organizowanie testów w logiczną hierarchię.

P: Jaka jest historia tekstu Lorem Ipsum?

Lorem ipsum to popularny rodzaj tekstu zastępczego, często stosowany przez programistów i projektantów zamiast prawdziwej treści. Jest przydatny, ponieważ jest traktowany jako sztuczny, ale jednocześnie w swojej formie przypomina rzeczywisty tekst.