Outsourcing in agile software development processes
Author: Dr. Hartmut Lackner, Model Engineering Solutions GmbH
Contribution – Embedded Software Engineering Congress 2017
Outsourcing testing services delivers faster and better results than using internal resources – or so the expectation goes. In reality, this is possible, but by no means always the case. This presentation will show participants the conditions under which outsourcing testing and other quality assurance services is possible and successful in an agile environment.
Don't lose sight of your own goals
There are many (good) reasons for outsourcing quality assurance: Developers should be able to concentrate on the essentials – developing useful features; specialized providers can offer testing services more cost-effectively than in-house; and sometimes there simply isn't enough time or personnel to handle the tasks. Furthermore, the workload for quality assurance often depends on the product release cycle, as experience shows that testing efforts increase as the release date approaches. But what happens to the testers after the release date?
In addition to these resource-oriented considerations, there are also standards-driven aspects: The development of safety-critical software also benefits from outsourcing. For such software, standards for certain safety levels require proof of an organizational separation between the development teams and quality assurance. However, in agile teams, where a high degree of division of labor typically prevails, such a separation is inherently lacking. Without this organizational separation, the question arises as to how outsourcing can be meaningfully implemented in such an interconnected team. To address this, we will first examine an agile software development process more closely and identify the testing stages. Once these are identified, we can determine the possible forms of outsourcing. These include onsite sourcing (service providers at the customer's location) and the various outsourcing options: onshoring, nearshoring, and offshoring (domestic, regional, global).
Test levels
Agile software development processes are characterized by an iterative and incremental approach. Teams are self-organizing, operate with minimal bureaucracy, and respond quickly to customer change requests. Scrum, Kanban, and Extreme Programming are just a few examples of agile processes. Figure 1 illustrates the typical pattern of an agile software development process: It begins with a planning phase in which the goals for the upcoming cycle—often called a sprint—are defined. These goals are the functionalities that the product should possess by the end of the sprint. This is followed by a design phase in which the goals are further defined, and then, in the development phase, the software is implemented and tested. The results and the process are subsequently reviewed. If necessary, the software is handed over to the customer, and a new sprint begins, taking into account the lessons learned. Each sprint lasts approximately two to four weeks, depending on the specific process, project, and team.
Testing activities are shown in Figure 1 (see below). PDFThese points are deliberately not highlighted, as they can occur at different stages depending on the specific implementation of the agile development process. Below, we identify four such points and discuss their potential for outsourcing.
In principle, we can conclude that the short release cycles result in significantly more continuous testing efforts than would be the case with a waterfall or V-model process. This allows clients and service providers to plan their resources more proactively and build a lasting relationship.
Testing and test development in sprints
First, we consider test development and execution as part of software development (Develop) during a sprint: Test development can take place before, in parallel, or after software implementation. In a typical agile process, project team members would act as both developers and testers. A strict separation, such as occurs when testing is outsourced, is not ideal, but tolerable in the spirit of agile development—which also aims to leverage the individual strengths of team members. Daily face-to-face meetings are also highly valued in agile development.
Due to the necessary close collaboration with on-site staff, the testing service provider's presence at the client's location is highly recommended. Onshoring and nearshoring are also viable options if the service provider's employees are supported by appropriate communication tools. This allows the client to maintain an overview of whether the outsourced testing team is keeping pace with the sprint. Offshoring, on the other hand, is less suitable due to time differences and language barriers.
Tests as a specification
In the tests-first methodology, tests are developed as part of the software unit specification even before sprint planning. Only when this is complete can the functionality to be developed be scheduled for a sprint.
Sometimes, the textual unit specification is shorter to facilitate test development. This isn't a problem for team members who are consistently present, as they are closely involved in the development process and can quickly clarify any questions. Proximity to the team is just as important here as it is during test development in a sprint.
Completeness of the tests
Test development can be partially shifted to later phases. For example, during a sprint, the primary focus can be on ensuring the functional behavior of the unit under test. Further tests to meet defined code coverage criteria can follow in a subsequent phase. Since the majority of the functionality has already been tested, experience shows that there is little need for substantive discussion. Therefore, testers can independently develop further test cases and use the existing ones as a guide.
The completeness and accuracy of the results delivered by the service provider can be easily verified using code coverage tools. Furthermore, there is no immediate time pressure for the test, allowing the service provider greater flexibility in planning its resources. This separation of testing activities is therefore particularly well-suited for offshore environments.
Integration and system testing
Maintaining integration and system tests in an agile software development process is complex: The product's functionality grows and changes regularly, requiring continuous test maintenance. A comprehensive understanding of the system is therefore essential for developing effective tests.
Maintenance at this level is no longer as continuous as before: even minor changes occasionally necessitate extensive modifications to the tests. To ensure test quality, it is advisable to collaborate with a service provider to handle peak workloads. However, integrating their staff is more challenging, as they only participate in the project intermittently.
A reliable partner with low staff turnover, who can consistently bring in experienced project personnel for ongoing projects, is helpful. In this case, the partner's reliability is more important than their geographical proximity. Therefore, both on- and nearshoring partners are viable options. With sufficient trust, offshoring is also a possibility.
Define the scope
Experience has shown us that a clear and precise definition of the tasks to be outsourced is crucial for their successful completion. Independent studies, such as EquaTerra's outsourcing study, confirm this. The biggest problems in outsourced testing projects are understanding the scope of the project and managing it. Inadequate planning and insufficient skills/tools on both sides often follow.
(see. PDF Figure 2)
Therefore, in agile software development projects with outsourced quality assurance, it is all the more important to be aware of the testing phase and the associated tasks. This applies not only to the client but also to the service provider.
This article identified the key testing phases and interfaces. These range from unit tests during a sprint, through the distribution of test activities across multiple sprints, to continuous system testing. Not all are equally suitable for outsourcing. Proximity to the client is particularly important during the sprint phases. Modern communication tools help service providers establish this proximity. In later phases, this proximity becomes less critical, allowing for the use of more distant service providers to optimize costs.
author
Dr. Hartmut Lackner has been head of the MES Test Center since 2016. With his motto, "Life is too short for manual testing," he is dedicated to automated testing. This topic also accompanied him during his doctoral studies at Humboldt University of Berlin and as head of industrial research projects at the Fraunhofer Institute FOKUS. As head of the MES Test Center, he is further advancing the testing of complex software models.
Testing, Quality & Debugging – Our Training & Coaching
Do you want to bring yourself up to date with the latest technology?
Then find out more here MircoConsult offers training courses/seminars/workshops and individual coaching on the topics of testing, quality & debugging.
Training & coaching on the other topics in our portfolio can be found here. here.
Testing, Quality & Debug – Expertise
Valuable expertise on the topics of testing, quality & debugging is available. here Available for you to download free of charge.
You can find expertise on other topics in our portfolio here. here.
