Posts

Outsourcing Your Software Testing: When Does it Make Sense

One of the biggest challenges facing any organization that produces software is testing it. Using in-house testing methods may lead to a number of issues. Insiders often have a particular feel for how a program works, and this can lead to them miss problems. Also, many organizations simply don’t have the experience dealing with testing as a specific trade. It’s not usual, therefore, for operations to outsource their software testing efforts. Here are a few key ideas to keep in mind as you face that choice.

Automation vs Manual Testing

Some tasks in testing are simply too hard for a human user to truly duplicate at a scale large enough to produce meaningful data. For example, companies trying to test the functionality of APIs will have a difficult time hitting servers with enough requests to simulate the load that millions of real-world users will produce in employing a fully deployed version of the software. This is a case where automation of testing efforts might prove to be highly advantageous. Similar cases often emerge when a company needs to test the scalability and endurance of software, and automation is also a common choice for testing how well spikes are handled.

Conversely, automated systems often struggle to fully reproduce usage behaviour. User interface issues are especially hard to detect by any means other than real-world use by actual humans. In instances where the user interaction with the software is more important, it may be wise to look toward a manual testing solution.

For companies using automated models, many are turning to Agile processes. This approach allows them to focus on providing support in shorter sprints. In environments where frequent releases are anticipated, an Agile model using functional and regression testing helps to see that nothing is broken. This also limits the leak of issues into production models, since the process has multiple redundancies built in.

In-House vs Outsourced

There is often a strong temptation to test software solely in-house. In the early phases of a project, this can produce cost savings. It also has the potential to speed projects up, but this swiftness may be paid for later if in-house testers aren’t able to identify potential problems early on. Unless an organization has the resources required to effectively build its own independent, in-house testing division, there are huge possible downsides to handling the task that way.

Outsourced solutions for testing are common. Not only do outsourcing firms bring greater independence to the process, they also are capable of a level of specialization that may actually speed projects up. For companies overhauling legacy products, outsourcing options are often very helpful, as they often have competencies in the use of older systems and programming languages.

On-Shore vs Off-Shore vs Hybrid

The question of outsourcing software testing also leads to questions about exactly how close to home the testing provider needs to be. On-shore firms tend to be much less cost-effective upfront, but they often carry with them some added advantages. Foremost, employees of on-shore firms are more likely to be native speakers of your company’s language. They also are more likely to work in a time zone close to yours, and that can make scheduling of conferences and consultations simpler.

Off-shore firms tend to bring one specific advantage to the table: price. Work that might cost hundreds of thousands of dollars to perform in the U.S. may cost less than $10,000 to do overseas. That said, many off-shore companies can deliver surprisingly impressive results for the price. If you’re comfortable handling conferencing in a flexible manner, off-shoring often can yield major savings.

This is another case where companies often pursue a hybrid approach. Working with a consulting firm to determine what tasks are better to do on- or off-shore may also be beneficial.

Determining Qualifications and Expertise

The most widely recognized governing body in the industry that grants qualifications is the International Software Testing Qualifications Board. The ISTQB offers two tier, certifying engineers who have beginner-level experience of less than 5 years and those who have more. In many instances, it may be simpler to look at technical qualifications, like programming and administrative certifications from Microsoft and Oracle, to establish competency.

It’s wise, however, to not overrate the value of qualifications when dealing with software testing. When possible, you should ask services providers to supply case studies and references.

Conclusion

Software testing, especially once an organization has expanded to the point that it expects a large user base, is important to perform. The question that each company faces is how to divvy up the workload. Some tasks are ideally suited to automation, while others are best handled manually. Likewise, it may make more sense to employ an outsourced firm or even an off-shore company to deal with these aspects of the job. With a little forethought, you can see that your software will be tested thoroughly and without breaking your project budget.

 

If you have questions about outsourcing or are interested in outsourcing your software testing activities, give us a call. We’re always happy to answer any questions.

Download your free Selenium WebDriver Overview

selenium-webdriver-overview.1-300x117 Download your free Selenium WebDriver OverviewThis guide is written to explain the value of Selenium to developers, CTOs and other key stakeholders who need a high-level understanding of Selenium, but don’t need to understand the particulars.

The guide is of value to anyone who fits that target audience, or who needs to explain Selenium to that target audience.

