Automated testing in CI/CD pipelines: types and stages
In the software development life cycle, automated testing integrated in the continuous integration and continuous delivery (CI/CD) pipeline is critical to ensuring software quality. Automated testing helps find errors quickly, reduces manual work, and improves test accuracy and coverage. In the CI/CD pipeline, automated tests are usually performed after the build is completed and before the code is deployed, including unit tests, UI tests, and integration tests, which can be run in parallel to speed up execution. Integration testing is especially important in a CI/CD pipeline because it tests the interactions between application components and validates the overall functionality of the system.
# In the previous article, we discussed various use cases for automated test cases for agile teams. One scenario is when a team wants to integrate testing with every build and implement continuous integration as part of the build process.
In this article, we will discuss integration testing in continuous integration/continuous delivery platforms.
Let’s start with the basics.
What is automated testing?
Software testing refers to executing tests based on a set of test cases and comparing actual results with predicted results. There are several steps and testing techniques to follow during this process. Testing is essential to ensure product quality. This process is typically done manually by teams of testers. However, in automated testing, the process is automated using software tools and techniques. Here, manual steps are no longer required but scripts are automatically created and test cases run. Automated testing eliminates human error, coverage, and many other issues. It also saves time, improves the convenience of conducting tests, and increases efficiency and effectiveness.
Automated Testing in the CI/CD Pipeline
Automated testing is a core part of the CI/CD pipeline because fast-running tests provide early feedback to developers. Problems or errors detected early have the potential to be corrected sooner. As a result, published products will be more accurate and error-free. This improves the overall quality of the product, thereby earning customer satisfaction. In short, the advantages of automated testing in CI/CD pipelines are as follows:
In line with the CI/CD concept of “build fast, fail fast”
-
Reduce the amount of manual work, thus saving time and reducing the possibility of errors.
As the number of test cases increases, the test results become more accurate and can cover a wider area.
Get immediate feedback on any issue
Multiple test results can be generated and compared to ensure quality and consistency
Types of Automated Testing Used in CI/CD Pipeline
Unit Testing: This is the low-level testing done after coding and review of the module . Test cases are designed to test individual components. The purpose is to ensure that every component works as expected under any circumstances.
Integration testing: Integration refers to testing the interaction of components within an application. This testing is done after all modules have been unit tested. The main goal is to test module interfaces and check if there are any errors in parameter passing when one module calls a function of another module.
System Testing: Testing is designed to validate a fully developed system and ensure that it conforms to the requirements specification document. Typically, at this stage, the software is ready for use by potential users. These types of system testing are called alpha (performed by a development team within an organization), beta (performed by a selected group of users/customers), or acceptance testing (performed by users/customers to determine acceptance of a delivered system).
What are continuous integration and continuous delivery?
In short, continuous integration allows development teams to integrate their code into a shared repository. This helps maintain code quality and identify potential issues with local versions of your code early.
Continuous delivery is also often called "continuous deployment". Everything that the development team is constantly merging is constantly being deployed to the live environment.
Since most developers work in parallel, constantly integrating their code into a repository means that the master branch is constantly updated with new features. To ensure that code quality doesn't suffer due to changes happening so quickly, tests must run at the same pace.
Not surprisingly, manual testing in this environment is not the best way to achieve this goal. Automated testing is the key to successful testing in your CI/CD pipeline.
9 Continuous Delivery Phases
Development: Developers build code based on project requirements or feature requests.
Write tests: Once you have written the code, you need to write tests. At this point, these tests are typically developer-written unit tests.
Local testing: Then do local testing to check that all tests pass and make sure the code doesn't break. Typically, the percentage is set to the pass rate that the tests being run need to meet.
Rebase and conflict resolution: In a real development scenario, there will be multiple people merging their code. Developers need to ensure that their branches are always updated. Updating a branch with the latest merged code is called "rebasing". Once repositioned, some conflicts may arise that need to be resolved. Afterwards, run the test again against the rebased code.
Commit: Once the tests pass, the code is ready to commit all changes.
Build: The developed source code is then assembled to build a deployment artifact that can be run on an instance, such as a server where the environment is local to the environment. This code is now ready to be deployed to a different testing environment.
UAT: The code is then deployed to a test server and testers start testing the feature. These tests can be automated or manual.
Merge: If the commit under test is approved by the testers, it will be merged into the master branch.
Production deployment: Once the code is merged, it is deployed to production.
Every build a developer codes needs to go through the above process.
Where does automated testing fit in the CI/CD pipeline?
Ideally, automated testing occurs once the build phase is complete and the code can be deployed. Unit tests, UI tests, and integration tests can all be run at this stage. These tests help ensure that the code meets quality standards.
This phase can last from a few minutes to a few hours, depending on how the automation is architected.
Tests can be run in parallel to execute them faster. If the code fails during the testing phase, the build can be rejected without investing any further manual testing time.
Tools for CI/CD
Jenkins: Jenkins is an open source tool for continuous integration. It's free to use, and jobs can be configured through the interface and scripts.
Travis CI: This tool is free for open source projects and hosted on GitHub.
Gitlab: Gitlab is a version control tool with its own cloud-based approach to CI. It is supported on multiple platforms and has both free and paid versions.
Bamboo: Bamboo is a CI tool for Jira. If your organization uses Jira, it would be helpful to check out this tool. It also supports automatic merging on ticket approval.
Best practices for CI/CD pipelines to get the most out of test automation
Incremental changes: always recommended Follow a feature-by-feature approach. If a feature is really large, it's better to break it down into smaller and faster-to-test features. This is important for automation because if something goes wrong, it's easier to identify the root cause. If your commitment is too big, figuring out the cause of the problem will be a daunting task.
Determine what can be automated: It’s common for teams to quickly dive in and say “let’s automate everything,” but this is a common mistake. We have to understand the purpose of automation and identify the test cases that should be automated.
Parallel testing: Tests should be run in parallel to make testing more efficient and timely. It can significantly reduce the time required to run tests, giving results faster. But it's not enough to just execute these tests in parallel; it's also important to scale the size of the server running the tests to really increase test speed.
Conclusion
Automated testing is an important part of successfully deploying projects while maintaining quality standards. Ensuring that tests are run at every stage provides good transparency into code quality. Errors can be caught early and any delays that may have been caused by them can be addressed promptly. Having a CI/CD pipeline for integrated testing helps speed up the testing and deployment process.
The above is the detailed content of Automated testing in CI/CD pipelines: types and stages. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Steps to update git code: Check out code: git clone https://github.com/username/repo.git Get the latest changes: git fetch merge changes: git merge origin/master push changes (optional): git push origin master

