Notatka z nauki: darmowych materiałów SmartTesting.pl

przez Karol Bocian | 27 listopada, 2020

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

Zebrałem tutaj notatki z kilku filmów.

Testowanie ASERCJE [SmartTesting.pl, Tydzień 01, Lekcja 10] (DEMO 1/4)

  • Możemy stworzyć obiektassert – klasę, w której ukryte są szczegółowe asercje.
    • Klasa chowa w metodach zaawansowane asercje z ładnymi nazwami, np. CorrectOrderForWorker.
    • Metoda z asercją zwraca ten sam obiekt, aby robić łańcuch metod z asercjami, np. Order.IsStudent().IsCorrectOrder().

Testowanie Na Produkcji [SmartTesting.pl, Tydzień 07, Lekcja 05] DEMO 3/4

  • Zawsze należy przeklikać aplikacje po wdrożeniu. Najlepiej mieć na to testy automatyczne.
  • Wdrożenie kanarkowe – wdrożenie małej zmiany dla małej części ruchu i części serwerów. Pozwala uniknąć błędów i awarii na szerszą skalę.
    • Należy oznaczyć specjalnie logi pochodzące ze wdrożenia kanarkowego, aby łatwiej diagnozować problem.
    • Wymagana jest wsteczna kompatybilność z bazą danych.
    • Wymagane jest zaimplementowanie automatycznych rollbacków.
  • Testy A/B – sprawdzenie faktycznych upodobań użytkowników (o testach A/B pisałem tutaj: https://karolbocian.pl/blog/2020/11/24/testy-a-b-od-klikniecia-do-klienta-dan-siroker-i-pete-koomen/).
    • Część użytkowników widzi opcję A, a druga B w tym samym czasie. Grupy użytkowników są dobierane losowo.
    • Sprawdzamy, która opcja jest lepsza (np. czerwony, czy zielony przycisk sprzedażowy). Test wygrywa opcja, która została częściej wybrana przez użytkowników.
  • Wgranie wydania z feature toogle.
    • Możemy włączyć / wyłączyć później daną funkcjonalność.
    • Możemy włączyć funkcjonalność najpierw dla testerów, a gdy działa, to pozostałym użytkownikom lub grupie użytkowników.

Chaos Testing [SmartTesting.pl, Tydzień 05, Lekcja 04] DEMO 4/4

  • Pozwala znaleźć losowe i nieznane błędy.
  • Inżynieria chaosu – zestaw praktyk polegający wykonywaniu kontrolowanych eksperymentów w celu naprawienia błędów i zapewnienia poprawnego funkcjonowania na produkcji pomimo pojawienia się błędów. Pozwala znaleźć dowody istnienia słabych punktów.
  • Proces inżynierii chaosu (podejście eksperymentalnego):
    • Postawienie hipotezy.
    • Wykonanie eksperymentu i dokładne obserwowanie systemu (logi, metryki).
    • Analiza wyników eksperymentu i ocena skutków.
    • Wprowadzenie usprawnień, jeżeli błąd wpłynął negatywnie na system i jest istotny.

Testowanie integracyjne baz danych [SmartTesting.pl, Tydzień 03, Lekcja 05] (DEMO 2/4)

  • Problemy w testowaniu baz danych:
    • Współdzielona baza danych będzie miała zmieniane dane przez testy w tym samym czasie.
    • Często wymagane jest zachowania kolejności wykonania testów.
    • Długi czas działania testów.
  • Rodzaje integracji z bazą danych w testach:
    • Zaślepka – mockujemy klasę odpowiedzialną za dostęp do bazy danych.
    • Baza danych w  pamięci.
    • Embedded – uruchamiana razem z aplikacją, może korzystać z innego dialektu SQL, testowanej takiej bazy nie testuje naszej bazy danych, nie daje pewności, że nasze rozwiązanie zadziała w prawdziwej aplikacji.
    • Kontener – (kontener – spakowany kod i zależności). np, Docker – baza danych w kontenerze do każdego testu jest nowa / czysta.
    • Sandboxy (dane przypominające produkcyjne dane) -prawdziwa baza danych. Problemy: równoległe testy nadpisują dane, niektóre testy muszą uruchamiać się w odpowiedniej kolejności, czasochłonne.

PO CO i JAK testować? SmartTesting LIVE!

  • Po co pisać testy (przez programistów):
    • Żywa dokumentacji projektu.
    • Tworzymy lepszą architekturę i lepsze interfejsy.
    • Zapewnianie, że raz naprawione bugi nie pojawiają się później.
    • Mniej błędów na produkcji.
    • Szybsze naprawienie błędów – już na etapie implementacji, przed wdrożeniem na produkcję lub oddaniu testerom.
    • Częste sprawdzanie aplikacji – testy automatyczne.
    • Lepsze zrozumienie feature’a, gdy pracujemy w TDD.
  • Testy kosztują:
    • Czas stworzenia.
    • Koszty naprawiania.
    • Koszty uruchamiania.
    • Zatem należy nie przesadzać z liczbą testów.
  • Jak testować?
    • Testować zachowania, a nie implementację.
    • Nie używać statycznych metod, lecz robić własne klasy, które potem można mockować.

Wszystkie posty związane z notatkami z nauki:

Źródła

Obraz główny

Materiał

  • materiały udostępnione w ramach marketingu i sprzedaży: https://smarttesting.pl/. Są dostępne po zapisie się na newsletter, więc nie mogę podać linków do nich.
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.