The concept of continuous integration (CI) is the practice of merging several times a day all developers' working copies to a centralized version, hosted in a shared repository.
Automated deployments lead to continuous delivery (CD), a frequent extension of continuous integration.
In order to deploy reliable releases, continuous delivery involves verifying build compliance with quality, stability and security requirements through automated testing and static code analysis to detect bugs, quality issues and vulnerabilities (SAST).
Each code update is therefore automatically checked and, if accepted, can be deployed in production.
Ultimately, a CI/CD workflow will increase the agility and productivity of your development team as well as code quality and security .
Before submitting their code to the repository, developers must first update it to reflect the changes made since they took their copy.
A typical CI/CD workflow would be composed of the following steps:
Unit tests can be run manually, or written and automated according to test-driven development practices.
All unit tests should pass in the developer's local environment before incorporating his changes into the main release. This prevents his work in progress from breaking other developer's copies.
Developers submit their changes to the repository and merge back their branch of code with the main version.
A build server compiles the code periodically or even after every commit and reports the results to the developers.
Recent versions of PowerBuilder offer a range of features simplifying this process:
Tools & Resources
Code inspection tools running a static analysis to identify defects.
Each block of code is checked against a set of rules to find security vulnerabilities, bugs and maintainability issues. A report is automatically generated to count and classify defects by severity, and evaluate whether a build is acceptable for deployment or not.
Continuous integration aims at automating tasks to verify and generate deployable builds as often as possible.
Testing is an essential step in this process, and test automation is necessary to achieve this goal: each build will be thoroughly tested and indicators generated automatically will help assess if the build is deployable.
Obviously, every team tests its products.
Yet all delivery includes defects.
Testers strive to catch them: some always remain, while others reappear, no matter how thorough the manual testing.
A test automation tool is a very efficient way to supplement your manual testing, for improving the efficiency and coverage of your testing operations.
Read more: steps to create automated tests
Previous generations of tools had the reputation of requiring too much efforts to create and maintain tests, which defeated the purpose of gaining productivity.
They were often based on 2 strategies:
Modern tools offer a different approach, based on object recognition:
Let's compare both strategies with critical KPIs:
|Manual Testing is less accurate because of the possible human errors.
Automated testing is consistent and reliable.
|Executing lots of manual tests is time-consuming and expensive. Automated tests are faster.
No additional costs to repeat as many times as needed.
|You can start executing manual tests instantly.
Automated testing requires preliminary time to predefine tests and actions.
|Manual testing is more flexible: it allows testing randomly or improvising deepers tests on the fly in a very specific area.
Automation Testing does not.
Automated Testing obviously brings major benefits but cannot fully substitute for manual testing.
The best strategy consists in wisely combining the 2 approaches depending on:
To go further:
Tools & Resources
Modern tools make it possible to automate various tasks in a CI/CD workflow. Multilingual support is now one of them.
If your application is deployed in several countries, you probably translate it to better serve users. And once in production, you have to systematically update translations, to maintain a consistent user experience.
Tools & Resources
Enable for PowerBuilder separates translations from code, and includes specific features to integrate in a CI/CD pipeline:
You can add a multilingual task to your workflow, for example:
Note: phrases are usually translated by professional translators. They will send back the translations, for automatic import into the multilingual database. This second process is independent of the build process.