The right and the only way of outsourcing Software Testing and QA

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

Running track marking 800
  • 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?

Relay track picture

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?

picture of shoes

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

People running downhill

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.

Outsourcing QA | A Doomsday prepper’s guide to an apocalypse-ready webapp

You might be familiar with Murphy’s law which says ‘Anything that can go wrong, will go wrong’. Software isn’t immune to that. But that’s often the last of your worries because the plate’s always full!

Well, not anymore!

Prepping your webapp via a professional third party QA vendor

QA is like checking your life jacket before diving. There are professionals that run quality tests to eliminate the possibilities of a malfunction.

Delegating QA to a professional third party is not a bad idea. If you’re thinking of adding or improving a QA process in your existing SDLC, then there are two ways of doing that. One is to go with an inexperienced local team and another option is to outsource professionals.

An experienced QA engineer is aware of all the possible errors and prepares test cases accordingly.

It’s not safe out there and you must be on-guard at all times.

The right & only way to outsource QA or any help for that matter

Clear communication.

It is vital for coordination. While hunting, Preppers require patience and coordination to hunt. Their coordination through communication determines if they’ll eat or sleep hungry.

You need to think of outsourcing as co-operative hunting. Communication is the key.

50% of the problems are instantly solved with an active and fitting communication channel. That’s the only way both the parties would know what’s expected of them. Fluent and relevant dialogues can lead to result-driven partnerships.

Start by talking about these aspects:

  • Project requirements
  • Defects in software products during all stages of the development process
  • Product quality evaluation
  • Product’s usability

Delegation gets more done.

Don’t “Alpha to Charlie, we need cover!” your vendor. Just plain communication would do

An elaborate plan is one common thing in every prepper’s guide. The plan is made keeping every possible worst case scenario in mind.

Your engagement model is that plan.

Start by defining the type of outsourcing your project requires. Incremental outsourcing allows you to mitigate your risks by dividing work into smaller, more manageable projects. Total outsourcing involves outsourcing multiple projects and programs to a service provider.

Beware of these fatal threats. It might kill your webapp

Pokeberries might look tempting and edible but they’re poisonous.

A webapp is like the wild. There are things that look friendly and consumable but are not. Here’s a handy list of common things that are used to steal user data and are poisonous for your webapp.

1. Cross site scripting (XSS)

Hackers can use malicious scripts across the site to redirect your users to other phishing sites. Via these phishing sites they can extract customer’s information and exploit their machines.

2. Cross site request forgery

Using cross site request forgery hackers can link their malicious website on your webapp. These links when clicked on, compromises user credentials and other personal information.

3. Code injections

Code injections are rather common, they are used to alter the functioning of a webapp and make it crash.

4. Server side includes (SSI) injections

Server side injections are like code injections but more severe. As the name suggests it’s injected on server side.

5. Authorization bypass

Authorization for webapps acts like biometric access control. A successful bypass means the breach of protected information, which can lead to misuse of website data.

Not roughing up your webapp can lead to:

  • Terrible speed
  • Subpar performance
  • Compromised UX
  • High bounce rate
  • Reduced search engine ranks
  • Payment interface issues
  • Loss of potential customers & sales

Testing before sending it out there in the wilderness

Browser Compatibility Testing

Test the traps with something (exclude yourself) after deploying. QA reduces the risks of failure.

Different browsers render websites differently. Bug fixes and critical changes make it more difficult to find a sweet spot for compatibility. QA engineers test all the platforms that your website will run on.

Testing on multiple devices is essential because people use mobiles devices more than computers. Compatibility issues lead to poor performance and it can decrease traffic and affect conversion.

Performance and user experience is one of those things that will instantly affect your business.

With comprehensive compatibility tests you can prevent loss of potential customers & sales. Better loading speeds and lower bounce rates aid in better SEO ranks too.

UX Testing

See the world with a survivor’s eyes and walk in their shoes. That’s how you come up with unusual solutions.

UX testing is seeing your webapp with your user’s eye. With test case scenarios you’re taking a walk in their shoes.

Use real time user-behaviour data to improve user flows and fix abnormalities within the webapp. With the help of UX testing you can determine if your design, user flow, and copy are working as intended.

Functional Testing

Functional testing surfaces friction in your webapp, if any. It also reveals crucial issues of your website’s functionality like UI problems and substandard user experience.

Using functional test case scenarios, QA engineers can compare the functionality of your website against the defined scope.

Load & Performance Testing

This testing uses staging servers to determine maximum load & performance. It’ll help you figure out if you have delayed server responses, crashes, and other potential problems.

Load and performance tests are designed around your business requirements, server configuration, historical traffic on your website, anticipated future traffic of your website.

JMeter and Loadrunner are used to simulate traffic to test your website. These tests help QA engineers to identify key performance indicators for your webapp and server.

Security Testing

You can manually get rid of bugs and faults but new ones keep appearing hence the automated tests for passive safety.

QA engineers use a mix of manual and automated testing techniques on your staging servers to identify security vulnerabilities on your website.

Test Automation

Selenium does the bug hunting for your webapp. It uses test scripts to mimic the user interface over and over. You don’t have to live test manually every time there’s a small change.

Although not all aspects of website could run using automated testing, even if some vital checkpoints are automated, it saves manpower cost to a huge extent.

QA can protect your webapp and cut costs at same time

Your website’s content assets and customer information are key drivers for your success. Security vulnerabilities can cause loss of data, customers, and reputation. A QA team can save your webapp, customers, and sales. Wise men say

“Better safe than sorry”

QA can reduce 30-40% costs of maintaining the quality of the webapp.

We’re no Doomsday preppers but we do have a team of QA/QC engineers that leave no margin for errors and makes your webapp apocalypse-ready.

Say hi, we can make your product fit enough to survive.