It also includes case study examples of how Selenium is being used to solve real world testing problems in e-commerce and SaaS settings.

Outcomes:

  • Learn Selenium’s core features and capabilities.
  • Learn about Selenium integration with test frameworks, build automation tools, IDEs and ALMs.
  • Understand the basics of data-driven, keyword-driven and hybrid testing.

Download-Selenium-EBook-300x41 Download your free Selenium WebDriver Overview

If you need help with Selenium, then be sure to connect with us for a free one hour consultation.

Software Testing and Quality Assurance Event in Vancouver BC

Software-testing-Vancouver-event-300x200 Software Testing and Quality Assurance Event in Vancouver BC

Software Testing Event in Vancouver

On November 7th, OptimusQA organized a breakfast event for industry leaders in B.C. More than 30 guests attended the Software Testing event at Vancouver Terminal City Club in downtown Vancouver.

The topic of the event, “Sensible, Pragmatic and Effective Testing”, covered the breadth and depth of knowledge required for decision makers to evaluate the testing efforts needed to confidently provide quality assurance.

There were many questions, interactions and ideas floating in the room and we received a lot of positive feedback resulting in offline discussion. We look forward to hosting the next event. Connect with us to learn more.

If you were unable to attend the event or would like to view again, the video is embedded below. Enjoy!

[youtube height=”400″ width=”600″]http://www.youtube.com/watch?v=YWUZQxIURxk[/youtube]

Software Quality Audit for a Web App

We recently did a project for a local organization that was about to launch a new web-based application. They had the application developed by another vendor and wanted to complete due diligence before deploying to production.

We reviewed the application, compared it to the requirements, conducted end-to-end quality assurance testing, and conducted a full code review before giving our client a complete report including defects and recommendations. They then shared this report with their development partner so they could complete the project and deploy with confidence.

Read the full Software Quality Audit case study.

Website Performance Testing

Our client was weeks away from launching their web-based strategy game and wanted to make sure their servers (hosted on Amazon Web Services) would scale according to demand.

Our job was to hammer the servers to see at which points things would slow down and identify which functions slowed down the most.

Read the full story in our case study on Web Application Performance Testing.

Manual Website Testing

We recently helped a client conduct manual testing of their web-based application across a combination of operating systems and browsers. Our testing was focused on functionality, compatibility, and localization as the service is provided world wide.

The goal of the project was to give the client confidence in the stability of their application by conducting thorough cross-platform testing. Our test results, bug reports, and recreate steps enabled their developers to prioritize and address the identified issues. Once issues were resolved, we were able to conduct regression testing and provide the final test results.

Read our complete case study on Manual Website Testing and connect with us to learn more.

Essential Software Testing

Software testing is an essential part of any new software release. According to a study conducted by the US National Institute of Standards and Technology on the impact of software failures, it was reported that software errors cost the American economy almost $60 billion per year.

The OptimusQA team tests a wide variety of software, web, and mobile platforms, providing services from fully outsourced testing to strategy consulting and test automation. Our team adapts to your preferred processes and tools, able to provide recommendations as we work as a seamless extension of your team.

Our clients are able to deploy their software with confidence, as we provide compatibility testing services that evaluate cross-OS platforms, cross-browser, and hardware platforms – both automated and manual. We provide a well-designed and easily customizable compatibility-testing matrix and we have tools and processes in place for an overall dashboard view.

Software testing improves the quality of software, it reduces implementation costs, and it provides a faster time to market when properly structured and implemented. Companies that consider all risks, including productivity and consumer impact, are wise to invest in quality management, including software testing. Defect prevention results in saving related to quality, helping to guarantee brand loyalty and repeat customers.

Quality assurance can sometimes be overlooked or skipped altogether, as it is not traditionally seen as a profit-making department by some executives. Those; however, who shortchange their software products by providing a sub-par version will soon discover the high costs associated with a poor product release – including disappearing customer loyalty, diminished sales, lack of repeat customers, poor employee retention, and low profits. In short, skipping on quality assurance and software testing can lead to disaster.

We work closely with you to determine if an iterative or sequential approach is preferred. Iterative approaches fit companies that want their project delivered in increments, whereas a sequential approach involves all the project planning to be done upfront with a final project delivered at the end.

