When you’re looking to outsource, you probably spend a lot of the project’s time in finding that “right partner”.
What if we tell you that even after choosing the right partner the performance rate for software outsourcing remains below 50%. It means that companies who outsource without considering the risks and operation costs, only get half the efficiency out of their outsourcing efforts.
Companies are so quick to handoff their work to off-shore agencies that outsourcing becomes purely transactional. Maybe we can rethink of outsourcing as a holistic approach and start with evaluating our processes and current performance instead of diving straight into a partner hunt and handing off the work to them.
The key is to have an extensive plan so that the risks are low and success rates are high. The rule of 5 P’s sums it up really good-
Proper Planning Prevents Poor Performance
With this guide you’ll be able to strategize for efficient outsourcing, choose the right vendor, optimize testing costs, and streamline your development process with QA.
Getting ready for outsourcing
- Define Objectives and Goals
Clearly defined objectives and measurable goals makes for a good basis of an outsourcing strategy. Objectives will help you with decisions concerning a project’s business value, vendor, outsourcing models, projects to outsource, and related risks to assume. Down the line objectives will also help you evaluate the success/failure of your strategy.
Whereas, Goals are the events and functional metrics by which management can monitor progress, take corrective action, and project future performance.
- Measure Performance Baseline
You’ll also need to define metrics with which you can represent a baseline performance for your outsourcing efforts. Use these metrics to get a baseline for your current performance which can be later referenced for future measurements. Baseline also clarifies which metrics are important in achieving specific goals and business objectives.
- Set realistic expectations
After defining your goals and expectations, you need to check if they’re are just. Unrealistic expectations of large immediate savings is the reason behind most of the failed projects.
Practical expectations ensure stability for your offshore strategy. A careful analysis for ROIs and timing of the benefits will help you evaluate and set better expectations.
How to choose and manage an Outsourcing vendor?
Shortlist a vendor –
A quick Google search will land you on the pages of thousands of vendors with a fair amount of happy client testimonials. How do you see past a few deliberately filtered out success stories? The first thing in your course of action should be checking the review and references of your shortlisted vendors.
A vendor with a good track record should be able to provide you with sufficient references. References might give you just enough green flags to go ahead in your research. You can then continue your vendor evaluation based on the below mentioned factors.
- Gauge their expertise
To showcase one’s expertise vendors should provide you with their test documentation, portfolio, and test cases. The depth of their reports should give you a good idea about their process and cases they cover.
- See if they have sufficient resources and services
An ideal vendor should always have more resources than you need at the moment. Regardless of your immediate needs, your vendor should be able to do all types of testing be it automated and manual for web or functional, performance, usability, compatibility, API, and security testing for mobile/desktop. It enables your vendor to scale as you do.
Vendor management and assessment –
- Understand your vendor
Vendor management starts from understanding their needs and where they are coming from. An outsourcing vendor has to deal with operational costs, talent acquisition challenges, and problems with other projects. Excessive price negotiations might push them to cut corners by allocating insufficient or junior resources.
- Regularly assess the vendor
Regular assessment ensures quality. You need to have a systematic assessment in place, so that when you’re unable to get the expected quality of work, you can take action or look for other vendors.
Make sure that the frequency of these tests is not on the higher side, because it will shift their focus on showing rather than actually doing things. Assessing too frequently will keep them on the edge all the time.
This assessment criteria should get you started.
– Number of missed bug – Quality of defect description – Correlation between testing efforts and outcomes – Quality of test documentation – Capacity and availability of resources – Efficiency of testing tools
- Manage vendor performance
Assessment provides you with insight that you can use to improve the testing procedures in place and maybe introduce some measures to increase the efficiency.
You should review vendor’s testing documentation at least once a month. Based on the reviews, your QA lead should provide the test team with relevant feedback, detect hidden wasteful steps and cost drivers.
You should also be in constant touch with your vendor’s QA manager to communicate missed bugs or unclear reporting. Ensure that the test team properly understands business and software requirements.
In case a vendor fails to deliver on your expectations, you can consider a multi-vendor strategy. For big enough projects you can assign different part of projects to different vendors. Having options makes the replacement easier when and if your projects are at risk.
Dealing with cooperation issues –
- Prioritize testing activities
Addressing urgent issues is a common practice in an agile environment but urgent requirements can often delay the important issues. Because, every time there is a change in requirement vendors need to adapt and reprioritize. While dealing with the changes they might leave business critical or problematic features out of the scope.
Your QA manager should be able to help the test team create a clear test plan and prioritize testing activities, so that nothing is swept under the rug.
- Include several SLAs in your contract
Since it’s difficult to match a traditional contract with a flexible agile testing process, you can divide your contract into several service level agreements(SLA) to make collaboration more manageable. Each SLA should cover a part of the services to be rendered, the time required for execution, priority, and KPIs.
Which Outsourcing Model to choose?
An outsourcing model has many variables, such as scope, distribution of responsibility, contractual flexibility, and duration, but the main variables that define a model are the distribution of responsibility between you and offshore vendor, and the scope of the outsourcing effort.
Staff augmentation
This model has the same characteristics as a traditional onshore staff-augmentation model. You hire contractors to perform a particular task or role. The contractor receives work assignments directly from your company, the same as all other developers on the team, and performs the work remotely.
However, the staff-augmentation model has the advantage of having the lowest risk and being the easiest to implement as it can be executed with a single offshore resource for a fixed task and duration.
Offshore vendors tend to shy away from this model and many strongly discourage its use due to the shared overhead costs and limited upside for the vendor.
Project-outsourcing
This model is a self-contained engagement with fixed start and end milestones where a dedicated offshore team is responsible for delivering a complete project according to your specifications.
If you have a large project, you can start with a pilot project by assigning an isolated part of the project to see if the vendor’s processes are mature and what are the overhead costs and vendor also learns how your company functions.
If the project is small, the risk is relatively contained and both parties figure out the intricacies of an effective business relationship.
This model is more appealing to many offshore vendors and represents a more significant benefit for both your company and the vendor because the model can be scaled up to more and larger projects.
Dedicated development centre
In this model the vendor has a pool of resources, resources that are dedicated to your company’s use.
As your company matures in its relationship with an offshore vendor, this is a logical next step in growing from either a staff-augmentation model or a project-outsourcing model.
This model allows the same resources to be retained for multiple successive projects and reduces the loss of intellectual capital prevalent with the project-outsourcing model.
Functional outsourcing
This model outsources an entire business function, process, application, or department. This tends to be a high-risk, high-reward endeavor.
You must be confident in your vendor’s ability to deliver significant business value and minimize the risks of business disruption before entering into this kind of relationship.
However, offshore vendors that specialize in a certain business functional area can often provide a higher level of expertise than you can — at a reduced cost.
Tests to look for
An experienced outsourcing vendor with structured QA processes will help you realize robust and reliable products in shorter turnaround time. With their proven industry experience they will also ensure consistent implementation of best practices.
Knowing their process can prove to be an insightful experience into their work and how they operate.
Just to give you an example here’s our process that explains how a product is tested, starting from an atomic level (lines of code) to a molecular level(modules) to an elemental level(System).
Unit testing-
This stage focuses on a small piece of an application, even something as granular as a line of code like a method or class, and ensures that it functions as per expectations.
Our Unit testing checklist
- Write a line of code
- Write a method to test that code
- Implement the code
- Launch test
- Verify results
Unit testing accelerates productivity by streamlining development and lowering the risk of time-consuming and costly bugs down the line.
Integration testing-
Units make up a module and if units do what they are supposed to then it’s time to see how they work together as a module in integration testing.
Here are some methods used in integration testing:
- Big bang
- Top-down
- Bottom-up
- Sandwich/hybrid
Integration testing verifies the functionality, reliability, and interoperability of multiple system components working together. It also identifies and addresses problems with exception handling.
System testing-
Software system testing looks at a software product as a whole and evaluates whether it successfully meets the pre-defined functionality, end-user, and business criteria.
- Functionality Does the system function as the requirements criteria detail it should?
- Performance Is the software reliable, responsive, stable, and performant under various conditions?
- Regressions Has the software retained its original functionality since its modifications?
- Usability Is the software user-friendly, and intuitive? Does it offer an optimal experience for the end-user?
- Stress Can the software hold up as the load and stress on the system increase?
- Load How quickly does the system respond under normal and peak conditions?
- Security Do the security features ensure the integrity of the software product as far as protecting sensitive data and information are concerned?
- Recovery Can the software recover successfully and quickly following a crash or failure?
- Interoperability Can the software successfully interact with other software systems or components?
- Documentation Are all test scenarios and requirements agreed upon prior to and during this QA phase well-documented?
If bugs, breaks, or defects are identified during this stage of evaluation, they are fixed and then re-tested, forming a repeated quality assurance cycle until the software QA team signs off for deployment.
System testing ensures end-to-end evaluation of an entire product prior to release and lowers risk for application failures once the product is live.
Acceptance testing-
Even after all the programming, technical oversight, quality assurance, and bug fixing, software acceptance testing is necessary to evaluate that the end product fulfills the purpose for which it was originally designed and developed.
Acceptance testing mitigates any fallout from outstanding bugs or defects that weren’t identified in the previous unit, integration, or system examinations. It also improves overall user experience as testers and users relay usability and functionality feedback
The above mentioned testing process is common to all software development and testing providers. But to ensure utmost product quality and robustness we have these additional layer of tests that help us make our products flawless.
- Load or performance testing on page and application scale
- Security testing
- Accessibility testing
- Visual QA
- Automation testing
Key takeaways
- Software testing and QA outsourcing is an opportunity for businesses to reduce IT overheads and improve efficiency.
- Good software testing is a specialized and professional skill, and not merely an afterthought entertained at the end of the IT project life-cycle.
Even if large-scale offshore outsourcing is not an option that you’re ready to consider, outsourcing a small part of a large project can provide an effective supplement to your existing solution.
Ultimately QA outsourcing boils down to understanding your needs, setting cautious expectations, and knowing when to withdraw.