• About Us
    • Who We Are
    • Our Work
    • Our Clients
    • Our Partners
    • Our Blog
    • News & Events
    • Insights
  • Solutions

    Analytics & Data Management

    Big DataBusiness AnalyticsData IntegrationData Warehousing

    Digital Business Automation

    Advanced Case ManagementBusiness Rules ManagementBusiness Process ManagementRobotic Process Automation

    Connectivity & System Integration

    Agile IntegrationAPI ManagementEnterprise Service Bus

    Enterprise Content Management

    Content Capturing & ImagingEnterprise Content Management

    Enterprise Portal & Mobility

    Digital Customer ExperienceDigital Workplace

  • Industry Solutions

    • Banking >
    • Government >

    Digital Banking Transformation

    Business Process Management

    Business Rules Management

    Checks Collection & Clearing

    Counter Fraud Management

    Customer Due Diligence

    Customer Onboarding

    Daily Vouchers Management

    Debt Collections & Recovery

    Instant Payment Network Gateway

    Enterprise Content Management

    Enterprise Service Bus

    Smart Analytics

    Trade Finance Automation

    Digital Government Transformation

    Business Analytics

    Business Process Management

    Correspondence Management

    Documents & Records Management

    Enterprise Service Bus

    Pensions & Social Programs

    Social Collaboration Portal

    Strategy Management

    Utility Billing

  • Services
    • Cloud Apps & Microservices
    • IT Consultancy
    • Application Development
    • Testing Services
  • Careers
    • Careers Homepage
    • Get To Know Us
    • Engineering @ Sumerge
    • Our Culture
    • Benefits & Wellbeing
    • Job Openings
    • Graduate Programs
  • Contact Us
  • About Us
    • Who We Are
    • Our Work
    • Our Clients
    • Our Partners
    • Our Blog
    • News & Events
    • Insights
  • Solutions

    Analytics & Data Management

    Big DataBusiness AnalyticsData IntegrationData Warehousing

    Digital Business Automation

    Advanced Case ManagementBusiness Rules ManagementBusiness Process ManagementRobotic Process Automation

    Connectivity & System Integration

    Agile IntegrationAPI ManagementEnterprise Service Bus

    Enterprise Content Management

    Content Capturing & ImagingEnterprise Content Management

    Enterprise Portal & Mobility

    Digital Customer ExperienceDigital Workplace

  • Industry Solutions

    • Banking >
    • Government >

    Digital Banking Transformation

    Business Process Management

    Business Rules Management

    Checks Collection & Clearing

    Counter Fraud Management

    Customer Due Diligence

    Customer Onboarding

    Daily Vouchers Management

    Debt Collections & Recovery

    Instant Payment Network Gateway

    Enterprise Content Management

    Enterprise Service Bus

    Smart Analytics

    Trade Finance Automation

    Digital Government Transformation

    Business Analytics

    Business Process Management

    Correspondence Management

    Documents & Records Management

    Enterprise Service Bus

    Pensions & Social Programs

    Social Collaboration Portal

    Strategy Management

    Utility Billing

  • Services
    • Cloud Apps & Microservices
    • IT Consultancy
    • Application Development
    • Testing Services
  • Careers
    • Careers Homepage
    • Get To Know Us
    • Engineering @ Sumerge
    • Our Culture
    • Benefits & Wellbeing
    • Job Openings
    • Graduate Programs
  • Contact Us
Quality Engineer in DevOps

Quality Engineer in DevOps

  • Posted by Yomna Anwar
  • On August 22, 2021

Nowadays, for most people, “Quality Engineers” refers to people who perform manual testing – clicking around the user interface of the system, trying to find all kind of bugs in different places. For others, “Quality Engineers” refer to people who are highly skilled in a specialized tool to test applications. Both definitions are not entirely wrong, as software quality is constantly evolving but they are missing a huge part of the puzzle. That is why we are writing this blog post to shed some light on the evolved role of a Quality Engineer and how to work with Devs in a DevOps Environment to build high-quality apps much faster.

Quality Engineering Evolution

Software Quality is an essential part of software development, with a long-standing relationship. Back in the days, there was this wall where developers build, and quality engineers manually check-in a waterfall manner. The testing activity back then was long, tedious and a huge bottleneck in the delivery pipeline. Time goes by and the software industry matures into a more agile manner. Small iterations of developing features were introduced, closing the gap between different roles in the team. Unfortunately, this was not enough as at the end of the day the testing activities were still at the end of each iteration. And then a whole new concept called “Shift Left Testing” came up.

 