Providing a quality product will boost software sales and consumer trust in your product, and testing that software properly will save high costs in releasing numerous iterations to correct past mistakes.

With OptimusQA as a partner, you gain a flexible pool of talented software testers, allowing for the sufficient scope of required testing to improve the quality of business-critical systems in a short period of time.

We offer the following services:

  • QA Strategy
  • Test Planning
  • Functional Testing
  • Performance Testing
  • Security Testing
  • Compatibility Testing
  • Report Testing
  • Cloud Testing
  • API Testing
  • Game Testing
  • Mobile Application Testing
  • Test Automation

Software Testing a Growing Career Option

While software testing was once just a subset of software development, and an afterthought with testers cleaning up after developers, software testing is now a solid career in its own right, estimated to reach $50 billion by 2020 from $30 billion in 2012. Expected to capture the majority of the business, India should have 55% of the booming software testing market by that time.

lightbulb-225x300 Software Testing a Growing Career Option

Software testing has become more challenging than ever before, with the rise of mobile technologies and big data and technologies like cloud. Because of this shift, the field now requires broader talents than it’s demanded in the past, with employers requiring everything from test automation to big data testing to selenium and mobile testing.

Testers are now expected to have a larger skill set with broad skills across a variety of platforms and specialties, including mobile. They are also expected to have broad, non-technical skills, like communication, critical thinking, and analytical skills. A great tester gives developers the feedback they require, in the right way, and at the right time. Positive reinforcement is touted as very important on many software testing blogs, as testers are often the bearers of bad news and must be able to disseminate information in a way that will make developers understand and be open to the conversation.

Skills required of software testers, in addition to technological knowledge, should include communication skills, an analytical mindset, the ability to think logically, a positive attitude, and don’t forget those programming skills!

Software testing is a fascinating career for those who love being exposed to the latest software and adding their two cents. It can be highly intellectual, as analytical skills must be employed to find issues and bugs that others wouldn’t have the patience for. There is ample opportunity to grow in this field, and enough work in the future that software testers will be able to find their niche market and specialize in the area to which they are the most drawn to, whether it be big data, mobile, or something else entirely.

This is a fast-changing industry, which is experiencing global influence and trends, and as it grows, there is monumental opportunity for those interested in building their career in an interesting area.

Software testing is indeed a growing sector. IT contractors are currently seeing an increase in fields including web development, testing, but in particular, software testing, which is the bright spot, as demand in the economy has spiked quickly and unexpectedly in 2012, with opportunities increasing as we move through 2013.

Optimus QA is no exception to this trend – we are hiring for Quality Assurance professionals! Be sure to visit our career page if you feel you are a candidate for this type of work!

Five Software Testing Tips

1. Prioritize your Fixes

Your software may have more bugs than you have time for at the moment, so it’s important to prioritize your fixes, ensuring that the most important issues and the issues that could be easiest to fix are tackled first.

It is absolutely necessary to have a plan of attack, and by dealing with smaller things that only take a few minutes to repair and ensuring that the most important and most widely reported issues are dealt with, you’ll be more efficient than fixing everything at once despite priorities. Keep your team in the loop – whatever process you are using for software testing should be transparent to help ensure everyone is on the same page and that priorities are clearly drawn to improve efficiency.

2. Respond to Users

You may have a list of problems or bugs that exist in production, but perhaps your users haven’t noticed or don’t care. If users are not asking for a fix, the issue can likely be put on the back burner unless it alters the functionality of the software. Listen to your users to prioritize the issues that matter most to them. After all, they’re the ones actually using your software.

typing-300x170 Five Software Testing Tips

3. Use the Right Tools

Software testing tools exist for a reason, and there’s no reason not to use them! Find the best tools for your own software and stop relying completely on your own testing abilities – the right tool could point you in the right direction or help you to discover issues you may not have known about or wouldn’t find otherwise. Most importantly, tools often provide metrics to prove what you may think you know, or can offer time saving techniques to allow you to get on with what’s important.

4. Share Your Results

You may want to keep your test results to yourself until you’re finished testing and have an exhaustive list of everything that needs to be fixed; however, if you share your issues as you find them, it is more likely that a fix will be found with more ease.

