Optimus Information Helps a Leader in Catering and Takeout Remain Number One

MonkeyMedia Software is a Canadian company with tremendous expertise in restaurant systems for the take-out, delivery and catering segment of the food industry. Their business focus is to help multi-unit restaurant owners execute their off-premises operations to serve their on-demand consumers.

Marketing a Better Sandwich

MonkeyMedia Software approaches its business from a strong marketing and foodservice operations background. The company’s CEO, Erle Dardick, was a restaurant owner who dramatically increased sales through takeout, delivery and catering orders to his local community.

As Dardick’s off-premises sales grew, he needed a better internal system at his deli to maintain, control and scale during the rapid growth. As Chris Roy, MonkeyMedia Software’s VP of Technology, says, “A restaurant can do a great job making a single sandwich for you, but if they have to make a hundred sandwiches fast, then the business model of single-order transactions collapses.” Catering is a different business.

That led Erle Dardick to work with a software developer to solve this dilemma in 1996, a time when the internet was focused on “static web pages”. They used the deli as a platform to design a SaaS-based solution for takeout, delivery & catering.

From Food Sales to Software Sales

As a result, Dardick began to license his software-as-a-service to other restaurant owners and foodservice operators, hosting servers at a nearby location on a private cloud. MonkeyMedia Software was a pioneer in the adoption of cloud technology and by 2002 the company became a SaaS product focused on off-premises operations for the on-demand consumer.

Over the years, MonkeyMedia Software has evolved an ecosystem of technology partners including POS, payment, loyalty, delivery, marketplace, analytics and fraud prevention.

This is where MonkeyMedia Software is leveraging the power of Optimus.

Evolving to the Azure Cloud

Optimus’s relationship with MonkeyMedia Software began with something we know and do very well: testing. In this case, it was regression testing, covering hundreds of thousands of different configurations of their platforms, as the company prepared to move them to Microsoft’s Azure cloud.

Chris Roy describes the task as one of scale. “We were doing lots of manual testing at the time, so automation was a natural evolution. But we had to back-fill and make sure that our older code, some of which was ten years old, was still working as well. It was an enterprise-level system that we had built and now had to test.”

The relationship grew from there. Optimus provides MonkeyMedia Software with deep architecture experience in development and testing services. They have come to rely on us to oversee our testing teams in India on their behalf and to supply top Azure architects with specific knowledge that MonkeyMedia Software doesn’t have in-house – and doesn’t need to acquire.

“Moving our key services, like our credit card payment services, to the Azure cloud gives us more security than we can provide. By using Optimus as our Azure partner, we can not only achieve the levels of compliance that we need, we can also make use of their expertise in this area. Along the way, we have developed a deep level of trust with Optimus,” says Chris Roy.

Relying on Optimus

Optimus Information offers all our clients exactly what MonkeyMedia Software is using: the diversity of our skillset. Currently, we are employing automated testing with MonkeyMedia Software to establish secure credit card gateways in Azure that they can ramp up quickly and efficiently.

We continue to do both automated and manual testing with MonkeyMedia Software, becoming an extension of their QA team on a day-to-day basis. One of our Azure architects has helped to design their APIs and provides expertise on how to integrate even more Azure architecture into their platforms.

“We don’t have the in-house talent or knowledge to do it well on the Azure side,” says Chris Roy, “so Optimus is filling a big hole.”

We’re experts in testing and development in the cloud. We can offer solutions that push businesses to do more and earn more. We invite you to call us today to learn more about our specialized services and talented workforce.

API Testing: Do It Right and Automate

Software development in 2018 looks nothing like it did a decade ago. Developers have been driven to find faster and more efficient ways to produce a finished application. Customers demand better products, and market pressures mean get your apps out now or risk annihilation from competitors.

This means abandoning the waterfall method of software development where each part of a program was completed before the next was started, often leaving error identification (and subsequent delays) until the end of the cycle. Instead, developers are now embracing Agile development with its highly integrated production methodology, often releasing product in two-week sprints.

APIs Can Get Your App Market-Ready Faster

We live in a fast world. Enterprises that are big users of technology need to keep up with the pace of change demanded by their customers. This can put a high degree of stress on internal IT teams and lead to the inevitable coding errors and resulting delays in new product release.