Shift Left Testing is the idea of moving software testing activities to the beginning of the software development cycle by shifting it left instead of occurring at the end as it used to be. This approach is faster and more cost-effective as it avoids issues raised at later stages in the software development cycle. Issues raised by the customers on production could result in business losses, not to mention the extra cost, time, and effort to develop a fix and deliver it to the customer. While, issues raised at the earlier stage of the development cycle, can be fixed immediately with minimal cost and effort.

 

Shift left is the current trend of the industry demanding Quality Engineers to evolve into Software Development Engineer in Test (SDET) to be able to perform all different types of automation tests in the testing pyramid. Whereat the lowest level of the pyramid are unit tests whether Backend or UI, followed by integration tests, then end to end tests, and finally manual exploratory tests at the top level.

Quality Principles

There are many diverse approaches and views on how to best ensure high-quality software development. From dedicated teams of software quality engineers to cross-functional agile squads without specific assigned roles, from writing tests before code to offshore automation as a service. Organizations must choose from a range of approaches when deciding how to best structure teams and assign responsibilities to ensure software quality.

 

While the following principles encapsulate how we think about Quality, they are not prescriptive. Each project has its own requirements, technology stack, business domain, etc. and the team must accommodate the project set up to address the unique challenges facing them. Thus, the Quality Principles describe preferences but gives flexibility for the team themselves to implement the processes and approaches as they see fit. These principles are guiding stars, not commandments.

 

These principles represent our point of view in approaching quality but realizing them requires collaboration from the whole team. Quality is impacted by every aspect and role in the software development, so we cannot execute a quality approach without involving all the other roles in the process, from the Project Managers, Business Analysts, Software Engineers, etc. A quality approach is a team approach, not something solely conceived and executed by Quality Engineers. Each one has a role to play in implementing practices that ensures quality, we need a shared understanding of our quality approach and what it means to us as a team.

Quality Ownership

 

We believe that quality is the responsibility of the whole team. High-quality software delivery requires all team members to participate in ensuring the quality, responsibility for quality cannot solely fall on a single role or team member. Every member of the delivery team should know how to contribute to the product’s quality and actively execute these responsibilities. The team must feel accountable for the quality of the end product.

 

Organizations that delegate the quality responsibility to a “Quality Engineer” role and ask them to ensure that the end-product is production-ready before releasing to the customer cripple their ability to deliver fast, high-quality products. At best, this is their innocent, misguided way of ensuring the quality of their deliverables. At worst, it is an intentional attempt to dodge the accountability of having low-quality products by using Quality Engineer as a scapegoat when things go south, and issues are raised.

 

Teams that embody this principle behave differently from others, there is no “Why didn’t the QE find this issue?” or “I won’t test my code, the QE will check it for me” or “This is not my job”, etc. There is only continuous collaboration between all team members, driving them towards one goal which is delivering fast, high-quality products to the customer. It is our belief that teams that behave that way achieve more successful results and create a healthy environment for people to enjoy working together. By following this principle, the team will create a far stronger force towards quality than having a single role ever could. That said, the responsibility of the QE here is to help the team realize this principle.

Quality Engineering as a Specialty

The role of a Quality Engineer, in our opinion, is to empower teams by focusing on quality. Quality Engineers bring expertise in software testing, test automation, agile processes, CI/CD, and DevOps, among other things. Everything has an impact on software quality, and that’s why QE must have great knowledge of all aspects of software development from software design, architecture, technology stack, delivery process, etc. Quality Engineers use this expertise to derive the team towards achieving high-quality products, but they do not own it.

 

Quality Engineers are an integral part of the agile development team. They do not sit outside waiting for the rest of the team to release a new build to be tested. They are fully embedded into the team and work together on the product development as equals. Quality Engineers participate in all kinds of activities like building test automation frameworks, creating automated tests, pairing with developers in user stories implementation, asking customers for feedback on stories, collaborating with the business analysis team in setting the acceptance criteria for stories, and talking with business users to better understand their use cases, etc. Quality engineering is a very demanding role that requires great communication skills, great expertise, and a creative destructive mindset.

 

