Zalecenia dotyczące projektowania strategii testowania niezawodności

Dotyczy tej rekomendacji listy kontrolnej niezawodności dobrze zaprojektowanej Power Platform:

RE:06 Testuj scenariusze odporności i dostępności, stosując zasady inżynierii chaosu w swoich środowiskach testowych i produkcyjnych. Wykorzystaj testy, aby upewnić się, że strategie wdrażania mechanizmów łagodnego ograniczania funkcjonalności są skuteczne, przeprowadzając testy aktywnych awarii i symulacyjne testy obciążeniowe.

W tym przewodniku opisano zalecenia dotyczące projektowania strategii testowania niezawodności służącej do sprawdzania poprawności i optymalizacji niezawodności prac. Testy niezawodności koncentrują się na odporności i dostępności Twojego obciążenia, w szczególności na krytycznych przepływach, które identyfikujesz podczas projektowania rozwiązania. Ten przewodnik zawiera ogólne wskazówki dotyczące testowania oraz wskazówki specyficzne dla wstrzykiwania błędów i inżynierii chaosu.

Definicje

Termin Definicja
Dostępność Czas, przez który obciążenie aplikacji działa w prawidłowym stanie bez znaczących przestojów.
Inżynieria chaosu Praktyka polegająca na poddawaniu aplikacji i usług rzeczywistym obciążeniom i awariom. Celem inżynierii chaosu jest budowanie i weryfikowanie odporności na zawodne warunki oraz brakujące zależności.
Wstrzykiwanie błędów Czynność polegająca na wprowadzeniu błędu do systemu w celu przetestowania odporności systemu.
Odzyskiwalność Synonim odporności.
Odporność Zdolność obciążenia roboczego aplikacji do wytrzymywania awarii i odzyskiwania sprawności po nich.

Kluczowe strategie projektowania

Testowanie jest niezbędne, aby upewnić się, że obciążenie robocze spełnia założone cele niezawodności i potrafi bez zakłóceń radzić sobie z awariami. Wstrzykiwanie błędów to rodzaj testowania, który polega na celowym wprowadzaniu do systemu błędów lub obciążeń, aby symulować rzeczywiste scenariusze. Korzystając z technik wstrzykiwania błędów i inżynierii chaosu, możesz proaktywnie wykrywać i naprawiać problemy, zanim wpłyną one na środowisko produkcyjne. Ta sekcja zawiera ogólne wskazówki dotyczące testowania, wstrzykiwania błędów i inżynierii chaosu dla Twojego obciążenia roboczego.

Ogólne wskazówki dotyczące testowania

Regularnie przeprowadzaj testy w celu sprawdzenia poprawności istniejących progów, celów i założenia. Jeśli w obciążeniach wystąpi duża zmiana, należy regularnie testować. Większość testów przeprowadzaj w środowiskach testowych i przejściowych. Warto również uruchomić podzbiór testów na systemie produkcyjnym.

Zautomatyzowanie testowania pozwala zagwarantować spójne zakres testów i powtarzalność. Zautomatyzuj typowe zadania testowe i zintegruj je z procesami tworzenia. Ręczne testowanie oprogramowania jest żmudne i podatne na błędy, ale można przeprowadzać ręczne testy eksploracyjne. W przypadku spraw, w których należy opracować zautomatyzowane testy, należy użyć testowania ręcznego w celu określenia zakresu testów, które mają na celu opracowanie.

Zastosuj podejście shift-left do testowania, aby przeprowadzać testy odporności i dostępności na wczesnym etapie cyklu rozwoju.

Zaadaptuj prosty format dokumentacji, tak aby każdy mógł zrozumieć proces i wyniki zwykłych testów.

Można udostępnić udokumentowane wyniki odpowiednim zespołom, zespołom operacyjnym, kierownictwu technologii, interesariuszom biznesowym i interesariuszom ds. odzyskiwania danych. W wyniku tych wyników należy poinformować o precyzacjach celów niezawodności, takich jak cele dotyczące poziomu usług (SLO), umowy dotyczące poziomu usług (SLA), cele dotyczące czasu naprawy (RTO) oraz cele punktów naprawy (RPO).

