what is infrastructure testing
Ten kompleksowy przewodnik po testowaniu infrastruktury obejmuje korzyści, wyzwania, narzędzia i metodologie testowania infrastruktury:
Infrastruktura jest wspólna dla wielu projektów. Testowanie infrastruktury to testowanie zależności sprzętu i oprogramowania wymaganych do uruchamiania produktów programowych. Pomaga pokryć ryzyka produktowe związane z docelową infrastrukturą.
Ten samouczek pomoże Ci nauczyć się testowania infrastruktury od podstaw. Omówimy wszystkie szczegóły, takie jak korzyści i wyzwania, kto może wykonać, kiedy wykonać i techniki wykonania tego testu. W tym samouczku omówiono również narzędzia do testowania infrastruktury.
Czego się nauczysz:
- Co to jest infrastruktura?
- Co to jest testowanie infrastruktury?
- Metodologie testowania infrastruktury
- Narzędzia do testowania infrastruktury
- Wniosek
Co to jest infrastruktura?
Ekosystem infrastruktury IT obejmuje platformy systemów operacyjnych (takie jak Windows, UNIX, Linux, macOS), platformy sprzętu komputerowego (takie jak Dell, IBM, Sun, HP, Apple), platformy internetowe (takie jak Apache, Cisco, Microsoft IIS, .NET ), Zarządzanie danymi i przechowywanie (takie jak IBM DB2, Oracle, SQL Server, MySQL) oraz aplikacje korporacyjne (takie jak SAP, Oracle, Microsoft).
Co to jest testowanie infrastruktury?
Każde oprogramowanie wymaga infrastruktury do wykonywania swoich działań. Testowanie infrastruktury to proces testowania obejmujący sprzęt, oprogramowanie i sieci. Obejmuje testowanie dowolnego kodu, który odczytuje wartości konfiguracyjne z różnych rzeczy w ramach IT i porównuje je z zamierzonymi wynikami.
Zmniejsza ryzyko niepowodzenia. Testy te obejmują ćwiczenia testowe, procedury gwarantujące, że aplikacje IT i podstawowa infrastruktura są dostrojone pod kątem wykonywania, zdolności adaptacyjnych, niezachwianej jakości, dostępności, wydajności i skalowalności. Celem jest testowanie infrastruktury między środowiskami testowymi, narzędziami testowymi i środowiskami biurowymi.
Dlaczego potrzebne jest testowanie infrastruktury?
Organizacje wydają wiele dolarów, aby upewnić się, że ich aplikacje biznesowe są testowane do perfekcji. Jednak podstawowa podstawa, tj. Infrastruktura, która obsługuje i przekazuje te aplikacje, jest od czasu do czasu testowana i ogólnie niedoceniana.
darmowy moduł sprawdzania gramatyki lepszy niż gramatyka
Testowanie infrastruktury jest potrzebne, aby zmniejszyć ryzyko awarii dowolnego sprzętu lub składnika oprogramowania. Kiedy przygotowywany jest nowy projekt infrastruktury dla oprogramowania, konieczne staje się wykonanie tych testów. Jest to konieczne, aby upewnić się, że nowa funkcja infrastruktury działa zgodnie z przeznaczeniem. Problemy pojawiają się bardziej prawdopodobne, gdy nowy moduł infrastruktury jest integrowany z projektem.
Awarie infrastruktury pojawiają się, gdy nie planuje się testowania skalowalnej infrastruktury. Dlatego, aby zapobiec zakłóceniom i problemom w ostatniej chwili, należy przeprowadzić te testy.
Testowanie to jest potrzebne do identyfikacji defektów, które nie zostały skutecznie wykryte podczas różnych procesów testowania. Analiza aplikacji oprogramowania staje się ważna za każdym razem, gdy zmieniają się zasoby sprzętowe i programowe. Ma to na celu analizę wydajności i wydajności systemu.
Terminowe wdrożenie tego typu testów jest wymagane, ponieważ projekty wiążą się z wysokimi kosztami infrastruktury. Dlatego wymagana jest dobra znajomość tych testów, aby zminimalizować koszty związane z ryzykiem projektowym. Aby uniknąć błędów, test ten jest standardem branżowym.
Jakie są korzyści z testowania infrastruktury?
Zaplanowane i wyczerpujące podejście do testowania infrastruktury daje wiele korzyści oprogramowaniu, a także organizacjom.
Poniżej wymieniono kilka korzyści:
- Zmniejszenie liczby awarii produkcyjnych.
- Poprawa identyfikacji defektów przed rozpoczęciem produkcji. Popraw jakość infrastruktury bez poślizgu defektów do produkcji.
- Przyspieszone wykonywanie testów, umożliwiające wczesne uruchomienie.
- Pomaga w rocznych oszczędnościach zarówno w działalności, jak iw biznesie.
- Potwierdź, że oprogramowanie działa w systematycznej i kontrolowanej procedurze.
- Redukcja przestojów.
- Poprawa jakości usług.
- Dostępność stabilnych środowisk.
- Zmniejszenie kosztów związanych z ryzykiem.
- Lepsze wrażenia użytkownika.
Wyzwania związane z testowaniem infrastruktury
Przyjrzyjmy się kilku wyzwaniom, przed którymi stoją firmy, próbując wdrożyć testy infrastruktury.
# 1) Środowisko zdalne
Środowiska testowe lub zasoby są rozmieszczone w topograficznie odległych lokalizacjach, co sprawia, że zespoły testowe polegają na grupach wsparcia w okolicy, aby zarządzać wyzwaniami związanymi ze sprzętem, komponentami sprzętowymi, komponentami oprogramowania, siecią itp. Często wymaga to pewnych inwestycji w czasie i przyczynach. opóźnienia, zwłaszcza gdy zespoły znajdują się w różnych strefach czasowych.
# 2) Brak dedykowanego zespołu
Brak wiedzy w zespole jest dużym wyzwaniem do przeprowadzenia tego testu. Dedykowany zespół jest zobowiązany do utrzymywania informacji dotyczących wszystkich działań, w tym harmonogramów, planów, zasięgu, raportów o stanie.
# 3) Badanie problemów ze środowiskiem testowym
Często problemy ze środowiskiem testowym nie mogły zostać rozwiązane i wymagają zbadania. Do czasu rozwiązania problemu wymagana jest koordynacja z zainteresowanymi zespołami.
# 4) Utrzymywanie środowisk w jednym miejscu
Utrzymanie wspólnego magazynu środowisk testowych, ich starej kompatybilności, a także najnowszych wersji, stanowi duże wyzwanie podczas wykonywania tych testów. Szczegóły dotyczące połączeń i konfiguracje wszystkich wersji nie są zachowywane.
# 5) Praca ręczna
Niewiele czynności związanych z tym testowaniem wymaga pracy ręcznej, ponieważ nie są dostępne żadne narzędzia. Prowadzi to do błędów ludzkich i opóźnień w procesie.
# 6) Brak standardowej definicji testowania infrastruktury
Większość ludzi wciąż nie jest świadoma implementacji i procesów. Niewłaściwa wiedza i zrozumienie często prowadzą do trudności w realizacji. Pojawia się wiele nowych problemów, które mogą wpływać na stabilność procesu.
# 7) Pojedyncze zespoły
Między lokalizacjami drużyn jest duża przepaść. Zwykle prowadzi to do braku przejrzystości i słabej pracy zespołowej.
Kto może przeprowadzać testy infrastruktury?
W tego typu testach zaangażowane są różne zespoły. Są one wyjaśnione poniżej:
1) Zespół ds. Testów infrastruktury
Zespół testujący infrastrukturę ma sporo wiedzy związanej z tym testowaniem. Są również zaangażowani w zespół ds. Zapewnienia jakości. Ten zespół wie, jak testować infrastrukturę IT. Ten zespół wie, jak projektować przypadki testowe dla tego typu testów.
# 2) Zespół administratorów systemu
Zespół administratora systemu często testuje infrastrukturę na poziomie sieci. Zespół projektuje i dokumentuje przypadki testowe w oparciu o ich doświadczenie. Są odpowiedzialni za zapewnienie, że żadne zmiany w sieci nie będą miały wpływu na aplikacje.
# 3) Zespół utrzymania infrastruktury
Ten zespół odgrywa bardzo ważną rolę. Są zaangażowani na wczesnym etapie i są odpowiedzialni za ustawienie środowisk testowych zgodnie z wymaganiami. Uczestniczą w planowaniu testów i utrzymywaniu środowisk infrastruktury.
# 4) Zespół ds. Zapewnienia jakości
Zespół QA jest odpowiedzialny za przeprowadzenie testu regresji. Są również zaangażowani w testy integracyjne. Przeprowadzają testy na różnych środowiskach testowych, które są tworzone dla innej infrastruktury.
# 5) Kierownik projektu
Kierownik projektu jest odpowiedzialny za obsługę projektu. Są zaangażowani w planowanie, projektowanie i dokumentowanie przypadków testowych, które są wymagane dla tego typu testów. Kierownik projektu jest zsynchronizowany ze wszystkimi zespołami.
Kiedy przeprowadzać testy infrastruktury?
Istnieje pilna potrzeba wykonania tych testów za każdym razem, gdy wprowadzane są jakiekolwiek zmiany związane z infrastrukturą.
Przykładami takich zmian są:
- Opracowywana jest każda nowa poprawka w systemie.
- Występują wszelkie nowe aktualizacje systemu.
- Każda aktualizacja systemu operacyjnego.
- Wersja / struktura bazy danych została zaktualizowana.
- Kiedy występuje zwiększanie pamięci dla serwerów.
- Wdrożenie nowego narzędzia.
- Poprawki bezpieczeństwa.
- Aktualizacja oprogramowania.
Czasami ten typ testowania staje się ważniejszy w przypadku napotkania migracji bazy danych lub centrum danych. Większa koncentracja jest potrzebna, gdy zachodzą różnorodne i szybkie zmiany w aplikacjach oraz gdy występują migracje infrastruktury.
Wykonywany jest również w przypadku wprowadzenia obsługi nowych urządzeń do oprogramowania.
Przykład:
- Nowe laptopy / komputery stacjonarne
- Nowe urządzenia mobilne
- Nowe narzędzia innych firm
Metodologie testowania infrastruktury
Mamy w tym różne moduły. Kilka z nich jest wymienionych poniżej:
- Infrastruktura serwera / klienta
- Migracja danych
- Testowanie infrastruktury w chmurze
- Testowanie na poziomie sieci
- Instalacja / odinstalowanie / wdrożenie
- Infrastruktura środowiska testowego
- Podejście TDD
1) Infrastruktura serwera / klienta
Serwery obejmują serwery WWW, serwery plików, serwery poczty, serwery proxy, serwery wirtualne i fizyczne serwery na sprzęcie. Klient obejmuje system operacyjny, aplikacje, ustawienia użytkownika itp. Serwery obsługują różne usługi, które mogą być używane przez klientów.
Głównym celem jest przetestowanie jakości serwerów, komputerów stacjonarnych, systemów operacyjnych i sprzętu. Składniki serwera / klienta są testowane, aby zapewnić poprawę wydajności infrastruktury w środowisku produkcyjnym. Obejmuje również testowanie instalacji lub dezinstalacji aplikacji, testowanie zgodności przeglądarek, testowanie integracji z różnymi wersjami systemu operacyjnego i ustawieniami użytkownika.
Procedura:
- Przede wszystkim chodzi o zebranie wymagań od interesariuszy.
- Zaprojektuj plan testów zgodnie ze zrozumieniem wymaganej infrastruktury.
- Następnie projektowane są przypadki testowe obejmujące obsługę systemów operacyjnych, scenariusze aktualizacji, zakres testowania infrastruktury serwera / klienta, a także testowanie funkcjonalności.
- Po zatwierdzeniu przypadków testowych zespół QA wykonuje każdy scenariusz i odpowiadające mu przypadki testowe.
Wszystkie zmiany związane z serwerem / klientem, takie jak uaktualnienie, zmiany konfiguracji, są już testowane na konfiguracjach kontroli jakości, więc zapewnia to mniejszy wpływ na środowisko produkcyjne. Ponadto różne wersje systemu operacyjnego zostaną przetestowane przed wdrożeniem do produkcji. Co więcej, jeśli coś zawiedzie w produkcji, procedury awaryjne są wcześniej testowane, aby zapewnić kopię zapasową.
# 2) Migracja danych
Migracja danych obejmuje dane migrowane ze starej do nowej wersji, dane migrowane z jednego serwera na inny, a także dane migrowane do różnych konfiguracji.
Głównym celem testów migracji danych jest przetestowanie migracji danych na różnych wersjach, serwerach, nowych kompilacjach. Przetestuj aplikację, aby potwierdzić, że migracja nie ma żadnego wpływu. Przeprowadzane są również testy migracji danych w celu sprawdzenia wydajności i opóźnień w aplikacji.
Procedura:
- Przetestuj aplikację przed migracją i po niej.
- Przetestuj serwery przed migracją danych i po niej, aby upewnić się, że żadne zmiany nie są obserwowane.
- Sprawdź, czy po migracji danych nie zaobserwowano żadnych zmian w działaniu aplikacji.
- Przetestuj aplikację z różnymi wersjami bazy danych
- Sprawdź, czy nowa kompilacja jest zgodna ze wszystkimi wersjami bazy danych.
- Przetestuj różne ustawienia konfiguracji serwera z różnymi wersjami bazy danych
Za pomocą testów migracji danych można wykryć niezgodne konfiguracje serwerów. Wszelkie problemy z kompilacją serwera, jeśli występują podczas wykonywania migracji danych, można rozwiązać przed wdrożeniem produkcyjnym. Testowanie migracji danych poprawia jakość i stabilność produktu. Testowanie to później pomaga w testowaniu instalacji podczas wdrażania aplikacji w środowisku produkcyjnym.
# 3) Testowanie infrastruktury w chmurze
Informacje i dane są w większości przechowywane na serwerach wirtualnych, a serwery te są przechowywane i zarządzane przez dostawców przetwarzania w chmurze, takich jak AWS.
Głównym celem jest certyfikacja usług w chmurze dla różnych wersji aplikacji. Przetestuj architekturę aplikacji w chmurze. Prawdziwa aplikacja jest symulowana w chmurze oraz testowana jest wydajność i skalowalność aplikacji.
Procedura:
- Przetestuj obciążenie aplikacji z różnymi konfiguracjami.
- Wykonaj testy regresyjne i upewnij się, że aplikacja nie wpływa na testy obciążenia.
- Sprawdź, czy aplikacja jest zgodna z przeglądarką w środowisku chmury.
- Testuj instalację aplikacji w chmurze.
- Sprawdź, czy aplikacja działa zgodnie z oczekiwaniami w różnych środowiskach chmurowych.
Testowanie infrastruktury w chmurze zapewnia bezbłędne wdrożenie aplikacji w środowisku produkcyjnym. Pomaga poznać wydajność, skalowalność i stabilność aplikacji. Pomaga w wykorzystaniu zasobów znajdujących się w chmurze, takich jak sprzęt, oprogramowanie i infrastruktura.
# 4) Testowanie na poziomie sieci
Sieć jest najważniejszą częścią infrastruktury aplikacji. Sieć pomaga w komunikacji między serwerami, klientami i innymi sieciami. Sieci mają różne moduły, takie jak serwery proxy, infrastruktura łączności internetowej.
Głównym celem jest kontrola i zarządzanie wszelkimi problemami na poziomie sieci, takimi jak nadmierne wykorzystanie zasobów, przestoje serwera, konfiguracja systemu, infrastruktura wymagana do operacji, poprawki systemu operacyjnego.
Procedura:
- Przetestuj warstwę sieciową pod kątem przyszłych aktualizacji aplikacji.
- Przetestuj procedury awaryjne w przypadku jakiejkolwiek awarii w środowisku produkcyjnym.
- Wykonaj testy systemu, testy UAT, testy bezpieczeństwa.
- Projektuj przypadki testowe i przygotuj dane testowe.
- Upewnij się, że żadna nowa wersja nie ma wpływu na żadne usługi na poziomie serwera / sieci.
- Przetestuj izolowaną sieć.
- Testuj wpływ na działanie aplikacji w różnych sieciach, takich jak VPN, Wi-Fi, LAN itp.
Testowanie infrastruktury na poziomie sieci skraca czas odzyskiwania. Zapewnia tworzenie kopii zapasowych i przywraca mechanizmy. Pomaga również w bezpieczeństwie aplikacji.
narzędzie do naprawy oprogramowania dla systemu Windows 10
# 5) Instalacja / odinstalowanie / wdrożenie
Głównym celem testowania infrastruktury podczas instalacji jest upewnienie się, że za każdym razem, gdy nowy klient korzysta z aplikacji, nie pojawiają się problemy podczas pierwszej instalacji aplikacji. Dezinstalacja aplikacji jest wykonywana w celu przetestowania procesu zamykania aplikacji.
Procedura:
- Przetestuj pakiety instalatora wymagane do zainstalowania aplikacji.
- Testuj dodatkowe biblioteki, twórz pakiety.
- Przetestuj czas wymagany do zainstalowania i odinstalowania aplikacji.
- Zainstaluj aplikację w różnych systemach operacyjnych.
- Sprawdź, czy jest wymagane miejsce na dysku.
- Sprawdź, czy wszystkie pliki zostały usunięte po odinstalowaniu aplikacji.
Testowanie infrastruktury podczas instalowania / odinstalowywania / wdrażania zapewnia, że aplikacja może zostać zainstalowana przez sieć w określonym czasie. Daje pewność, że każda poprawka może zostać później zainstalowana lub nie. Pomaga w ulepszaniu pamięci wymaganej przez aplikację.
6) Infrastruktura środowiska testowego
Środowisko testowe to zbiór sprzętu, oprogramowania, narzędzi i procesów. Aby przeprowadzić testy dokładnie i wydajnie, niezbędne jest środowisko testowe. Środowisko testowe obejmuje również miejsce pracy, w którym zapewniona jest dobra sieć, komputer i zasilanie testerom w celu wykonania ich pracy.
Głównym celem jest sprawdzenie instalacji oprogramowania, ustawień konfiguracji aplikacji, dobranie odpowiednich narzędzi testowych wspierających planowanie testów, wykonanie testów. Zapewnia również ciągłość wykonywania testów.
Procedura:
- Skonfiguruj środowisko testowe dla regularnych wydań projektu.
- Utwórz środowisko testowe dla wydań poprawek.
- Twórz rozwiązania do zarządzania problemami ze środowiskiem serwera i klienta.
- Sfinalizuj narzędzia testowe do planowania testów, projektowania testów i wykonywania.
- Wybierz narzędzia do debugowania i zgłaszania błędów.
- Utwórz dokument służący do ustawienia środowiska testowego.
Korzystanie z narzędzi i środowisk testowych ma wiele zalet. Obserwuje się wyższą jakość. Produktywność wzrasta wraz z wykorzystaniem narzędzi. Czynności testowe wykonywane są w sposób przetworzony. Dokumentacja środowiska testowego pomaga nowym członkom zespołu lepiej zrozumieć.
# 7) Podejście TDD
Programowanie sterowane testami (ang. Test-Driven Development lub TDD) to metoda służąca najpierw do pisania przypadków testowych na podstawie dokumentów wymagań, a następnie implementacji funkcjonalności zgodnie z testem.
Głównym celem jest poznanie zasobów infrastruktury wymaganych dla projektu. Celem jest zdefiniowanie i zorganizowanie infrastruktury bezpieczeństwa, operacji i produkcji.
Procedura:
- Dokument projektowy dotyczący wymagań infrastrukturalnych.
- Zaprojektuj plan testów obejmujący infrastrukturę wymaganą dla aplikacji.
- Projektuj przypadki testowe obejmujące testy infrastruktury.
- Przetestuj dla różnych konfiguracji.
Podejście TDD pomaga w poprawie złożoności projektu. Wszelkie zmiany w infrastrukturze są testowane przed przeniesieniem do produkcji. Można zaimplementować różne możliwe konfiguracje, ponieważ testy są już zaprojektowane.
Narzędzia do testowania infrastruktury
Szef kuchni, kukiełka, i Ansible to różne narzędzia, które służą temu samemu celowi. Narzędzia te są używane do wdrażania i konfigurowania różnych serwerów wymaganych przez aplikację. Narzędzia te są bardzo pomocne w przypadku złożonych zadań związanych z infrastrukturą. Dzięki tym narzędziom zespół może z łatwością wykonywać zadania na wielu serwerach razem.
Zespół korzystający z tych narzędzi szybko wdraża wiele aplikacji, zależności i bibliotek. Inne działania obejmują serwery, pliki binarne, pliki dziennika, mechanizmy odzyskiwania, uaktualnianie wersji, zarządzanie bazą danych.
# 1) Szef kuchni
Funkcje: Szef kuchni obsługuje języki specyficzne dla domeny Ruby. Dlatego osobom niebędącym programistami trudno jest nauczyć się tego narzędzia. Pomimo trudności w obsłudze języków, narzędzie to jest wysoce dostępne. Szef kuchni postępuje zgodnie z konfiguracją master-slave. W mechanizmie master-slave serwer główny, czyli serwer szefa kuchni, może zostać zastąpiony serwerem zapasowym w przypadku wystąpienia awarii.
Wdrażamy aplikacje, konfigurujemy infrastrukturę, a także konfigurujemy sieć z Chefem. Nie jest wysoce zabezpieczony.
Cena £: Jest tańszy niż Puppet, ale droższy niż Ansible. Jego cena wynosi około 13,5 tys. USD / rok do 100 węzłów.
Stronie internetowej: Szef
# 2) Marionetka
Funkcje: Puppet jest zbudowany z Ruby i obsługuje DSL i Embedded Ruby. Programista może zarządzać konfiguracją tylko wtedy, gdy wybrano Puppet. Zespół administratorów systemu jest również świadomy konfiguracji tego narzędzia. Podąża za architekturą mistrz-mistrz. Jeśli aktywny master ulegnie awarii, inny master może go zastąpić.
Puppet jest przydatny w skalowalności maszyn, przy ustawianiu różnych konfiguracji dla każdego hosta. Jeśli w konfiguracji zostaną wprowadzone jakiekolwiek zmiany, to narzędzie pomoże wprowadzić zmiany globalnie. Nie jest też tak dobrze zabezpieczonym narzędziem.
Cena £: Jego cena jest najwyższa i wynosi około 11 000–20 000 USD rocznie za maksymalnie 100 węzłów.
Stronie internetowej: Marionetka
# 3) Odpowiedzieć
Funkcje: Ansible jest napisane w Pythonie i obsługuje również skrypty poleceń YAML. Python jest czytelny dla człowieka, dlatego to narzędzie jest idealne dla administratorów systemu. Działa z jednym węzłem aktywnym, ale w przypadku awarii ma również węzeł dodatkowy.
Ansible jest wysoce skalowalny, tzn. Może bez problemu zarządzać dużą liczbą węzłów. W porównaniu do Puppet, Ansible jest wygodniejszy pod względem skalowalności. W przeciwieństwie do Chef and Puppet, jest to wysoce bezpieczne narzędzie z SSH.
Cena £: Jego cena jest znacznie niższa niż w przypadku Puppet and Chef około 10 000 USD rocznie dla maksymalnie 100 węzłów.
Stronie internetowej: Ansible
Wniosek
Testowanie infrastruktury jest niezbędne dla cyklu życia oprogramowania, ponieważ firmy ponoszą wysokie koszty infrastruktury. W tym samouczku omówiono różne tematy, takie jak korzyści, wyzwania, techniki i osoby zaangażowane w tego typu testowanie. Omówiono również przegląd narzędzi do testowania infrastruktury.
rekomendowane lektury
- Monitorowanie wydajności aplikacji i infrastruktury IT za pomocą narzędzia eG Enterprise Tool (przegląd praktyczny)
- Rodzaje testowania oprogramowania: różne typy testów ze szczegółami
- Testowanie aplikacji - podstawy testowania oprogramowania!
- Co to jest test gamma? Ostatni etap testów
- Co to jest testowanie zgodności (testowanie zgodności)?
- Testy wydajnościowe a testy obciążeniowe a testy obciążeniowe (różnica)
- Testowanie eksploracyjne a testowanie skryptowe: kto wygrywa?
- Co to jest testowanie skalowalności? Jak przetestować skalowalność aplikacji