Thursday, March 22, 2012

Issues with the Software Testing Outsourcing


Improper and ambiguous documentation is one major problem that can make the outsourced testing a difficult task. The testing team will develop their test cases by understanding the requirements (Baresi & Pezze, 2006). So the Software requirement specification (SRS) document must be precise and unambiguous. Some of the questions that should get answered by reading the SRS would be (Ramesh, 2004):

  1. What are the modules (sub systems) that make up the system?
  2. What are the inputs and outputs of each module?
  3. What is the business logic in each module that transforms the inputs into outputs?
  4. Are there any external industry standards that the software should adhere to?
  5. What are the interfaces between the modules?
  6. What are the external interfaces that the software should present?
These questions will help the external testers to understand the software in a better way and can plan out the strategy to test the product. The effectiveness of the SRS can be judged if the testing team is able to prepare a Traceability matrix, which is a mapping between the requirements and the test cases (Horch, 2003). Understanding the SRS is also important when the Black box testing (testing a specific functionality as an end user) and Integration testing (testing the functionality of the module as a whole) is performed. In order to perform the white box testing which is primarily to test the code, its logic, conditional paths the design document plays a crucial role. Class diagrams, Data flow diagrams, and Sequence diagrams, help the testing teams to develop automated test cases to perform the tests. In short the documentation plays a crucial role in ensuring that the outsourcing team will be able to perform a good testing.

Lack of face-to-face communication is always a serious issue outsourced jobs where the two teams (developers and testers) are sitting in different physical locations. The client company might not be able to put their point properly when communicating via emails or phones. To make the things worse, the two teams might be speaking some other languages.

One of the main reasons why American companies generally outsource their software-testing task to India is because Indian engineers are well versed in English communicating with them is easy. Documentation, especially design documents if written using UML standards can be useful in scenarios where the two teams speak different languages to explain the software design efficiently. Since documentation seams to play a crucial role to make the two teams to understand each other properly, companies have started enforcing strict policies for documentation. The companies have defined standards about the level of documentation that will be done before the software can be considered as complete (Horch, 2003).

 In case the two companies are geographically separately like in case of American client companies and Indian outsourcing companies different time zones is another problem. The twelve-hour time difference makes it difficult for the testers and developers to find a common time to interact. Also any issue if reported by Indian team in the morning can only get addressed during night when the developers in the American company are up. So the resolution of issues can get really slow and time consuming. Sometimes the network infrastructure becomes a limitation when huge data has to be transferred between the two locations. Imagine a scenario where the client company wants to transfer their sample database running into gigabytes to the testing team over a low speed network. It will take days to get the transfer done.  

References:

Baresi, L. , & Pezze, M. (2006). An introduction to software testing. Electronic Notes in Theoretical Computer Science, 148(1), 89-111.

Ramesh G. (2004). Managing global software projects. New Delhi: Tata McGraw-Hill.

Horch, J.W. (2003), Practical guide to software quality management. Norwood, MA: Artech House Computer Library.

 


Friday, March 9, 2012

Benefits of outsourcing software testing


Outsourcing has become very popular in software industry. Outsourcing is often seen as way for organizations to reduce costs and investment, while focusing on what they do well. Outsourcing decisions affect the overall project cost structure. Software testing is one such activity which as we discussed is time consuming and expensive. Outsourcing the software testing to companies in India and other third world countries is very common. There are multiple advantages to that:

1. Outsourcing Companies provide skilled team of testers
One of the reasons why companies decide to outsource software testing is to eliminate the learning curve.
Employees of specialized software testing companies are not only aware of different software testing tools, but they already know how to use them very well. This helps the client company to have some assurance for a quality product and also lower their cost of hiring and training the testing engineers. In case the company cannot hire dedicated testing engineer, it is really difficult to train the development engineers to learn new tools and processes. Tight schedules are another reason why the engineers who are involved in writing code are generally reluctant to find time and learn testing tools and processes. The developer need not have the interest in testing and may not do it properly raising concerns on the quality of the software. Also developer might not have the knowledge to decide the correct type of testing to apply which again leads to error prone testing. Companies generally will agree to the outsourcing since “anything that saves time helps keep projects on schedule is generally acceptable”.

2. Reduce Expenses with Resources
To perform quality testing lot of processes have to be automated. Automated testing techniques involve buying tools, which are quite costly. The testing companies will have the infrastructure ready to perform various kinds of automated testing. Sometimes it is required to test for multiple platforms like Windows, Linux, Solaris. Also the hardware can vary from Intel to ARM to Macintosh. It’s difficult for the client company to set up and maintain the entire testing infrastructure. On the other hand the outsourcing company will have the capability to carry out the desired testing. So the fact that client company does not have to buy them any more is major cost saver.
With the testing being outsourced, the client company can concentrate on the other core activities.

3. Better Software quality
One of the key benefits of outsourcing testing practice is better software quality supported by the fact that the outsourcing companies are fully dedicated to test the product thoroughly. They do have the technical expertise in carrying out the various testing activities, which ensure a certain level of quality. Another factor involved in software development, which makes outsourcing of testing and QA feasible is independent reporting. The testing professionals will be unlike the in-house testers, and they would objectively report the bugs right on time, also this would reduce the communication overhead sometimes observed when testing and development are carried out at the same place.  The testing is all about finding the bugs so that they can be corrected before the product is out in the market. Outsourcing the process is a win-win situation for both the client company and the outsourcing company. The client company wants to make sure that it can make the product as robust as possible. The outsourcing company wants to prove their efficiency in the testing by reporting lot of bugs. So together they both work to make high quality product.
Also the testing companies will test the software against the quality standards set by the appropriate regulatory bodies, which will help the client companies to sell the product easily. The client companies can with confidence mark their product as xyz compliance since the testing company has certified the product.
The outsourcing company will test the software without having any bias for it. Their job is to find out as many bugs as possible so they will be ruthless when it comes to testing the software. This ensures that the software has gone through in depth testing. On the other hand if the same company is testing the software, which had developed it, then the company might have a bias towards the software and might not want to report too many bugs for their own software. However, in case of offshore testing the personnel’s would test them with the consumer perspective.

4. Faster time to market
Testing is a time consuming activity. It becomes more time consuming when the engineers are not skilled with the testing techniques and tools. A company that has testing experts can perform the same task in much time than the company where the testing related experience is less. Also the experienced testers know how to find out bugs in the software. They will create test cases that can reveal the potential problems in the software. The time taken by the testers to perform all these tests and to report the bugs is much less than the time taken by inexperienced developer turned testers. Also the skilled testers can predict the schedule for the testing pretty accurately compared to unskilled ones, so the client companies can estimate properly the time for other activities involved in the product development.
 Sooner the software gets tested is better since the time to market will reduce which indirectly means earlier the client companies can sell their products and make money.