Testing Framework Placement Project Technical And Transferable Skills
Reflection of technical and transferable skills obtained from the project
Cromarty is an automation engineering and robotics company with many projects in a vast range of industries. My work integrated learning (WIL) project was to research and deliver a regression testing framework for a pre-packages meal picking software system for a nation-wide meal supplier. This program written in C# began as a smaller project and grew to be complex and not having a unit and integration testing framework. As new features have been added, it has become clear to the project manager that a testing framework be implemented to increase efficiency and improve the development of new versions and iterations. This testing framework would ensure no new bugs are introduced into future versions of the program.
The main goal of my solution would be to implement a regression test that would check the meal and customer order data from a valid version matched the new versions program data. If the data did match, the testing program would let the developer know it passed the test, and if not, the program would indicate which records were different.
To carry out this project I needed to learn the C# language, as well as the Visual Studio IDE, and research and implement a testing framework solution, and other libraries required for the solution. After being introduced to the program and the code, I would also learn how to use SQL Server Management Studio to query and administer database settings and backups. Once familiar with the code and program, I developed and created a plan that would provide Cromarty with the deliverables required. Originally, I decided to implement a testing framework where two version of the program would be contained in a visual studio IDE environment and both solutions be built at the same time allowing my testing framework to compare the datasets. After it was discovered that this solution was unfeasible for me to implement, I decided to create a process where a valid version would output test JSON data files, and a new version could test its JSON data files against the valid versions. I researched a library for reading and writing JSON data called Newtonsoft, and a comparison library call JsonDiffPatch for comparing JSON file data. This output of JSON files would allow valid version files to be saved in a testing folder for testing future iterations with old valid data, and output log files for test results could also be saved.
To carry out this project I needed to learn the C# programming language which I had no previous experience. I used online resources, reviewed the source code, and questioned my supervisor. I used online resources to learn about the Visual Studio IDE, as well as asked my supervisor and other team members with specific questions I had. I also used library documentation to learn JsonDiffPatch, Newtonsoft and C#.
Having experience in learning new languages, frameworks, libraires and IDEs before, I felt this experience strengthened current skills as well as provided me with new knowledge of a very well used application programming language and IDE. This project also built upon my problem-solving skills, as the project itself was very open ended, with the goal of the project for me to find a solution however I saw feasible and fit. I created a project plan and presented my understanding of the brief, functional requirements and deliverables for the project, and created milestones and goals. This task helped me understand the challenges involved in researching, carrying out and managing a small complex project. I did not meet my milestone deadlines, and two of my proposed solutions were abandoned as they were found to be unfeasible for me to pursue. Although my delivered project fulfilled all but one of the functional requirements, my supervisor indicated that he was happy with the result. The testing framework implemented is to be implemented into current development and integration procedures, within the team looking to write unit and integration tests for new iterations.
This experience has proven to be extremely beneficial for my future development as a Software Developer. Reviewing a large program and learning a popular language C#, as well as experience writing and implementing real world testing solutions that benefit and streamline development process will help my employability as a graduate.