In the year 2001, the Agile software development methodology changed the landscape of software development with the introduction of agile development. The agile movement centered on helping developers and small teams work smarter and more efficiently. Agile ultimately gave rise to new processes and technology breakthroughs aimed at streamlining and automating the entire software delivery life cycle. This is when continuous integration (CI) came into being as a practice.
In an agile based software application development, Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. Continuous integration is an integral part of an agile software development setup. Basically, a CI server is the gatekeeper that helps keep a tab on code quality and stops errors from being integrated into the software.
Without any doubt, automated tests are the most important part of any CI/CD pipeline. The automated tests are usually divided into multiple “suites”, each with its own objective.
At a high level, a CI/CD pipeline usually consists of the following steps:
- Commit: When a developer finishes a change to an application, the same developer commits it to a central source code repository.
- Build: The change is checked out from the repository and the software is built so that it can be run by a computer. This steps depends a lot on what language is used and for interpreted languages this step can even be absent.
- Automated tests: This is the most critical part of the CI/CD pipeline. The change is tested from multiple angles to ensure it works and doesn’t break anything else.
- Deploy: The built version is deployed to production.
ThinkPalm Technologies has significant experience in delivering IT projects in various domains. For one of our enterprise customers, we built an ERP application using .NET technology stack. We leveraged our DevOps and Test automation capabilities to deliver a world class ERP solution.
In the project, ThinkPalm used Agile based project development methodology where we leveraged our DevOps practice. In the CI/CD pipeline, soon after the developers make a change in the application, they commit the code (build) in SVN.We used automated test scripts with Jenkins (open-source continuous integration tool) which helped in reporting issues, if any, on isolated changes (in each build) in a larger code base in real-time. We used our own selenium hybrid framework written in the Java language for test automation. Jenkins triggered the test execution of the regression test suite. These test cases were executed on an overnight bases in most of the cases.
End-to-end automation improved the efficiency of all build, deployment and test cycles significantly. Tools such as Selenium, TestNG, Jenkins, and our custom build framework were used to enhance the entire testing process.