Second year internship

Unit test on the Ocean project (C)

During this four-month second-year internship, I was tasked with unit testing several functions in the OCEAN project. This project, coded in C, is an embedded software for vehicles and therefore requires compliance with several ISO standards.
During the same internship, I also developed software in Python and made a number of modifications to the company's C++ software.

Work completed

During the first two months of my internship, I worked with LGM Ingénierie's testing teams. I was thus able to carry out all the stages of unit testing, from the detailed writing of the plan to the feedback of results, including of course the unit test execution phase. To carry out the various unit tests, I used several tools from the IBM suite: Jass / Prometil for writing test plans, and RTRT (based on Eclipse) for running the tests. I also helped the company to choose another unit testing software, by carrying out a detailed study of the software to see if it would be better suited to the company's needs.

The other two months of my internship focused on pure development, with two main tasks. The first was to create a firmware in Python, which retrieves a project folder and parses the contents of each .c file to find all the functions and return values. This saves a lot of time by avoiding the need to do this manually (especially when searching for functions called within a function), and also simplifies this necessary task during testing. Development of this firmware took less than a week and can be found on my github: Pierrot.
My next task was to implement new functionalities and resolve bugs in the company's internal software. As this software was coded in C++, I mainly worked on this language, in particular to add xml to csv export functionalities, to fix bugs in the workflow of certain software actions, and to improve the overall user experience by adding numerous functionalities. As this software is a Mermaid diagram editor (Flow Diagram), I also worked on a web page loaded into the software, rethinking all the HTMl / CSS and especially JS code in order to improve the existing software by adding missing diagram editing functionalities.

Skills acquired

During this internship, I developed many skills thanks to the different assignments I was given. Thanks to unit testing, I was able to see at close quarters the vital importance of having clear, readable code in which each function performs only one action. It also enabled me to understand many of the issues involved in development, as well as the need to comply with various standards.
I learned a lot during the period when I was developing: I worked on c++, which I didn't know (but whose learning was greatly facilitated by my knowledge of C and C#). I also worked a lot with javascript, and communication between the different workflow elements (data exchange between JS and c++). It was also the first time I'd worked with such a large team on the same project at the same time, so I was able to experiment with Git on a larger scale and not just as an individual.