Quality and speed are both important
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.
Experts in QA automation
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.
Building blocks
Organization and architecture
Three key prerequisites enable high quality, efficient testing:
Test data management
Quality engineering and test automation requires data:
Dependency management
Most systems under tests have dependencies, typically in the form of other services:
Full automation of all quality aspects
Unit testing
Is typically performed by developers, but is an integral part of quality assurance.
Service-level testing
Performed via API for individual services, and covers most test cases to allow releasing services independently.
Integration testing
Is performed end-to-end on the UI level, and may be required for high-risk changes.
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
An important sub-type of non-functional testing, and a component of chaos engineering.
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
A sub-type of production testing to monitor the correctness of data flows in transactional and analytical systems.
Security testing
Performed with modern code analysis and site vulnerability detection tools.
Integration with the continuous delivery pipeline
Technology stack
Performs containerization
End-to-end testing for AngularJs
Build automation tool
Automates software development process with continuous integration
Testing framework
Unit testing framework for Java
Framework for testing web applications
High level programming langauge
Popular general-purpose computer programming language
Framework for behavior driven development
Writes, runs, integrates, and automates API tests
Web server and automated testing tool
Testing framework for Java that covers many kinds of tests
Automated acceptance tests written in behavior driven development
Application framework and inversion of control container
General purpose programming language
JUnit extension for database-driven projects
Write, code, build, build, and design Android UI tests
Framework for Android unit testing
Cloud platform for continuous delivery
Test automation framework
Performs containerization
End-to-end testing for AngularJs
Build automation tool
Automates software development process with continuous integration
Testing framework
Unit testing framework for Java
Framework for testing web applications
High level programming langauge
Popular general-purpose computer programming language
Framework for behavior driven development
Writes, runs, integrates, and automates API tests
Web server and automated testing tool
Testing framework for Java that covers many kinds of tests
Automated acceptance tests written in behavior driven development
Application framework and inversion of control container
General purpose programming language
JUnit extension for database-driven projects
Write, code, build, build, and design Android UI tests
Framework for Android unit testing
Cloud platform for continuous delivery
Test automation framework
Our engagement model
Our approach is to embed specialized quality engineers directly into application development teams. With this approach, we build cross-functional teams which have all the necessary skills and distinct specializations within each team, as we believe that this setup provides the highest efficiency, quality and speed. In such teams, a developer and a quality engineer work on a feature together. That way, when a developer completes the feature, it is already covered by automated tests.
When we engage with clients, we start by analyzing their existing processes and technical approach. This analysis helps us write personalized, strategic and tactical improvement plans. We then embed quality engineers into development teams and begin improving the quality of products, or enhance efficiency by automating existing manual test cases. With this approach, our client teams are hands-on and learn quickly, which helps spread the right culture, skills and processes across the organization.
Read more
Get in touch
Let's connect! How can we reach you?
Thank you!
It is very important to be in touch with you.
We will get back to you soon. Have a great day!
Something went wrong...
There are possible difficulties with connection or other issues.
Please try again after some time.