Continuous_quality Speed is one of the keys to business success. Since greater profitability can be gained by increasing the number of releases, a fast system of software development is needed to provide not only fast release times, but also the creative flexibility needed to produce software products wanted by the client and usable by their customers. 

DevOps, an extension of the Agile software development system, provides the speed required by the business as well as the creative flexibility needed for the development teams.  This collaborative system unites areas of software development that were once considered to be independently-functioning areas.  In the classic waterfall approach, business stakeholders would meet with architects and designers who would inform developers about what to build and would then hand off software to the testers.  In DevOps, however, all areas can be included in every stage of development. Developers and quality assurance specialists can now advise designers. Quality Assurance Specialists also can write tests during the coding process, if not before, using the Test-Driven development approach.  

It is true that DevOps can provide a platform for rapid software development, but the quality of the end product is just, if not more, important as the speed in building it.  Along with continuous delivery, continuous testing forms the approach known as continuous integration.  In this approach, we have automated tests that run after every code commit so that test results can be known almost immediately, and the bug fix process can start much earlier in the development process than in previous development systems.  

Unit tests, functional tests, and acceptance tests can all be run after every commit to find software issues from a variety of approaches.  The manual exploratory aspect of software testing is just one part of the quality assurance process and can be used at the same time as test automation execution for not only reporting issues, but also for updating the automated tests run after every commit.  

Fortunately, Unleashed Technologies already has the tools that are needed for the continuous testing aspect of continuous integration.  Git repository management systems, such as GitLab, already provide a place for both the source code and tests, as well as email and issue tracking systems that can quickly inform Quality Assurance if software issues have been detected. This can also provide a system to report issues back to development for fixing and retesting. This cyclical system of creation, testing, fixing, re-creation, and re-testing can be done iteratively until there is a high-quality finished product that satisfies both the client and their customers.

To be more specific about the details of the automated Quality Assurance process, we will go through each area of testing briefly to understand what issues it looks for and how it differs from the other processes.  

Unit Tests

These tests are coded first and check the most basic features of the site.  Important elements are tested to verify that the element is present, and its features conform to specifications.  Unit tests are meant to test individual objects, that is, each unit in isolation, so that its most basic form is tested for its presence and that it appears according to its CSS features.  

Functional Tests

As the name indicates, functional tests are designed to verify the functional elements of the site.  In other words, automated functional tests are run to confirm that the actual output produced in the site matches what is demanded in the requirements and design documents.  Test automation can send different input values repeatedly and check each output. It will pass the test case if the expected and actual output match and will fail the case if the expected and actual output differ.  

Acceptance Tests

When we arrive at the acceptance test stage, the job of test automation is to decide if the site is ready for release and acceptance by the customer.  Acceptance automation tests operate on a higher level than the unit and functional tests. The details required to pass unit and functional tests are not needed by acceptance tests, but more general input is sufficient to give the client an idea that the system is ready to release to their customers.  

The Cycle of Continuous Development & Testing

To reiterate, instead of the traditional linear system of design to development to testing to release, with DevOps, we have a cyclical approach. This an approach of design, development, and testing to produce a new build that will again undergo development as well as automated and functional test runs for several iterations until the acceptance tests indicate the site is ready for release.

This approach encourages greater communication and cooperation between the design, development, and QA roles, and the finished site is the result of a team effort.