In this chapter—
In this chapter, we will look at the various organization structures in typical testing organizations. (We discuss only the organization structures directly pertaining to development and testing. Other parts of an organization such as finance, administration, and so on have not been covered.)
Organization structures directly relate to some of the people issues discussed in the previous chapter. In addition, the study of organization structures is important from the point of view of effectiveness because an appropriately designed organization structure can provide accountability to results. This accountability can promote better teamwork among the different constituents and create in better focus in the work. In addition, organization structures provide a road map for the team members to envision their career paths.
We have discussed organization structures based on two dimensions. The first dimension is organization type and the second dimension is on geographic distribution.
We have broadly classified types of organizations into two categories— product organizations and services organizations. Product organizations produce software products and have a “womb to tomb” (or conception through design, development, testing and maintenance to product obsolescence) responsibility for the entire product. Testing happens to be one of the phases or groups that are within the organization. The product organizations that we will discuss in this chapter are multi-product organizations. Service organizations do not have complete product responsibility. In the testing context, they are external organizations that provide testing services to other organizations that require them. In essence, testing services are outsourced to such organizations. Such testing services organizations provide specialized and committed personnel for testing. They also undertake specialized and niche areas of examining performance testing, internationalization testing, and so on.
A second factor that plays a significant role in deciding organization structures is the geographic distribution of teams. Product or service organizations that are involved in testing can be either single-site or multi-site. In a single-site team, all members are located at one place while in a multi-site team, the team is scattered across multiple locations. Multi-site teams introduce cultural and other factors that influence organization structures.
Product companies in general have a high-level organization structure similar to the one shown in Figure 14.1.
Note: We have only indicated groups that are directly related to our discussion. We have consciously left out groups such as sales, finance and administration, hardware infrastructure group, and so on.
The CTO's office sets the high-level technology directions for the company. A business unit is in charge of each product that the company produces. (Sometimes the business unit may also handle related products to form a product line.) A product business unit is organized into a product management group and a product delivery group. The product management group has the responsibility of merging the CTO's directions with specific market needs to come out with a product road map. The product delivery group is responsible for delivering the product and handles both the development and testing functions. We use the term “project manager” to denote this head. Sometimes the term “development manager” or “delivery manager” is also used.
Figure 14.1 shows a typical multi-product organization. The internal organization of the delivery teams varies with different scenarios for single-and multi-product companies, as we will discuss below.
Most product companies start with a single product. During the initial stages of evolution, the organization does not work with many formalized processes. The product delivery team members distribute their time among multiple tasks and often wear multiple hats. All the engineers report into the project manager who is in charge of the entire project, with very little distinction between testing function and development functions. Thus, there is only a very thin line separating the “development team and “testing team.”
The model in Figure 14.2 is applicable in situations where the product is in the early stages of evolution. We have indicated in Figure 14.2 that a “project manager” handles part or all of a product. We have consciously avoided showing multiple layers of management for the development and testing functions. This is because, in a small organization in the early stages of development, there is very little management hierarchy and people playing the roles of “managers,” “leads” and so on actually are also “engineers” who are expected to act as individual contributors as well.
This model offers some advantages that are well suited to small organizations.
Exploits the rear-loading nature of testing activities Even though testing activities are distributed throughout the project life cycle, the major concentration and pressure points for testing arise during the later part of the project life cycle. Thus, this organization structure provides an automatic load-balancing scheme wherein during the early part of the project, everyone chips in for development and during the later part, they wear a different hat and switch over to testing.
Enables engineers to gain experience in all aspects of life cycle Since an engineer divides his or her time between development and testing, he or she can get to know what is involved in all the life cycle activities. This also makes them appreciate the importance of and difficulties in all the activities and prepares them for a better teamwork when the functions are broken down among different groups.
Is amenable to the fact that the organization mostly only has informal processes An organization in its early days usually has only informal processes and there may not be well-defined entry and exit criteria for products to satisfy to move from one phase to another, say from development to testing. Thus, multiplexing the same resource between development and testing is in line with this informal nature of the organization.
Some defects may be detected early Since the developers perform the testing functions, there is a possibility that they may catch the defects closer to the point of injection (much like what white box testing can do).
This model, however, has some serious disadvantages that cause an organization to move away quickly from it. These disadvantages are as follows.
Accountability for testing and quality reduces Since the same persons perform both the development and testing functions, providing accountability for testing and quality becomes a challenge. Should a developer (or project manager) give importance to delivery dates or should he or she “steal cycles” from development to do testing? The temptation is to spend time on development and add some new functionality, even at the expense of testing thoroughly the existing features. Thus, accountability for testing suffers.
Developers do not in general like testing and hence the effectiveness of testing suffers As we saw in the Chapter 13, People Issues in Testing, developers in general do not like to perform testing activities. Thus, in this model, they may take up the tasks of testing as a “price” they have to pay to do the “cool job” of development. This lack of intrinsic motivation for performing the testing function can have a telling effect on the effectiveness of testing.
Schedule pressures generally compromise testing When push comes to shove, deadlines rule the roost! There are always lots of deadlines to meet and there may not be sufficient time for testing. This, coupled with a typical engineer's preference for development tasks than testing tasks, compromises the quality of testing.
Developers may not be able carry out the different types of tests As we have seen in the earlier chapters there are a number of different types of tests. A developer may not be equipped to carry out all the tests, because such testing may require specialized infrastructure or skills. For example, performance testing may not be an area where a general product developer can perform effectively because he or she would have to be well versed in ascertaining typical workloads, using special tools, and so on. Thus, it would become necessary to separate at least these specialized testing functions into a different group.
As the product matures and the processes evolve, a homogeneous single-product organization doing both development and testing, splits into two distinct groups, one for development and one for testing. These two teams are considered as peer teams and both report to the project manager in charge of the entire product. In this model, some of the disadvantages of the previous model are done away with.
There are certain precautions that must be taken to make this model effective. First, the project manager should not buckle under pressure and ignore the findings and recommendations of the testing team by releasing a product that fails the test criteria. Second, the project manager must ensure that the development and testing teams do not view each other as adversaries. This will erode the teamwork between the teams and ultimately affect the timeliness and quality of the product. Third, the testing team must participate in the project decision making and scheduling right from the start so that they do not come in at the “crunch time” of the project and face unrealistic schedules or expectations.
Even if a company produces only one product, the product is made up of a number of components that fit together as a whole. In order to provide better accountability, each component may be developed and tested by separate teams and all the components integrated by a single integration test team reporting to the project manager. The structure of each of the component teams can be either a coalesced development-testing team (as in the first model above) or a team with distinct responsibilities for testing and development. This is because not all components are of the same complexity, not all components are at the same level of maturity. Hence, an informal mix-and-match of the different organization structures for the different components, with a central authority to ensure overall quality will be more effective. Figure 14.4 depicts this model.
When a company becomes successful as a single-product company, it may decide to diversify into other products. In such a case, each of the products is considered as a separate business unit, responsible for all activities of a product. In addition, as before, there will be common roles like the CTO.
The organization of test teams in multi-product companies is dictated largely by the following factors.
How tightly coupled the products are in terms of technology If different products exploit similar technology, perhaps there may also be a synergy of testing of these similar products. For example, if an organization is making compilers for different languages, it may be possible to spread the testing resources across the multiple compilers. However, if an organization has a wide coverage of product types—ranging from system software products like operating systems or database to application software products like a payroll system—then it is unlikely that the testing resources can be shared across the products as the skill sets required for the two functions are different.
Dependence among various products If the dependence among the products is high, then testing of the products would also be necessarily tightly coupled. A change in one product may have a significant impact on the functioning of another product. Thus, it may be necessary to have some overlap among the testing teams of the various products. At least, there may be a need for an organization-wide testing team that performs integration testing of the various dependent products.
How synchronous are the release cycles of products If the release cycles of the various products are synchronous, it may mean two things. One, there is likely to be some dependency amongst the products. Two, the resources for testing are likely to be demanded at the same time. These appear like two conflicting demands—on the one hand, there needs to be commonality in the testing team because of dependencies (as discussed in the previous paragraph); on the other hand, because the resources are needed for different products at the same time, the resources may have be part of distinct teams with different reporting structures.
Customer base for each product and similarity among customer bases for various products Since the type of testing and skill sets required for testing depend largely on the nature of the product which in turn is dictated by the customer base, the nature of the latter may have an influence on whether the teams for the different products should be same or different.
Based on the above factors, there are several options available for organizing testing teams for a multi-product company.
In a number of situations, the participation of the testing teams comes later in the product life cycle while the design and development teams get to participate early. However, testability of a product is as important (if not more important) as its development. Hence, it makes sense to assign the same level of importance to testing as to development. One way to accomplish this is to have a testing team report directly to the CTO as a peer to the design and development teams. The advantages that this model brings to the table are as follows.
In this model, the CTO handles only the architecture and test teams. The actual development team working on the product code can report to a different person, who has operational responsibilities for the code. This ensures independence to the testing team.
This group reporting to the CTO addresses issues that have organization-wide ramifications and need proactive planning. A reason for making them report to the CTO is that this team is likely to be cross-divisional, and cross-functional. This reporting structure increases the credibility and authority of the team. Thus, their decisions are likely to be accepted with fewer questions by rest the of the organization, without much of a “this decision does not apply to my product as it was decided by someone else” kind of objections.
This structure also addresses career path issues of some of the top test engineers. Oftentimes, people perceive a plateau in the testing profession and harbor a misconception that in order to move ahead in their career, they have to go into development. This model, wherein a testing role reports to the CTO and has high visibility, will motivate them to have a good target to aim for.
In order that such a team reporting to the CTO be effective,
It may be possible to carry out the single-testing-team company model of a single-product company into a multi-product company. Earlier in this section, we discussed some criteria of how to organize testing teams. Based on those criteria, a single testing team for all the products would be possible when the line between the products is somewhat thin.
This model is similar to the case of a single-product team divided into multiple components and each of the components being developed by an independent team. The one major difference between the two is that in the earlier model, the project manager to whom the testing teams reports has direct delivery responsibilities whereas in the case of a multi-product company, since different groups/individuals have delivery responsibilities for different products, the single testing team must necessarily report to a different level. There are two possibilities.
In a multi-product company, when the products are fairly independent of one another, having a single testing team may not be very natural. Accountability, decision making, and scheduling may all become issues with the single testing team. The most natural and effective way to organize the teams is to assign complete responsibility of all aspects of a product to the corresponding business unit and let the business unit head figure out how to organize the testing and development teams. This is very similar to the multi-component testing teams model.
Depending on the level of integration required among the products, there may be need for a central integration testing team. This team handles all the issues pertaining to the integration of the multiple products. Such an integration team should be cross-product and hence ideally report into the CTO think-tank.
So far, we have viewed “testing” as a single, homogeneous activity. In reality, however, it is not so.
As a result of these factors, it is common to split the testing function into different types and phases of testing. Since the nature of the different types of tests are different and because the people who can ascertain or be directly concerned with the specific types of tests are different, the people performing the different types of tests may end up reporting into different groups. A possible way of organizing the people performing the different types of testing is shown in Table 14.1.
Table 14.1 Organizing people to perform different types of testing.
Type of test | Reports into | Rationale |
---|---|---|
White box testing | Development team | White box testing is inherently close to code, the developers develop and (should) run the tests themselves. |
Black box testing | Testing team | This is the first level of “external testing” that a product gets and hence ideally fits in the scope of the testing team, as described above. |
Integration testing | Organization-wide testing team | Integration testing involves putting together multiple components or multiple products. Thus, this should ideally belong to an organization-wide testing team. |
System testing | Product management orProduct marketing | System testing involves testing in real-life scenarios and hence—like acceptance testing —can be part of the product management or product marketing. |
Performance testing | A central benchmarking group | Performance testing (as discussed in Chapter 7) is very specialized. This may also be related to benchmarking and industry standards thereof. In case of a multi-product company, there may also be inter-product dependencies that affect performance. |
Acceptance testing | Product management orProduct marketing | Acceptance testing is actually a proxy for customer acceptance and hence is rightly carried out by product management or product marketing. |
Internationalization testing | Internationalization team and some local teams | Internationalization involves testing at various levels. Some of the levels (as discussed in Chapter 9) involve even knowledge of local languages and conventions. Thus the responsibility of this may be distributed. |
Regression testing | All test teams | Some of the regression tests are also run as a part of the smoke tests—these parts may continue to report into the product testing teams and the organization must establish processes to transfer these learnings across the groups. |
Such an organization based on the testing types presents several advantages.
The challenge to watch out for is that the test responsibilities are now distributed and hence it may seem that there is no single point of accountability for testing. The key to address this challenge is to define objectively the metrics for each of the phases or groups and track them to completion.
The above models are not mutually exclusive or disjoint models. In practice, a combination of all these models are used and the models chosen change from time to time, depending on the needs of the project. For example, during the crunch time of a project, when a product is near delivery, a multi-component team may act like a single-component team. During debugging situations, when a problem to do with the integration of multiple products comes up, the different product teams may work as a single team and report to the CTO/CEO for the duration of that debugging situation. We would like to view the various organization structures presented above as simply building blocks that can be put together in various permutations and combinations, depending on the need of the situation. The main aim of such hybrid organization structures should be effectiveness without losing sight of accountability.
Globalization has revolutionized the way we produce and maintain software products. As we discussed earlier in the book.
It is increasingly common to find software product teams distributed in multiple countries, working together, developing testing and delivering a single product. Testing in particular tends to be a major beneficiary of globalization and helps maximize the potential of globalization. Several factors contribute to this.
There are essentially two organization structures for distributing testing teams across multiple locations—Round the Clock Development/Testing Teams Model and Testing Competency Center Model.
The basic premises that drive this model are as follows.
Consider an example of a product team split across California and India. Because of the time difference between India and California, effectively, when it is day time in California, it is night time in India and vice versa. If, say, we distribute the work between the two teams with development being done in California and testing being done in India, we will find that we are able to get a 24-hour coverage of work across the two teams, without either of the teams having to work continuously for 24-hours at a stretch. In this situation, a typical work flow could be as shown in Figure 14.5.
In the above model, we have actually stretched the day to be almost completely utilized—we have a gap of about three hours in a 24-hour window where no activity is taking place. This model can be extended to have multiple testing teams in multiple locations to utilize these hours also. However, one has to be careful that the communication overheads do not overwhelm the utilization of time.
This model is very natural and effective when
Typically, this model is used when the product attains a reasonable level of maturity and stability. During the early stages of development of a product, the code is likely to be unstable and hence testing will very frequently encounter “show stopper” defects. That is, when the testing team starts testing, they may encounter a defect very early in the cycle that will prevent further testing. For example, if you are testing a network layer product and the product fails even while trying to establish a connection, then all further tests like error control, flow control, and so on cannot be executed until the connection defect is fixed. In such a case, the developers will have to get involved immediately—that is, in their night time—thus negating the whole idea of exploiting geographic time difference.
A typical workaround to get over this problem is to adopt a “shift” system wherein the teams in both locations have 24-hour representation. Even with this, the communication overheads arising out of an unstable product make this model unviable early in the product cycle.
In this model, a logical organization called the Testing Competency Center is created. This organization could potentially span multiple locations to effectively exploit time difference and/or available skill sets. This Center is highly specialized in testing. It has the final say in the quality of the product and release readiness. The Testing Competency Center model has two variants.
In the first variant, the Center is a shared (and often scarce) resource that is shared across multiple product development groups. As mentioned before, this center has testing competency that is not available elsewhere. Hence, there is a demand for the services of this group. Product development groups “book” the time of this group in advance. With the high skill level of the group and the highly matured processes that this group has, the recommendations of this group are highly regarded by the management. This group could be internal to an organization or can be an external organization of high standing in the testing arena. One can regard this group or Center as a “certifying authority” whose “blessing” is needed before a product can be released. In other words, certification by this Center adds credibility to the product. This model is not to gain cost savings. In fact, it may even be expensive because of the specialized nature of the group. This model is not to exploit the time zone advantages. The placement of the group in any location or locations is determined purely by the availability of talent pool. This model can apply to product as well as service companies.
Another variant of the Testing Competency Center is to have a set of dedicated testing resources that gets involved in the full cycle of testing activities, right from the early stages of the project. This typically follows the process and structure given below.
This second variant is most applicable when a product is undergoing version changes, which are usually upgrades with new features added/enhanced. In this variant, since the center is focused on developing testing as a competency, it is somewhat similar to “testing as a service” model, discussed later in this chapter.
Cultural challenges Whenever a global team works together, culture and language pose major barriers for communication. Without effective communication, the divide between development and testing will only widen. When a testing team is set up in a new location, it is important for the teams on both the locations to get a mutual appreciation of the culture, language accents, and so on. Some of the ways to achieve this are given below.
Work allocation challenges When teams are distributed, it is important to have clear work allocation policies that are articulated upfront and understood consistently by all the teams. There should not be a perception that all the “cool work” goes to one location while all the “not-so-cool work” goes to another location. The entire team must take pride in what they do. Only then can they perform effectively and develop themselves and make the product successful.
Parity across teams When teams across different geographies work on similar tasks, they expect parity in the way they are treated and in their compensation and reward systems. “Parity” can be a debatable term. Firstly, the teams in different locations would like to have parity in job content. Next, the teams would like parity in ownership, authority and delegation, freedom, and so on. Last, they would also expect reasonable parity in terms of compensation and reward systems. A person working in USA may get a salary in terms of dollars whereas a person working in India may be getting a salary in Indian Rupees, which would not be the same in absolute value as what his or her US counterpart gets. Given the difference in purchasing levels and the economies of the two countries, this difference is natural and reasonable. However, the values that the employee carries may be different and this may even motivate him or her to work in a country with better monetary compensation (even though it may not mean anything). The solution for this is not to offer US salaries to people in India! Some of the ways to address this challenge are
Ability to track effectively When teams are distributed, tracking their progress becomes more difficult. Opportunities for informal tracking such as hallway chats are completely lost. Hence, the tracking mechanism has to be more robust, less person dependent. Some of the ways to increase the effectiveness of tracking include
Dependence on communication infrastructure Communication infrastructure through the Internet and Intranet form the lifeline of geographically distributed teams. This is especially true of the “round the clock” model of testing wherein the testers pick up the builds on a daily basis. Such a model mandates the availability of a high bandwidth and highly reliability communication infrastructure. While the communication technology has become fairly robust and this may not be a major issue, it is important to have alternative plans in case communication links snap for some reason. One way to mitigate this risk is to have a backup/mirror site at every location. This may be an expensive proposition. Another way could be to have a small “on site” team in different locations who can proxy for the “offsite” teams if the need arises.
Time difference In the various models of distribution of work and organizing teams, time difference is normally an advantage. However, time difference can also present some challenges. For example, in the round the clock model of testing, when a tester in India, say, encounters a show stopper, he or she may have to call a developer during the developer's night time (assuming that the developer is in USA). If the developer is not available, that workday for the tester in India may be lost completely. In addition, when the developer fixes the problem, the tester should be available or another twelve hours will be lost! Thus, time difference can end up eating up 36 hours for solving a problem that would get fixed within minutes in a single-site team. The key to making effective use of time difference is to have sound processes and proactive quality assurance (so that such show stoppers can be minimized) and also make people work in shifts in various locations so that there is someone to contact at any point of time and in any location.
Most of the discussions we have had so far on testing functions have implicitly assumed testing activities as part of the same organization that is responsible for producing, marketing and supporting the product. However, today it is common to find testing activities outsourced to external companies who specialize is testing and provide testing services. There are several business drivers for this model of testing as a service.
Thus, testing as a service has gained significant acceptance in the industry. Coupled with the time zone and cost advantages, testing services are normally outsourced to geographically distributed teams.
Organization structures and the associated people issues in a testing services organization are driven by certain fundamental factors.
Testing service organizations are generally held at arm's length from product developers In a typical product development organization (where testing is one of the functions), there is a much closer binding between the development and testing teams, as people generally move from one group to another. Furthermore, there are no Intellectual Property Rights (IPR) issues in the testing team getting exposed to the product code. When testing is outsourced as a service to an external organization, the members of the outsourced organization may not have the same level of rapport with product developers as testers internal to the product organization. This is especially the case if the outsourced team works in a different location, wherein opportunities for rapport building are reduced. The IPR issues of product code ownership also play a role in distancing the testing team from the rest of the product organization.
Testing service organizations may not always provide full breadth of coverage for testing types Most testing service organizations provide services like black box testing, domain testing, and certain specialized testing such as performance testing or test automation. White box testing is not one of the commonly outsourced types of tests. Other than the IPR issues mentioned in the previous paragraph, the sheer logistics of co-ordination between the development and testing teams, need for a shared configuration management system that should be kept current all the time, and in-depth knowledge of the code required make outsourcing of white box testing to a testing services organization somewhat difficult.
Testing service organizations tend to be more homogeneous in terms of job titles and roles than testing teams in product organizations In a typical product organization, there is a variety of job functions — development, maintenance, testing, support, and so on. Since a testing services company focuses only on testing, the role definitions and job titles tend to be more homogeneous. This could be a double-edged sword. People who look for diversity in job experience (covering all aspects of a software life cycle) may find working in a testing services organization uninteresting in the long run. On the other hand, given the misconceptions of testing as an “uninteresting” job function if a testing services organization can staff its team with people who are passionate about testing, it may easier to offer a progressive career path to the employees. Table 14.2 summarizes these and other key differences between product testing and testing as a services.
Table 14.2 Differences between product testing and testing as a service.
Attribute | Product testing | Testing as a service |
---|---|---|
Type of testing | Will have to address all types of testing as the entire product responsibility lies within the organization | An organization may be specializing in specific types of testing, for example, performance testing or internationalization testing |
Exposure to code | There is likely to be a greater exposure to the product code for the product testing team. This is especially true for white box testing teams. | Generally, testing service organizations focus more on external functionality and hence work off some “product drops” on a SCM repository. In addition, the visibility to source code may be minimal or non-existent because of IPR or contractual reasons. |
Accessibility to developers | Likely to be available as they are part of the same organization | Likely to be minimal |
Career path issues | Since the organization has multiple roles and work functions, this may lead to people in the testing profession wanting to move on to other functions (for example, development) within the organization. Hence may be more difficult to provide testing-specific career paths. | Since the entire organization is fully focused on testing functions, it may be easier to provide career paths in testing for the employees. The expectations can be set and managed better. |
Diversity of tools | It is likely that an entire organization (over time) will standardize on the same tools. Hence, there is usually no need for investing on acquisition and training on multiple tools. | A testing service organization may have to work with multiple clients who have different automation tools and hence may be forced to invest/train people on multiple tools. |
Domain specialization | Since the product(s) is (are) usually specialization focused on a specific domain, it may be more feasible to hire and develop domain expertise within the team. | Since a testing service organization may have to work with different customers who are in different domains, the organization may either have to hire people with different domain expertise or retrain people across multiple domains. |
A testing services organization is made up of a number of accounts, with each account being responsible for a major customer. Each account is assigned an account manager, who is the single point of contact from the customer into the testing services organization. The account manager serves the following functions.
The account manager may be located close to the customer site or at the location of the testing services organization. To develop better rapport, this role would require frequent travel and face-to-face meetings with the customer. Usually this role has a single point of contact at the senior level from the customer organization to co-ordinate multiple projects from the account.
Since the testing services organization is a different entity from the customer, it is physically in a separate location. (Most often, these organizations are in countries with more competitive cost structures.)
The testing service team organizes its account team as a near-site team and a remote team. The near-site team is usually a small team. It is placed at or near the customer location. This team serves the following functions.
This team is usually small and does not necessarily have a manager-engineer hierarchy.
The remote team is located on the site of the testing services organization. This team is usually large in number the team and does the bulk of the work. The organization of this team depends on the size and complexity of the testing project. The remote team manager manages the entire remote team and can have a peer-to-peer relationship with the near-site team or have the near-site team reporting to him or her. Depending on the need, there can be further hierarchies within the organization as test leads and test engineers much similar to the roles and responsibilities that we discussed in the last chapter.
The near-site and remote teams usually are rotated around. For example, some of the remote team members can be posted as a part of the near-site team. For testing services organizations that are in countries different from the customer location, this offers travel opportunities—a common employee-retention strategy. In addition, periodically, a remote team member may have to visit the customer site for any onsite testing and similar activities for which the near-site team may not be sufficient.
All testing organizations face certain common challenges. In the case of a testing services organization to which testing is outsourced, some of these challenges are exacerbated, primarily because of the arm's length distance from the development team. We will now explore in detail these challenges and the ways to mitigate these challenges
The testing services organization is an “outsider” to the development organization. Some of the implications are as follows.
These challenges make it more difficult for a testing services organization to estimate the resources needed for performing testing functions. There are no easy answers for these but all these point to the need for more upfront planning and more thorough tracking for a services organization than what is required for a product organization.
A testing team in a product organization can develop domain expertise in a specific domain. For example, a testing team in an ERP software organization can develop specialized expertise in the ERP domain. The organization can hire a few domain specialists (who need not necessarily have computer expertise) who can augment the testing team. Such specialists will find it interesting to join a product organization because they can find a natural transition from their domain to the (apparently) more attractive IT arena. For example, for someone specialized in accounting, this can be a very natural transition to enter an IT product company.
However, a testing services organization may have to undertake projects from multiple customers. Since there is little product ownership in a testing service organization, it may be tougher to get domain experts to join a testing services company. (However, this disadvantage is fast disappearing as the size of the test services companies increases rapidly and the domain specialists see career growth opportunities.) Furthermore, the diversity of domains exacerbates the problem. Given that most testing service organizations perform functional testing (black box testing, integration testing, acceptance testing, and so on), having domain experts can go a long way in improving test quality. Product companies offer tough competition for these resources.
For being viable, a testing services organization will have to work with multiple customers. As an organization works with customers in a given domain (for example, pharmaceutical or financial services), it develops not only general expertise but also domain expertise in a particular domain. As an organization develops domain expertise, it gains competitive advantage in offering testing services to other companies in the same domain. Similarly, when an organization develops expertise in a specific test automation tool, then it is placed in a position of strength to take on test automation projects for any organization that uses the same tool. However, with the strong linking of IT with organizational strategy in most businesses, a clear line of demarcation would have to be drawn between any two customers.
Two factors contribute to this being a major challenge. First, the testing service organization has a common infrastructure and hence physical isolation of the different teams may be difficult. Second, people move from one project (customer) to another. When this movement takes place, there should be full confidence and transparency in ensuring that the customer-specific knowledge acquired in one project is not taken to other projects. At the same time, for continuous improvement of the testing services organization, the learnings will have to be captured and abstracted at the right level, without compromising the privacy and confidentiality of customer-specific information.
The organization structure we discussed in the previous section addresses the above issues. First, each customer can be treated as a separate entity by associating an account manager working with a distinct and dedicated team for the customer. During the time the project is initiated, appropriate Non Disclosure Agreements (NDA) is draw up between the customer and the testing services organization. Such NDAs provide a framework ensuring that confidential information is not compromised. In certain cases, the teams are located in physically separate locations. Second, customer data for specific customers should also be isolated and secured. This leads us to the next issue of apportioning hardware and software resources and costs.
When a testing service organization bids for and works with multiple customers, it would have to use internal hardware and software resources. Some of these resources can be identified directly and specifically for a particular account. There are other resources that get multiplexed across multiple projects. For example, communication infrastructure such as satellite links; common infrastructure such email servers; and physical infrastructure costs.
These costs have to be apportioned across different projects while costing the project. The challenge is that it is difficult to know how much of these resources should be apportioned to each project.
A testing services organization should always have people ready to be deployed in any new project that may suddenly come from customers. In addition, some prospects may require some initial studies to be done or some demonstration of initial capability before they sign up fully. These would again need technical resources. There may also be cases where the customer would like to look at the resumes of specific individuals and have a say in handpicking people from the services organization to participate in the testing project. In all these cases, there may be a need to maintain “people on the bench,” that is, people not allocated to any project but ready in the wings to take on new projects or to convince customers.
The bench resources are not billable and hence have to be subsidized by the projects. Further, the people on the bench usually get frustrated, develop insecurity, and are at a high risk of attrition. A part of the planning, looking at the business pipeline, is to estimate the bench size—that is, the number of people that can be on the bench at any point of time.
Whether it is product testing organizations or testing services organizations, there are some common success factors between them. These are as follows.
Communication and teamwork As have discussed in Chapter 1, Principles of Testing, and Chapter 13, People Issues in Testing, the testing teams and development teams should work in a co-operative spirit, without viewing each other as adversaries. However, since the testing team's job is to find defects in the development team's work, this spirit of camaraderie is not easy to achieve. Some of the ways that product companies can achieve this spirit of co-operation and teamwork is to have periodic job rotation. This may not always be possible for testing service organizations that remain at arm's length from the development team. There should also be frequent opportunities for communication between the teams and some of this should be in non-work related environments and scenarios. The problem of communication and teamwork becomes magnified when the team is geographically distributed, when there is little opportunity for face-to-face interactions.
Bringing in customer perspective The testing team should act as a proxy for the customer. This requires getting to know the customer perspective. How does a testing team get this perspective? One way could be to bring in domain experts or customer representatives into the testing team. Another way could be to rotate people from customer support into testing. In a product organization, customer support is the point of contact for the customers to report problems. They are usually familiar with the kind of problems customers face, what hurts the customers most, and what would be acceptable to customers. Having them participate in designing test cases or in performing ad hoc testing (see Chapter 10) can increase customer perspective. Another approach is to rotate the testing team members and even the development team members into product support, so that they get a first hand idea of the issues customers face.
Providing appropriate tools and environment To be effective, a test organization must have appropriate supporting tools. Two of the most important ones are the defect repository and configuration management tools. A defect repository provides a way to track defects to completion. As discussed earlier, configuration management tools provide a mechanism for the teams to share the software environment and make sure the entire team gets one consistent view of the product source and object code and other associated files. (We will go into the details of some of these tools in Chapter 15, Test Management.
Providing periodic skill upgrades Testing teams will need periodic skill upgrades to keep them current. These skill upgrades include.
The challenge is to find the time for these skill upgrades amid the tight schedules and deadlines of the team. Career planning of individuals should budget time for these skill upgrades. Or else, the effectiveness of testing teams will reduce over time.
As mentioned in the previous chapter, the topics of people issues and organizational structures are not discussed at great length in literature. The organizational and project models discussed in [RAME-2002] for any geographically distributed project can be adapted and applied to testing teams as well.
18.117.72.224