Middle
Jakie są główne aspekty testów wydajności i jakie narzędzia użyłeś do ich realizacji?
sobes.tech AI
Odpowiedź od AI
Testy wydajności obejmują:
- Test obciążenia (Load Testing): Ocena zachowania systemu przy oczekiwanym obciążeniu. Określa maksymalną liczbę użytkowników lub transakcji, które system może obsłużyć, zanim wydajność zacznie się pogarszać.
- Test przeciążeniowy (Stress Testing): Testowanie systemu pod ekstremalnym obciążeniem przekraczającym oczekiwania, aby określić punkt awarii i zachowanie w takich warunkach. Celem jest upewnienie się, że system odzyskuje się po przeciążeniu.
- Test wytrzymałości (Endurance/Soak Testing): Testowanie systemu przez długi czas przy znacznym obciążeniu, aby wykryć wycieki pamięci lub inne problemy pojawiające się z czasem.
- Test szczytowy (Spike Testing): Nagłe zwiększenie obciążenia systemu w celu zbadania reakcji systemu na nagłe skoki aktywności użytkowników.
- Test objętości (Volume Testing): Testowanie z dużą ilością danych w bazie danych lub systemie plików, aby ocenić wydajność systemu przy obsłudze dużej ilości informacji.
- Test skalowalności (Scalability Testing): Określenie zdolności systemu do radzenia sobie ze wzrostem obciążenia poprzez dodanie zasobów sprzętowych lub optymalizację oprogramowania.
Do przeprowadzenia testów wydajnościowych używa się następujących narzędzi:
- Apache JMeter: Narzędzie Java open source obsługujące różne protokoły (HTTP, HTTPS, FTP, JDBC itp.). Umożliwia tworzenie złożonych scenariuszy testowych, w tym parametryzację, korelację, logowanie i generowanie szczegółowych raportów.
// Przykład żądania HTTP w JMeter (plik JMX) <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Przykład" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain">example.com</stringProp> <stringProp name="HTTPSampler.port">80</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> <stringProp name="HTTPSampler.path">/api/users</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> </HTTPSamplerProxy> - LoadRunner (Micro Focus): Komercyjne narzędzie, znane z szerokiego wsparcia protokołów i analizy wyników. Często używane w dużych projektach korporacyjnych.
- Gatling: Nowoczesne narzędzie open source oparte na Scala. Znane z wysokiej wydajności i ekspresyjnego języka tworzenia scenariuszy testowych.
// Przykład scenariusza Gatling (Simulation.scala) import io.gatling.core.Predef._ import io.gatling.http.Predef._ class BasicSimulation extends Simulation { val httpProtocol = http .baseUrl("https://example.com") .inferHtmlResources() .proxy(Proxy("localhost", 8888).httpsPort(443)) val scn = scenario("Użytkownicy") .exec(http("Pobierz użytkowników").get("/api/users")) setUp(scn.inject(rampUsers(100) during (5 minutes))).protocols(httpProtocol) }