An advantage is the ubiquitous use of APIs or Application Programming Interfaces. APIs allow nearly limitless possibilities for how applications can interact with each other.

However powerful the use of APIs can be, they also need to be put through a rigorous testing process. Unfortunately, this often places added strain on a company’s IT team that may not be familiar with the most effective testing methodologies.

“Often a client doesn’t know what KPI they should focus on or they don’t define it at all. Then they’d have no way of knowing what the metrics are for the data they’re gathering. But if you do it right, you get the right information back from the metrics to make improvements.”

Ashish Pandey, Optimus Information’s Technical Lead

API Testing Begins with KPIs

API testing can be the most challenging part of software and QA testing because APIs are complicated creatures, using protocols and standards not often seen in other forms of testing.
It’s critical to test all the components of the API – not just its UI or its functionality. Testing performance and security are just as critical.

To test properly, says Ashish Pandey, Optimus Information’s Technical Lead at the company’s location in India, it’s important to begin with Key Performance Indicators (KPIs).

Don’t Forget Security and Performance

In addition to defining your KPIs, you also need to focus on more than UI. Some customers, Pandey continues, concentrate on just the UI portion of the application and ignore testing the other components. Security and performance are two areas often overlooked and, if something breaks, it’s probably because key areas within the API were ignored in testing.

“When we test APIs for our clients”, says Pandey, “we generate a lot of data which gives us and our clients a clear summary of what might need to be improved in the future.” This can only happen when thorough testing is done and nothing is left to chance.

While Ashish admits that thorough testing of the UX is extremely important for the customer,  it’s the KPIs that measure the data that then determine the performance of the application. If there are problem areas turning up, they can be remedied in a matter of seconds.

Fail Forward Faster – Automation is Key to Proper API Testing

Proper testing of an API is accomplished by running test cases which are designed to uncover failures. It can be extensive and time-consuming – the opposite of what agile development tries to accomplish – so Optimus specializes in automating as much of a customer’s testing as possible.

It begins with the test cases, themselves, Pandey explains. “We take the customer’s test cases and analyze them to determine if they are ‘automatable’ or not. This makes it possible for us to suggest the correct technology stack with which the automated test could be performed.” In the future, the customer simply runs automated scripts to test different iterations of their applications, saving a great deal of time and money otherwise spent on manually writing the test scripts themselves.

iStock-870784968 API Testing: Do It Right and Automate

The Optimus Test Harness – Why No Company Should Test Without It

A further advantage for Optimus customers is the use of an open source test harness. Ashish Pandey is one of the creators of the Optimus test harness which uses open source components and is configured to test cloud-based applications.

Optimus estimates that 85% of its customers are technology firms that have cloud-based apps often undergoing testing as new iterations are created. Optimus has designed the harness to perform automated testing at different levels. “If we’re doing test automation at the UI level”, explains Pandey, “we have the ability to create automated test scripts for UI. We also have the capability to test at the full API level as well. In fact, our test harness is efficient enough that customers can perform a wide variety of testing on things such as execution of SQL queries to their database. We have built in to our harness APIs like SoapUI, WebSockets and others.”

Test Feedback in Hours (Sometimes While You Sleep)

What Optimus strives to do is provide customers with the sort of speed and agility that can be achieved through automation. “Many of our customers are into Agile development, so what they want is quick delivery of their app with feedback in a few hours,” says Pandey. “Some of them are also evolving with DevOps practices and they want results fast.”

Automated testing, he points out, means that if a customer has three or four hundred test cases to run and each test takes four hours to perform, automation allows Optimus to test while the customers are sleeping. “The next morning, they have the results in their hands, rather than having to wait several days,” Pandey concludes.

Understand and Implement the Right Methodology for Automated Testing

Optimus has one aim with its clients: to ensure that they implement the right thinking and methodologies around testing. Doing so will improve the customers’ UX, decrease errors and get the app to market faster and on time.

We understand Agile development, DevOps and automated testing and how the combination leads to rapid deployment of new, error-free applications at greatly reduced costs. We also know that this translates into powerful ROI for our customers.

To learn more about using API test automation to make your software better, faster and more secure, download our new eBook now.


More resources:

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.

Types of Performance Testing and the Best Tools for the Job

