I need some process improvements
For some time now we have been unable to measure our veolcity for each sprint (every 2 weeks), as it can potentially take 2 months for a story/bugfix to make it's way from feature development to production. Our DOD is in production.
Our process is:
Feature development
Feature test
Integration test
UAT test
Release to prod
These steps don't include issues where are bug is found and it needs to be fixed in the environment that it's in. Also, the UAT test also includes regression testing (all testing is done by a person in each environment). So a simple HTML change make take 5 minutes to develop a fix, but wont make it to production for a month or two.
Considering our sprints are 2 weeks long and it takes about a week to run regression tests. How can we possibly get changes into production every 2 weeks?
Why is all testing, including regression testing, being done by a person in each environment? There are potentially a number of issues to resolve in the situation you describe, but one thing can be said right now: automation is cheap.
The process has been in place before I arrived. Very little unit tests were done and no automation. Over the past year we have slowly implemented unit tests on all new work and added some to old work. Automation tests have been started, but it will be a long time until we have full coverage. I'm trying to figure out a 'quick win' short term solution.
I would recommend looking at value-stream mapping as a technique to look at your workflow from start to finish and understand how long different activities take, where there is waiting, where work tends to be rejected and returned to a previous activity, and where there may be opportunities to eliminate waste.
I would also recommend looking at your Definition of Done. Currently, your Definition of Done requires that the work is deployed to production. However, in the middle of the workflow, you have a UAT. In my experience, UAT is something that is beyond the control of the team since it's done by external entities. I've found it helpful to ensure that every part of the Definition of Done is something that can be done exclusively by the Scrum Team with minimal external dependencies.
If you do these two steps: mapping your process to find areas to improve it and defining your process with what is within scope of your team's ability to control, you should be able to make some headway in having work in a Done state at the end of a Sprint.