Your team wants to be Agile, you have helped them by buying all the tools they wanted, but still they cannot get it right. There are pieces in the software development lifecycle that is making your process 'FR'Agile. Below are 7 things that your Competitor is doing right to be successful with Agile
Source Code Control and Branching
Source Code Control systems are essential if you want to have a structured Agile development approach. This where it all starts. It is important for your developers to use a Source Code control systems such as Git or SVN help manage the code and versions. One of the key features the source code control systems provide is branching. Many teams do not like to do branching because it is a pain to do merges and you need someone to manage the branches and merges. With technologies in version control like Git, both branching and merging have become easy. To ensure that the primary code line or master branch does not have issues creep in from other branches, teams should run the set of continuous integration on all development and stable version branches. When the build passes on a branch, the team has the confidence to merge that code into master. With branching, continuous integration, and test automation teams can be productive while still protecting code quality. This is agile development at it's best: delivering working software regularly, with minimal technical debt and without compromising quality.
Being able to do Continuous Builds as part of Continuous Integration cycles is an important step. As your developers check-in the latest changes to the master(after the changes succeed for branches), having builds succeed for each change-set will help in creating a deployment ready product. The key for determining the success/fail of a build is on various tests that are run against the build. Automating these tests, as explained earlier is a key for fast feedback.
It all starts with Unit Tests. Your developers need to create unit tests which act as a quality gateway for developer branches. The unit tests need to run as part of the continuous integration cycle for the branches to ensure nothing is broken for the changes they are doing.
If you are building API endpoints for your web or mobile applications, you would want to create automated tests for your APIs to run as part of your CI cycle before the builds are certified as successful. APIs often contain the core business logic of your applications, and it is important to run the tests as a quality check before the functional tests can be run.
Automated Functional UI tests are the most important quality check before an application is deployed. Functional tests can be built to run at various stages of the CI cycle, starting from the basic smoke tests, to more complex Regression test sets based on the stage of the build/product in the lifecycle. Any tool or framework that allows tagging tests to run at appropriate stages would be the most apt approach.
Containerization or Virtualization
You have to place big emphasis on receiving fast feedback. It is possible only when the tests can be run quickly and provide results. For stages where regression test suites need to be run, having quick feedback is important, even when there are more than 2000 tests in the test suite. One strategy is to parallelize automated test runs across several servers, or "build agents," so the CI server is actually running 2, 20 or even 200 tests simultaneously. With technologies like Docker containers and Vagrant or AWS infrastructure, it is easy to spin up the necessary test infrastructure to achieve such a huge farm of machines for test execution. The faster engineers get the green light, the faster they can move on to the next item in the backlog. Digital Arc has a long experience developing solutions in Test Automation and CI/CD space. Digital Arc is also a proud member of Docker Partner program and has developed various solutions to deploy and run automated tests on a farm of test machines both locally and in the cloud.