Uruchamianie scenariusza testowego

Aby rozpocząć proces tworzenia scenariusza w pierwszej kolejności należy przejść do zakładki Test Suite.
../_images/TestSuitePage.png

Wybór testów

Następnie spośród dostępnej po lewej stronie listy testów należy wybrać te, które chcemy uruchomić w tym scenariuszu. Testy zostały podzielone na 4 kategorie:

Favorites

Node

Network

Services

Favorites

Node

Network

Services

W kategorii Favorites znajduje się lista najczęściej dodawanych przez użytkownika testów do scenariuszy testowych. W pozostałych kategoriach znajdują się wszystkie testy dostępne w systemie.
Opisy poszczególnych testów można znaleźć w zakładce Opis testów.

Dodanie testów do scenariusza

Aby dodać pierwszy test do naszego scenariusza należy przeciągnąć odpowiedni bloczek do miejsca oznaczonego przerywaną kreską. Po dodaniu bloczka zostanie utworzony pierwszy krok Step 1.
../_images/TestSuiteOneBlock.png
Aby dodać kolejny bloczek do naszego scenariusza musimy zastanowić się czy chcemy, aby ten bloczek wykonywał się bezpośrednio po zakończeniu testu z kroku 1, czy aby te bloczki wykonywały się równolegle ze sobą. Aby obydwa bloczki wykonywały się równocześnie, należy kolejny bloczek dodać do pola oznaczonego nagłówkiem Step 1.
../_images/TestSuiteTwoBlocksParallel.png
Jeśli nowy bloczek ma wykonywać się po zakończeniu poprzedniego, należy przeciągnąć go do pola oznaczonego za krokiem 1 - w ten sposób do scenariusza automatycznie doda się nowy krok 2.
../_images/TestSuiteTwoBlocksSequential.png
Następnie należy dodać pozostałe bloczki w taki sposób, aby ułożyć je w sekwencji, według której chcemy, żeby się wykonywały. Każdy typ testu może zostać dodany do scenariusza wielokrotnie poprzez przeciągnięcie wiele razy tego samego bloczka z listy testów do naszego scenariusza testów. Każdy bloczek testowy jest osobno konfigurowalny. Dzięki temu możemy np. uruchomić test Ping dla wielu adresów docelowych.
../_images/TestSuiteManyBlocksOneTest.png
W poniższym przykładzie najpierw wykonany zostanie pierwszy krok, w którym zostaną wykonane jednocześnie testy Ping oraz RAM Info. Po ich zakończeniu zostanie wykonany test OTT, a następnie jednocześnie testy DNS oraz HAR. Po zakończeniu działania tych testów zakończy się jeden cykl scenariusza.
../_images/TestSuiteTestSuite.png
Istnieje również alternatywny sposób dodawania bloczków do scenariusza. Można to zrobić przez podwójne kliknięcie bloczka znajdującego się na liście testów po lewej stronie. Utworzy się wtedy nowy krok na końcu listy kroków i do niego zostanie dołączony wybrany bloczek testowy.

Wybranie trybu uruchamiania scenariusza

Aby scenariusz wykonywał się cyklicznie co jakiś czas, należy kliknąć na trójkąt znajdujący się obok przycisku Start. Powinien otworzyć się wtedy panel konfiguracji uruchomienia scenariusza. Jeśli chcemy uruchamiać scenariusz cyklicznie należy kliknąć na suwak Monitoring Mode, wybrać datę rozpoczęcia oraz zakończenia działania scenariusza testowego oraz wybrać co jaki czas scenariusz ma się uruchamiać na nowo.
../_images/TestSuiteRunMode.png

Ustawienie nazwy i globalnych lokalizacji scenariusza

Kolejny krokiem konfiguracji scenariusza jest ustawienie jego nazwy i globalnych lokalizacji. Możemy to ustawić w panelu Settings, który znajduje się powyżej konfiguracji kroków scenariusza.
Do listy globalnych oraz lokalnych lokalizacji (o których mowa w kolejnym kroku) należą zarówno lokalizacje chmurowe jak i urządzenia z zainstalowanym oprogramowaniem test agenta.
Ustawienie globalnej listy lokalizacji może służyć w przypadku gdy chcemy, aby większość albo wszystkie bloczki testowe były wykonywane na tych samych lokalizacjach. Wystarczy wypełnić tą listę i zostanie ona automatycznie przekazana do wszystkich bloczków testowych ustawionych w scenariuszu. Jeśli chcemy jakiś konkretny bloczek uruchamiać w innej lokalizacji niż te z globalnej listy należy ustawić je w konfiguracji bloczka. Szczegóły znajdują się w dalszej części instrukcji.
../_images/TestSuiteSettings.png

