Iāve been through several automation projects, or in teams/companies where automation was built.
The coding part seems to be the easiest, and people jump right into it, even if itās slower in the start, coding can be learned.
One usually gets this request:
I want us to have full coverage with automation that tests the new service APIs - once the APIs implementation is done, the automation should also be almost done;
The product has constant bugs in production. We need UI automation to check our product so we catch those before we release. 1 automation engineer and/or a tester should suffice to do it in 6-12 months.
We need UI automation to monitor the health of our product, detect issues before our clients do.
We need to reduce the cost of testing, so weāll have to implement UI automation for most of the test scripts.
But planning seems awful. Hereās why I think that:
you have a deadline
you have fixed resources, or even reduced with time as the automation product increases in size;
you have an unstable product to check against;
you have no infrastructure;
you have constraints regarding tooling;
you have no stable data, or even no data;
you have to understand the business, the use cases, the potential failures/risks to add the check in the appropriate place;
you have to scale for long-term maintenance and reduced failure;
you canāt get extra help or motivate extra resources due to not bringing any business value or revenue;
you get very little or no help from development or business;
you get a promise from management and dev team - everyone will start to do it(add checks for new code, maintain existing ones) once most of the code is implemented; I havenāt seen this yet.
It seems like youād have to develop a new product on top of the live product without much of the benefits from there.
Whatās worse is that every few years a major product change happens so most of the automation gets trashed.
I wonder:
Does anyone have regular meetings and conversations with the team and management on this topic?
How do you balance all the tasks and roles in this new product - to be successful in the long term?
Do you set a strict concrete plan from the start or wing it, agree on something generic, and do whatever the manager asks?
Neither of them. At my current company we have the freedom to suggest and do automation as we, developers and testers, see it necessary and reasonable. Bottom-up.
I have develop multiples tools for testing without asking for permission as I saw them time-saving compared to to everything manually.
Managers setting specific automation targets is to me a dysfunction.
This is micro-management and a sign of distrust.
Its pointless to begin automation with an unstable app.
The popular goal for automation is to save time and effort in regression. Iāve never understood the race against time when it comes to automation in words like āwe should write tests for XYZ before the development work is doneā
Thatās just a mantra from the books and not for the real world, in the real world its always better to make sure the damned thing works before even thinking about writing tests for it.
I somewhat agree and try to push for this until the point when Iām labeled useless for not listening to management, and almost getting fired.
Here are some cases where it isnāt that easy to say āapp is unstableā:
What if youāre new somewhere and youāre given this task?
What if the belief is that itās stable?
What if others donāt care and argue that you should be doing your best because thatās why they hired you?
And what if itās somewhat unstable, would you never add automation to it?
What if the instability comes from the hidden things that no one is aware of that you detect while automating?
What if the instability is in a certain layer only that hasnāt been noticed?
What if instability means that the automated script fails once in a while? and you see it only later.
What if the instability comes from others manipulating the environment you try to automate in because it might be shared(they deploy, refresh data, add/remove data, configure the backendā¦etc.)
Hereās a couple of cases where a manager might want this:
there are external services to be integrated that are unstable and change unexpectedly; the product using them would want maybe to be informed about the changes, besides direct crashes in production;
several teams are working in parallel; each product/service/app/component/sub-system needs to be tested until the point of merge; by adding automation, which should be ready by the time development of each component is done, some believe that an unannounced change is notifying the other teams;
a product is going in maintenance mode after launch; the team wants some monitoring/automated checking of the product for when itās live;
a development team is doing consistently hidden technical changes, fixing, refactoring, updating libraries; the changes donāt touch in theory any actual functionality of the product; but they would feel confident in their changes if several layers of automation would be available;
Amazing, a lucky workplace. Iāve yet to see a company where management doesnāt ask for automation for the purpose of cost reduction in regression checking, and āreducingā production released bugs.
Iām more keen to do automation, build tools and scripts when the automation is not demanded and instead I do it when and where I see fit.
It needs some honesty from technical resources - no matter the other claimed benefits, at least one stakeholder will want to know that automation is saving money.
If the maintenance costs are unexpected thatās going to upset people - just like cars need services and MOTs, so do automated tests.
If you canāt afford the maintenance itās debateable whether you should even start scripting.
Maybe the scripts are quick and dirty and pay for themselves even with two executions but are not for long-term usage? Make that clear to team and agree objectives and assumptions - mainly to cover your backside Iām afraid!
Anything that is planned to take more than 6 months is a huge risk, especially if features are shipping sooner than 6 months? Thatās just daft to start work on a thing when there will be 2 new things added before you finish thing #1. Any big framework you build needs to deliver value much sooner or else donāt even start the rewrite, it will just get canned or end up in endless limbo of never being ācompleteā and paralysed.
I am myself staring at 2 big pieces of work right now that need starting and one in progress, Iām chipping away at the in-progress and the next 2 are : performance testing tooling and Chromebook support. Both are in paper only phase, probably 2 months minimum and I aim to get management to prioritise them before I write any prototype code at all.