Nowadays, some organizations remove the quality roles entirely from their teams and expect developers to test their own code, basically own their code from design to production. We believe this approach works for certain organizations in specific circumstances, and we are not here to judge their approach. However, finding software engineers who also have expertise in software quality is very challenging and at the end of the day you did not remove the quality practice, you just mixed it. Allowing team members to specialize in Software Quality, in our opinion, leads to better, more productive teams.

Test Automation

 

Test Automation is a must if you want to achieve high quality and fast product delivery. The complexity of the software and the shift towards incremental and iterative development approaches make it practically impossible to keep pace with sluggish manual testing. To ensure that testing activities keep pace with development, test automation is a must. Lack of investment in test automation in iterative delivery will lead to a huge hindrance in product delivery.

 

While most organizations give priority to test automation, many of them still fail to reap the benefits of faster delivery. They start writing automated tests heads-on without thinking about the Test Pyramid (Check our Blog Post about ‘Finding the Right Balance between End to End and Unit Tests‘). Without a suitable testing strategy, requiring a team to automate X percentage or Y number of all tests can result in bloated, slow automation suites that are frequently ignored and rarely deliver value.

 

Test automation should be treated like any other software development project, with the same rigorous architecture reviews, code reviews, and other processes as production code. Quality Engineers work with the team to create, improve, and adjust their automation strategy according to the specifics of the technology stack and software architecture. Leading these automation approaches and defining their testing strategy is a key area of expertise that the Quality Engineers bring to the agile development teams that make a huge impact on the team’s delivery velocity.

Shift Left Testing

It is our belief that continuous collaboration between different team members is the core of successful delivery teams. ‘Shift Left Testing’ as a concept supports this belief and specifically calls out the need for development and testing activities to be inseparable. Team members collaborate in real-time without any barriers inhibiting their interaction. It means that both quality engineers and developers are collaborators rather than cogs in a production line. It means that quality is built in the product as software is developed and not something to be ensured later, at the end of a sprint or before a production release.

 

While we support this practice, we believe that the particular roles and responsibilities and day-to-day activities should be left to the team to have an internal agreement on what works for them. What works for a team does not necessarily have to work with other teams. In which phase should we pair as a team in the user story? Should we work using a TDD approach? Who exactly is going to write which types of tests across the testing pyramid, and when? The team should be empowered to answer all these questions and come up with an approach that best suits their needs.

Conclusion

Time is, after all, money. Remember that getting the software to market faster gives you a competitive advantage. And following the Quality Principles outlined above will ensure that you beat your competition in the market with higher-quality applications.

 
Recent Blog Posts
  • Event Streaming: Enhancing Efficiency in Banking 
  • Your Guide To Integration Modernization
  • APIs: Transforming Chaos into Order
  • Event Streaming Simplified
  • Unlocking the Power of Spring Data JPA
Categories
  • Careers
  • Webinars
  • blog
    • Educational
  • Technology & Business
    • Digital Business Automation
    • /Modernization & Cloud Native Apps
    • Banking
    • Agile Integration
  • Software Engineering
    • Application Servers
    • Application Testing
    • Business Analysis
    • Frontend
    • Microservices
    • Uncategorized
  • Blog Posts
  • News & Events
  • Featured

Writing a Declarative Jenkinsfile for Angular Applications

Previous thumb

A Brief Introduction to Machine Learning

Next thumb
Scroll
Follow us

Significant change, positive impact and passion are our fuel. We have a unique culture reflecting the way we think and act. A culture that encourages freedom and responsibility, high performance, customer centricity and innovation.

Global Locations

Egypt

Saudi Arabia

United States

About us

Who We Are
Our Work
Our Clients
Careers
News & Events
Insights

Services

Cloud Apps & Microservices
Application Development
Consultancy
Testing Services

Solutions

Analytics & Data Management
Business Process Automation
Agile Integration
Enterprise Content Management
Enterprise Portal & Mobility

Industries

Banking
Government

Latest Blogs
  • Database Events & Triggers
    December 14, 2022
  • Design Patterns
    August 23, 2022
Copyright Ⓒ 2024 Sumerge. All rights reserved.
  • Blog
  • |
  • Support
  • |
  • Contact Us
  • |
  • Privacy Policy
Sumerge
Manage Cookie Consent
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
View preferences
{title} {title} {title}

     

    Book A Free Consultation Session