Ustawienia zaawansowane

Poniżej opisanych do tej pory ustawień scenariusza znajduje się panel ustawień zaawansowanych Advanced Settings. Aby rozwinąć komponent zaawansowanych ustawień scenariusza należy kliknąć na ikonkę plusa po prawej strony od nazwy komponentu Advanced Settings. Po rozwinięciu komponentu na ekranie pokażą się dodatkowe opcje dostępne w konfiguracji scenariusza testowego. Żadna z opcji nie jest wymagana do uruchomienia scenariusza.
../_images/TestSuiteAdvancedSettings.png

Ustawienie lokalnych opcji powiadomień

Lokalne opcje powiadomień służą do tego, aby ustalić jakiego typu powiadomienia chcemy otrzymywać z tego scenariusza dla każdego ze skonfigurowanych w systemie punktów dostarczania powiadomień. Do wyboru są:
  • Task started - powiadomienia przychodzące na start działania pojedynczego testu,

  • Task succeeded - powiadomienia przychodzące na koniec działania pojedynczego testu,

  • Task failed - powiadomienia przychodzące w sytuacji, kiedy test nie wykona się poprawnie,

  • Threshold exceeded - powiadomienia przychodzące po przekroczeniu progu alarmowego,

  • Test Suite started - powiadomienia przychodzące na uruchomienie działania całego scenariusza,

  • Test Suite finished - powiadomienia przychodzące na zakończenie działania całego scenariusza.

Domyślnie włączone są opcje powiadomień ustawione w panelu Notifications Configuration.
Konfiguracja listy punktów dostarczania powiadomień dostępna jest również w panelu Notifications Configuration.
../_images/TestSuiteNotifications.png

Ustawienie limitu priorytetu

Limit priorytetu służy do określania, czy powiadomienie o przekroczeniu progu alarmowego dla scenariusza powinno zostać wygenerowane, czy nie. Ustawienie limitu priorytetu jest śliśle związane z ustawieniem priorytetów w konfiguracji bloczków. Aby nie przeciążać systemu zbędnymi powiadomieniami możliwe jest wysłanie jednego powiadomienia o przekroczeniu progu dla jednego wykonania cyklu scenariusza.
Takie powiadomienie zostanie wygenerowane dla bloczka z najwyższym priorytetem, wśród których próg alarmowy został przekroczony, z zastrzeżeniem, że priorytet takiego bloczka musi być wyższy od limitu priorytetu ustawionego w panelu zaawansowanej konfiguracji scenariusza. Jeśli priorytet będzie niższy, takie powiadomienie nie zostanie wygenerowane. Jeśli priorytety z kilku bloczków są równe i wyższe od limitu priorytetu, powiadomienie zostanie wygenerowane dla pierwszego bloczka z listy.
Ustawienie limitu priorytetu nie ma znaczenia w przypadku, gdy użytkownik ustawi progi alarmowe obejmujące cały scenariusz (znajdujące się tym samym panelu, co ustawienie limitu priorytetu). W takim przypadku powiadomienie dotyczące przekroczenia progu zostanie wygenerowane lub nie tylko w oparciu o konfigurację progów dla całego scenariusza.
Aby lepiej zobrazować funkcjonowanie agregacji powiadomień o przekroczeniu progu, poniżej znajduje się kilka przykładów.
../_images/TestSuitePriorityLimit.png

Przykład nr 1:

  • Limit priorytetu: 20

  • Priorytet bloczka nr 1: 30

  • Priorytet bloczka nr 2: 40

  • Próg alarmowy został przekroczony dla bloczków nr 1 i 2

Wynik: Zostanie wygenerowane jedno powiadomienie z przekroczeniem progu w bloczku nr 2.

