Week 2 (5/28 - 5/31)
During the second week of my internship, I continued to read research papers and deepen my understanding of the basic concepts related to my project, building on the knowledge I gained in the first week. By the end of the week, I felt more prepared to begin working on my project.
Progress Update for this Week:
- 5/28/2024
- Started reading the research paper on Patch Correctness Assessment. This paper is about evaluating the correctness of patches generated by automated program repair tools, specifically focusing on distinguishing between plausible and correct patches. It introduces the Shibboleth approach, which uses a combination of static and dynamic analysis to identify overfitting patches that pass the test cases but fail to generalize to the program’s intended functionality. The purpose of this paper is to provide insights into improving the reliability and effectiveness of automated repair tools.
- 5/29/2024
- Continued reading the research paper on Patch Correctness Assessment. After finishing this research paper, I gained a better understanding on Shibboleth Technique, which evaluates patches generated by Automated Program Repair systems. Understanding this technique is crucial for my project as it directly pertains to ensuring the correctness and robustness of the patches that I will be working with by avoiding the risk of patch overfitting. This, in turn, enhances the overall quality and reliability of the software.
- 5/30/2024
- Attempted to install the Auburn VPN Server, as next week’s assignment will require server access. Despite entering the correct username and password, I still received a “failed login credentials” error message. Dr. Ghanbari is working with the Office of Information Technology to resolve this issue and will update me later.
- Learned PITest (PIT) through hands-on practice by creating a sample Java program using Maven in IntelliJ and PIT for mutation testing. Even though the program looks good, Dr. Ghanbari has some feedback to share, which we will discuss tomorrow.
- 5/31/2024
- Dedicated time learning about Maven, exploring its structure and key components such as pom.xml files, dependencies, groupID, and artifactID. Maven is a powerful build automation tool primarily used for Java projects. It simplifies the build process by managing project dependencies, compiling source code, running tests, packaging compiled code into artifacts (like JAR files), and deploying these artifacts to a repository. Maven uses a Project Object Model file (pom.xml) to define project structure, dependencies, and build instructions. In this project, Maven helps manage dependencies that are essential for mutation testing and automated program repair tools. By automating tasks like running tests and building the project, Maven ensures that the assessment process remains efficient and consistent.
- Explored JUnit to understand its functionality and usage for writing and executing test cases. JUnit is a widely-used Java framework dedicated to facilitating unit testing in software development. Its purpose is to provide developers with a structured environment for creating and running automated tests, ensuring the reliability and correctness of their code. In the context of the Mutation-based Patch Correctness Assessment for Automated Program Repair project, JUnit is an essential tool as it plays a fundamental role in systematically assessing the effectiveness of automated program repair techniques. By leveraging JUnit, developers can rigorously test their code, including patched versions, under various scenarios and conditions, ultimately enhancing the reliability and validity of the research findings.
- Joined a regular group meeting on Zoom with Dr. Ghanbari and other students. During the meeting, we updated the pom.xml file of my sample program, such as upgrading the JUnit version to 4.13.1, to better simulate the work environment for the actual project. Additionally, Dr. Ghanbari demonstrated a real-world example of using Maven and PIT for mutation testing, which significantly enhanced my understanding of their practical applications.