July 19, 2016 | Bill Thornton
Quality Assurance: Core Foundations and Key Factors
The discipline of Quality Assurance started with the Industrial Revolution, and sometimes it feels like it hasn’t changed much since then. While software development has evolved over the years, QA took some time to catch up. The reality is that software quality is not a functional department anymore, but rather a culture change to an organization.
Quality Assurance is, in fact, made of many components and many different aspects of testing. At Tango, we understand delivering high quality products is mission critical for us and our customers. As such, we have created and implemented a quality assurance structure which accounts for all of these components and have processes to address each one.
To support our “Continuous Delivery” approach of software development, a standard deployment pipeline becomes the foundation of excellence. Using this approach and ensuring a deep understanding of all the factors that make up quality, helps Tango plan and execute successfully.
In this series focused on software Quality Assurance, I would like to share with you what I consider to be some of the core foundations and some key factors used by Tango to ensure quality for all our customers.
In the first part of this series let’s look at the foundation of a Deployment Pipeline. Deployment pipelines are a central part of achieving Continuous Delivery at Tango. The goal of the pipeline is to detect any changes that will lead to problems in production and provide feedback quickly to Tango’s development team.
The pipeline represents a progression commencing from development through quality assurance and into production. It consists of a set of processes, gates and audits to insure development is accurate and meets the intended solution.A standard set can consist of compilation of code, running of unit tests, static analysis functions, automatic deployment, integration tests, user interface automation, manual and performance testing.
Tango’s Deployment Pipeline Stages:
Each stage has a primary and secondary owner. The activities that make up the stage consist of both automated and manual processes.
Let’s define activities for the stages listed above.
The stage covers the triage and development of the solution, which include internal development, quality controls and source control systems.
The Commit stage includes the automatic compile process and builds and deploys the application – and executes development tests.
The Automation Stage kicks off three main test suites which are automated: smoke test verification, integration, and verification. These allow for quick feedback to development along with long regression test suite runs.
While we want to automate as much as possible, manual testing is always needed to help test usability, business terminality and exploratory testing.
Performance Testing is single-user testing supported by end-to-end testing. Most of this testing is done by UI Automation testing. During this stage the timings are reviewed and issues are created when areas do not meet the performance goals. Load testing consists of a short, 2-4 hour, test with multiple ramps that tests that average load.
Final Deployment Stage:
The Final Deployment Stage enables us to set up the configuration needed to deploy code to the environment. This provides full control for deployment activities, ensuring the same code is deployed to the final environment that has been tested and certified.
Planning and understanding the deployment pipeline is critical to controlling the gates and ensuring quality.
At any of these stages, Tango can make a determination if the pipeline should halt to address issues, or be allowed to continue to the next stage reporting any issues. To ensure a consistent process, it is important to have a clear understanding of what activities are mandatory and what activities are optional for each stage.
I’ll take a deeper dive into more of the features and factors that impact quality in upcoming posts.