Przykład nr 2:

  • Limit priorytetu: 20

  • Priorytet bloczka nr 1: 30

  • Priorytet bloczka nr 2: 40

  • Próg alarmowy został przekroczony dla bloczka nr 1

Wynik: Zostanie wygenerowane jedno powiadomienie z przekroczeniem progu w bloczku nr 1.

Przykład nr 3:

  • Limit priorytetu: 20

  • Priorytet bloczka nr 1: 10

  • Priorytet bloczka nr 2: 30

  • Próg alarmowy został przekroczony dla bloczka nr 1

Wynik: Powiadomienie o przekroczeniu progu alarmowego nie zostanie wygenerowane.

Przykład nr 4:

  • Limit priorytetu: 20

  • Priorytet bloczka nr 1: 30

  • Priorytet bloczka nr 2: 30

  • Próg alarmowy został przekroczony dla bloczka nr 1 i 2

Wynik: Zostanie wygenerowane jedno powiadomienie z przekroczeniem progu w bloczku nr 1.

Ustawienie progów alarmowych dla całego scenariusza

W tym komponencie istnieje również możliwość ustawienia konfiguracji progów alarmowych dla całego scenariusza. W tym celu w pierwszej kolejności należy zaznaczyć pole Enable Test Suite Thresholds, a następnie w poniższym edytorze wpisać pożądaną konfigurację progów alarmowych dla tego scenariusza. Konfiguracja musi być zgodna z językiem Python.
../_images/TestSuiteThresholds.png
Struktura danych, która może być przydatna w analizie wyników pod kątem ustawienia progu alarmowego:
{
   "data": {
      <stage_id: int>: {
         <test_block_name: str>: [
            {
               "priority": <int>,
               "test_agent": <str>,
               "threshold_exceeded": <bool>,
               "result": {<test specific results>}
            }, ... <- repeats for every task run
         ]
      },
      ...
   }
}
Przykład struktury wyników:
{
   "data": {
      "1": {
         "Ping1": [
            {
               "priority": 0,
               "result": {
                  "list": [
                     {
                        "rtt": 7.17,
                        "sequence": 1,
                        "succeeded": true
                     }
                  ],
                  "max_rtt": 7.17,
                  "mean_rtt": 7.17,
                  "min_rtt": 7.17,
                  "succeeded_count": 1
               },
               "test_agent": "europe-west1-c-2b2adae0-3551-432d-88ee-0679d4eadc73",
               "threshold_exceeded": null
            }
         ],
      },
      "2": {
         "DNS1": [
            {
               "priority": 0,
               "result": [
                  {
                     "domain": "google.com",
                     "result": [
                        "173.194.76.138",
                        "173.194.76.101",
                        "173.194.76.113",
                        "173.194.76.102",
                        "173.194.76.139",
                        "173.194.76.100"
                     ],
                     "succeeded": true,
                     "time_ms": 3.684520721435547
                  }
               ],
               "test_agent": "europe-west1-c-2b2adae0-3551-432d-88ee-0679d4eadc73",
               "threshold_exceeded": null
            }
         ],
         "Traceroute1": [
            {
               "priority": 0,
               "result": [
                  {
                     "address": "8.8.8.8",
                     "hops": [],
                     "succeeded": true
                  }
               ],
               "test_agent": "europe-west1-c-2b2adae0-3551-432d-88ee-0679d4eadc73",
               "threshold_exceeded": null
            }
         ]
      }
   }
}
Podany powyżej przykład wyników został wygenerowany dla jednokrotnego wykonania scenariusza posiadającego 2 kroki. W pierwszym kroku wykonał się test Ping, a w drugim test DNS oraz Traceroute. Na podstawie takich wyników można opracować kod python, który będzie służył określaniu, kiedy próg alarmowy dla tego scenariusza ma zostać uznany za przekroczony.
Należy pamiętać o zainicjowaniu w kodzie zmiennej o nazwie exceeded, która powinna przyjmować wartość True lub False. Na podstawie tej zmiennej system ustala, czy próg alarmowy dla danego scenariusza testowego został przekroczony, czy nie. Brak inicjalizacji tej zmiennej, błąd w kodzie Python, czy inne niedozwolone operacje spowodują, że progi alarmowe będą traktowane jak nieustawione.
W poniższym przykładzie konfiguracji próg alarmowy zostanie przekroczony jeśli w ostatnim wykonanym tasku na bloczku testowym o nazwie Ping1 średnia pomiaru rtt z listy wyników jest wyższa od 20 lub odchylenie standardowe listy wyników rtt jest mniejsze od 1/10 wspomnianej średniej.
Przykład konfiguracji progów alarmowych dla całego scenariusza testowego:
exceeded = False
for ta, ta_data in data.items():

   rtts = [row['rtt'] for row in ta_data['Ping1'][-1]['result']['list']]
   rtts_mean = statistics.mean(rtts)
   rtts_std = statistics.stdev(rtts)

   ta_exceeded = rtts_mean > 20 or rtts_std < 0.1 * rtts_mean
   exceeded |= ta_exceeded

