To understand the current and future state of automated testing, we spoke to 14 IT professionals intimately familiar with automated testing. We asked them, "What skills do developers need to ensure their code and applications perform well with automated testing?"
Here's what the respondents told us:
- Proactively engage with security and push security to do more with a reference architecture and security requirements and specific security controls. The other is around standardization. Different technologies have different business value; the more you can standardize the easier to establish a test harness that works and can scale.
- When developers need to fix a product and don’t have answers from security, they should push back. Do not try to fix things in isolation. Ask for the code. Ensure you are using secure frameworks and code to fix solutions. Don’t try to fix things yourself get code-level recommendations from security.
- Most important is for people to 1) make sure everyone is working together, and that engineering and testing are working together from the beginning. Identify what can go wrong. Transfer the information of what’s going on that can affect someone else. Set up a test design improvement committee. Identify the right way to address the problems. 2) Design for tests up front in addition to manufacturing. The tests need to be able to scale. Testing is not a single point; it’s a lifecycle in the evolution of testing.
- Most developers have the skills but lack the context or don’t have the time to do research in the area. Think about building a more testable product with tagging elements. It’s easier for automation engineers to build reliable and performant indicators. Don’t fall into the trap of picking bad locators. Developers need to work with automation engineers to learn how to think about what the tester will need. Have good documentation around exposing Rest APIs to the frontend. Work with the QA team to generate seed data to plug into tests. Also, talk to product owners about investing in the testability of the application. A more mature shop will put hidden tools and features in the UI to make testing easier.
- Follow coding best practices is where we need to educate our customers. Focus on test-driven development. Start thinking about expected behavior and user acceptance criteria and start designing tests right from the beginning. Start running automated tests before you create a build and send for quality analysis. We need a mind shift where developers and QA collaborate and work together to ensure automation is designed with the right environments and expectations.
- Don’t compromise how you develop for testing. Make the best product for the customer. To produce high-quality code understand the business story, find the minimal, well-designed approach.
- “Testability” is a major priority. UI elements should be well-tagged, and internal states and data should be accessible. A good design of an application, with well-defined components (like microservices) and well-defined API’s for them, will facilitate extensive automated testing.
- 1) Developers should design code with clean interfaces that lend themselves to automated testing. Testing must go beyond the UI and must include the API layer. 2) The fewer dependencies the code has, and the simpler the environment the code needs to run in, the higher the chance of automated testing succeeding. 3) The code should have no side effects that will prevent automated tests from running reliably.
- The first approach developers need to consider is to take time and be aware of the downstream automation framework and the impact of any code/object changes. Secondly, developers need to understand that now their job is to not only write code but to do so much more such as replicate production performance defects or issues in relative safety. Like DevOps, where developers don't have the production access, virtual machines or containerized environments make development environments one step closer to production in terms of configuration, if not size. The flip side of that is enabling development teams to replicate production performance defects or issues in relative safety.
- When doing UI automation the automation has to be able to recognize the objects and the object identifier must be easily identified. In general, developers understand how to do unit-level test automation, it would be helpful to understand how to do functional and feature testing. Understanding automation from an API level is beneficial to avoid redundancy – test once.
- Use it judiciously so it doesn’t slow you down if you’re a start-up in a state of flux. Don’t have code coverage percent as a KPI. Have the ability to connect to the device, the cloud, and the key function register.
- Think about what you want to accomplish. Understand why automation is important and what problems it solves. Think about the maturity level, skills, environment, and tools needed to automate. Determine what makes sense to do that you are capable of doing. Look at alternative solutions to automation. Be proactive and understand strategies, goals, and assess your capabilities.
- [Object-oriented] programming, testing, software architecture, testability/test automatability, test automation design patterns, awareness of code smells.
Here’s who shared their insights:
- Drew Horn, Senior Director of Automation, Applause
- Angie Jones, Senior Developer Advocate, Applitools
- Isa Vilacides, Director of Engineering, CloudBees
- Himanshu Dwivedi, CEO, Data Theorem
- Antony Edwards, COO, Eggplant
- Kevin Fealey, Senior Manager Application and Product Security, EY
- Hans Buwalda, CTO, LogiGear
- Malcolm Isaacs, Senior Solutions Manager, Micro Focus
- Madan Mohan, Global Head of Travel and Transportation, NIIT Technologies
- Jared Go, CEO, OhmniLabs
- Derek Choy, CIO, Rainforest QA
- Nancy Kastl, Executive Director of Testing Services, SPR
- Rishikesh Palve, Integration Product Manager, TIBCO
- Ray Wu, CEO, Wynd