Organizing UI automation testing

In recent years it is becoming less and less companies where you can meet dedicated test teams working with different development teams under the same product. This is most likely due to financial reasons because there are not so many companies who can afford to keep a team dedicated exclusively to testing and everything related to it.

Nowadays a majority of software development companies work using Agile & Scrum, where all team members (software engineers, architects, programmers, analysts, QA experts, testers and etc.) are sitting together and doing their best to meet the goals of the sprint. In such projects testers, in principle, may know nothing about work of their colleagues from other teams because their areas of responsibilities intersect not very often or do not intersect at all. It can work fine until we are not starting talking about organizing automation testing and everything related to it: planning, design, implementation of frameworks and tests, support.

I think that the main issue here is a lack of understanding that UI automation testing is a separate project which has to be developed based on “defined” requirements, using “defined” technology stack by developers with “defined” skill set and experience. Saying“defined” I mean a bias towards testing:
  • Requirements has to display that product is being developed for testing
  • Should be used tools and libraries developed mainly for testing
  • Developers have to have experience in testing and development of test tools
It is not a secret that developers do not like writing tests and performing tests. They do such tasks without any desire and sometimes with not proper quality. So why do we need to ask them to do a UI automation testing?

With distribution of UI test automation between teams we are starting development of the second project in parallel (formally with different set of requirements and goals). In such case we are getting issues with distribution and prioritization of tasks in the backlog and also areas of responsibility.In the end it requires a lot more efforts from management, work synchronization and professionalism of individual developers. What we also get is a number of developers doing test automation instead of new features development or bug fixing.

From my own experience it is much harder to solve global tasks in such conditions: “You are creating a critical for automation testing task and waiting when it will be solved. In a few days it is not yet started. You are asking people why and when it will be ready. They answer that they didn't have time for it because they were busy by doing more important stuff and maybe in the end of the sprint they will find time to start working on it”. In the end you have to talk to product owners of all teams, prove them that your task is the same important as their ongoing tasks and find somebody with free resources to implement your request.

In my opinion, the most logical way is to create a separate team for test automation with a quite experienced test automation engineer as product owner. Some of you will say that it is too expensive but I think that in the end it will not be more expensive than distributing work between different teams.

You can ask: "What if the main part of development is done, new features implementation minimized and project is on maintenance?" In this case keeping a separate team will be of course the same expensive as keeping the same amount of development teams for support.

*   *   *

As you can see there is no universal answer on the question about organizing UI automation testing. Pros and cons will always present in all cases. Therefore it is better to act on the situation and availability of resources on the project. Personally, I hold the opinion that the work at first, must be carried out by specially trained people, and secondly, people should enjoy doing it. Only then working process will move and not stay still. 

Comments

Popular posts from this blog

QA Chapter

Leader is not an individual contributor

How to access Extended object properties in TestComplete