Konfiguracja połączenia z rdzeniem 5G

Jedną z opcji uruchamiania testów w ramach scenariusza testowego jest uruchomienie ich przez skonfigurowaną przez użytkownika sieć 5G. To może pozwolić nam diagnozować naszą własną sieć 5G - jej dostępność, szybkość oraz stabilność. Jeśli poprawnie połączymy się z rdzeniem sieci 5G możemy wykonywać z jego uwzględnieniem testy dostępne w systemie. Aby zainicjować połączenie test agenta z rdzeniem 5G należy uzupełnić jego konfigurację. W obecnej wersji należy podać takie parametry jak:
  • MME Address - adres modułu MME będącego częścią rdzenia 5G,

  • IMSI - akceptowalny przez sieć 5G numer IMSI,

  • OPC - akceptowalny przez sieć 5G klucz operatora,

  • Key - akceptowalny przez sieć 5G klucz abonenta.

W obecnej wersji dostępne są tylko te parametry. Pozostałe możliwości konfiguracyjne prawdopodobnie będą dodane w kolejnych wersjach tego systemu.
../_images/TestSuite5G.png
Należy również pamiętać, że aby uruchomić poszczególne testy z udziałem sieci 5G należy w konfiguracji odpowiednich bloczków testowych zaznaczyć flagę 5G enabled. Szczegóły tego parametru znajdują się w rozdziale dotyczącym konfiguracji parametrów bloczka testowego (Konfiguracja parametrów testu).

Konfiguracja bloczka testowego

W ostatnim etapie konfiguracji scenariusza należy ustawić konfigurację każdego z dodanych bloczków testowych. Aby to zrobić należy kliknąć w bloczek testowy, a na dole strony powinien pojawić się panel Test Block Configuration, do którego należą ustawienia:
  • parametrów uruchomienia testu (zakładka Test Parameters),

  • progów alarmowych (zakładka Thresholds).

../_images/TestSuiteBlockConfiguration.png

Konfiguracja parametrów testu

W zakładce Test Parameters znajduje się lista parametrów uruchomieniowych dla wybranego bloczka testowego. Wśród nich są:
  • Task name - nazwa bloczka testowego (pole wymagane),

  • Override Locations - zaznaczenie tego pola oznacza odblokowanie możliwości podania lokalnych lokalizacji. Odznaczenie tej opcji oznacza powrót do listy globalnych lokalizacji dla tego bloczka,

  • Select a Location - jeśli chcemy aby dany bloczek wykonywał testy w innych lokalizacjach niż podane w panelu Settings należy zaznaczyć pole Override Locations oraz wybrać lokalizacje, na których mają być uruchamiane testy z tego bloczka. Pole nie może być puste,

  • Notifications Priority - priorytet powiadomień, jeśli wartość będzie mniejsza niż Priority Limit dla całego scenariusza nie będą generowane powiadomienia o przekroczeniu progu alarmowego, dokładny opis zależności z limitem priorytetu znajdziemy w zakładce Ustawienie limitu priorytetu (pole jest opcjonalne),

  • 5G enabled - flaga oznaczająca, czy dany test ma być przeprowadzony przez skonfigurowany w komponencie Advanced Settings rdzeń sieci 5G (pole jest dostępne tylko dla włączonej dla tego scenariusza konfiguracji połączenia z rdzeniem 5G w komponencie Advanced Settings oraz tylko dla testów: Ping, DNS, Traceroute, Pathping, RFC6349, TWAMP, iperf),

  • pozostałe opcje dostosowane do typu testu (pola wymagane są oznaczone gwiazdką).