In the abstract, it’s easy to think of testing a piece of software as a single set of actions. Within the industry, however, it has become common practice to look upon performance testing as a multifaceted task. The process includes:

  • Load testing
  • Stress testing
  • Endurance testing
  • Scalability testing
  • Volume testing
  • Spike testing

Each phase has its distinct requirements and goals, and it’s important to be aware of them before moving ahead with a project. Likewise, it’s prudent to know which tools and processes are most suited to the job.

Load Testing

Load testing is intended to look at performance under two sets of conditions, normal and peak loads. An organization needs to model what it feels is likely to be normal usage of software. For example, a cloud-based photo storage system might expect to handle a certain load during particular parts of the year. Conversely, specific annual increases, such as during the holidays, would also need to be anticipated.

The aim of load testing is not to overload the system. This can be done by using software to create virtual users and have them interact with the software. The goal is to see what performance looks like when an expected load is regularly hitting the system. Bottlenecks have to be identified, and notes need to be passed along to developers to see what can be done.

Stress Testing

Taking things to the next logical step, we arrive at stress testing. This is a deliberately intense process that’s intended to find out where the breaking points of operational capacity are. It should only be conducted once reasonable load testing efforts have been made and remedies have been implemented during that stage.

The objective is to identify safe usage limits, and it’s particularly important to spot vulnerabilities that may be triggered when the system is operating under stress. If a database implementation suffers a buffer overrun during excessive loads, it’s good to know that in advance.

Endurance Testing

It may seem a fine distinction to make, but the question of how a piece of software will hold up over a long period of load is important. Anyone who has ever watched a desktop program’s memory usage balloon over the course of several hours of normal use can appreciate the difference. Just as issues often occur when a system is overwhelmed during a peak test, similar problems may begin appear only after a prolonged run of normal usage.

Scalability Testing

Maintaining any project over the course of years will present issues as the user base grows. This calls for a degree of guess work, as you’ll find yourself often trying to determine how 1,000 users today might grow out over five years. This can lead to unanticipated failures, if not addressed early on in a non-functional environment. No one wants to see a production database run out of space for entries because the index was built using INT11 and the system ran out of assignable unique IDs.

Volume Testing

The throughput of any user base is likely to grow as the popularity of a product increases. To get ahead of these problems, it’s also wise to perform volume testing. The goal in this case is to identify where problems might exist based on the volume of usage. For example, read-write issues with critical interface files, such as settings stored in XML, may create volume limits that can be adjusted by minor tweaks.

Spike Testing

Sudden increases and drops in usage can lead to issues that are difficult to predict. If an entire block of internet addresses loses connectivity, a high-volume site might experience a dropoff that’s both massive and instantaneous. These interruptions may even occur mid-operation. Spike testing allows you to identify specific potential issues and see the system fails elegantly.

Moving to Performance Testing

Devising a way to engage in testing while developers are still working on a specific generation of software takes a lot of planning. A lot of companies are turning to Agile methodologies in order to handle their testing needs. The goal with Agile processes is to see that orderly efforts are made to advance products into testing, make notes of issues, implement changes and confirm completion of work.

Software performance testing work tends to call for a large degree of automation, and it’s wise to keep this in mind when choosing what to use. Many software development environments, such as the Enterprise editions of Microsoft Visual Studio, come with their own performance testing components. Those looking for an open source solution designed for web applications might wish to check out Apache JMeter. IBM Rational Performance Tester and HP LoadRunner are also popular choices for Licensed solutions.

There are several questions to look at. For example, JMeter, by virtue of being open source, doesn’t offer the same sort of scalability that the Visual Studio tools do, especially in terms of being able to buy more virtual users instances in order to keep loading up. If you’re looking for a system that offers cloud-based solutions and simple Agile integration, IBM Rational Performance Tester is a solid option.

 

If you have questions about getting started with Performance Testing or want to push the toolset further, give us a call. We’re always happy to answer any questions.

Test Automation for SaaS Products

Software as a service is a popular delivery model for various business application domains including content management, service desk applications, accounting, invoicing, human resource management, CRM and ERP.

Versus long-term software licensing of client packages, cloud delivery of SaaS enterprise apps offers greater convenience, lower risk and the economic advantages of reduced capital and operational expenditures with pay-as-you-go subscriptions.

