What is “automation” in software engineering?

Developing, testing and deploying needs so much attention and time for the teams. Especially, if you are making all these steps manually. You have to be careful on each step for avoiding possible mistakes. Automating the whole development/testing process increases your software product quality and saves a lot of time for you and your team.

There are some steps that you should know in the automation process, such as continuous integration, continuous delivery, and continuous deployment. Let’s explain them in a nutshell:

Continuous Integration

Let’s say your team has more than one developer who works on the same project, and you are working on Git. Assume that one developer makes a Pull Request, all the unit tests can be run on a shared computer (remote or local). After tests completed running, you know that they succeeded or failed. If the tests passed you can start making code review. Otherwise, the developer gets notified that a test has failed and something should be fixed. After everything is getting ready, code can be merged with no hassle. This process is called Continuous Integration and it helps you to automate development, tests and integration process without wasting much time.

Continuous Delivery

Each build cycle for a feature or a sprint is called Continuous Delivery. You can deliver your feature/sprint branch to integrate continuously.

If you already know Joel Spolsky who is the Co-Founder of Stack Overflow and Trello, probably you heard that he has a test called “Joel Test”. It measures the quality of software development teams to better code. “Making daily builds” is one of the important steps to better code for him. If you want to check all of the steps, click the link below:

Continuous Deployment

I think the most glamorous part of the automation is Continuous Deployment. Assume that your development branch is already tested and it is ready to deploy, Continuous Deployment allows you to upload your app directly through from your repository.

Most iOS developers think that deployment is one of the most painful parts of the development process. Because there are several steps to deploy your app to the App Store and if there is an error or problem you see an error window at “any” state of the process. It is really annoying because you have to sign your app, archive it and upload it to the iTunes Connect. You even might see an error message after half an hour passed if an error occurred. Therefore, you should automate it, so you won’t waste that much time again.