Aby scenariusz został poprawnie uruchomiony wszystkie wymagane pola (oznaczone gwiazdką) we wszystkich bloczkach testowych dodanych do scenariusza muszą być wypełnione.
../_images/TestSuiteBlockParameters.png

Konfiguracja progów alarmowych

W drugiej zakładce o nazwie Thresholds możliwe jest ustawienie progów alarmowych dla wybranego przez użytkownika bloczka. Po ustawieniu ich, w rezultatach testów będziemy mogli znaleźć informację o przekroczeniu lub nie zadeklarowanego progu.
Ustawienie progów możliwe jest na dwa sposoby:
  • standardowa konfiguracja (za pomocą klikalnego komponentu lub obiektów zgodnych z formatem JSON, dostępna tylko dla niektórych testów),

  • zaawansowana konfiguracja (za pomocą kodu napisanego w języku Python).

W przypadku wybrania Standard Configuration mamy możliwość skorzystania z komponentu, w którym można w łatwy i przejrzysty sposób wyklikać konfigurację lub możemy skorzystać z edytora tworzenia obiektów w jezyku JSON.
Jeśli chodzi o pierwszą możliwość to są tutaj do wyboru dwa tryby budowania konfiguracji progów:
  • Single Threshold - umożliwia proste wybranie jednego progu alarmowego,

../_images/TestSuiteBlockThresholdsStandardSingle.png
  • Thresholds Tree - umożliwia stworzenie dowolnego drzewka złożonego z wielu progów alarmowych za pomocą grup i ról połączonych łącznikiem or lub and.

../_images/TestSuiteBlockThresholdsStandardTree.png
Taką konfigurację można w łatwy sposób przekonwertować na język JSON - aby to zrobić należy kliknąć na switch JSON Editor znajdujący się po prawej stronie tego komponentu. W edytorze obiektu JSON można również wprowadzać zmiany, ale należy pamiętać o zachowaniu poprawnej struktury wiadomości. Konstrukcja wiadomości w tym przypadku powinna zawierać podane pola:
  • type – typ informacji, dozwolone pola: threshold i operator,

  • threshold_type (tylko dla typu threshold) – informacja o tym, czy próg został przekroczony powyżej, czy poniżej danej wartości, możliwe typy progów:
    • gte – próg zostanie przekroczony jeśli wartość parametru będzie większa lub równa niż wartość zadeklarowana,

    • gt - próg zostanie przekroczony jeśli wartość parametru będzie większa niż wartość zadeklarowana,

    • lte – próg zostanie przekroczony jeśli wartość parametru będzie mniejsza lub równa niż wartość zadeklarowana,

    • lt - próg zostanie przekroczony jeśli wartość parametru będzie mniejsza niż wartość zadeklarowana,

  • value (tylko dla typu threshold) – wartość progu alarmowego,

  • variable (tylko dla typu threshold) – nazwa mierzonego parametru testu, do którego ma być przypisany próg alarmowy, lista i opis dostępnych parametrów znajduje się w polu Possible threshold variables znajdującym się bezpośrednio nad wiadomością. Pogrubioną czcionką zostały wymienione nazwy parametrów, które możemy wpisać w pole variable, a zwykłą czcionką ich krótkie opisy,

  • operator_type (tylko dla typu operator) – łącznik między thresholdami, możliwe wartości „and” lub „or”,

  • thresholds (tylko dla typu operator) - lista thresholdów wg powyższego opisu.