Challenges of SaaS Testing

SaaS testing poses unique challenges:

  • Frequency of Releases – The instant delivery model of SaaS means shorter release cycles, which implies an agile or DevOps development and testing practices.
  • Functionality and Performance – SaaS implies no product versioning, thus a new release affects all users at once. So, functionality and performance testing must ensure the absence of negative impacts.
  • Cross-Browser Compatibility – A SaaS deployment needs a single OS but must present itself consistently across browser brands.
  • Scalability and Accessibility – Understanding how a SaaS app responds to increased load, zero to peak load rates, demand from multiple sources, such as mobile users, and meeting SLAs are all critical aspects of scalability testing.
  • Data Integration – If a SaaS application is part of a suite data sharing must be thoroughly tested, which is especially difficult if suite members follow different release schedules.
  • Usage Models – Configurability of SaaS apps is critical for adoption by enterprises who each have their unique ways of doing business. Testing configurability requires understanding your users’ business models to optimize which workflows to prioritize.
  • Security – The convenience of anywhere access of SaaS means testing the strength of a service’s identity management and data security measures is critical.
  • License Functionality – Without sound licensing policies that are correctly enforced, both users and providers suffer, so each release must re-verify that licensing is being correctly enforced.

SaaS Testing Advantages

Many traditional application testing aspects are not applicable to SaaS testing. SaaS does not require multiple version support nor will the software run on multiple OS platforms. Support for client or in-house servers is also unneeded as is backward compatibility testing.

Applying SaaS Test Automation

Test automation improves test coverage in the areas mentioned previously as well as complementing agile or DevOps environments required for SaaS products’ compressed release cycles. It does not completely preclude manual testing, however, which can suggest new test cases using exploratory testing immediately after each code release.

Test Automation as a Development Project

When approaching the unique aspects of SaaS testing automation, we find it extremely helpful to constantly identify areas where automation may be employed from unit testing to production.

Additionally, the most successful automation efforts, in our experience, create test automation capability via the same development methods used for the code itself:

  • Develop a detailed test plan designed to keep pace with agile or DevOps practices
  • Plan for continual test documentation maintenance
  • Start with a framework-driven approach that includes defect tracking functionality
  • Always strive for reusability in your tests, which promotes less brittle tests while saving time
  • Develop a solid test reporting protocol that rapidly returns results to the developers
  • Hire testing experts with coding skills as no test automation tool completely substitutes for such skills

Measure Success

We have seen many test automation efforts fail because no metrics were put in place from the beginning to measure success or failure and guide corrective steps as the project progresses.

Start by setting goals for the percentage of test cases that are automated for each area of testing, a percentage improvement in test coverage and the percentage improvement of time to release. Simply applying these metrics will suggest other useful metrics to apply as your test automation capability matures. Strive for metrics that are relevant to assessing the overall ROI of your test automation efforts.

Test Automation Framework Capabilities

When building or buying a test automation framework assess its maintainability to avoid it falling into disuse in a short time. For instance, if new tests are difficult to add to existing collections, testers will resist augmenting test coverage.

Your automation framework should accommodate testers with coding skills but reduce complexity for those testers without such skills. It must separate scripts and data, handle multiple data formats, such as CSV files, plain text, XML and so on.

If a candidate test framework does not include a test manager, defect management tool or continuous integration and continuous development capability, assess the effort required to integrate those critical functions.

Strongly consider using a cloud-based automated test framework such as Saucelabs, BrowerStack, TestingWhiz, ITTester, etc. to lower costs and increase scalability. Cloud deployment services such as AWS, Azure or Google Cloud Compute also offer the ability to virtualize test automation instances using your preferred hypervisor to obtain greater efficiencies.

Consult with Test Automation Experts

It cannot be overemphasised that SaaS test automation is a complex, long-term endeavour with unique requirements that may easily overwhelm an enterprise’s QA capability. Thus, it often pays to enlist experts who have been down this road many times before. Such a move is especially critical given the short release cycles inherent in SaaS products and the value of thorough testing across multiple domains in the highly competitive SaaS market.

 

If you have questions about getting started with Test Automation or want to push the toolset further, give us a call. We’re always happy to answer any questions.

 

Testing in an Interconnected World: Event Recap