To download projects locally via Git, follow these steps: Install Git. Navigate to the project directory. cloning the remote repository using the following command: git clone https://github.com/username/repository-name.git

Git code merge process: Pull the latest changes to avoid conflicts. Switch to the branch you want to merge. Initiate a merge, specifying the branch to merge. Resolve merge conflicts (if any). Staging and commit merge, providing commit message.

When developing an e-commerce website, I encountered a difficult problem: How to achieve efficient search functions in large amounts of product data? Traditional database searches are inefficient and have poor user experience. After some research, I discovered the search engine Typesense and solved this problem through its official PHP client typesense/typesense-php, which greatly improved the search performance.

Resolve: When Git download speed is slow, you can take the following steps: Check the network connection and try to switch the connection method. Optimize Git configuration: Increase the POST buffer size (git config --global http.postBuffer 524288000), and reduce the low-speed limit (git config --global http.lowSpeedLimit 1000). Use a Git proxy (such as git-proxy or git-lfs-proxy). Try using a different Git client (such as Sourcetree or Github Desktop). Check for fire protection

Git Commit is a command that records file changes to a Git repository to save a snapshot of the current state of the project. How to use it is as follows: Add changes to the temporary storage area Write a concise and informative submission message to save and exit the submission message to complete the submission optionally: Add a signature for the submission Use git log to view the submission content

How to update local Git code? Use git fetch to pull the latest changes from the remote repository. Merge remote changes to the local branch using git merge origin/<remote branch name>. Resolve conflicts arising from mergers. Use git commit -m "Merge branch <Remote branch name>" to submit merge changes and apply updates.

To delete a Git repository, follow these steps: Confirm the repository you want to delete. Local deletion of repository: Use the rm -rf command to delete its folder. Remotely delete a warehouse: Navigate to the warehouse settings, find the "Delete Warehouse" option, and confirm the operation.