System Approach to Test Automation
Test automation is a critical and integral part of Continuous Integration and allows you to stabilize your product while saving time and spending on quality testing. It is the most efficient way to detect bottlenecks on any software lifecycle stage and carry out regression testing.
We have been creating automated tests since 2011. Since then, we have successfully completed over 50 test automation projects, acquired vast experience in the sphere, and developed an integrated approach to automation testing.
Our company applies CI/CD (Continuous Integration/ Сontinuous Deployment) for all the projects. We integrate our automated tests to the CI/CD processes from the very start and benefit immediately, thus justifying your investment in automated testing. We provide a high level of testing arrangement through professional management and ensure the best practices of automated tests and product quality control for your project. We apply all available automation related tools and efficient approaches in our work, such as Test Driven Development, which is often used in the Agile projects. Our test automation engineers are aficionados of Data Driven Testing. We have accumulated large experience during the use of this approach, which allows us to cover and stabilize the most crucial parts of a product efficiently and swiftly.
With us, you can be sure your project will be managed by experienced engineers with design skills. They are capable of creating required OOP models (to implement a PageObject pattern and create REST API tests, for instance) and scalable architecture during the automated test development. That way they strive to formalize their practices into reusable components. JazzTeam experts solve test automation challenges of any complexity: they create Unit tests of Java classes and frameworks, they implement integration tests of app architecture layers, test the complex asynchronous extensive SOA apps processes and web user interfaces.
We create open-ended clear-structured automated tests that are easy to develop and maintain, support them with comprehensive documentation, and establish a test-management process. We set up CI/CD so that our customers can manage the automated test launch independently.
In our work we adhere to the following automated testing stages.
Automated Testing Implementation Stages
Our Services
Web App/Web Interface Testing
Most often we apply a stable and reliable platform called Selenium/WebDriver, but we are not limited to this tool and use other frameworks, such as RestAssured, Appium, Cucumber, Robot Framework.
Unit Testing
Unit testing of REST API, classes, components, frameworks, apps, and services written in Java with the help of Unit/TestNG (including other Java technologies and libraries). We provide comprehensive work to stabilize all app constituents and apply Data Driven Testing to automate «narrow» and unstable system parts. We create frameworks and architectures to enable more extensible and sustainable testing of your product.
Integration Testing
We conduct an audit, consulting, and technological research as our services in order to select suitable tools. We also create specialized frameworks. That way, with the help of our high level of design skills we efficiently solve challenges on the clients’ projects (such as those with a complex SOA architecture) and provide integration testing of large-scale products with lots of subsystems. That type of service also includes drawing up test plans, creating test cases, executing tests after module integration, identifying bugs, and retesting after their fixes (regression testing). We have solid experience and solve complex tasks related to integration testing, applying the best Java approaches and practices.
Tests Run Infrastructure (CI/CD and DevOps)
Test run infrastructure (CI/CD and DevOps), including configuring CI servers (we usually apply Jenkins) on your or our servers.
Consulting on How to Integrate Test Automation for Your Project
At the planning or implementing test automation, a customer may experience certain challenges, questions, or additional risks. Regardless of the service type provided, we always discuss and solve the customers’ issues and share our experience. Still, there are cases when a customer may require professional consulting. These consultations can be combined with coaching and presence of our experts in the customer’s office for deeper audit and experience exchange. If the case is even more complicated or at the instance of customer key business executives, our company’s CEO Dzmitry Harachka (who also provides IT consulting services as an independent expert, zmicer.consulting) is involved to solve the most complex project issues.
Test Management
Test management: planning (including the choice of suitable infrastructure and frameworks), approving a test strategy and test plans, managing test development, aligning with a regression strategy, providing customer reports, participating in product release control.
We always adapt to the customer’s needs and together create a suitable cooperation approach:
- Cooperation in terms of a single service (a product requires only test automation).
- Several types of services (test automation and CI/CD integration).
- Full range of services (build a project from scratch, including consulting, management, development, testing, and CI/CD integration).
*In case when we are collaborating in terms of product development, the fulfillment of test automation is included in the provided service.
It is more profitable for you to order a test automation service from us than delegate this task to your dev team. Test automation is a complicated process, which requires vast time and money spending if engaged specialists don’t have enough experience and competence. Moreover, you cannot be sure to get a successful result if the task is unfamiliar to your team. Outsourcing test automation to a third party also has important advantages: objective and unbiased quality estimation of your product.
With us, you get not only high-quality automated tests but also a comprehensive solution of issues, related to test and release management and CI/CD integration.
The culture of our company develops and builds up a proactive attitude in every employee. While working on projects, we propose new ideas and solutions that bring additional value to the clients as well as consult on challenging issues. Such cooperation results in a competently created test automation process as well as required information support. Our experts are ready to mentor your team to help you apply the recommended practices.
Solid management is an important part of our test automation service. We adhere to the project management culture elaborated by us and apply standardized and formalized processes. Our managers control the project status, coordinate team actions, increase productivity via constant facilitation, take responsibility for all communications, and harmoniously merge into the ecosystem of your company. Learn more about our vision of a professional manager role in your project.
At JazzTeam, we apply flexible approaches for all our services: we rely on the Agile philosophy, build processes according to the Scrum methodology, and use eXtreme Programming practices and techniques in our everyday work. That way we ensure transparency of interaction and the possibility for the customer to actively get into the product development process. Working with us, you can choose the degree of project involvement: starting from getting detailed project statuses from our managers to taking part in daily team stand-ups and retrospectives at the end of an iteration.
Our professional work approach allows us to deliver high-quality software consistently, achieve the goals on time, and maintain team productivity at the high level throughout the project.
Deep Expertise
We have been professionally engaged in test automation for over 10 years (since the company was founded).
We work with large-scale and long-term projects. Our portfolio contains cases with 5,000 and 8,000 automated tests (most of them are run every night in Jenkins) and we deliver test automation services to our regular customers from Europe and the US that last 5-6 years.
We possess R&D expertise. We have worked with Selenium WebDriver for over 10 years, know its possibilities and features, which allows us to swiftly create stable automated tests, and solve complex challenges.
We have developed our own product based on Selenium WebDriver for test automation that is called XML2Selenium. It is a scalable Java-based platform designed to create and control automated tests. Even QA engineers with no programming experience can create UI tests with this framework. The product is integrated with JUnit and runs over Selenium.
We have created about 10 test automation frameworks with various specialized reports. Our frameworks allow creating flexible, maintainable, and scalable automated tests so that the customer’s team can develop automated tests on their own easily.
We have built our own educational system related to test automation that includes manuals and smart practical tasks as well as the whole educational process which is very close to the real project conditions. We accumulate experience and share it, use reference projects to transmit best practices to the engineers. Our test automation experts implement CI/CD into projects via variable tools, such as Jenkins and Teamcity.
We focus on Java technology while working with the backend (server-side) and use this expert experience for other directions, too. We apply the best design and development practices for automated testing: we utilize OOP, patterns, UML diagrams, ensure a high level of code reusability and maintainability, apply refactoring and code review. While working on an SOA project with complex architecture, we created a framework for integration testing, which allowed us to specify the message processing script on each system component and compare the result with a reference value, that way applying Data Driven Testing.
Featured Test Automation Cases
Read our cases of the projects we implemented. Each of them will help you understand the way test automation improves the product and solves various quality-related challenges.
How We Work
In test automation, we focus on an efficient working bundle of engineering mind when creating automated tests, expert level of CI/CD, and professional test management. This approach allows us to comprehensively solve complex tasks and share our own culture of applying the best development and testing practices.
Let’s explain, why each element of the bundle is important, and how the applied approaches and methods benefit our clients.
We always integrate the created automated tests in the CI/CD processes. This approach ensures smooth product operation and provides a clear stability control system for different versions of the product. CI/CD has a positive effect on the quality and stability of the product code. The implemented practice of continuous Unit test creation by developers also influences the project architecture quality. All this allows us to save money on software development and testing.
We integrate CI/CD iteratively and seamlessly while efficiently overcoming learned helplessness and resistance of teams. We implement a full cycle of Continuous Integration through Jenkins/Hudson (and other CI/CD tools), automate the project build with Maven. If required, we apply Docker and other container technologies to automated deployment.
Unit testing is a generally accepted standard in a modern development that provides a full-fledged Continuous Integration implementation. A combination of Unit, integration, and UI testing allows us to build stable, maintainable, and scalable products for our clients. We apply frameworks such as JUnit/TestNG and other tools, including Mockito and EasyMock, for Unit testing. We also have experience in various JUnit/TestNG customizations, including the development of our own JUnit runners.
Data Driven Testing is a method of building an automated test architecture that is based on comparing a set of input parameters with a reference result or state. DDT allows for a test written only once to be reused for various input data. An important advantage of a well-designed DDT is the possibility to enter input values and a reference result in a convenient form for all project roles: engineers, manual QA, and even Product Owners. That way transmitting a task of increasing the data array to a manual QA, for example, can dramatically reduce the cost of product testing. We have been applying DDT on a professional level since the foundation of our company, that is why we have gained huge experience and knowledge working with it (read our DDT article and see for yourself).
We apply standardized processes and think over the entire infrastructure for creating and implementing automated tests when we provide a service of test automation. JazzTeam managers dive deeply into the life cycle of your product and choose the optimal strategy for carrying out tests, manage the process of creating automated tests, and provide all the necessary reports containing the number and quality of covered test cases and fixed bugs on the regular basis. We continue to monitor the test runs on the Jenkins server and analyze the received result at the test case support stage while working closely with the customer’s managers and development team. That manner we provide a comprehensive solution to the challenges related to test management.
We apply a large technology stack to perform test automation and can easily find the right tools for you. We use Mock objects to test isolated methods. We also use Selenium/WebDriver, Concordium, Karma, Jasmine to test web interfaces, and we carry out load testing using JMeter. Check out the tools and technologies we utilize.
Issues with Project Quality? We Are Ready to Help!
Our company applies test automation on all the performed and underway projects, as it is our culture and technology values. Let’s examine those situations, where test automation is strongly required:
- There is a large number of integrations on your project, and you need to check whether all the system parts, including those beyond your control, work without fail.
- You plan to carry out a large-scale long-term project with many business functions and intend to reduce costs on testing in the long term.
- You are aimed at releasing products as often as possible. For example, once a week.
- A large dev team is engaged in the project, and you wish to maximize the independence of each team member.
- There is no way you can stabilize the quality level of your product by other means, such as manual testing and management measures.
Any of the mentioned factors should make you think about the need to implement test automation.
Frequently Asked Questions
We will conduct a systematic analysis of your quality assurance approach. We will implement the best practices: CI/CD, Unit and regression testing, DDT. That way, we will comprehensively eliminate the cause of such situations.
We have extensive experience in refactoring complex, hard-to-maintain codebases. On the stage of the source code refactoring, we assess the product state in terms of architecture, technologies used, and processes performed, and provide ways for further development of the code. Before starting the work on the codebase, we try to create the necessary Unit and Data Driven tests to control the system stability during further changes. All the found issues are covered by Unit tests that prevent bug recurrence. Thus we provide regression testing of our fixes in all product versions, which stabilizes the refactoring process even further.
We will set up professional processes that allow you to swiftly influence the product quality and provide you with all the required test management tools.
We make a bunch of test cases for manual and automated testing regularly. Based on the code analysis, we automate 20% of test cases which ensure 80% of your product stability, according to the Pareto law. We apply the tools, such as TestRail, TestLink, and Jira, which allow us to track the test coverage level.