With technology changing every aspect of business, the IT industry is subjected to constant pressure to deliver products faster and cheaper. The general expectation is to build a sustainable eco-system, which is capable of producing rapid prototyping and design; ensuring agile development & testing; and providing fully automated deployment minimizing time-to-market, at no additional cost. And all of these should work seamlessly across diverse technologies and platforms. This is why continuous testing is vital for speed-to—market.
Here’s an explanation –
In Agile and CD (Continuous Delivery) process, the frequency of release is very high and the expectation is to make it ready for business as quickly as possible without compromising the quality. As soon as a new feature is developed, it needs to be tested in a same succession to identify the errors immediately and intimate to the developer for the quick resolution. An automated and integrated process helps to make the new features available to the market speedily. Now let’s look at the role of Testing in DevOps.
During the code integration to code repository, developer pre-flight test their code to make sure it doesn’t blow up the code base. In CI cycle, code commits from multiple developers need integration testing to verify the merge. During continuous integration testing, nightly and weekend regression runs are automated to find the problems before the software release. During the release of deployment phase, more testing verifies the release package are ready for the business. DevOps brings the testing into the mainstream of development processes, and avoids the problems created by having “big-bang” testing left to the end of the cycle.
The case of Extreme Automation
IT leaders worldwide are trying to find ways to automate and accelerate delivery pipeline to meet the business needs of their customers. For the QA Community, this translates into embracing and maximizing automation in all phases of software development lifecycle. With so many diversities with respect to technology, tool set, scripting languages, etc. to cater to, Extreme Automation is the only answer.
Software quality is multi- dimensional and has many contributing factors. Quality is attained not only by defining strong processes, but also how we implement the good practices through efficient usage of tools. This multi-phase process comprises phases like planning, requirement analysis and design, coding, refactoring, test execution, defect reporting, bug fixes and report analysis. In simple terms, Extreme Automation refers to an umbrella concept that brings together people, processes, and technologies required for on-time seamless and continuous delivery. A typical Extreme Automation setup should have support for:
- Automation across multiple technologies e.g. Desktop, Web, mobile, wearable devices, etc.
- Automation across different testing types e.g. functional, usability, mobile, Cross browser, UI, performance, acceptance, etc.
- Automation across the phases of a typical testing lifecycle, for e.g., requirement analysis, design, coding, testing, bug-fix, etc.
- Automation at multiple layers, for e.g., data, middleware, UI, etc.
In the course of adopting Extreme automation, QA services are facing various challenges, some of which are given below:
- Support for multiple interfaces and platforms – Consumers don’t live in one channel- they are continuously switching between tablets, phones, computers, etc. to get the maximum out of their digital experience. This is resulting in the need of specific solution to manage the integration and communication across Omni-Channel ecosystem running across multi-platform and devices.
- Mindset change in adapting to Extreme Automation Culture – One of the biggest barriers to Extreme automation adoption is resistance to frequent changes.
- Development Testing– Test-Driven Development is one of the difficult practices for developers to get accustomed to. Developers are used to write unit test cases after they have written the code. Asking them to think about different test scenarios, write unit test cases, then write code, keep refactoring doesn’t appeal to them as they feel ‘QA’ activities are not their area of concern.
- Start Testing Early – Teams usually do not involve the QA members’ right from the project initiation phase. Bugs getting detected at a later stage, impact the product quality and time-to-market, thus resulting in huge losses for the customer.
- Real time collaboration across distributed teams – Now-a-days, teams are distributed across geographic locations and time zones for providing project support around the clock. This poses a major challenge in managing and ensuring collaboration across cross-cultural teams.
- Difficult to test application with complex architecture – For getting the competitive edge, companies are delivering applications with lot of features and functionalities, which is increasingly resulting in applications with complex architecture that are more intricate. Businesses are thus facing significant challenge in testing these products using traditional methods.
- Virtualization of all possible applications and databases –At various phases of SDLC, due to a number of factors – environment, infrastructure, services, application etc. – might not be available. Unless the missing piece is virtualized, QA activities get restricted. The flipside of virtualization is that it requires specific skillset and tools for implementation. Moreover, it can’t insulate the chances of hardware failure.
- Enforcing process standardization across development and testing lifecycle – It’s a common belief since the Agile model says that people should be put before process, so no process needs to be followed. This leads to chaos and lack of direction.
- Set up efficient infrastructure to be able to support continuous Integration: Continuous deployment heavily relies on a robust infrastructure that automates and instruments the process of testing, integration and deployment of new features. To procure necessary configurations for setting up the E2E infrastructure sometimes becomes an issue.
There is a unique opportunity that can be leveraged to help clients achieve continuous quality across run, change and transformation initiatives. IT Companies now need to align their services to business-driven outcomes, which can lead to increased productivity and innovation for their clients.