5. Learn & Improve Your Skills

 It is essential to improve not only your skills, but your testing processes and testing workflow, to ensure efficiency in software testing. Don’t keep testing the same way you’ve always done it – explore new tools, engage with your users, network with other testers, and solicit feedback from your employees and co-workers. It’s important to always be learning and improving your skills in order to up your software testing game and ensure that you strive for personal excellence, resulting in thoroughly tested software.

Types of Software Testing

Types-of-Software-Testing-300x227 Types of Software Testing

Types of software testing and their position in the testing cycle.

With countless types of software testing, it can be daunting to figure out what you should focus on and when. Our experience has taught us that focusing on the right testing at the right time, saves both time and money.

This diagram illustrates the software testing cycle. It starts with very specific tests on core components, then tests those components as a whole and works its way towards user acceptance and beta testing.

Following this testing cycle increases efficiency as each new test builds upon previous tests. To be even more efficient, using automated software testing will greatly reduce the effort when regression testing.

In an agile software testing environment, this testing cycle would be broken down into smaller cycles and have a higher dependence on regression testing.

Here is a brief description of the most common types of software testing:

1. Acceptance testing –Test cases are created from user stories. Normally this type of testing is done to verify that the system meets the customer’s specified requirements. This testing is performed to determine whether to accept an application.

2. Alpha testing – In house virtual user environment can be created for this type of testing. Testing is done at the end of software development. There is a possibility of some minor design changes as a result of such testing.

3. Beta testing – This is a final testing before releasing application for commercial purpose. This is the second phase of software testing in which a sample of the intended audience tries the product out.

4. Black box testing – Internal system design is not considered in this type of testing. Tests are based on requirements and functionality of the software.

5. Comparison testing – Comparison of product strengths and weaknesses with previous versions or with other similar products.

6. Compatibility testing – Testing how well software performs in a particular hardware/software/operating system/network environment and different combinations of above.

7. End-to-end testing – Similar to system testing, this involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.

8. Functional testing – This type of testing ignores the internal parts and focuses on the output, i.e. whether the output is as per requirement or not. This is a black-box type testing geared to functional requirements of an application.

9. Incremental integration testing – Bottom up approach for testing i.e. continuous testing of an application as new functionality is added; Application functionality and modules should be independent enough to test separately. Incremental integration testing is done by programmers or by testers.

10. Install/uninstall testing – Tested for full, partial, or upgrade install/uninstall processes on different operating systems under different hardware and software environment.

11. Integration testing – Testing of integrated modules to verify combined functionality after integration. Modules are typically code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.

12. Load testing – This is a performance testing to check software behavior under load. This entails testing an application under heavy loads, such as testing of a web site under a range of loads to determine the point at which the system’s response time degrades or fails.

13. Performance testing – Term often used interchangeably with ’stress’ and ‘load’ testing. This utilizes different performance and load tools and checks whether the system meets performance requirements.

14. Recovery testing – Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.

15. Regression testing – Testing the application as a whole for modifications in any module or functionality. It is difficult to cover the entire system in regression testing so automation tools are typically used.

16. Sanity testing – Testing to determine if a new software version is performing well enough to be accepted for a major testing effort. If the application is crashing in initial use then the system is not stable enough for further testing.

17. Security testing – Testing to determine whether the system is vulnerable to hackers and to evaluate how well the system protects against unauthorized internal or external access.

18. Stress testing – System is stressed beyond its specifications to check how and when it fails. Testing is performed under heavy load, e.g. putting in large numbers beyond storage capacity, complex database queries, continuous input to system or database load.

19. System testing – The entire system is tested as per the requirements. Black-box type testing that is based on overall requirements specifications, this covers all combined parts of a system.

20. Unit testing – Testing of individual software components or modules. This is typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. Testing may require developing test driver modules or test harnesses.

21. Usability testing – User-friendliness check. Application flow is tested, and it is determined whether a new user can understand the application easily.  Proper help functions are documented at points where the user could potentially become stuck.  System navigation is checked in this testing.

22. White box testing – This testing, also known as Glass Box Testing, is based on knowledge of the internal logic of an application’s code.  Internal software and code workings should be known for this type of testing. Tests are based on coverage of code statements, branches, paths, and conditions.

At OptimusQA, we provide clients with software testing services. For more information on our services, please contact us at rupmeet.singh@optimusinfo.com

 

Portfolio Items