New application versions may contain source code changes that decrease the application’s performance. To ensure sufficient performance, it is necessary to identify these code changes. Peass is a performance analysis tool using performance measurements of unit tests to achieve that goal for Java applications. However, it can only be utilized for Java applications that are built using the tools Apache Maven or Gradle. This thesis provides a plugin for Peass that enables it to analyze applications built with Apache Ant.
Peass utilizes the frameworks Kieker and KoPeMe to record the execution traces and measure the response times of unit tests. This results in the following tasks for the Peass-Ant plugin: (1) Add Kieker and KoPeMe as dependencies and (2) Execute transformed unit tests. For the first task, our plugin programmatically resolves the transitive dependencies of Kieker and KoPeMe and modifies the XML buildfiles of the application under test. For the second task, the plugin orchestrates the process that surrounds test execution—implementing performance optimizations for the analysis of applications with large codebases—and executes specific Ant commands that prepare and start test execution. To make our plugin work, we additionally improved Peass and Kieker. Therefore, we implemented three enhancements and identified twelve bugs.
We evaluated the Peass-Ant plugin by conducting a case study on 200 commits of the open-source project Apache Tomcat. We detected 14 commits with 57 unit tests that contain performance changes. Our subsequent root cause analysis identified nine source code changes that we assigned to three clusters of source code changes known to cause performance changes.:1. Introduction
1.1. Motivation
1.2. Objectives
1.3. Organization
2. Foundations
2.1. Performance Measurement in Java
2.2. Peass
2.3. Apache Ant
2.4. Apache Tomcat
3. Architecture of the Plugin
3.1. Requirements
3.2. Component Structure
3.3. Integrated Class Structure of Peass and the Plugin
3.4. Build Modification Tasks for Tomcat
4. Implementation
4.1. Changes in Peass
4.2. Changes in Kieker and Kieker-Source-Instrumentation
4.3. Buildfile Modification of the Plugin
4.4. Test Execution of the Plugin
5. Evaluative Case Study
5.1. Setup of the Case Study
5.2. Results of the Case Study
5.3. Performance Optimizations for Ant Applications
6. Related Work
6.1. Performance Analysis Tools
6.2. Test Selection and Test Prioritization Tools
6.3. Empirical Studies on Performance Bugs and Regressions
7. Conclusion and Future Work
7.1. Conclusion
7.2. Future Work / Neue Versionen einer Applikation können Quelltextänderungen enthalten, die die Performance der Applikation verschlechtern. Um eine ausreichende Performance sicherzustellen, ist es notwendig, diese Quelltextänderungen zu identifizieren. Peass ist ein Performance-Analyse-Tool, das die Performance von Unit-Tests misst, um dieses Ziel für Java-Applikationen zu erreichen. Allerdings kann es nur für Java-Applikationen verwendet werden, die eines der Build-Tools Apache Maven oder Gradle nutzen. In dieser Arbeit wird ein Plugin für Peass entwickelt, das es ermöglicht, mit Peass Applikationen zu analysieren, die das Build-Tool Apache Ant nutzen.
Peass verwendet die Frameworks Kieker und KoPeMe, um Ausführungs-Traces von Unit-Tests aufzuzeichnen und Antwortzeiten von Unit-Tests zu messen. Daraus resultieren folgende Aufgaben für das Peass-Ant-Plugin: (1) Kieker und KoPeMe als Abhängigkeiten hinzufügen und (2) Transformierte Unit-Tests ausführen. Für die erste Aufgabe löst das Plugin programmbasiert die transitiven Abhängigkeiten von Kieker und KoPeMe auf und modifiziert die XML-Build-Dateien der zu testenden Applikation. Für die zweite Aufgabe steuert das Plugin den Prozess, der die Testausführung umgibt, und führt spezielle Ant-Kommandos aus, die die Testausführung vorbereiten und starten. Dabei implementiert es Performanceoptimierungen, um auch Applikationen mit einer großen Codebasis analysieren zu können. Um die Lauffähigkeit des Plugins sicherzustellen, wurden zusätzlich Verbesserungen an Peass und Kieker vorgenommen. Dabei wurden drei Erweiterungen implementiert und zwölf Bugs identifiziert.
Um das Peass-Ant-Plugin zu bewerten, wurde eine Fallstudie mit 200 Commits des Open-Source-Projekts Apache Tomcat durchgeführt. Dabei wurden 14 Commits mit 57 Unit-Tests erkannt, die Performanceänderungen enthalten. Unsere anschließende Ursachenanalyse identifizierte neun verursachende Quelltextänderungen. Diese wurden drei Clustern von Quelltextänderungen zugeordnet, von denen bekannt ist, dass sie eine Veränderung der Performance verursachen.:1. Introduction
1.1. Motivation
1.2. Objectives
1.3. Organization
2. Foundations
2.1. Performance Measurement in Java
2.2. Peass
2.3. Apache Ant
2.4. Apache Tomcat
3. Architecture of the Plugin
3.1. Requirements
3.2. Component Structure
3.3. Integrated Class Structure of Peass and the Plugin
3.4. Build Modification Tasks for Tomcat
4. Implementation
4.1. Changes in Peass
4.2. Changes in Kieker and Kieker-Source-Instrumentation
4.3. Buildfile Modification of the Plugin
4.4. Test Execution of the Plugin
5. Evaluative Case Study
5.1. Setup of the Case Study
5.2. Results of the Case Study
5.3. Performance Optimizations for Ant Applications
6. Related Work
6.1. Performance Analysis Tools
6.2. Test Selection and Test Prioritization Tools
6.3. Empirical Studies on Performance Bugs and Regressions
7. Conclusion and Future Work
7.1. Conclusion
7.2. Future Work
Identifer | oai:union.ndltd.org:DRESDEN/oai:qucosa:de:qucosa:86737 |
Date | 07 August 2023 |
Creators | Rosenlund, Stefan |
Contributors | Reichelt, David Georg, Rahm, Erhard, Universität Leipzig |
Source Sets | Hochschulschriftenserver (HSSS) der SLUB Dresden |
Language | English |
Detected Language | English |
Type | info:eu-repo/semantics/acceptedVersion, doc-type:bachelorThesis, info:eu-repo/semantics/bachelorThesis, doc-type:Text |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.0031 seconds