Fast Feedback Loops Are Good
The faster the feedback loop the quicker you can act upon errors. Assuming this is a nightly run 24 hours is a long feedback loop, especially if you are working in an agile environment.
I would aim to get your entire test run running in 15-30 mins on a CI server that automatically runs the tests when code is checked in. This gives the devs fast feedback so that they can pick up (and fix) errors quickly, or they could even run the tests on their own machines.
How would you do this?
- Run individual tests in parallel.
- Write reusable code segments that you can use across a series of tests.
- Remove pointless tests that have no value.
- Run the tests on a more powerful machine.
What's In It For Me?
1. Reusable code segments will speed up future automation.
Write one fast and efficient function for checking drop down lists
where you supply it data you are looking for. Reuse this for every
test and you have removed lots of slow and inefficient code as well
as reducing the amount of effort it will take to do drop down list
tests in future.
It's easier to refactor a code segment that is used in multiple tests so even if it's not the most efficient piece of code in the world right now, you can always come back to it in the future and improving its efficiently will give you a speed boost in every test that you have written that utilises this function.
2. I Get More Testing Time If The Developers Know Thier Code Is Broken Early
Once you have made all the efficiency savings you can, stripping out the chaff and running your tests in parallel is the next step. Creating two test slices will half your run time (assuming you do it intelligently and place the tests based on their run time). Every extra slice you add will reduce test time and help you get down to that magic 15-30 mins run time.
Now get a CI server up and running and you can tell the developers that something is wrong within 30 mins of them checking in their code, they will still have that story fresh in their minds and should be able to quickly switch back to the code and fix the problems for you. If you have a 24 hour feedback loop the developers will probably have moved on to something else and forgotten what they were doing yesterday, it will take longer for them you work out where they were and longer for them to perform a fix.
As a tester you are at the end of the development cycle and if a deadline is fast approaching it is your time that is squeezed so that the project can hit the deadline. Speeding up tests as suggested above will give you more time to test. Assuming the devs fix each problem within 15 mins your CI server running every 15 mins could catch 14 different errors over the period of one day that would have taken it two weeks to catch if you were running the tests nightly.
That's potentially 13 days of test time saved, do you need a better reason than this?