How to test applications as they become increasingly universal

In case you missed it, the latest instalment of the Optimus Breakfast Series went off Tuesday morning, June 13th, 2017. The event brought together three of the top software testing executives from Vancouver’s leading companies to talk software testing and the complexities they face in our new interconnected world.

This was a sold-out event that drew over 60 attendees from 35 different organizations!

Panelists:

Moderated by Pankaj Agarwal – Founder and Managing Partner at Optimus Information

Steve Whitfield – Technical Director, Mobile Apps at lululemon athletica

Stu Ashman – QA Director at Mio Global

Larry Ng – Director of Quality at Visier

We would like to extend a big thank you to those who joined us! If you missed it, join our mailing list in the right pane of this page to get notified about our upcoming events.

Stay tuned for the complete video recording to be posted on the Optimus blog.

Fun fact: Larry Ng will also be speaking at VanQ, our QA and Testing Meetup, on Thursday, June 29th. He’ll be speaking on Endpoint Testing with Gatling. Check out the details and register here.

Highlights from the Morning

IMG_20170613_090834-1030x773 Testing in an Interconnected World: Event Recap IMG_20170613_080726-1030x773 Testing in an Interconnected World: Event Recap IMG_20170613_075813-1-1030x773 Testing in an Interconnected World: Event RecapIMG_20170613_093215-1030x773 Testing in an Interconnected World: Event Recap
IMG_20170613_093234-1-1-1030x773 Testing in an Interconnected World: Event RecapIMG_20170613_093255-1030x773 Testing in an Interconnected World: Event Recap

Automated Testing for SSRS Reports

Motivations for SSRS Report Testing

Both data warehouse developers and end users of data analytics reports have a keen interest in the accuracy and appearance of data content. As SSRS reports are being developed, they are typically tested piecemeal during construction and as a whole when completed for both these aspects.

However, it is always possible to overlook certain report items or their representation after report deployment. Furthermore, issues with changes in data sources or the ETL flow may introduce anomalies or errors that affect data values or their presentation at a later date.

SSRS Report Testing Automation Issues

To increase report testing efficiency and accuracy, automated testing is key during both development and maintenance of SSRS reports, especially for organizations utilizing dozens or hundreds of reports on a regular basis. Automation can decrease development time and play an important role in correcting discrepancies in report data post-deployment, which could otherwise negatively impact confidence in the data warehouse.

The complexity of interactions within SSRS itself and the many other components of SQL Server, however, make the creation of fully automated testing a tricky business. Furthermore, the high-degree of customization possible for SSRS reports implies that customized testing approaches are probably required in addition to standardization of report content and layout wherever feasible.

SSRS Testing Areas for Automation

Unit Testing

There are a large number of characteristics that can be tested during development via unit tests. Unit tests can migrate to test suites for troubleshooting post-deployment bugs quickly. These are a few example coverage areas for such automated tests:

  • If data is not reaching a report, validate the data source, check that the correct mappings to the dataset are being used and that each column’s Visibility property is set correctly.
  • If data is not present and the report uses stored procedures, validate the SP parameters, their data types, conversions and formatting requirements.
  • The failure of data to group as expected can be tested by examining the grouping expressions and that the Aggregate function is applied to Numeric columns.
  • Create a query test framework that can take as input individual queries or query scripts. Such a framework would contain validated comparison datasets including metadata to run against actual queries/datasets with each report’s specific data source, parameters or configuration.
  • Test report rendering into formats used by the organization. Initial tests require manual inspection of results, but subsequent tests could be automated using input reports under version control. The most useful of these tests is to output the report in XML format, which is likely to be complete, free of data conversions and most amenable to automated comparison tests.

A possible starting point for building a permanent RS unit testing framework can be found here: http://rsunit.codeplex.com/

Layout Testing

Automating report layout tests typically presents the greatest difficulties. If your organization uses the SSRS web portal, however, you can take advantage of a number of web UI automation tools that facilitate such testing.

Selenium Web-Driver is a free tool for testing web page layout and functionality, which works with Firefox, IE, Chrome and Safari. Automation test scripts are written in either Java, C#, Ruby, Python or JavaScript. Scripts utilize the Web-Driver API which invokes a live browser or runs headless.

