Testy wydajnościowe – Notatka z nauki

przez Karol Bocian | 11 kwietnia, 2021
Testy wydajnościowe: https://www.pexels.com/photo/anonymous-ethnic-tutor-helping-little-multiracial-students-with-task-in-classroom-5905492/

W pracy tworzę i utrzymuję oprogramowanie. Musi być ono również odpowiednio szybkie. Czasami przeprowadzam ręcznie testy wydajnościowe. Nie są one zautomatyzowane. W celu zwiększania mojej wiedzy na ten temat zapoznałem się z materiałem: Boiling Frogs 2020 – Sebastian Korczyk Testy Wydajnościowe – to proste (*).

W ramach rozwijania się oglądam i czytam różne materiały. Następnie wiedzę z nich umieszczam w Anki oraz w notatkach i uzupełniam własnymi przemyśleniami.

Notatka z materiału: Boiling Frogs 2020 – Sebastian Korczyk Testy Wydajnościowe – to proste (*)

Materiał: Boiling Frogs 2020 – Sebastian Korczyk Testy Wydajnościowe – to proste (*) opowiada o etapach testów wydajnościowych. Zanotowałem z tego materiału:

  • Idealny schemat testowania:
    • Plan testu
    • Ustawienie testu
    • Wykonanie testu
    • Analiza wyników i raport
  • Pomylenie się w założeniach w testach wydajnościowych sprawia, że testujemy nie to, co chcemy, dochodzimy do złych wniosków, robimy niepotrzebne testy.
  • Testy są proste, jeżeli:
    • Wiemy, co robimy i po co.
    • Środowisko testowe odzwierciedla dokładnie produkcyjne.
    • Zrobiliśmy to, co chcieliśmy zrobić.
  • Testy:
    • Stress test – puszczany jest coraz większy ruch – pozwala znaleźć punkt (Plate point), w którym w systemie pojawiają się problemy.
    • Soak Test – puszczany przez dłuższy czas (np. tydzień) z ruchem z punktu Plate. Pokazują np. memory leak, zapychanie kolejek, wycieki zasobów.
    • Normal Expected Utilisation – test z ruchem normalnym na produkcji (lub prognozowanym jako normalny).
    • Spike Test – test z pojedynczym dużym ruchem (np. wysyłanie smsa w Sylwestra).
    • Peak Load Test – duży większy ruch przez jakiś czas (np. zakończenie miesiąca księgowego).
  • Środowisko:
    • Maszyna z testem musi być tak samo obciążona jak produkcyjna i mieć taką samą konfigurację (infrastruktura i hardware, włączone zabezpieczenia, wersje oprogramowania).
    • Dane, uprawnienia i procesy w środowisku testowym powinny być takie same jak na produkcji (np. liczba wierszy w bazie danych).
  • Nie testujmy sieci, lecz nasze oprogramowanie.
  • System i sieć “rozgrzewają się”.
  • Zwróć uwagę na to, czy nie działają inne procesy (usuwane logów, antywirus).
  • Loguj tyle samo, co na produkcji. Testuj identyczną konfigurację z produkcyjną.
  • Przygotuj checklistę, co należy zrobić przed testem oraz prowadź dziennik testów.
  • Zbieraj różne wartości i miary. Bierz pod uwagę też percentyle.
  • Zawsze staraj się minimalizować RTT (ang. Round Trip Time) – czas od wysłania zapytania do uzyskania odpowiedzi.
  • Badaj, czy nie masz Memory Leak’a.
  • Waliduj odpowiedzi, bo przy dużym ruchu, możesz dostawać z serwera szybko odpowiedź, ale o błędzie na serwerze!!!
  • CPU często jest oczekujące, a nie pracujące, więc warto też patrzeć na loadavg (zwane inaczej saturacją CPU).
  • Używaj do mierzenia czasu pojedynczych metod specjalnych bibliotek, a nie tylko liczenia czasu.
  • Po każdej zmianie należy zmierzyć wyniki, aby wiedzieć dokładnie, co wpłynęło na zmianę wyników.
  • Zwróć uwagę na błędy ludzkie:
    • Złe ustawienie testów.
    • Błędy poznawcze.
    • Pewność siebie.

Wszystkie posty związane z notatkami z nauki:

Źródła

Obraz główny

Materiał Boiling Frogs 2020 – Sebastian Korczyk Testy Wydajnościowe – to proste (*)

Kategoria: Notatki z nauki

O Karol Bocian

Programowanie i świat agentów programowalnych, który poznał na Wydziale Matematyki i Nauk Informacyjnych, wciągnął go w przemysł IT. W trakcie swojej praktyki zawodowej Karol zrozumiał, że nie ważne co się robi i kim się jest, ale wiedza z zarządzania przydaje się wszędzie. Rozpoczął studia na kierunku Zarządzanie i Inżyniera Produkcji. W przypadku Karola zarządzanie to nie tylko teoria czy praca, ale prawie każdy element jego życia, to jego pasja.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *