Testing Framework Placement Project Critical Reflection
Critical reflection of my work integration learning experience project
Automation and engineering specialists Cromarty required research and implementation of a testing framework for their frozen meal picking system software. I was offered this project as part of my work integrated learning (WIL) experience and accepted their offer. I was advised that this piece of software had grown from it’s first iteration into a large, complicated project with many intricate functionalities, and as the project expanded, it was apparent that testing would streamline the development process, making tedious manual testing methods a lot more efficient. My supervisor explained their requirement for a regression testing solution where a testing framework developed, would compare a valid, large amounts of data manipulated data for functionality. Conceptually this valid manipulated data could be compared with new iterations to ensure that new code didn’t introduce new bugs.
This software was written in C# using the Visual Studio IDE, and I was given free rein to investigate and implement a solution by any means necessary. Having no previous experience in C# or Visual Studio, I relied on previous experience learning new languages and IDE’s. I had previously written unit and integration tests for previous university projects, although didn’t have experience writing tests for large, complicated projects. After some research, I decided that unit testing framework NUnit could be used to execute and output results of these tests, and data could be outputted, logged and compared efficiently using JSON and a JSON reading and writing library. The software I was testing was very complicated and had no previous testing implementation. Some aspects of the software were difficult to understand, and without commenting or documentation.
It was apparent that I would need to ask many questions to ensure that I delivered an appropriate and usable solution for the organisation. At first, I listed questions that could get me started in developing a project plan and decide on appropriate deliverables. It was also evident that my supervisor and other team members I could ask were very busy with time sensitive projects, and my communication and prioritisation of questions needed to be clear and thought out. As I built more rapport with my supervisor and others on the project, and more confident in understanding the project, code and what was required, I found it easier to prioritise and ask questions to progress.
Becoming stuck on a problem that was halting progress was another challenge I faced, and understanding when to re-evaluate a solution to a problem that is halting progress. This issue also relates to communication and asking the right questions at the right times. Twice I came to the realisation that the solution I had decided either wasn’t possible, or after a period of time, there were too many challenges and became unattainable. Deciding when to abandon a solution is a difficult decision, and because of these challenges my project didn’t achieve milestone deadlines.
Not having programmed in C#, used the Visual Studio IDE, or written regression tests before, was very challenging. Because of this experience, I feel I gained confidence in learning and implementing new languages, frameworks and IDEs. To learn these new skills, I used online resources and documentation, and at times asked my supervisor if I was still unable to find the answer.
During the placement project, I learned how to come up with and implement a new solution to a specific problem. I learned ways to decide on and plan a solution and decide the best course of action based on the client’s requirements. My soft skills acquired throughout my working career helped me to communicate with project team members and my supervisor. Although initially feeling confident, I have also realised that I could improve on communicating complex problems, and explaining my thoughts in ways others can understand. Becoming more aware of the ways others might interpret or misunderstand my explanations and plans for solutions and projects, and asking the right questions can be improved.
For Self-development and future projects, I plan on researching other testing projects and solutions to discover other ways this project could be achieved. Online learning resource Udemy provide C# unit testing courses with a focus on best practices which I will enrol in. In future, I will be more aware of information I require for planning and execution of project solutions, and make a list of prioritised questions, ensuring that I ask the right questions at the right time. This would include when a solution is becoming infeasible, and I may require further direction or a second opinion.