Other UI-based testing tools are also available such as the open-source Sikuli, freeware AutoIt or TestComplete, which is a proprietary tool by SmartBear.

Conclusion

Test automation has its limits, of course. This is especially so with regard to SSRS reports testing. For instance, usability testing is clearly out of scope for automation. Automation is further complicated in SSRS, since data is often manipulated beneath the covers beyond control of the report itself. For example, data may be manipulated outside of queries in embedded VB.Net code or in external class libraries.

Even so, automating report testing wherever feasible always pays off. Choose the low-hanging fruit first before expanding into other areas, such as troubleshooting suites and GUI-based layout testing. As you progress, you are likely to find that developing a mindset aimed at automation frequently instills a virtuous cycle of discovering new opportunities for further test automation.

In SSRS testing areas that present the most difficult obstacles, employ third-party tools or employ an experienced automation consultant who can demonstrate automation methods most appropriate for your SSRS development and usage scenarios.

Dos and Don’ts of Software Outsourcing

Outsourcing software development can be a great way to save your company or organization time and money. However, if done haphazardly, it can also become a source of great headaches. It’s easy to make common mistakes, such as not clearly defining goals or expecting the process to magically produce results. It’s much harder to manage the process and see that it achieves the results you desire. Here are some dos and don’ts for you to consider as you get involved with software development outsourcing.

Do Define Your Goals and Metrics

One of the hardest things for any outsourcing services provider to deal with is a moving target. It’s important that you have clear planning documents in place that outline the goals for each project. Likewise, you also need to use clearly understood and widely trusted metrics to measure the success of a project. If you and your outsourcing provider agree on the measures of success, there’s a much better chance you’ll hit your target.

Don’t Fire and Forget

Handing a pile of specs to an outsourcing firm does not count as passing the project along. The process is inherently collaborative. It’s important that everyone on your side, the client side, stays engaged. When mockups come in, check them. When requirements are reportedly fulfilled, verify them. If errors occur, correct them. Do not plan to hand off the specs and just come back months later expecting to see a finished product.

Do Put Processes in Place

Every aspect of your project should have a clear process in place to ensure that both you and your outsourcing company understand what it means for a step to be considered complete. This means verifying that mockups are passed along and that both parties sign off on each step. Requirements for each stage should also be outlined clearly, and all parties involved should agree to them. Nothing dooms a project as fast as an ambiguous understanding of what it means for a step to be truly completed.

Do Communicate Well

This can be trickier than it sounds. Even if you’re running a North American firm that’s outsourcing to another firm on the continent, time differences matter. If your vendor doesn’t have flexible hours, then you’re likely losing collaboration time. For example, if a company in New York City is outsourcing to a firm in Vancouver, it’s important to know that the Vancouver folks are prepared to have someone show up early on some days to touch base with the New York crowd before the work day gets rolling.

Don’t Judge on Price Alone

One of the greatest temptations of outsourcing software development is to simply take the lowest price offered. This is a terrible idea. There are many tradeoffs required to get to the lowest price. Will you be dealing with people who speak your language natively? If the vendor is on the other side of the planet, will they even be able, at that price point, to have someone communicate with you live at a convenient time?

Do Expect a Performance Curve

If you’re beginning your first project with a specific vendor, it’s unrealistic to assume they will be able to just hit the ground running. Every outsourcing firm requires time to make sense of your company’s culture and figure out the best way to achieve the results you seek. Getting frustrated by this process can be very costly. There’s little benefit that can be expected by bouncing from vendor to vendor. Give vendors time to acclimate.

Don’t Outsource Core Functions

Some parts of your company just have to work. The best way to see that your operation works the right way is to ensure that core functions stay in-house. For example, if you ran a vinyl sign company, it would be insane to outsource your graphic design work. On the other hand, it might be perfectly reasonably to outsource backend coding for your website.

Do Prepare for the Future

No matter how strong your relationships may be with your current set of vendors, you need to know the market and be prepared for the future. If the day comes that your preferred vendor can no longer handle the scale of your work, you want to have a list of vetted alternatives in place. You can lose months of project time trying to find a new vendor.

Don’t Use Outsourcing as a Stopgap

Adding an outsourced software development team to your organization means incorporating it on a long-term basis. If you drop a project on an outsourcing company and then turn around expecting in-house people to maintain or even expand it, the results will be rubbish. It will may foster discontent among the in-house team. Look at long term partnerships where certain projects or tasks stay with your outsourcer and others stay with your in-house team. Your guys handling the outsourcing on your software will then become comfortable dealing with your in-house people handling core functions, and vice versa.

Don’t Rely on Technology Alone

There’s a lot to be said for getting in at least one face-to-face meeting, ideally more as required. Your vendor and you can both demonstrate commitment to the project. You also can interface more quickly. If at all possible, try to make in-person meetings part of the process.

Conclusion

Outsourcing is an amazing tool for any company to have access to. It is important, however, to appreciate that it’s not magical. It’s a process that your organization has to fully accept and integrate. With the right checks and balances in place, you can ensure that your outsourced software development efforts achieve the results you want.

Ultimately, successful IT outsourcing comes down to finding the right partner that fits with your organization and IT needs. Optimus Information has become a trust partner to companies of all sizes and in all verticals; we know what works and doesn’t work when it comes your your IT challenges and working with your organization. 

Contact us today for your next IT project. We’re always happy to help.

Start outsourcing effectively. Download our How to Overcome IT Outsourcing Challenges whitepaper.

Tactical Outsourcing vs Strategic Outsourcing

The term outsourcing scares people for various reasons, but there is no reason that it should. Outsourcing is very effective for certain situations, especially when developing software solutions. For a company to grow its internal IT department, it must search for a qualified candidate and go through the long process of interviewing, hiring, and training the new employee. This can take a long time and cost the company a lot of money. The alternative to this is outsourcing.

There are two main types of outsourcing that you can find for your IT needs: tactical and strategic.

Tactical Outsourcing

Tactical outsourcing refers to hiring a firm to perform specific development functions as part of your existing software development process. You retain oversight of the project, giving you more control over the process. This is very helpful if you need a project done on short notice because you can avoid the long process of searching for the right candidate.

Tactical outsourcing is also helpful when you have a short-term need for a highly skilled developer in a specific technology that you do not normally use. A developer with the right skill set may be very difficult to locate, so going through a skilled tactical partner can mean fast turnaround and lower overhead than hiring internal resources.

With tactical outsourcing, you maintain the planning process, including gathering requirements from stakeholders and designing the system that the developers will create. This increases management overhead, but it also allows you to have more control over the process and more knowledge about what is happening. They are familiar with your processes and answer to you throughout the process.

Strategic Outsourcing

Strategic outsourcing involves partnering with an IT company that provides top-down services. They handle the entire planning and development processes, leaving you free to focus more on other aspects of the business. This is nice for some companies because they are able to pay prices per project instead of per hour of work.

With either type of outsourcing, you should address a few key points with your prospective outsourcing partner. The first is documentation because you never know what could happen in the future. If a support issue comes up or you need new functionality added to an existing product, you will need proper documentation to know how the product is supposed to work. Ensuring that your partner provides proper documentation, both in the code and out, can be vital to handling these situations.

You should always provide full technical information about your requirements to your outsourcing partner. Leaving out any details could cause severe problems as you go through the process. Always remember to include all of your key decision makers and stakeholders in discussions to ensure that everybody’s goals align properly. Repeated changes over time can greatly increase the cost of any project, so planning everything up front is vital to a successful partnership.

You should always examine your prospective partner’s portfolio, looking for consistent, high-quality performance over time. Not all outsourcing companies are equal, and even great companies may not be the right choice if their goals do not align with yours. It is also important to note for what industries the company has worked. If the company has worked for other companies in your industry, it could mean that they are already familiar with many of your processes and terminology, making communications much easier.

Conclusion

Both outsourcing solutions could work for you, depending on your situation. Many companies prefer tactical outsourcing because it allows them to maintain more control over the process and usually means less of a commitment. However, the trade off is significantly more involvement from the client. 

At Optimus, we find there is a lot to gain from ongoing strategic outsourcing partnerships, and clients typically reap more benefits: less hands-on management, higher quality work, faster delivery and greater flexibility.

For an in-depth look at strategic outsourcing, check out our guide.

Download our Guide to Strategic Outsourcing

 

What to Look for in an Outsourcing Partner

Bad experiences with outsourcing providers are often traceable to badly designed selection processes or the use of deficient selection criteria. Whereas, you can find ample guidance online on how to build a robust selection framework, we will share the most important vendor attributes for comparing and contrasting outsourcing companies to ensure you select one right for you.

Sizing a Vendor to Your Project

When optimizing the capabilities of an IT provider to your project, size matters. If your organization can fund nine-figure deals, then the number of companies to field such a deal is not large, whereas for smaller projects you have a lot more choices.

The key is to find a provider of a size that will consider your deal to be a big deal. This significantly increases the odds that your project receives the attention it deserves by having their most talented staff assigned to it. Additionally, right-sizing usually provides meaningful accommodation in contract terms and professional treatment from the executive staff.

The risk of choosing an outsourcing company that is too small, however, is that they may not have a sufficient level of technical capabilities, skilled staff, certifications or experience to deliver what you hope to accomplish.

Local Presence with Global Delivery

If your company is based in North America, then choose an outsourcing vendor whose headquarters there. They will better understand your industry, business model, goals and processes since you are working within a similar cultural context.

Your company also benefits from local contractual protections should your project hit a serious speed bump. It also provides the distinct possibility that they can provide onsite staff at your site, which improves communication and timely escalation of critical issues.

However, vendors that also provide delivery from offshore will save you money. Furthermore, vendors with a global presence could directly interact with your own global sites and offer the possibility to add shifts in other time zones that work collaboratively with your local staff, which provides you with 24-hours a day of development.

Consistency in Quality and Delivery

Until recently, the majority of IT outsourcing firms sold themselves mainly on cost and based contracts on hourly rates. These days, more companies compete on their ability to produce results. Those results should include both timely delivery and measurably high-quality products or services.

During your due diligence, evaluate the vendor’s past work and pursue references to gauge how well the vendor has delivered on their promises. Have a detailed discussion with their senior staff about how their corporate culture reinforces the importance of on-time delivery and high quality throughout the ranks.

When you are convinced they will deliver what they say they will, it is still prudent to start the relationship with one or more smaller projects of a few months in duration to validate their work and timeliness for yourself.

Communication Capabilities

Well-planned, thorough and frequent communication is critical when using an IT outsourcing vendor. This goes double if the company you select has offshore resources, since both time and language may present communication barriers.

How much, when and how you each of you communicates with the other should be driven by the client. Both sides must identify primary contacts for specific areas. These people must have seconds in cases where the primary is unavailable. Daily meetings with program and development managers are not unreasonable as are weekly meetings with BDMs or department managers. To gauge frequency, ask yourself how much time you can afford to lose should a process go astray.

Vendors uncomfortable with your communication plan should raise a red flag with you, since this is such an essential element in your business relationship.

Their Range of Skill Sets

Except for the largest IT organizations, most companies do not have all the personnel with all the right skill sets for every project. When evaluating vendors’ technical and process capabilities, strike a balance between broad and deep skills that align with your business and project needs.

If you hope for the vendor to work on more than one type of project or you wish to establish a long-term relationship, then one with a broader range of skills may work out better in the long run. A possible drawback is that a project comes along that is a mismatch for the vendor’s skills and quality suffers.

Many enterprises today recognize that one size does not fit all, especially when working with small to mid-size IT outsourcing companies, so they choose to multi-source these services. This can complicate internal management of vendors, but often the point solutions that smaller vendors provide are of higher quality, with faster delivery and at the same or lesser cost.

Conclusion

Proper selection of an IT outsourcing vendor will significantly augment your company’s strategy and operations. Lack of due diligence, however, often leads to negative consequences plus lost time and money.

Use the selection criteria above along with a robust process comparing business requirements against each company’s pros and cons. This will lead to asking the right questions and building a seamless working relationship with a talented development provider.

The Optimus Information model is designed to allocate the right mix of local and offshore resources in order to optimize expertise, speed and cost. We provide the ability for development teams to quickly add specialty skills to a development team without incurring long-term costs.Our successful track record speaks for it’s self, and we love to share past work we’ve done. Our global team is made up of a diverse range of experienced professionals, allowing us to work on complex solutions requiring a wide variety expertise. The result for our customers is the capability to far better manage resource capacities and outcomes.

Contact us if for your next IT project. We’re always happy to help.

Contact us now