Używamy implementacji HyperLogLoga na Twitterze w Algebiorze. Biorąc pod uwagę liczbę N i czek w naszym systemie, który wykorzystuje HyperLogLog do oszacowania aktualnej wielkości stopniowo rosnącej kolekcji i testowania, czy jest on mniejszy lub równy N, jak możemy napisać test integracji lub systemu, który testuje to sprawdzanie i jest prawie gwarantowane przejście, jeśli nasz kod, który wywołuje HyperLogLog jest poprawny? Testowany system jest niedeterministyczny, ponieważ z jednej strony jest wielowątkowy.Wiarygodny test integracji kodu przy użyciu HyperLogLog?
W pierwszej chwili pomyślałem, że właściwym sposobem napisania testu integracji, który jest niezawodny w tym przypadku, jest "zrzucenie naszych standardów". Jaka jest więc wystarczająca liczba elementów (M) do umieszczenia w punkcie końcowym, aby mieć pewność, że HyperLogLog oszacuje łączną liczbę elementów jako większą niż N, z prawdopodobieństwem, powiedzmy,> = 0,999999?
Czy istnieje lepsze podejście?
Standardowe granice błędu można konfigurować, ale nie określają one bezpośrednio maksymalnych granic błędu, które możemy prawdopodobnie zobaczyć raz na jakiś czas - na czym mi zależy, aby uniknąć losowych nieudanych kompilacji CI na podstawie wywołującej zmarnowany czas i ciągnięcie za włosy!
Obawiam się również, że sposób, w jaki generujemy losowe dane w testach, może nie generować równomiernie rozłożonych danych losowych w odpowiednich aspektach, co może mieć istotny wpływ na obliczenia prawdopodobieństwa.
Czy masz możliwość wstawienia "fałszywych przedmiotów" z "wiadrem" na wysokość "liczba" wiodących zer? –
@GregoryNisbet Nie sądzę, że istnieje metoda API, aby to zrobić. –