Apart from the things already mentioned in the above threads, I would add the following if I give a presentation on automation-
How Automation fits in functional testing?
A common misconception related to automation is that, it is a replacement for manual testing. Instead, it is actually a part of the overall testing process where manual and automated testing are part of it. They complement each other NOT replace.
The above being said, it is important to understand under what scenario automated testing could be a good option. Here are some use cases for it-
- To automate mundane/repeatable tasks that are really time consuming
to do manually
- To work in a DevOps environment where we need automation right from the start of the SDLC; till the release and production monitoring phase
- To get quick feedback about the system when new code is checked in (new feature is implemented). We will have automated tests that get automatically triggered for every code check in
- To run several tests on a daily basis to ensure the older functionalities of the system are still working as expected To create Test Data that will be used for doing manual exploratory testing which is otherwise time consuming to do manually
- To test different fields with hundreds of data sets using data driven testing
- To do load/stress testing where we simulate thousands of users using the
application simultaneously which would otherwise be hard to do manually
How to come up with a good automation test strategy?
The first step in building a good test automation strategy is to brainstorm the below items with the entire team-
- What problems are we trying to solve using automation?
- Are there sufficient amount of skilled resources available to do automation?
Cost vs Value of doing automation?
- How testable is your application?
- What are the goals of automation?
- How to make automation more visible?
- What type of tools are needed for doing automation?
- Do we choose open source or vendor tools?
- What process needs to be followed for automation tasks?
- Do you have sufficient support from stakeholders to implement automation successfully?
The above questions help to get some clarity on when and where automation is necessary in the project. Once we decide to proceed further and start building our test automation framework, some things to consider to help in building more robust automation frameworks and write better tests are-
- Authoring and execution
- Stability
- Reusability
- Extensibility
- Maintenance
- Troubleshooting
- Reporting
- CI/CD integration
What are the good practices of automation?
When building the automation framework and writing automation code there are some things we may want to consider that aligns with good practices of automation. They are as follows-
- Have dedicated automation team with some programming experience (if
possible) to do the automation. They can help to mentor other
non-technical people and get them involved in the automation process
- Treat automation tasks as separate stories just like how we implement
different features as part of stories. This makes the team respect
the automation tasks and they are easier to manage
- Use Page Object Design pattern to ensure the ids, reusable functions
and the actual tests are separated when using open source frameworks.
If using vendor tools, most of these complexities are handled by the
tool itself
- Be proactive about the approach to take for running automated tests
in a CI/CD pipeline. Use Maven or Ant build scripts to help in this
effort. Use build tools like Jenkins, Travis CI, TeamCity to invoke
your tests on each code check in Establish processes to be followed
by the entire team related to coding practices, PR reviews,
prioritizing features for automation etc
- Make automation results are visible to the entire team via
dashboards. Address them during daily stand up meetings,
retrospective meetings and other team meetings.
- Give sufficient training to the entire team to help them do better
automation. Send them to conferences and meetups to bring in outside
knowledge into team
-Raj