Klasyczny problem w przypadku gdy piszemy jakąś aplikację i chcemy mieć jakieś sensowne dane do testów. Najprościej jest pobrać dane z jakiegoś źródła w rodzaju Eurostat czy Bank Światowy i je sobie procesować (temat na stacku). Problem polega na tym, że dane te zazwyczaj średnio nam pasują do modelu. Inna sprawa skąd brać dane o „typowej” strukturze. Potrzebujesz wypełnić sklep internetowy czy jakieś systemik w korpo. Oczywiście można nająć pociąg hindusów, by nam wklepali takie informacje. Można też użyć narzędzia. Dziś dwa takie narzędzia, z których korzystałem i uważam za warte uwagi.

Warunki brzegowe

Oczywiście jeżeli chcemy korzystać z jakiegoś narzędzia to na początku należy zastanowić się jakiego rodzaju dane nas interesują. Z jednej strony mogą to być dane typowe przykładowo dane teleadresowe klientów sklepu. Tu istotna jest jedynie ich unikalność na poziomie jakiegoś klucza złożonego. Przykładowo imię Bonawentura może powtarzać się u wielu klientów, ale już połączenie w rodzaju wielu klientów ma ten NIP to już niekoniecznie. Tak samo mogą to być towary w sklepie internetowym. Unikalna nazwa, ale już cena nie.
Z drugiej strony mamy jednak dane, które powinny pasować do jakiś rozkładów czy to normalnego czy to BenfordaW, przykładowo kwoty zakupów. Tu ważne jest zastosowanie odpowiedniego generatora albo umiejętne transformowanie danych z rozkładu płaskiego.

Kolejnym problemem jest dostępność danych. Czasami nie możemy ot tak po prostu pobrać danych z internetów albo też nie mamy dostępu do sieci gdy chcemy z danych skorzystać. Czasami jednak nie chcemy dokładać sobie kolejnego narzędzia lokalnie i możemy pobrać dane z zewnątrz. Dlatego też opiszę dwa narzędzia, które działają w zupełnie inny sposób w tym kontekście.

Oczywiście narzędzie musi mieć też możliwość przystosowania danych do naszego formatu. Zatem warto by generator potrafił generować informacje w określonym formacie albo umożliwiał ich transformację do określonego formatu.

Mogę pobrać dane

W takim wypadku użyj Mockaroo. Mają API śmigające po restach. Wspierają wszelkie popularne typy danych w rodzaju miasta, państwa, numery kart kredytowych. Dane mogą być transformowane po wylosowaniu w oparciu o funkcje użytkownika. Całość dostarczana w kilku formatach. Trochę pracowałem z tym narzędziem i to czego mi w nim brakowało to braki w formatach regionalnych. Coś za coś.

Nie mogę pobrać danych

W takim przypadku jFairy będzie dobrym wyborem. Łatwy w obsłudze generator, który podpinamy do poma i można jechać. Duży wybór podstawowych generatorów. Całość śmiga na javie i ma wbudowane pewne typy podstawowe w rodzaju Person. Niestety są też wady. Najpoważniejsza to stosunkowo małe słowniki na podstawie, których generowane są imiona, nazwiska czy adresy. Drugą jest pewne zamknięcie się biblioteki. Całość oparta jest o Guice i zdawać by się mogło, że wykorzystanie mechanizmu SPI by wystawić api dla dodatkowych modułów nie jest problemem. Ale jednak tego nie ma. A szkoda.

Podsumowując, gdy potrzebujemy jakiś danych losowych warto sięgnąć po generator niż samemu kombinować jak by to napisać. Tutoriali jak korzystać nie zamieszczam. Od tego jest dokumentacja.