Ustal regularny harmonogram testów kopii zapasowych. Przywróć dane w izolowanych systemach, aby upewnić się, że kopie zapasowe są prawidłowe i że przywracania są funkcjonalne.

Należy dokumentować metryki czasu odzyskiwania danych i udostępniać je interesariuszom odzyskiwania danych, aby upewnić się, że są odpowiednie oczekiwania dotyczące odzyskiwania danych.

Stosuj standardowe w branży procedury testowania wdrożeń, aby zapewnić zautomatyzowany, przewidywalny i wydajny proces wdrażania.

Przetestuj zdolność obciążenia do wytrzymywania przejściowych awarii. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące obsługi błędów przejściowych.

Przetestuj, jak obciążenie radzi sobie z awariami usług zależnych lub innymi awariami zależności, stosując wstrzykiwanie błędów.

Przetestuj plan odzyskiwania danych w celu reagowania na awarie i inne duże zdarzenia.

Przetestuj zdolność obciążenia do stopniowej degradacji i ogranicz skutki awarii komponentu za pomocą wstrzykiwania błędów.

Korzyści z planowanych i nieplanowanych przestojów

Gdy obciążenie jest niedostępne z powodu planowanej konserwacji lub nieplanowanego przestoju, masz wyjątkową okazję przeprowadzić testy i lepiej zrozumieć swoje obciążenie. W poniższych sekcjach przedstawiono zalecenia dla każdego scenariusza.

Planowane prace konserwacyjne

Jeśli zaplanowano okna serwisowe dla aktualizacji lub poprawek, można przetestować komponenty i przepływy nieobjęte pracami serwisowymi. Wykonuj testy bez ryzyka nieoczekiwanego pogorszenia działania obciążenia roboczego lub całkowitego wyłączenia go. Jeśli w okresie konserwacji jest wystarczająca ilość czasu, można również przetestować składniki i przepływy związane z konserwacją po zakończeniu prac konserwacyjnych.

Nieplanowany przestój

Wykorzystaj każdy incydent awarii jako okazję, by lepiej poznać swoje obciążenie i zwiększyć jego odporność, postępując zgodnie z poniższymi krokami uszeregowanymi według priorytetu:

  1. Przywróć obciążenie do trybu online dla użytkowników. Może być konieczne obejście problemu, rozwiązanie problemu lub zainicjowanie procesów odzyskiwania.

  2. Należy określić główną przyczynę awarii i rozwiązać ją. Jeśli możesz usunąć główną przyczynę w ramach dochodzenia, udokumentuj główną przyczynę oraz działania podjęte w celu jej usunięcia. Jeśli rozwiązanie problemu będzie wymagało zorganizowania kolejnego okna serwisowego w późniejszym terminie, upewnij się, że działania łagodzące są w stanie obsłużyć oczekiwane obciążenie, poprzez ich dokładne przetestowanie. Upewnij się, że wdrożono odpowiednie monitorowanie obejmujące zastosowane środki ograniczające ryzyko.

  3. Jeśli ma to zastosowanie, poszukaj tego samego problemu lub słabych punktów konfiguracji, na które mogą wpływać podobne problemy, we wszystkich składnikach Twojego obciążenia. Wykorzystaj tę okazję, aby proaktywnie zająć się tymi elementami. Należy zapoznać się z historię zdarzeń w celu wykrycia wzorców podobnych problemów w obrębie całego obciążenia.

  4. Wyniki badań mogą poprawić strategię testowania. Upewnij się, że skutecznie usunięto pierwotną przyczynę oraz podobne problemy, bezpośrednio testując ten sam przypadek awarii.

Wskazówki dotyczące wstrzykiwania błędów i inżynierii chaosu

Testowanie z wstrzykiwaniem błędów opiera się na zasadach inżynierii chaosu, podkreślając zdolność obciążenia roboczego do reagowania na awarie komponentów. Przeprowadzaj testy wstrzykiwania błędów w środowiskach przedprodukcyjnych i produkcyjnych. Wykorzystaj informacje zdobyte podczas przeprowadzania analizy trybów uszkodzeń, aby mieć pewność, że testujesz tylko te usterki, którym nadajesz priorytet, oraz że masz strategie ograniczania skutków, które odnoszą się do tych usterek.

