Background: We are a small dev team in a larger org. We have no testers allocated to us. We have had our backs against a wall for five months developing something as quickly as possible. In that time, we've conducted manual unit tests and our (React web-based) application works well, considering.
Situation: We're on the verge of deploying to a UAT environment that will more closely mimic Production. Before we do that, management has asked me to see what we can do to get some initial testing done before we put this in the hands of users. We don't want technical issues to slow down UAT and dilute its findings. That is, we don't want UAT to catch basic technical issues we should have caught first, or to frustrate our UATesters unnecessarily.
The future: This application is going to grow rapidly as we expand it from a small subset of our client base to a much larger set. Given that we know it will grow, management is keen for the testing to get more automated as soon as possible, to save effort (cost) down the line as we add the features necessary for that expansion.
The question: We have already spent three devs x five months writing this, so there's quite a large codebase and probably a lot to refactor to get it in a maximally-testable state. I just don't know where to start. I've looked at getting Selenium and doing some UI-level testing since we can get some value there without rework. I'm also thinking of going back to management and explaining that we can't do much more than a token effort without spending a considerable amount of time during which we will likely pause development.
So! How do we begin to add some automated testing to a project that's nearly ready for deployment and which was unfortunately not built with testability as a priority?
Additional app details that may or may not be relevant to your answers:
- Built with React & Redux
- Draws data from various third party applications we use to store client information, systems information, etc.
- Some jsp thrown in where we want things done serverside for security.
- Some Java for the authentication