Automated testing - Building Joomla extensions that just work

Building secure Joomla extensions that just work is not only our tagline, it's part of our company DNA. We take a lot of pride in the fact that we haven't had a single security issue in the last 10 years, and think carefully on how each part of our extensions should work.

We still do a lot of manual testing, each feature is tested and reviewed at least by multiple people. That’s not all, to streamline our extension releases and reduce human error we use a Continuous Integration strategy.

Continuous Integration (CI) is a development best practice and is guided by these key principles: version control, build automation and automated testing.

Version control

Being a distributed team all over the world, using a version control system such as Git is essential. Each new feature is turned into a GitHub issue. We then follow the GitLab flow to see the task through to completion.

Zenhub for Github

When a feature is ready we create a Pull Request to have it reviewed and tested. We also apply these changes directly to build packages that are automatically created for internal testing by the team.

Build automation

Every Pull Request triggers a new build on Travis CI. Travis CI will create a virtual environment and fire off a series of automated tests, run in the background.

The results of the tests are then available through a web interface, letting us know instantly if we've broken something:

Example travis build

Automated testing

Codeception is our chosen framework for automated testing. We currently employ three types of tests:

  • Unit tests, testing individual functions or methods within the website
  • API tests, checking and verifying the responses from each of our APIs
  • Acceptance tests, or emulating the user's experience through the website via clicks and interactions

We think this statement sums up nicely why you need automated tests:

Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove

— Martin Fowler, Chief Scientist, ThoughtWorks 3

These principles make sure our extensions are releasable at any point. Once the Pull request has passed the automated tests and the code has been peer-reviewed, the feature is ready to be released to you.

How it helps

Our feature releases often include a lot of changes and improvements, and we also need to take into account changes in PHP versions and in new Joomla releases: all the kind of things that can break our extensions!

The last thing we want to do is to break your Joomla site, by using tests and continuous integration we can identify issues in places we would never think to look.

Bugs happen but if you install a new release from us you can be assured that it has already been battle tested. Nice!

Need help?

Need help setting up a Continuous Integration workflow for your team? Get in touch, we love to help out!