Kluczowe wskazówki dotyczące projektowania chaosu:

  • Bądź aktywny. Nie należy czekać na niepowodzenia. Staraj się przewidywać awarie, przeprowadzając eksperymenty chaos engineering, aby wykrywać i usuwać problemy, zanim wpłyną one na środowisko produkcyjne.

  • Zaakceptuj porażkę. Zaakceptuj awarie występujące w Twoim systemie i wyciągaj z nich wnioski. Traktuj awarie jako naturalną część złożonych systemów i wykorzystuj je jako okazje do nauki oraz zwiększania niezawodności systemu.

  • Naruszanie systemu. Celowo wprowadzaj błędy lub obciążenia do systemu, aby przetestować jego odporność. Symuluj rzeczywiste awarie lub zakłócenia, aby testować i usprawniać możliwości odzyskiwania po awarii swoich obciążeń.

  • Tworzenie odporności. Użyj eksperymentów inżynierii chaosu, aby zwiększyć zdolność obciążenia roboczego do zapobiegania awariom i odzyskiwania sprawności po nich.

Inżynieria chaosu jest integralną częścią kultury zespołu odpowiedzialnego za workloady i stałą praktyką, a nie krótkotrwałym działaniem taktycznym podejmowanym w odpowiedzi na pojedynczą awarię. Postępuj zgodnie z tą standardową procedurą podczas projektowania eksperymentów chaosowych:

  1. Zaczynanie od hipotezy. Każdy eksperyment powinien mieć jasno określony cel, na przykład przetestowanie zdolności przepływu do zachowania działania mimo utraty określonego komponentu.

  2. Zmierz zachowanie wyjściowe. Upewnij się, że masz spójne metryki niezawodności i wydajności dla przepływu oraz komponentów zaangażowanych w eksperyment, aby porównać je ze stanem pogorszonym podczas uruchamiania eksperymentu.

  3. Wstrzyknij błąd lub błędy. Eksperyment powinien być celowo ukierunkowany na konkretne komponenty, które można szybko przywrócić do działania, a także należy mieć uzasadnione oczekiwanie co do skutków, jakie spowoduje wstrzyknięcie błędu, aby pomóc kontrolować zasięg oddziaływania eksperymentu.

  4. Monitoruj wynikowe zachowanie. Zbieraj dane telemetryczne dotyczące poszczególnych elementów przepływu oraz zachowania przepływu na całej ścieżce, na które ukierunkowany jest eksperyment, aby prawidłowo zrozumieć skutki usterki. Porównaj zbieranie metryk z metrykami bazowymi, aby uzyskać pełny obraz wyników gromadzenia danych.

  5. Udokumentuj proces i obserwacje. Prowadzenie szczegółowej dokumentacji eksperymentów pomoże w podejmowaniu przyszłych decyzji dotyczących projektu obciążenia roboczego, zapewniając uwzględnienie luk ujawniających się z czasem.

  6. Zidentyfikuj wynik i podejmij odpowiednie działanie. Zaplanuj działania naprawcze, które można dodać do backlogu zadań jako usprawnienia. Upewnij się, że plany ulepszeń projektu zostały przejrzene i przetestowane w środowiskach nieprodukcjowych według tych samych procesów co w innych wdrożeniach.

Okresowo sprawdzaj proces, opcje architektury i kod, aby szybko wykrywać błędy techniczne, integrować nowe technologie i dostosowywać się do zmieniających się wymagań.

Podczas przeprowadzania eksperymentów wstrzykiwania błędów należy:

  • Sprawdź, czy monitorowanie jest wdrożone i czy alerty są skonfigurowane.

  • Zweryfikuj proces przypisywania bezpośrednio odpowiedzialnej osoby (DRI) do przejęcia odpowiedzialności za incydent.

  • Upewnij się, że dokumentacja i procesy przetwarzania są aktualne.