Dzięki takiej konstrukcji wiadomości możemy łączyć ze sobą w dowolnej konfiguracji wiele progów alarmowych.
../_images/TestSuiteBlockThresholdsStandardJSON.png
Przykład nr 1 dla testu Ping. System odnotuje przekroczenie progu alarmowego, gdy podczas trwania testu odczyt pomiaru RTT przekroczy wartość 200.
{
   "type": "threshold",
   "threshold_type": "gt",
   "value": 200,
   "variable": "max_rtt"
}
Przykład nr 2 dla testu Ping. System odnotuje przekroczenie progu alarmowego, gdy podczas trwania testu odczyt pomiaru RTT przekroczy wartość 200 lub jeśli jednocześnie maksymalny odczyt pomiaru wyniesie ponad 150, a średni pomiar wyniesie co najmniej 100.
{
   "type": "operator",
   "operator_type": "or",
   "thresholds": [
      {
         "type": "operator",
         "operator_type": "and",
         "thresholds": [
            {
               "type": "threshold",
               "threshold_type": "gt",
               "value": 150,
               "variable": "max_rtt"
            },
            {
               "type": "threshold",
               "threshold_type": "gte",
               "value": 100,
               "variable": "mean_rtt"
            }
         ]
      },{
         "type": "threshold",
         "threshold_type": "gt",
         "value": 200,
         "variable": "max_rtt"
      }
   ]
}
W przypadku wybrania trybu Advanced Configuration istnieje pełna dowolność w konfiguracji progów alarmowych. Jedynym ograniczeniem jest to, że kod konfiguracji musi być napisany w języku Python. Brak jakichkolwiek innych ograniczeń mocno wpływa na uniwersalność tego rozwiązania.
../_images/TestSuiteBlockThresholdsAdvanced.png
Struktura danych, która może być przydatna w analizie wyników pod kątem ustawienia progu alarmowego:
{
   "data": {
      "results": [
         {
            "priority": <int>,
            "test_agent": <str>,
            "threshold_exceeded": <bool>,
            "result": {<test specific results>}
         }, ... <- repeats for every task run
      ]
   }
}
Przykład struktury wyników:
{
   "data": {
      "results": [
         {
            "test_agent": "europe-west2-b-e50f0d29-b430-49dc-a57b-2576f0b4a2e6",
            "priority": 0,
            "result": {
               "min_rtt": 2.09,
               "max_rtt": 2.09,
               "mean_rtt": 2.09,
               "list": [
                  {
                     "rtt": 2.09,
                     "sequence": 1,
                     "succeeded": true
                  }
               ],
               "succeeded_count": 1
            },
            "threshold_exceeded": null
         }
      ]
   }
}
Podany powyżej przykład wyników został wygenerowany dla jednokrotnego wykonania testu Ping. Na podstawie takich wyników można opracować kod python, który będzie służył określaniu, kiedy próg alarmowy dla tego bloczka testowego ma zostać uznany za przekroczony.
Należy pamiętać o zainicjowaniu w kodzie zmiennej o nazwie exceeded, która powinna przyjmować wartość True lub False. Na podstawie tej zmiennej system ustala, czy próg alarmowy dla danego bloczka testowego został przekroczony, czy nie. Brak inicjalizacji tej zmiennej, błąd w kodzie Python, czy inne niedozwolone operacje spowodują, że progi alarmowe będą traktowane jak nieustawione.
W poniższym przykładzie konfiguracji próg alarmowy zostanie przekroczony jeśli ilość udanych połączeń wykonanych w ramach pojedynczego taska testu Ping jest równa ilości połączeń wykonanych w ramach tego taska.
Przykład konfiguracji progów alarmowych dla bloczka testowego:
if not data['results'][-1]['result'][-1]['succeeded_count'] == len(data['results'][-1]['result'][-1]['list']):
   exceeded = True
else:
   exceeded = False

Uruchomienie scenariusza testowego

Po zakończonej konfiguracji scenariusza testowego należy kliknąć na przycisk Start, aby uruchomić ten scenariusz. W tym momencie aplikacja powinna automatycznie przejść do strony ze szczegółami scenariusza testowego, na którym pojawią się również wyniki testów, które zostały wykonane w ramach tego scenariusza.
../_images/TestSuite.png

Błędy w konfiguracji scenariusza

Jeśli nie dodamy żadnego bloczka testowego do scenariusza przycisk Start będzie nieaktywny. Przycisk aktywuje się po dodaniu co najmniej jednego bloczka do konfiguracji scenariusza. W przypadku nie uzupełnionych wymaganych pól lub błędnie wypełnionych po wciśnięciu przycisku Start zostanie wyświetlony odpowiedni komunikat o tym, gdzie został popełniony błąd w konfiguracji, a odpowiednie pole zostanie podświetlone na czerwono.
../_images/TestSuiteRunFail.png