1MEIC07T3: TeXes - FEUP-MEIC-DS-2024-25/ai4sd GitHub Wiki

TeXes main objective is to explain unit tests and give feedback.

Vision

In the future we are going to develop an artificial intelligence chatbot that would offer recommendations to the users in a bid to enhance their testing techniques. This product would allow users to send their tests to AI, get detailed assessments with previous data around the case, and modify their tests based on the suggestions submitted. The primary objective is to provide an environment where tests are done in the most efficient manner, targeting the most essential aspects of the system through relentless feedbacks and involvement from the AI.

The system will be able to review the test history, learn from the failures, recommend changes and the areas with the highest prospective of failures. In addition, artificial intelligence would be able to identify and mark outdated tests, enforcing their applicability even after changes to the systems. Artificial intelligence will also assist in the creation of functional non-functional test cases which address various metrics and ensure that the system is fully assessed.

This product implements business principles based on agile’s philosophy where there is improvement and adaptation for better performance. By addressing the perspectives of the users, AI will take part in facilitating the generation of tests and contributing to possible scenarios improving the overall test performance progression.

Research

Survey of similar projects and analysis of their pros and cons when compared to the product to be developed.

Domain Analysis

Include high-level class diagram with key domain concepts. Complement this diagram with other high-level diagrams has appropriate (activity, sequence, etc.).

Architecture and design

1. Current Architecture and Design

Architecture Overview: Our prototype as a basic client-server architecture with a simple front end.

Component Diagram: Present two primary components:

Backend Component: Python script serving as the core chatbot functionality. Key libraries : Flask to manage our HTTP requests beetween the server and the client Chatbot logic and response handling within this Python file.

Frontend Component: HTML interface built with Tailwind CSS for styling and React for ease of use. Communication with the backend through simple HTTP requests using a form and POST requests.

Risks:

Scalability: Having a single server/python script for requests can be a problem long term as we add functionalities to our chat bot.

2. Future architecture

Some features we would need to add to our initial prototypoe would be user authentication and chat history, that way users could go back to older chat and continue where they left off and we could use those older chat to cater to specific needs of the user. With this objective in mind we would need to add a database, using Postgre or similar, to keep our user information.

Technologies

The backend runs in python. It's in python that we make API requests to Gemini and that we host a Flask server to handle http requests from the frontend.

The frontend runs in Vite, a React framework.

Each of these is it's own docker container. We have a docker-compose.yaml file in order for these containers to be able to communicate between them.

Development guide

Getting Started

To contribute to the TeXes project, follow these steps to set up your development environment:

  1. Clone the Repository:

    git clone <repository-url>
    cd T07-G03-main
    
  2. Install Dependencies:

    • For the backend:
      cd backend
      pip install -r requirements.txt
      
    • For the frontend:
      cd frontend
      npm install
      
  3. Build and Run the Application:

    • Using Docker:
      docker-compose up --build
      

APIs, Formats, and Protocols

  • Communication Protocols:
    • HTTP for frontend-backend communication.
  • Data Formats:
    • JSON for data exchange between frontend and backend.

Sprint 1 Retrospective

During this first sprint we did a thorough research for the homework and tried to divide our work equally when it was work that involved the whole team, such as the homeworks and we divided the coding responsibilities equally between the developers.

For the next sprint we need to improve our communication, our lack of it has led us to some rushed work such as our presentation. We also need to improve the way we keep up with the work. Some of the members of the group only work if they are reminded that there are deadlines and even then, they do the bare minimum.

Sprint 2 Retrospective

During this sprint, we achieved several important milestones. We successfully implemented a progress indicator, which enhanced the user experience by providing real-time feedback on task completion. Additionally, we enabled the assistant to receive suggestions for missing test scenarios, improving its adaptability and robustness. Another significant accomplishment was allowing users to send tests, which facilitates better collaboration and flexibility in testing. Lastly, we ensured that the answers provided by the AI are now visible to users, increasing transparency and fostering trust in the system.

Sprint 3 Retrospective

Things that went well:

  • Dispite the difficulty on the implementation of the scecrets we worked well as a team to resolve it and we found the better way due to the limitation of time to implement it.
  • In this sprint we faced the challenge of working with several new aspects of the infrastructure but successfully implemented all necessary solutions.

Things that went worng:

  • We had some dificulties in the implementation of the gcloud secret versions.
  • Also the communication between teams is always a challange with the coordination between everyone and could be better.

Conclusion:

  • Dispite these hurdles, we think that we achieved a good final outcome and we grew up as a team during the semester.

Security concerns

Identify potential security vulnerabilities classes and explain what the team has done to mitigate them.

Quality assurance

Describe which tools are used for quality assurance and link to relevant resources. Namely, provide access to reports for coverage and mutation analysis, static analysis, and other tools that may be used for QA.

How to use

In order to use TeXes, you simply need to run the docker containers on the main directory.

docker-compose up --build

Next, simply input your test on the input box!

How to contribute

Explain what a new developer should know in order to develop the tool, including how to build, run and test it in a development environment.

Defer technical details to the technical documentation below, which should include information and decisions on architectural, design and technical aspects of the tool.

Contributions

Link to the factsheets of each team and of each team-member. For example: