An easy way to qualify the professionalism and depth of experience of a software company is to explore their development operations (aka DevOps). And, we’re no different!
Our comprehensive approach helps to ensure quality and integrity at every stage in the development process.
Stage 1 – Source Code Management, Automated Builds & Code Reviews
Our process is rooted in the selection of source code management and version control tools. As a company, we have embraced Git, a proven source code management system that has also been embraced by companies such as Microsoft, Google and Facebook among many other tier-1 software providers.
The power of Git is highlighted by the ease with which our operations team can designate where developers submit their source code changes. Every project has a dedicated Git repository with each application feature having a unique “Feature branch”. This allows multiple concurrent development activities to occur without concern of one team adversely impacting the efforts of another team.
Each time a developer submits a coding change in the feature branch, an automated build of the project is conducted to ensure that they newly checked-in code did not “break the build”. In other words, our DevOps procedure ensures that only that code which correctly compiles is added into the code repository. If the new code does not allow for a successful build, the developer is instantly notified of the error. This ensures that no errant code is propagated to another developer working on the same feature.
Stage 2 – Automated Builds & Automated QA Regression Testing
As software development is complete on a feature branch, our senior engineers perform code reviews on the submitted code and if it passes their scrutiny, they promote the code into the project’s “Development branch”. This branch contains all the project’s features designated to be completed for a Sprint release. Submitting the code to the Development branch once again kicks off our automated system build process. As before, any detected errors are immediately communicated to the responsible engineer.
At set intervals throughout the day, our automated QA regression system exercises the Development branch to ensure that software is operating as expected. If any failures are detected, the developer associated with the failure is automatically notified of the issue.
Once all of the features have been completed for a particular release point (aka as Sprint completion), the code is promoted to the Staging branch for both manual and automated regression testing by our QA team and business analysts.
Stage 3 – Manual QA Testing, Business Analyst Functional Testing & Automated Regression Testing
The QA team exercises the software through their written test cases while the business analysts review that the system achieves the desired functionality and meets or exceeds the ease-of-use criteria. The QA team also adds their manual test cases to our automated QA regression test code library so that the regression test coverage continues to expand with each new release.
Any issues found during the Staging branch are captured in our Issue Tracking solution JIRA and submitted to the responsible developer for correction.
Only after the QA and Business Analysts are completely satisfied with the operation of the software will the code be promoted to our Validation branch.
Stage 4 – Customer Validation & User Acceptance Testing
The Validation branch represents an identical rendition of the production system. Therefore, when the code is promoted to Validation, it could be considered a “practice-run” before applying the code into the live environment. This step ensures that there are no surprises when releasing the code to production.
The Validation branch is where we offer the customer the opportunity to exercise the software to ensure that it meets or exceeds their expectations. Only after the customer is completely satisfied and provides the authorization to proceed will we promote the new software release to Production.
As you can see, our DevOps procedures critically support our ability to deliver quality software with each and every release. You should expect no less from any other software provider. But, this is exactly what you should expect from Primero.