2016-09-15 36 views
8

Podczas gdy inne interfejsy są względnie łatwe do podrobienia w testach integracyjnych Java, nie mogłem znaleźć odpowiedniego sposobu na kpiny z BigQuery.Szydercze BigQuery do testów integracyjnych

Jedną z możliwości jest kpić z warstwy, którą napisałem na samej Bigquery, ale wolę kpić z Bigquery w bardziej naturalny sposób. Szukam ograniczonej, lekkiej implementacji, która umożliwia definiowanie zawartości tabeli i obsługuje zapytania za pomocą standardowego interfejsu API. Czy istnieje taka biblioteka? Jeśli nie, jakie alternatywne podejścia są zalecane?

Odpowiedz

4

W testowaniu jednostkowym znakomicie jest udawać wszystkie zewnętrzne zależności, a jeśli używasz interfejsów do abstrahowania dostępu do klienta BigQuery, kpiny nie powinny stanowić problemu.

Dzięki testom integracyjnym wolałbym, aby wszystkie moje zależności od podmiotów trzecich były testowane pod kątem zgodności z wymaganiami aplikacji .

Na przykład jeden przypadek byłby ETL, który przesyła dane ze źródeł zewnętrznych do BigQuery, w tym przypadku test integracyjny musi zweryfikować, że wszystkie dane są w BigQuery zgodnie z oczekiwaniami, co oznacza, że ​​etap weryfikacji musi uwzględniać powtórzenie i zagnieżdżone wiadomości w razie potrzeby.

Innym przypadkiem byłaby aplikacja, która uruchamia niektóre biznesowe SQL, w tym przypadku wypełnisz BigQuery pewnymi danymi testowymi przed uruchomieniem aplikacji, , wtedy aplikacja musi opublikować dane wyjściowe SQL jako widok/nowa tabela/lub strumień brak danych do weryfikacji.

Istnieje już kilka bibliotek dbanie testów integracji z magazynów danych oraz BigQuery/NoSQL/SQL

Oni zapewniają łatwe rozwiązanie dla wyżej opisanych przypadkach i pełne wsparcie dla SQL, dynamiczne makro/orzekać etc .. ..

  1. Dsunit (go-lang)
  2. JDsunit (java)

Jeśli biblioteka testów integracji danych nie jest dla Ciebie opcją i szukasz tylko testowania klienta BigQuery, dobrą wiadomością jest to, że klient używa usługi REST, więc używając snifferów sieciowych możesz łatwo rejestrować, co jest wysyłane tam iz powrotem, a następnie może go użyć w odtwarzaniu. Aby przekierować BigQuery z publicznych punktów końcowych BG do twojego odtwarzacza, używałbyś serwera proxy HTTP java.

+0

Czy muszę zainstalować program go-lang dla JDSUnit? Również wprowadzenie mówi, że musimy zainstalować serwer DSUnit, co to jest? – user1965449

+0

Musisz zainstalować golang, jdsunit to po prostu prosty klient odpoczynku dla serwera dsunit, który jest faktycznie odpowiedzialny za przygotowanie i weryfikację danych. –

+0

Niestety, nie jest jasne, czy serwer dsunit jest instalowany automatycznie po zainstalowaniu golanga? Który komponent komunikuje się z BigQuery, czy jest to serwer jdsunit lub serwer dsunit? Proszę o wyjaśnienie. Dzięki. – user1965449