New to Mainframe Community

 View Only

QA Automation in Agile Development: My Summer Experience as a Broadcom Mainframer

By Thomas England posted 2 days ago

  

As a Next-Gen Mainframer, I’ve always realized the importance of Quality Assurance (QA) as an integral part of any development process. The phrase “Customers don’t want to be treated as QA” couldn’t be more impactful and imperative; however, developers are human, after all, and they can sometimes overlook steps within this crucial task. In any product, especially a complex one, developers cannot plan for every possible issue that may arise after its release. 

The obvious answer to this problem involves thorough testing, but this answer raises another question: how comprehensive should this testing be? With time spent in the testing phase as the investment, and a clean, working product or feature as the return, where is the line that yields the best return on investment, without extending deadlines? 

During my time this summer working with the z/Raiders development team at Broadcom, it became apparent to me that this question is much more complicated than it appears, but many experienced developers become confident in drawing this line from a clearly defined, strong, yet efficient development process. I began learning how to minimize investment and maximize return using two main strategies: Agile development practices, which allow for close customer communication and better adaptability, and comprehensive automated tests, which produce increased testing speeds, more accurate results, and provide broader coverage. 

Why Automate QA?

Before my experience at Broadcom, a customer reported an issue while using Detector, one of Broadcom’s Mainframe products, which aims to provide comprehensive monitoring and analysis of Db2 databases. A customer might need to store information in a database for a variety of reasons, but the mechanisms with which they add, read, modify, delete, or generally manage their records can significantly impact the performance of their products. Detector allows the customer to view an extremely large number of metrics related to these operations, as well as to manage and consolidate these metrics through the use of specific time intervals, thresholds, profiles, datastores, and so on. 

In this reported case, the customer navigated to a panel in Detector intending to view certain metrics. Unfortunately, Detector was not working as intended for this specific use case, so the customer was greeted with a panel of zeros in place of the metrics they had expected to see. 

To avoid this issue occurring in Detector’s future releases, I wrote an automated test to navigate to this panel and validate its values. If this test were to be performed manually, it would have taken more than double the amount of time to execute. Below shows this example being performed manually versus programmatically in real time (see gifs): 

Gif showing the manual process of validation
Gif showing the automated process of validation

This test and all other automated tests written in the automated testing suite project were designed so that they can be used in tandem with one another - this means that they can be placed together like building blocks to create many specific customer use cases, such as the one that brought the aforementioned customer to the defective screen. Any time a new feature is under development, these tests can be strung together in a matter of minutes. In contrast, performing the same tests manually could take hours or even days to prepare and execute. 

This test is a small example from the many tests I wrote. Others included automating the creation of multiple, different metric collection mechanisms such as collection profiles and resource groups, then automating the validations of these profiles, groups, and the data associated with them. 

The Role of QA Automation in Agile Development 

Throughout my experience in working at Broadcom, I saw how well automated testing fits into the Agile development process. Both strategies aim to minimize time as an investment and maximize performance as a return. Agile is all about speed, iteration, and responsiveness - and automation enhances those qualities. 

The testing phase of the Agile process is crucial for QA. With automated testing, developers can receive quicker feedback, and thus they can release products or features faster and more frequently. On the z/Raiders team, we incorporate our automated testing using a Continuous Integration/Continuous Delivery (CI/CD) pipeline, which automates the project’s integration and deployment in an isolated environment. This strategy has many benefits, including: 

  • Streamlined building and testing phases for each development cycle 
  • Risk reduction for defects that might slip through the cracks 
  • Increased collaboration among developers who are no longer confined to performing mindless, repetitive tasks alone at their computers 

During my time working at Broadcom, I learned that Agile and Automation work best together. Automation brings out the best in Agile by improving its emphasis on efficiency and quality, and Agile, by its nature, already provides the ideal environment for automated testing implementation. 

What I Learned

Working as a Next-Gen Mainframer not only taught me hard skills related to Mainframe, QA Automation, and the Agile development process, but it also allowed me to be fully immersed in the corporate environment. I learned how to apply the skills I’ve learned from university courses, but I also learned how to acquire new skills without the aid of a structured course curriculum. Working on a large project, such as the aforementioned automated testing suite, required me to become comfortable with building on top of existing code using frameworks, libraries, and coding strategies that I had never seen before. More importantly, the existing code had been written for use in an environment that I also had never experienced. 

Due to the short duration of my Next-Gen Mainframe experience, I had to adapt my learning process by asking questions, taking detailed notes, and running existing code in isolated environments to dissect it. These adaptations helped me learn to understand the existing coding strategies, standards, and documentation to implement in my additions. 

The skills I’ve learned in my real-world experience here will help me tremendously in my future career, college courses, and personal projects. I am grateful for the guidance that I received from my manager, Scott Barlev, who challenged me appropriately in areas where I felt I hadn’t been challenged enough, and helped me through areas where I needed extra time and assistance. My co-workers and co-Next-Gen Mainframers also made my experience much smoother by welcoming any questions I had and making collaboration easier through sharing their strategies and experiences. 

0 comments
4 views

Permalink