Performance Exploration and Testing of Web-based Software Systems
Ahmad, Tanwir (2020-12-07)
Ahmad, Tanwir
Åbo Akademi University
07.12.2020
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:ISBN:978-952-12-4000-3
https://urn.fi/URN:ISBN:978-952-12-4000-3
Tiivistelmä
Modern society relies heavily on a wide range of inter-connected software systems for finance, energy distribution, communication, and transportation. The era of controlled communication in closed networks for limited purposes is over. Due to the adoption of the Internet, almost all financial, government, and social sectors rely heavily on web-based information systems. These systems need to be very fast and reliable, and should be able to support a vast number of concurrent users. As software users are immensely perceptive about the performance of the software system, the companies relying on web-based application systems for businesses strive to provide high-quality web services in order to stay competitive in the worldwide market. These companies may suffer a considerable loss of customers, which can detrimentally affect profits and revenues if the applications do not perform well in terms of functionality and performance. As various reports show that an application is more prone to fail due to performance issues rather than functional ones, it is very important that web application systems are rigorously tested for performance issues before deployment.
In this thesis, we propose a set of approaches for performance testing and exploration of web-based software systems. Although we target web-based software systems, our methods can be easily adapted to different types of software systems.
Our contributions fall into two categories: approaches for model-based performance testing and approaches for performance explorations of blackbox systems with large input spaces. In the first category, as a first contribution, we provide model-based performance testing, where we generate realistic workloads using Probabilistic Timed Automata (PTA). During the load generation process, we monitor different Key Performance Indicators (KPIs) such as response times, throughput, memory, CPU, and disk. These KPIs are used to benchmark the performance of the system under test (SUT). As an extension of the first contribution, we provide an approach for extracting the workload models from server logs as an alternative to their manual creation based on the tester’s experience.
In the second category of contributions, we are interested in exploriing the performance of black-box software systems with large input spaces without prior knowledge of the domain. We propose different exploratory performance testing approaches to identify not only the worst user scenario with respect to a given workload model but also a set of input combinations that trigger performance issues and severely degrade the performance of software-intensive systems. Our first contribution, in this category, is an approach to explore the user scenario space randomly based on predefined mutation operators to find the worst user scenario. As a second contribution, we extend the previous work to present an exact approach that uses graphs-search algorithms and guarantees to find the worst user scenario. However, this approach does not scale well to large workload models with many loops. In our third contribution, we address the scalability issue of the exact approach and present an approach that employs genetic algorithms to identify a near-worst user scenario. As the last contribution, we provide an exploratory performance testing approach where we use reinforcement learning to explore a large input space in order to identify the input combinations that trigger performance issues in the SUT. This contribution is motivated by reports that show that almost two-thirds of the performance issues are detectable on certain input combinations. All the approaches discussed in this work are accompanied by tool support to automate the tedious tasks. The approaches have been evaluated against different web application case studies, but they can be extended to testing and exploring the performance of software-intensive systems in the other domains by adjusting their input artifacts such as workload models and input spaces with respect to those specific domains. ----------
Dagen samhälle är starkt beroende av många olika slags sammankopplade mjukvarusystem för hantering av marknader, energi distribution, telekommunikation och logistik. Tidsåldern för kontrollerad kommunikation i slutna nätverk för begränsade syften gått mot sitt slut. I och med introduktionen av Intenet, har nästan alla finans- och myndighets- och välfärdssektorer blivit djupt beroende av webb baserade informationssystem. Dessa system måste vara mycket snabba och pålitliga och borde kunna hanteramett stort antal samtidiga användare. Eftersom mjukvaruanvändare är mycket uppmärksamma på mjukvarusystems prestanda, försöker företag som förlitar sig på webb baserade tjänster att erbjuda webb tjänster av hög kvalitet för att kunna hållas konkurrenskraftiga på den globala marknaden. Dessa företag kan förlora en stor andel av sina kunder om tjänsterna de erbjuder inte uppfyller användarnas krav på funktionalitet och prestanda, med konsekvens att företagen kan gå miste om viktiga intäkter. Det är mycket viktigt att system erbjuder webb tjänster är testade med avseende på prestanda problem före gruppering, med motiveringen att det finns ett antal rapporter som visar att mjukvaru applikationer tenderar att misslyckas på grund av prestanda problem snarare än funktionella problem.
I denna avhandling lägger vi fram ett antal tillvägagångssätt för att testa och utforska prestanda hos mjukvarusystem som erbjuder webb baserate tjänster. Även om tillvägagångssätten är ämnade för webb baserade mjukvaru system, kan våra metoder lätt anpassas för andra typer av mjukvarusystem.
Våra kontributioner kan indelas i två kategorier: tillvägagångssätt för modell-baserad prestanda test och tillvägagångssätt för utforskning av black-box system med stora indatarymder. Från den första kategorin, som den första kontributionen, tillhandhåller vi modell-baserad prestanda testning, där vi genererar realistiska arbetsbelastningar för test-systemet med hjälp av Probabilistic Timed Automata (PTA). Under genereringen av arbetsbelastningen övervakar vi Key Performance Indicators (KPIs), såsom svarstid, genomströmning, minnesanvändning, processoranvändning och användning av lagringsmedie. Dessa KPIn använder för att mäta pre-standautgångsläget för systemet som håller på att testas (System Under Test; SUT). Som en utökning av den första kontributionen, erbjuder vi ett tillvägagångssätt för att extrahera arbetsbelastningsmodeller från en servers loggfiler, som en alternativ till att skapa dem manuellt utgående ifrån personen som utförs testens erfarenhet.
I den andra kontributionskategorin är vi intresserade av att utforska prestandan för black-box mjukvarusystem med stor indatarymder utan att ha någon a priori kunskapen om mjukvarusystemets applikationsdomän. Vi tillhandahåller olika utforskande tillvägagångssätt för testning av prestnada, for att identifiera, inte bara den värsta tänkbara användarscenariot i avseende på en given arbetsbelastningsmodell, men också vilken kombination av indata som orsakar prestanda problem genom att gravt nedsätta prestandan av mjukvaruintensiva system. Vår första kontribution i denna kategori, är ett tillvägagångssätt för att utforska användarscenariorymden slumpmässigt med fördefiniera muteringsoperatorer för att hitta det värsta möjliga användarscenariet. I den andra kontributionen utökar vi den första kontributionen för att tillhandahålla ett exakt tillvägagångssätt som använder sig av grafsökningsalgoritmer som garanterat kan hitta det värsta tänkbara användarscenariot. En nackdel med detta tillvägagångssätt är att den inte lämpar sig för stora arbetsbelastningsmodeller som innehåller många loopar. Vår tredje kontribution är att ta i tu med den andra kontributionens brist i att inte kunna hantera stora arbetsbelastningsmodeller. Vi löser detta problem genom att använda oss av genetiska algoritmer för att identifiera användarscenarier som är nära det värsta tänkbara. Som den fjärde och sista kontributionen tillhandahåller vi en utforskande prestandatestningstillvägagångssätt var vi använder oss av förstärkningsinlärning för att utforska en stor indatarymd för att kunna identifiera de indata kombinationer som utlöser prestandaproblem i systemet som håller på att testas. Denna kontribution motiveras av rapporter som visar att uppmot två tredjedelar av prestandaproblemen kan detekteras från från specifika indata kombinationer. Med alla tillvägagångssätt som diskuteras i denna avhandling har verktygsstöd för att automatisera de tråkiga och långdragna uppgifterna. Tillvägagångssätten har jämförts mot olika fallstudier för webb applikationer, men de kan anpassas för att kunna testa och utforska prestandan av mjukvaruintensiva system in andra domäner genom att justera indataartefakter som till exempel arbetsbelastningsmodeller och indatarymder.
In this thesis, we propose a set of approaches for performance testing and exploration of web-based software systems. Although we target web-based software systems, our methods can be easily adapted to different types of software systems.
Our contributions fall into two categories: approaches for model-based performance testing and approaches for performance explorations of blackbox systems with large input spaces. In the first category, as a first contribution, we provide model-based performance testing, where we generate realistic workloads using Probabilistic Timed Automata (PTA). During the load generation process, we monitor different Key Performance Indicators (KPIs) such as response times, throughput, memory, CPU, and disk. These KPIs are used to benchmark the performance of the system under test (SUT). As an extension of the first contribution, we provide an approach for extracting the workload models from server logs as an alternative to their manual creation based on the tester’s experience.
In the second category of contributions, we are interested in exploriing the performance of black-box software systems with large input spaces without prior knowledge of the domain. We propose different exploratory performance testing approaches to identify not only the worst user scenario with respect to a given workload model but also a set of input combinations that trigger performance issues and severely degrade the performance of software-intensive systems. Our first contribution, in this category, is an approach to explore the user scenario space randomly based on predefined mutation operators to find the worst user scenario. As a second contribution, we extend the previous work to present an exact approach that uses graphs-search algorithms and guarantees to find the worst user scenario. However, this approach does not scale well to large workload models with many loops. In our third contribution, we address the scalability issue of the exact approach and present an approach that employs genetic algorithms to identify a near-worst user scenario. As the last contribution, we provide an exploratory performance testing approach where we use reinforcement learning to explore a large input space in order to identify the input combinations that trigger performance issues in the SUT. This contribution is motivated by reports that show that almost two-thirds of the performance issues are detectable on certain input combinations. All the approaches discussed in this work are accompanied by tool support to automate the tedious tasks. The approaches have been evaluated against different web application case studies, but they can be extended to testing and exploring the performance of software-intensive systems in the other domains by adjusting their input artifacts such as workload models and input spaces with respect to those specific domains.
Dagen samhälle är starkt beroende av många olika slags sammankopplade mjukvarusystem för hantering av marknader, energi distribution, telekommunikation och logistik. Tidsåldern för kontrollerad kommunikation i slutna nätverk för begränsade syften gått mot sitt slut. I och med introduktionen av Intenet, har nästan alla finans- och myndighets- och välfärdssektorer blivit djupt beroende av webb baserade informationssystem. Dessa system måste vara mycket snabba och pålitliga och borde kunna hanteramett stort antal samtidiga användare. Eftersom mjukvaruanvändare är mycket uppmärksamma på mjukvarusystems prestanda, försöker företag som förlitar sig på webb baserade tjänster att erbjuda webb tjänster av hög kvalitet för att kunna hållas konkurrenskraftiga på den globala marknaden. Dessa företag kan förlora en stor andel av sina kunder om tjänsterna de erbjuder inte uppfyller användarnas krav på funktionalitet och prestanda, med konsekvens att företagen kan gå miste om viktiga intäkter. Det är mycket viktigt att system erbjuder webb tjänster är testade med avseende på prestanda problem före gruppering, med motiveringen att det finns ett antal rapporter som visar att mjukvaru applikationer tenderar att misslyckas på grund av prestanda problem snarare än funktionella problem.
I denna avhandling lägger vi fram ett antal tillvägagångssätt för att testa och utforska prestanda hos mjukvarusystem som erbjuder webb baserate tjänster. Även om tillvägagångssätten är ämnade för webb baserade mjukvaru system, kan våra metoder lätt anpassas för andra typer av mjukvarusystem.
Våra kontributioner kan indelas i två kategorier: tillvägagångssätt för modell-baserad prestanda test och tillvägagångssätt för utforskning av black-box system med stora indatarymder. Från den första kategorin, som den första kontributionen, tillhandhåller vi modell-baserad prestanda testning, där vi genererar realistiska arbetsbelastningar för test-systemet med hjälp av Probabilistic Timed Automata (PTA). Under genereringen av arbetsbelastningen övervakar vi Key Performance Indicators (KPIs), såsom svarstid, genomströmning, minnesanvändning, processoranvändning och användning av lagringsmedie. Dessa KPIn använder för att mäta pre-standautgångsläget för systemet som håller på att testas (System Under Test; SUT). Som en utökning av den första kontributionen, erbjuder vi ett tillvägagångssätt för att extrahera arbetsbelastningsmodeller från en servers loggfiler, som en alternativ till att skapa dem manuellt utgående ifrån personen som utförs testens erfarenhet.
I den andra kontributionskategorin är vi intresserade av att utforska prestandan för black-box mjukvarusystem med stor indatarymder utan att ha någon a priori kunskapen om mjukvarusystemets applikationsdomän. Vi tillhandahåller olika utforskande tillvägagångssätt för testning av prestnada, for att identifiera, inte bara den värsta tänkbara användarscenariot i avseende på en given arbetsbelastningsmodell, men också vilken kombination av indata som orsakar prestanda problem genom att gravt nedsätta prestandan av mjukvaruintensiva system. Vår första kontribution i denna kategori, är ett tillvägagångssätt för att utforska användarscenariorymden slumpmässigt med fördefiniera muteringsoperatorer för att hitta det värsta möjliga användarscenariet. I den andra kontributionen utökar vi den första kontributionen för att tillhandahålla ett exakt tillvägagångssätt som använder sig av grafsökningsalgoritmer som garanterat kan hitta det värsta tänkbara användarscenariot. En nackdel med detta tillvägagångssätt är att den inte lämpar sig för stora arbetsbelastningsmodeller som innehåller många loopar. Vår tredje kontribution är att ta i tu med den andra kontributionens brist i att inte kunna hantera stora arbetsbelastningsmodeller. Vi löser detta problem genom att använda oss av genetiska algoritmer för att identifiera användarscenarier som är nära det värsta tänkbara. Som den fjärde och sista kontributionen tillhandahåller vi en utforskande prestandatestningstillvägagångssätt var vi använder oss av förstärkningsinlärning för att utforska en stor indatarymd för att kunna identifiera de indata kombinationer som utlöser prestandaproblem i systemet som håller på att testas. Denna kontribution motiveras av rapporter som visar att uppmot två tredjedelar av prestandaproblemen kan detekteras från från specifika indata kombinationer. Med alla tillvägagångssätt som diskuteras i denna avhandling har verktygsstöd för att automatisera de tråkiga och långdragna uppgifterna. Tillvägagångssätten har jämförts mot olika fallstudier för webb applikationer, men de kan anpassas för att kunna testa och utforska prestandan av mjukvaruintensiva system in andra domäner genom att justera indataartefakter som till exempel arbetsbelastningsmodeller och indatarymder.