Every digital organization wants to release new features quickly, frequently and with high quality. Unfortunately, in traditional IT organizations, speed and quality are often mutually exclusive, and management is forced to choose one over the other. This was because traditional quality assurance processes were performed manually, so ensuring an application was bug-free required a slow, costly and inefficient quality assurance process. Skipping quality assurance resulted in faster development but a buggy and low quality product.

When approaching digital transformation, companies need to rethink their culture, organizational structure and process in order to achieve high efficiency without sacrificing in quality, reliability and predictability.

When Grid Dynamics was founded in 2006, we had the advantage of beginning our internal QA practice with the newly-established industry best practices of full automation, cross-functional teams and DevOps culture. Since then, we have grown a team of several hundred world-class engineers that focus on providing quality assurance via automation and close collaboration with development teams.

Over the past several years, we have implemented automation, test data management and service virtualization to help both our large and small clients achieve efficient quality assurance. Through test automation, we have provided close to 100% coverage to our clients, and have reduced test execution times from weeks to hours and even minutes.

Experts in QA automation

Organization and architecture

Three key prerequisites enable high quality, efficient testing:

  1. Microservices architecture enables applications to be built with testability in mind. Strong contracts and loose coupling of services allows them to be tested in isolation, while well-defined APIs and UI save costs on implementing and maintaining tests.
  2. Cross-functional teams with quality engineers embedded into development teams reduces the lag between the readiness of functionalities and the readiness of tests. 
  3. Close collaboration between quality engineers, product owners and system analysts ensures that the delivered functionality is aligned with business expectations.

Test data management

Quality engineering and test automation requires data:

  • Testing on real production data is not always possible or advisable due to efficiency, security, compliance or test coverage concerns. A production data snapshot may not represent all corner cases, but synthetic data can also miss certain corner cases that appear in production due to human error.
  • Too often in the industry we see flaky tests that depend on hard-coded identifiers or uncontrolled changes in data sets, making the tests useless.
  • Our approach is to test both carefully generated synthetic data sets and obfuscated production data when possible. If tests and test frameworks are properly implemented, it is possible to have the same test work on both synthetic and real data.

Dependency management

Most systems under tests have dependencies, typically in the form of other services:

  • A number of techniques exist to isolate services from dependencies during testing, including development of mocks and stubs, and using tools for service virtualization.
  • Choosing the right level of isolation during testing is a must. Depending on the service and the nature of dependencies, service virtualization may increase or decrease the efficiency and cost of testing as well as the quality of the end result.
  • Our approach includes analysis of the business logic and contracts of the service under test and its dependencies to choose when to use stubs and mocks, and when to use real dependencies.
Unit testing

Unit testing

Is typically performed by developers, but is an integral part of quality assurance.
Service-level testing

Service-level testing

Performed via API for individual services, and covers most test cases to allow releasing services independently.
Integration testing

Integration testing

Is performed end-to-end on the UI level, and may be required for high-risk changes.
Performance testing

Performance testing

Done continuously as part of the CI/CD pipeline to ensure that new changes didn't affect throughput or latency.
Stability and reliability testing

Stability and reliability testing

An important sub-type of non-functional testing, and a component of chaos engineering.
Production testing and advanced monitoring

Production testing and advanced monitoring

Performed on live service instances in production to ensure that services continue working as expected after release.
Data quality testing

Data quality testing

A sub-type of production testing to monitor the correctness of data flows in transactional and analytical systems.
Security testing

Security testing

Performed with modern code analysis and site vulnerability detection tools.

Integration with the continuous delivery pipeline

Integration with the continuous delivery pipeline
Performs containerization
End-to-end testing for AngularJs
Unit testing framework for Java
Framework for testing web applications
High-level, interpreted programming language
General purpose programming language
Framework for behavior driven development (BDD)
Automated testing tool for SOAP and REST APIs
Web server and automated testing tool
Testing framework for Java
Tests other software in behavior driven development style
Application framework for Java
General purpose programming language
Puts database into known state between test runs
Tool to write Android UI tests
Framework for Android unit tests
Cloud platform for DevOps teams to achieve continuous testing
Test automation framework for mobile apps
Continuous integration for Java
Load and performance testing framework
Build automation tool for Java
Load testing tool
Framework for continuous performance testing
Performs containerization
End-to-end testing for AngularJs
Unit testing framework for Java
Framework for testing web applications
High-level, interpreted programming language
General purpose programming language
Framework for behavior driven development (BDD)
Automated testing tool for SOAP and REST APIs
Web server and automated testing tool
Testing framework for Java
Tests other software in behavior driven development style
Application framework for Java
General purpose programming language
Puts database into known state between test runs
Tool to write Android UI tests
Framework for Android unit tests
Cloud platform for DevOps teams to achieve continuous testing
Test automation framework for mobile apps
Continuous integration for Java
Load and performance testing framework
Build automation tool for Java
Load testing tool
Framework for continuous performance testing

Get in touch

We'd love to hear from you. Please provide us with your preferred contact method so we can be sure to reach you.

Please follow up to email alerts if you would like to receive information related to press releases, investors relations, and regulatory filings.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.