Zintegruj następujące zalecenia i rozważania w celu zoptymalizowania strategii testowania chaosu:

  • Wyzwanie związane z założeniami systemu. Dzięki testowaniu starasz się zwiększyć odporność swojego obciążenia oraz udoskonalić strategie jego projektowania. Szukaj możliwości celowego wprowadzania błędów do komponentów i przepływów, które na podstawie wcześniejszych doświadczeń uznajesz za niezawodne. Mogą nie być niezawodne przy nowym obciążeniu.

  • Sprawdź poprawność zmiany. Bez gruntownego testowania, w tym testów z wstrzykiwaniem błędów, możesz nie mieć pełnego obrazu swojego obciążenia po wprowadzeniu zmian. Na przykład możesz wprowadzić nowe zależności, które nie są od razu widoczne.

  • Użyj buforów SLA. Ogranicz testy chaosu, aby dotrzymać warunków umów SLA i uniknąć potencjalnych niekorzystnych skutków awarii. Wartości docelowe przepływu i odzyskiwania składników ułatwiają zdefiniowanie zakresu testów.

  • Ustal budżet błędów jako inwestycję w inżynierię chaosu i wstrzykiwanie błędów. Budżet błędu to różnica między osiągnięciem 100% poziomu SLO a osiągnięciem uzgodnionego poziomu SLO.

  • Zatrzymaj eksperyment, jeśli wykracza on poza zakres. Nieznane rezultaty są oczekiwanym wynikiem eksperymentów chaosowych. Należy dążyć do zachowania równowagi między zbieraniem obszernych danych o wynikach a oddziaływaniem na jak najmniejszą liczbę użytkowników środowiska produkcyjnego.

  • Należy ściśle współpracować z zespołami deweloperskimi, aby zapewnić adekwatność wstrzykiwanych awarii. Użyj wcześniejszych zdarzeń lub problemów jako przewodnika. Należy sprawdzić zależności i oceniać wyniki po usunięciu tych zależności.

  • Zidentyfikuj i udokumentuj wcześniej nieodkryte zależności między różnymi składnikami w ramach obciążenia roboczego, które zostają ujawnione podczas testów chaos engineering.

  • Dostosuj plany naprawy w razie potrzeby, aby uwzględnić zależności wykryte podczas testów chaosowych.

  • Użyj wyników analizy i testów jako podstawy nowych eksperymentów i testów. Gdy pojawiają się nieoczekiwane zachowania, nowe testy mogą być bezpośrednio ukierunkowane na te zachowania i umożliwić Ci opracowanie dla nich strategii zaradczych.

Kompromis: testowanie wstrzykiwania awarii w produkcji może zakłócać pracę i potencjalnie powodować przestoje. Należy otwarcie poinformować interesariuszy o takiej możliwości oraz upewnić się, że wdrożono odpowiednie zabezpieczenia umożliwiające przerwanie eksperymentów i szybkie wycofanie zmian, aby szybko cofnąć wprowadzone awarie.

Facylitacja Power Platform

W celu przetestowania obciążenia można użyć wyników statycznych w Power Automate w celu zwrócenia stałego wyniku.

Aby przetestować wszystkie typy aplikacji Power Apps, możesz użyć próbek Playwright dla platformy Power Platform.

Azure Test Plans to łatwe w użyciu rozwiązanie do zarządzania testami w przeglądarce, które udostępnia wszystkie funkcje wymagane do zaplanowanych testowania ręcznego, testowania akceptacji użytkowników, testowania próbnego i zbierania opinii interesariuszy.

Jeśli Twoje obciążenie obejmuje zasoby platformy Azure, możesz użyć usługi zarządzanej Azure Chaos Studio, która używa projektowania chaosu w celu pomocy w oceny, zrozumieniu i ulepszyć aplikację w chmurze oraz wydajność systemu.

Jeśli obciążenie obejmuje agenta Microsoft Copilot Studio, możesz użyć zestawu Copilot Agent Kit do konfigurowania agentów i testów. Po uruchomieniu poszczególnych testów na interfejsach Copilot Studio API (Direct Line) odpowiedzi agenta są oceniane pod kątem oczekiwanych wyników.

Lista kontrolna niezawodności

Zapoznaj się z pełnym zestawem zaleceń.