Exploring the use of LLMs for Code Generation in Test-Only Development
Primary supervisor
Additional information
- Information about Test Only Development
- Test Only Development, UG Dissertation, Laura Armitage, The University of Manchester
Contact admissions office
Other projects with the same supervisor
Funding
- Competition Funded Project (Students Worldwide)
This research project is one of a number of projects at this institution. It is in competition for funding with one or more of these projects. Usually the project which receives the best applicant will be awarded the funding. Applications for this project are welcome from suitably qualified candidates worldwide. Funding may only be available to a limited set of nationalities and you should read the full department and project details for further information.
Project description
Test-Driven Development (TDD) is an approach to building reliable and easy-to-change software, in which tests and code are written together, in lock-step, following a few key rules:
1. Changes to production code can only be made in response to a failing unit test (or a compelling refactoring opportunity).
2. Only the simplest changes to production code needed to make the failing tests pass are allowed.
3. Refactoring should be used when tests are passing to improve code quality and expand the scope of the code unit under development.
Following these rules leads to the well known Test-Code-Refactor cycle of TDD, giving a disciplined approach to software development that can also be highly productive, thanks to its ability to avoid the need for lengthy rework due to errors, once the complexity of the code being written grows beyond what can easily be checked and managed correctly by a single developer. This cycle is also sometimes referred to as the Red-Green-Green cycle, based on the results that should be seen after each step when the test suite for the code unit under construction is run.
Test-Only Development (TOD) is a variant on TDD that was proposed at the University of Manchester. In TOD, the developer focuses on writing the unit tests needed, and the second step is handled automatically by the TOD driver. That is, once the developer has written a new unit test that fails, the TOD driver takes over and generates the code needed for the second step (the "Code" step) that makes the failing unit test just written pass). The aim is to provide a technique that allows the developer to focus on capturing the requirements for the unit under construction and the TOD driver takes care of the rest.
In our original work, the code generated by the TOD driver was created using a rule-driven approach that could only handle certain types of test failure case. In this PhD project, we will explore whether LLMs trained for code generation can increase the power of TOD and cover a richer range of cases. We can also explore how well an LLM-based solution can tackle the Refactoring step, leading to a full TOD driver solution.
Person specification
For information
- Candidates must hold a minimum of an upper Second Class UK Honours degree or international equivalent in a relevant science or engineering discipline.
- Candidates must meet the School's minimum English Language requirement.
- Candidates will be expected to comply with the University's policies and practices of equality, diversity and inclusion.
Essential
Applicants will be required to evidence the following skills and qualifications.
- You must be capable of performing at a very high level.
- You must have a self-driven interest in uncovering and solving unknown problems and be able to work hard and creatively without constant supervision.
Desirable
Applicants will be required to evidence the following skills and qualifications.
- You will have good time management.
- You will possess determination (which is often more important than qualifications) although you'll need a good amount of both.
General
Applicants will be required to address the following.
- Comment on your transcript/predicted degree marks, outlining both strong and weak points.
- Discuss your final year Undergraduate project work - and if appropriate your MSc project work.
- How well does your previous study prepare you for undertaking Postgraduate Research?
- Why do you believe you are suitable for doing Postgraduate Research?