by Jonathan Binks
Testing ten years ago used to be quite different. In the days of Waterfall and V-Model based projects, testing teams were only used at the end of projects to test functional (and non-functional) aspects of delivered products. Of course, testing professionals and process improvement fans have been saying for a long time that testing is not just execution and should include the verification of documentation and requirements as they are developed. There is still mileage in this and we are still saying it! What this boils down to is that a lot of testing in Waterfall projects is more easily separated from development and operations. Nowadays with the rise of Agile, testing is integrated with development in scrum teams, while developers are aligning more closely with operations by the day. There are very good and well known reasons for this, but how does this affect the suitability of using outsourced testing?
For functional testing of code, as it is developed, external testers are assigned to teams for the duration of the project, or even a specific number of sprints. Testers are embedded alongside developers, scrum masters and product owners – a key benefit of using an outsourced agile test resource is still independence. Business knowledge is picked up quickly by outsourced professional testers, as due to the nature of agile, functionality is delivered in manageable chunks, meaningful to the end user and lowering the up-to-speed time of a test team. Testing today is much more technical and requires a deeper level of interaction with the development team than ever before, that isn’t to say it isn’t suitable for outsourcing. Communication is more important, as is the integration of the outsourced partner with the project team. Assignments are now carried out in parallel with development, rather than once it is completed. Testers are now more involved in demonstrating functionality to users, and are thus more invested, there is less of the ‘them and us’ between the development and test teams, one of the key pillars of Agile.
Another area where outsourced testing can really add value to functional testing in an Agile environment though, is with test automation.
Automation can take various forms, there are more tools available all the time, with the difference between Open Source and Enterprise grade tools becoming narrower, although Open Source options are usually only for specific tasks and do not offer the integration that the paid for tools can. Becoming more common recently for Agile models is the Behavioural Driven Development (BDD) approach. Using BDD, requirements are documented using standard syntax and operators, so that code and thus automated tests are easily generated. This helps align the objectives of the different team members to their common goal. BDD often makes use of Selenium based test automation frameworks, usually specific to the development language. An outsourced testing service can quickly design and implement a test automation framework, based on tools to suit a client architecture, environment, objectives and budget. Test automation is extremely valuable and can either be retrospective or aligned with development activities, usually a sprint behind and linked with continuous integration tools (Jenkins, Team City etc) to enable frequent testing as code is changed.
The rising number of devices has made testing more challenging, which also lends itself well to test automation. There are lots of options available, the best one depending on the nature of the app, whether native, web or hybrid. Cloud based emulated devices can be used to quickly obtain full test coverage of automated regression packs, often in tandem with regular regression tests run via CI.
Organisations with closed architecture, configurable systems like SAP and Siebel can also obtain significant savings from test automation, which can be delivered by a third party and can result in increased efficiencies and greater confidence when changes are made, including configuration, patches and the inevitable regular upgrades. This can take the pressure off the resident system experts, which are often the users, who are not always skilled in testing and are more often than not, time poor.
Test automation is not always appropriate – there are many factors to consider when choosing an approach and a suitable tool in line with the objectives and technical fabric of the organisation. This is where outsourcing to the specialists can really add value – defining a test automation strategy, performing proof of concept of tools and implementing solutions, will allow more regular testing, at less overall cost in order to improve the quality of systems that are increasingly the lifeblood of corporate entities the World over.
Performance is a key area where companies can benefit from a specialist external service, meeting a key requirement of only using specialists when they are needed, rather than having an expensive team on standby for the next test. With more systems being web based and increasingly in the Cloud, performance testing has changed significantly in recent years. It has become cheaper, easier to setup and run via the Cloud, and it is now possible to test web accessible applications from anywhere, with significantly lower setup costs. The traditional model of setting up a test infrastructure at a client site is still relevant, particularly when considering systems that are not accessible via the cloud, or where sensitive data precludes it.
What has changed is the emphasis on more frequent, earlier testing being both desirable and practical. Performance testing is increasingly being integrated into the development lifecycle rather than just being run at the end of projects. It is not unusual to have a performance test framework running alongside an automation regression test pack, all run on demand via CI tools like Jenkins. There are also Open Source static analysis tools readily available that can help identify potential performance issues at a much earlier stage, for example YSlow.
Outsourcing the setup of a performance framework to be added to as development progresses, is a quick way to start reaping the rewards of testing and identifying performance issues early. Once a framework is in place, it can be added to over time, or periodically and run as a whole on major releases, prior to deployment.
Security testing has only become more relevant as systems have evolved across the web and become more accessible. Hackers are seemingly everywhere and still keen to break into systems to steal sensitive data for criminal gain. Outsourcing security testing makes sense, hiring the expertise of security professionals who have the responsibility of keeping themselves up to date on the latest threats and vulnerabilities across the spectrum.
Proving the Value
Outsourced testing has to be able to return on investment and demonstrate efficiencies, value and improvement. This can be done in a range of different ways, including; charting defect detection rates over test phase, meeting service level agreements for testing and project specific feedback and results of wash up sessions.
For companies that wish to outsource software testing, this is where a service based approach comes into its own. Whole programmes of work, or individual project based testing can be easily outsourced, to include multiple phases, working on site or remotely with clients and ensuring communication levels are maintained via virtual attendance on daily stand up calls and online collaboration via cloud based test management / repository tools.
There have been many articles over the years heralding the end of testing and that everything will be different, having dual role individuals in teams capable of writing code and testing it. However, the changes Agile has brought about do not change the fact that:
- Testing is a different mind-set from development
- Independence is crucial in the software development lifecycle
Testing has definitely become a more technical discipline, not only focused on the GUI and user based activities, but also at the API level, including the use of tools for static analysis and test automation along the way. These skills, together with the core technical knowledge required for the specialist non-functional disciplines of performance and security, mean that outsourced testing is as relevant now as it has ever been, actually more so. Testers are more technical than ever, outsourced testing is even more popular than it used to be, and we’re now more integrated with our customers as we work together to deliver better software, and quick returns on investment.
e-testing was founded in 1999 and have delivered many different projects, for a multitude of different clients, from giant multinationals to start-ups. We have a passion for testing and using our knowledge and experience, are able to offer our clients innovative, up to date solutions to improve their efficiency in software testing, and in turn the quality of the products of software development. We can offer the full service, from carrying out an initial health check to implementation of strategies, to include manual and automated testing at all phases throughout the lifecycle and training to support them. We strive to form long lasting, mutually beneficial relationships with our customers, often over many years. Some of our longest serving clients have been using the full range of our services for over 10 years.
Please contact us for more information, we would be very happy to help.