Continuous testing is a modern technique that depends on actionable feedback at each stage of the software delivery cycle. The main goal of Continuous Testing is to test early at all phases of the SDLC with automation, test as often as possible, and get faster feedback on the builds.
Continuous testing executes automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate, thus gaining actionable feedback at each stage of SDLC.
Test as early as possible: Testing as early as possible is one of the key principles of continuous testing. By testing early and often, you can identify issues and defects early in the development process, which can help reduce the cost and time required to fix them.
Test automation and in-sprint automation: Test automation is the key enabler for continuous testing. It is recommended to automate the tests in-sprint so that all the regression testing can be run automated along with the automated pipeline.
Balanced test pyramid: The testing pyramid is a model that breaks automated tests into three main categories: unit, integration, and UI (or e2e tests). This allows the development of a more efficient test suite and helps developers and QA specialists achieve higher quality. The pyramid metaphor tells us to group software tests into buckets of different granularity.
The bottom layer of the pyramid consists of unit tests, which are small, fast, and focused on testing individual functions or methods.
The middle layer consists of integration tests, which test how different system parts work together.
The top layer consists of UI (or e2e) tests, which test how the system works from a user’s perspective.
Automated Pipelines with Quality Gates: Automated pipelines with Quality Gates are an important part of continuous testing. Quality gates are checkpoints that ensure that code meets specific quality standards before proceeding to the next stage of the pipeline. Automated quality gates can help ensure that code is tested thoroughly and meets certain performance and architecture metrics.
Quality Gates can be implemented at different pipeline stages, including unit testing, component testing, integration testing, and end-to-end testing. By implementing quality gates at each stage of the pipeline, you can ensure that the code is tested thoroughly and meets specific quality standards before proceeding to the next stage.
The Continuous testing approach recommends various best practices listed below:
Continuous Testing in CTC
Stage 0 (Landing Zone):
Application Source Code
Functional Assurance Test Code
Experience Assurance Source Code
Stage 1 (Pre-Build):
Source App Front-end & back-end: Front-end testing validates that GUI elements of the software are functioning as expected / per the requirement. Back-end testing validates the database side of web applications or software.
Static Code Analysis / Code Quality Testing: Static analysis refers to reviewing the software source code without executing the code. This analysis is carried out by developers using tools such as SonarQube etc., to check the syntax of the code, coding standards, code optimization, etc. Developers perform this analysis at any point during the development or configuration phase in the project lifecycle.
Unit Test Code & Coverage: Unit testing is a software testing technique that focuses on verifying the correctness and functionality of individual code units. Each unit, typically a function, method, or class, is tested independently to ensure it behaves as expected and meets its intended functionality.
Stage 2 (Post-Build):
Smoke Test: Smoke Testing is performed to verify deployed build with minimal critical flows (High-level functionality) to ensure the application is stable enough for further development or testing and should not exceed 15 mins for execution.
Stage 3 (Functional Assurance):
UI Testing: UI testing is a testing type that helps testers ensure that all the fields, labels, buttons, and other items on the screen function as desired. It involves checking screens with controls, like toolbars, colours, fonts, sizes, icons, and others, and how they respond to user input.
API Testing: API testing is a type of software testing that involves testing application programming interfaces directly and as part of integration testing to determine if they meet expectations for functionality, reliability, performance, and security.
Stage 4 (Experience Assurance):
Security Testing: Security testing is a sort of software testing that identifies vulnerabilities, hazards, and dangers in a software program and guards against intruder assaults.
Accessibility Testing: Accessibility testing evaluates a product, service, or environment to determine how accessible it is to differently-abled people.
Performance Testing: Performance testing is a type of software testing that focuses on evaluating the performance and scalability of a system or application under its expected workload. It is a testing technique to determine system performance regarding sensitivity, reactivity, and stability under a particular workload.
System Components |
MVP |
MVP+ |
---|---|---|
Static Code Analysis |
+ |
|
Code Reviews |
+ |
|
Version Control |
+ |
|
Unit Testing |
+ |
|
Environment Provisioning |
|
+ |
Automated pipelines with Smoke testing as Quality Gate at all Envt. |
+ |
|
Automated pipelines with Regular Quality gates at all Envt. |
|
+ |
Automated pipelines with Advanced Quality Gate at all Envt. |
|
+ |
Balanced Test Pyramid |
+ |
|
Test Design Practices |
+ |
|
In-sprint automation |
|
+ |
Functionality |
Tool Name |
---|---|
Test automation and in-sprint automation |
Git, UTAF |
Version Control Collaboration |
Azure DevOps Repo, Bitbucket |
Build automation tools |
Jenkins, Bamboo, TeamCity, Azure DevOps |
Containerization and orchestration tools |
Docker, Kubernetes, OpenShift |
Test Automation |
JUnit, NUnit, Rest Assured, Selenium |
Name |
Responsibilities |
---|---|
QE Architect |
|
Developer |
|
Build Engineer |
|
Test Automation Engineer (TAE) |
|
QA Specialist (Functional SME) |
|