what is scalability testing
Wprowadzenie do testowania skalowalności:
Testowanie skalowalności to niefunkcjonalna metodologia testów, w której wydajność aplikacji jest mierzona pod kątem jej zdolności do skalowania w górę lub w dół liczby żądań użytkowników lub innych atrybutów pomiaru wydajności.
Testowanie skalowalności można przeprowadzić na poziomie sprzętu, oprogramowania lub bazy danych.
Parametry używane do tego testu różnią się w zależności od aplikacji, w przypadku strony internetowej może to być liczba użytkowników, użycie procesora, użycie sieci, podczas gdy w przypadku serwera WWW będzie to liczba przetworzonych żądań.
Ten samouczek zawiera pełny przegląd Testowanie skalowalności wraz z jego atrybutami i różnymi etapami wykonywania testu wraz z praktycznymi przykładami, które pozwolą Ci lepiej zrozumieć koncepcję.
Czego się nauczysz:
- Testowanie skalowalności a testowanie obciążenia
- Atrybuty testowania skalowalności
- Kroki w celu przetestowania skalowalności aplikacji
- Wniosek
- rekomendowane lektury
Testowanie skalowalności a testowanie obciążenia
Testowanie obciążenia mierzy testowaną aplikację pod maksymalnym obciążeniem, przy którym system ulegnie awarii. Głównym celem testów obciążenia jest identyfikacja punktu szczytowego, po którym użytkownicy nie będą mogli korzystać z systemu.
Zarówno obciążenie, jak i skalowalność podlegają metodologii testów wydajności.
Skalowalność różni się od testowania obciążenia tym, że test skalowalności mierzy system przy minimalnym i maksymalnym obciążeniu na wszystkich poziomach, w tym na poziomie oprogramowania, sprzętu i bazy danych. Po ustaleniu maksymalnego obciążenia programiści muszą odpowiednio zareagować, aby upewnić się, że system jest skalowalny po określonym obciążeniu.
Przykład: Jeśli testy skalowalności określą maksymalne obciążenie na 10 000 użytkowników, to aby system był skalowalny, programiści muszą podjąć środki dotyczące takich czynników, jak skrócenie czasu odpowiedzi po osiągnięciu limitu 10 000 użytkowników lub zwiększenie rozmiaru pamięci RAM w celu dostosowania do rosnących danych użytkownika.
Testowanie obciążenia polega na maksymalnym obciążeniu tworzonych aplikacji za jednym razem, podczas gdy testowanie skalowalności polega na stopniowym zwiększaniu obciążenia w miarę upływu czasu.
Testowanie obciążenia określa moment, w którym aplikacja ulega awarii, a skalowalność próbuje zidentyfikować przyczynę awarii aplikacji i podjąć kroki w celu rozwiązania problemu.
implementacja algorytmu dijkstry w java
Krótko mówiąc, testowanie obciążenia pomaga zidentyfikować problemy z wydajnością, a testowanie skalowalności pomaga określić, czy system można skalować w górę do rosnącej liczby użytkowników.
Atrybuty testowania skalowalności
Atrybuty testu skalowalności definiują miary wydajności, na podstawie których przeprowadzane będą testy.
Oto niektóre z typowych atrybutów:
1) Czas odpowiedzi:
- Czas odpowiedzi to czas między żądaniem użytkownika a odpowiedzią aplikacji. Testowanie to ma na celu określenie czasu odpowiedzi serwera przy minimalnym, progowym i maksymalnym obciążeniu, aby określić punkt, w którym aplikacja ulegnie awarii.
- Czas odpowiedzi może się wydłużyć lub skrócić w zależności od zmieniającego się obciążenia aplikacji przez użytkownika. W idealnej sytuacji czas odpowiedzi aplikacji skróciłby się wraz ze wzrostem obciążenia użytkownika.
- Aplikację można uznać za skalowalną, jeśli może zapewnić taki sam czas odpowiedzi przy różnych poziomach obciążenia użytkowników.
- W przypadku środowisk klastrowych, w których obciążenie aplikacji jest rozłożone na wiele komponentów serwerów, testy skalowalności muszą mierzyć stopień, w jakim system równoważenia obciążenia rozkłada obciążenie na wiele serwerów. Zapewni to, że jeden serwer nie jest przeciążany żądaniami, podczas gdy drugi serwer jest bezczynny, czekając na nadejście żądania.
- Czas odpowiedzi każdego komponentu serwera musi być dokładnie zmierzony, jeśli aplikacja jest hostowana w środowisku klastrowym, a testy skalowalności muszą upewnić się, że czas odpowiedzi każdego komponentu serwera musi być taki sam, niezależnie od ilości obciążenia umieszczonego na każdym serwerze.
- Przykład: Czas odpowiedzi można mierzyć jako czas, w którym użytkownik wpisze adres URL w przeglądarce internetowej do czasu, do którego strona internetowa załaduje zawartość. Im krótszy czas odpowiedzi, tym wyższa będzie wydajność aplikacji.
2) Wydajność:
- Przepustowość jest miarą liczby żądań przetworzonych w jednostce czasu przez aplikację.
- Wynik przepustowości może się różnić w zależności od aplikacji. Jeśli jest to aplikacja internetowa, przepustowość jest mierzona liczbą żądań użytkowników przetwarzanych w jednostce czasu i czy jest to baza danych. przepustowość mierzy się liczbą zapytań przetwarzanych w jednostce czasu.
- Uważa się, że aplikacja jest skalowalna, jeśli może zapewniać taką samą przepustowość przy różnych poziomach obciążenia wewnętrznych aplikacji, sprzętu i bazy danych.
3) użycie procesora:
- Użycie procesora jest miarą wykorzystania procesora podczas wykonywania zadania przez aplikację. Wykorzystanie procesora jest zwykle mierzone w jednostkach MegaHertz.
- W idealnym przypadku im bardziej zoptymalizowany jest kod aplikacji, tym mniejsze będzie obserwowane wykorzystanie procesora.
- Aby to osiągnąć, wiele organizacji stosuje standardowe praktyki programistyczne, aby zminimalizować wykorzystanie procesora.
- Przykład: Usunięcie martwego kodu w aplikacji i zminimalizowanie użycia Thread. Metody uśpienia są jedną z najlepszych praktyk programowania w celu zminimalizowania wykorzystania procesora.
4) Wykorzystanie pamięci:
- Użycie pamięci jest miarą ilości pamięci używanej do wykonywania zadania przez aplikację.
- W idealnym przypadku pamięć jest mierzona liczbą bajtów (megabajtów, gigabajtów lub terabajtów), których używa opracowana aplikacja w celu uzyskania dostępu do pamięci o dostępie swobodnym (RAM).
- Wykorzystanie pamięci przez aplikację można zminimalizować, postępując zgodnie z najlepszymi praktykami programowania.
- Przykładami najlepszych praktyk programistycznych byłoby niestosowanie nadmiarowych pętli, redukcja trafień do bazy danych, wykorzystanie pamięci podręcznej, optymalizacja wykorzystania zapytań SQL itp. Aplikację uważa się za skalowalną, jeśli minimalizuje wykorzystanie pamięci do maksymalny możliwy zakres.
- Przykład: Jeśli zabraknie pamięci dostępnej dla określonej liczby użytkowników, programista będzie zmuszony do dodania dodatkowej pamięci do bazy danych, aby zrekompensować utratę danych.
5) Wykorzystanie sieci:
- Wykorzystanie sieci to ilość przepustowości używanej przez testowaną aplikację.
- Celem wykorzystania sieci jest zmniejszenie przeciążenia sieci. Wykorzystanie sieci jest mierzone na podstawie liczby odebranych bajtów na sekundę, odebranych ramek na sekundę, odebranych i wysłanych segmentów na sekundę itp.
- Techniki programowania, takie jak stosowanie technik kompresji, mogą pomóc w zmniejszeniu przeciążenia i zminimalizowaniu wykorzystania sieci. Uważa się, że aplikacja jest skalowalna, jeśli może działać przy minimalnym obciążeniu sieci i zapewniać wysoką wydajność aplikacji.
- Przykład: Zamiast podążać za mechanizmem kolejki do przetwarzania żądań użytkowników, programista może napisać kod do przetwarzania żądań użytkownika, gdy żądanie dotrze do bazy danych.
Oprócz tych parametrów istnieje kilka innych, rzadziej używanych parametrów, takich jak czas odpowiedzi na żądanie serwera, czas wykonania zadania, czas transakcji, czas ładowania strony internetowej, czas pobrania odpowiedzi z bazy danych, czas ponownego uruchomienia, czas drukowania, czas sesji, przejście ekranu , transakcje na sekundę, trafienia na sekundę, żądania na sekundę itp.
Atrybuty testowania skalowalności mogą się różnić w zależności od aplikacji, ponieważ miara wydajności aplikacji internetowych może nie być taka sama, jak w przypadku aplikacji stacjonarnej lub aplikacji typu klient-serwer.
Kroki w celu przetestowania skalowalności aplikacji
Główną zaletą wykonywania tych testów na aplikacji jest zrozumienie zachowania użytkownika po osiągnięciu maksymalnego obciążenia i sposobów rozwiązania tego problemu.
Testy te pozwalają również testerom zidentyfikować degradację po stronie serwera i czas odpowiedzi w odniesieniu do obciążenia aplikacji przez użytkowników. W rezultacie takie testy są preferowane w kilku organizacjach na całym świecie.
Poniżej podano listę kroków do przetestowania skalowalności aplikacji:
- Utwórz powtarzalne scenariusze testowe dla każdego atrybutu testowania skalowalności.
- Przetestuj aplikację pod kątem różnych poziomów obciążenia, takich jak niskie, średnie i duże obciążenia, i zweryfikuj zachowanie aplikacji.
- Utwórz środowisko testowe, które jest wystarczająco stabilne, aby wytrzymać cały cykl testowania skalowalności.
- Skonfiguruj sprzęt niezbędny do przeprowadzenia tego testu.
- Zdefiniuj zestaw wirtualnych użytkowników do weryfikacji zachowania aplikacji przy zmiennym obciążeniu użytkownika.
- Powtórz scenariusze testowe dla wielu użytkowników w różnych warunkach wewnętrznych aplikacji, zmian sprzętu i bazy danych.
- W przypadku środowiska klastrowego sprawdź, czy moduł równoważenia obciążenia kieruje żądania użytkowników do wielu serwerów, aby upewnić się, że żaden serwer nie jest przeciążony serią żądań.
- Wykonaj scenariusze testowe w środowisku testowym.
- Przeanalizuj wygenerowane raporty i zweryfikuj obszary poprawy, jeśli takie istnieją.
Wniosek
W skrócie,
=> Testowanie skalowalności to niefunkcjonalna metodologia testowania służąca do weryfikacji, czy aplikacja może skalować się w górę lub w dół do różnych atrybutów. Atrybuty używane do tego testowania będą się różnić w zależności od aplikacji.
=> Głównym celem tego testowania jest określenie, kiedy aplikacja zaczyna się degradować przy maksymalnym obciążeniu i podjęcie odpowiednich kroków w celu zapewnienia, że opracowana aplikacja jest wystarczająco skalowalna, aby uwzględnić zmiany w wewnętrznych aplikacjach, oprogramowaniu, sprzęcie, a także w bazie danych zmiany w przyszłości.
=> Jeśli testy te zostaną przeprowadzone prawidłowo, w opracowywanych aplikacjach mogą zostać wykryte poważne błędy dotyczące wydajności oprogramowania, sprzętu i bazy danych.
=> Główną wadą tego testowania byłoby ograniczenie przechowywania danych, z ograniczeniami dotyczącymi rozmiaru bazy danych i przestrzeni bufora. Ponadto ograniczenia przepustowości sieci mogą utrudniać testowanie skalowalności.
=> Proces testowania skalowalności różni się w zależności od organizacji, ponieważ atrybuty testów skalowalności jednej aplikacji będą się różnić od innych aplikacji.
rekomendowane lektury
- Testowanie obciążenia za pomocą samouczków HP LoadRunner
- Testy wydajnościowe a testy obciążeniowe a testy obciążeniowe (różnica)
- Różnica między testami na komputerach stacjonarnych, serwerach klienckich i testach internetowych
- Testy obciążenia, obciążenia i wydajności aplikacji internetowych przy użyciu WAPT
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)
- Podręcznik testowania zabezpieczeń aplikacji internetowych
- Testowanie aplikacji - podstawy testowania oprogramowania!
- Instalowanie aplikacji na urządzeniu i rozpoczęcie testowania z Eclipse