Czasem w trakcie pracy zdarza się, że musimy przygotować dane testowe. Przyczyny mogą być różne, możemy potrzebować danych w celu przetestowania fragmentu aplikacji lub chcąc przedstawić klientowi propozycję interfejsu użytkownika. Z pewnością możliwości jest więcej, jednak nie to jest celem tego wpisu.
Tak się składa, że ostatnio zajmuję się przygotowaniem prototypu UI i chciałem zobaczyć jak to wszystko będzie wyglądać i działać w zetknięciu z przybliżonymi danymi. Nie miałem czasu i ochoty na samodzielne wymyślanie danych i ręczne przepisywanie z zachowaniem odpowiedniego formatu. Zamiast tego poprosiłem Google o pomoc i w zasadzie od razu znalazłem całkiem ciekawy generator danych online dostępny pod adresem: http://www.generatedata.com/.
Wspomniany generator posiada wiele wbudowanych typów i zestawów danych m. in.: miasto, guid, telefon, mail itp., oprócz tego możemy definiować też swoje własne typy np. wyliczenia, typy złożone, czy struktury drzewiaste. Wygenerowane dane można wyeksportować do różnych formatów, np.: CSV, Excel, HTML, JSON, SQL, XML, JavaScript, PHP, czy Ruby. Mnogość oferowanych formatów, szczególnie SQL, JSON i CSV, uważam za duży plus. Generator ma jeszczę inne funkcjonalności, polecam zajrzeć samemu.
Jeżeli chodzi o minusy znalezione przez parę chwil użytkowania tego narzędzia:
- Nie generuje wartości logicznych (a przynajmniej ja nie zauważyłem takiej możliwości).
- Nie obsługuje eksportu do kodu C# np. w postaci listy obiektów POCO.
- Część funkcjonalności jest niedostępna w wersji demo. Pełną wersję można otrzymać przez wsparcie projektu w kwocie 20$.
Powyższe wady można w prosty sposób wyeliminować. Pierwszy problem możemy rozwiązać generując liczby całkowite z zakresu <0;1> i w kodzie rzutować je na wartości logiczne.
Drugi problem rozwiązałem korzystając z metody Deserialize klasy JavaScriptSerializer. Poniżej wrzuciłem prosty, działający, przykład transformacji formatu JSON do kolekcji obiektów POCO.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Definicja klasy POCO: public class Person { public int Id { get; set; } public string Name { get; set; } public string Phone { get; set; } } //Transformacja: var json = @"[{""Name"":""Rylee Thomas"",""Phone"":""1-994-890-8661"", ""Id"":1},{""Name"":""Ariana Tran"",""Phone"":""1-493-394-0501"",""Id"":2}]"; var serializer = new JavaScriptSerializer(); var result = serializer.Deserialize<List<Person>>(json); |
Ostatni problem jest oczywisty i zakładam, że jeżeli ktoś będzie chciał skorzystać z zablokowanych funkcjonalności to dobrze wie co należy zrobić :).
Uważam, że narzędzie jest całkiem funkcjonalne i upraszcza generowanie danych testowych. W ciągu kilku minut wygenerowałem zestaw danych i bez problemu użyłem ich w przygotowanym wcześniej GUI. Narzędzie z całą pewnością jest wystarczające dla większości naszych potrzeb. W przypadku bardziej złożonych scenariuszy może służyć jako narzędzie pomocnicze dostarczające podstawowe dane, które później samodzielnie doprowadzimy do pożądanej postaci. Polecam dodać adres http://www.generatedata.com lub cały post do ulubionych i przetestować narzędzie przy najbliższej okazji.
Edit
Niestety, jak zostało słusznie zauważone w komentarzu poniżej, obecna wersja generatora online nie wspiera polskich znaków diakrytycznych. Jeżeli faktycznie będziemy potrzebowali danych testowych z ogonkami to nie wszystko stracone. Kod źródłowy generatora znajduje się na githubie: https://github.com/benkeen/generatedata i w razie potrzeby możemy naprawić obsługę kodowania na własną rękę i odpalić generator lokalnie.
A jak jest z obsługą polskich znaków diakrytycznych?
Mój szybki test i pojawiają się krzaczki.
Słuszna uwaga! Zupełnie o tym zapomniałem. Odpowiedź na dole posta.
Cześć, dobry artykuł! Ja polecam taki generator:
http://generatory.it/
Fajnie wygląda, i wygodny w użyciu:)
Pozdr!
Maciek
Dzięki! 🙂
Ten generator, który podesłałeś jest ok dla aplikacji biznesowych w PL. Z pewnością jest wartościowy, jednak ten, który opisuję w poście jest bardziej elastyczny.