In today’s world of continuous connectivity and instant information, products and services must work with unprecedented speed and reliability. The key to success for businesses is to become Instant-On Enterprises that embed technology into everything they do in order to better address the rapidly changing needs of customers. This allows organizations to remain agile while adapting quickly to change. The approach also leads to innovation in accelerating business growth and competitive differentiation. For example, business applications in the Instant-On Enterprise include features end users have come to expect from their social media interactions such as more control over how content is displayed; more interaction with the application and with other people; and more embedded experiences such as video. The Instant-On Enterprise can deliver on this while reducing operating costs and improving operational processes.
To meet business needs, the Instant-On Enterprise is adopting new technologies and architectures such as cloud computing, Web 2.0, composite applications, mobile technologies, and new methodologies such as Agile and other iterative development processes. These important, new IT initiatives have their own challenges. The ongoing influx of technologies and processes adds complexity, but demands shorter testing cycles, making functional testing more difficult for the quality assurance (QA) organization. An unprepared testing team can be a roadblock to business agility and faster time to market. To meet these challenges, QA teams must change the way functional testing is done.
QA organizations can address these issues and become full partners in implementing modern applications through modeling the Instant-On Enterprise; expanding their skill sets; and engaging more with the business aspects of what they are being asked to test. By partnering with development and business analyst teams and sharing test results, QA organizations can engage in quality management efforts that result in more predictable delivery of applications with better customer satisfaction and fewer defects. QA organizations can accomplish all this by employing processes and practices that allow testing early in the lifecycle, increasing automation wherever possible, and becoming comfortable testing without detailed test design documents. In general, forward thinking QA organizations view their testing practices holistically, invest in test design, and as a result: test more, test faster and test sooner.
The following are specific steps a functional testing team can use to modernize:
1. Start with Design
Although the design step is often neglected, taking the time to carefully design the test strategy pays off by making tests more efficient and easier to maintain. Leveraging a design framework can be a helpful tool in creating a model of the business process and builds a library of reusable test components that can be assembled into flows.
Figure 1: Reduce test creation and test maintenance times by validating business processes with reusable test components.
For example, let’s say there are three business processes to be validated: create order; delete order; and update order. Once the business processes are modeled, it is easy to identify duplication. Figure 1 illustrates how all three processes have the same login function. With a modular approach, the test component for the login function only needs to be created once, not three times, eliminating duplication of effort. If a change is made to the login function, it is only necessary to change the associated test component once, and all tests that use that component will be updated. This test by composition method reduces test creation and test maintenance time and effort. The enhanced efficiency is also realized whether the tests themselves are automated or performed manually.
2. Increase and Improve Automation
Although automation will never completely replace manual testing, finding processes to automate will help the QA organization test more and test faster. By enabling QA teams to test more configurations and iterations with limited resources, automation helps facilitate better test coverage, while reducing the risk of failures in production.
To get the most out of automation, it is important to apply it judiciously. The following recommendations apply to QA organizations determining what and when to automate:
- Regression testing – Regression testing is a “baseline” test suite used in conjunction with manual testing that is easily automated. Regression testing is less about finding bugs in a new release, than about ensuring that the latest changes haven’t caused harm. QA teams can use automated regression tests to create fast-executing, repeatable regression test suites that run 24 hours a day. Incorporating these automated regression tests into the build process allows QA organizations to test earlier in the build process, to rapidly find problems and keep developers working on a known, stable base.
- The previous iteration – In iterative methods such as Agile, it can be difficult to automate and get results within one iteration or sprint. Time is often limited, and the code may still be in flux. Like regression testing, it is good practice to manually test the current iteration and automate the testing of the previous iteration (See figure 2). This helps QA teams test sooner and test faster, both of which are necessary for an Agile process.
Figure 2: It is good practice to manually test the current iteration and automate the testing of the previous iteration.
- More stable applications and components – It is important to analyze the return on investment (ROI) for automation. The benefits of automation over time should outweigh the costs of developing and maintaining the automation scripts. While some testing tools have built in features to harden tests against changes and guide testers through making updates to scripts in real-time, an application in flux may require too many changes to the automation scripts to make automation cost effective.
- Mobile applications – Although primarily tested with manual methods today, it is helpful to automate testing the permutations of devices, operating systems, usage scenarios, and network conditions required for mobile applications.
3. Modernize Manual Testing
While organizations are increasingly trying to leverage automated testing, manual testing still accounts for the majority of all functional testing. Manual is simple, straightforward, and doesn’t require advanced technical knowledge or programming skills. However, as technologies have progressed and applications become more complex, the process of manual testing has remained unchanged. It is still a very resource-intensive and often repetitive effort that requires monotonous reiteration of the test steps and manually typing in data from spreadsheets, taking notes during test runs, typing results into the testing suite, and running tests over and over again for different environments and configurations. Manual testing can also be error prone, resulting in overlooked defects and a high number of false positive. A better approach is for QA teams to streamline communication between testing and development teams, reducing test cycles while maximizing the efficiency and precision of manual testing.
4. Test Services and Non-GUI Components
For composite applications, instead of relying on GUI testing alone to validate underlying logic, organizations should test the services layer (also called the headless layer) directly. These services are often available for testing before the GUI is ready, which makes it possible for QA to start testing and automating earlier in the application lifecycle. This has great advantages, whether the team is using Agile processes or not. It is simpler to pinpoint the location of the defect when dealing with isolated components, and it is easier to fix bugs when they are found closer to the time of injection.
More and more of the business logic of an application resides in the services layer, and it is often leveraged by multiple applications. A defect that goes unnoticed in these services can have widespread and unpredicted ramifications. Testing these services independently reduces risk and hardens the building blocks of composite applications.
As more components become available, QA teams can test multi-layer composite applications by automating an entire transaction through GUI and non-GUI components. This process improves the quality of composite applications by testing more functionality across multiple application layers. Furthermore, it helps find defects that would otherwise be missed when only testing through the GUI.
The Instant-On Journey for the Functional Testing Team
In order for QA teams to address emerging market needs – including the adoption of cloud computing, Web 2.0, Mobile, and composite applications – there must be a transformation in the way functional testing is done. Successful functional testing teams are forward looking and view their testing practices holistically. By investing in test design, testing early in the application lifecycle, and automating when and where it makes sense, an organization will ultimately boost growth, agility and innovations. These evolving practices are key to functional testing in the Instant-On Enterprise.
About the Author
Kelly Emo Kelly Emo is director of Applications Product Marketing for Software in the Enterprise Business at HP. She leads the product marketing team responsible for HP’s Applications product portfolio, spanning Project and Application Portfolio Management, Application Lifecycle Management, Quality Management and Functional Testing, Performance Management and Load Testing, and SOA and Application Governance.
Emo is a seasoned software professional with over 20 years of experience in product marketing, product management and business development in the domains of applications and SOA software, integration middleware, Java and software development tools, software as a service, and networking.
Prior to this role, Emo was senior manager of Product Marketing for the SOA software portfolio spanning governance, quality and management at HP.
Prior to HP, Emo was director of Product Marketing for BEA Systems integration product line and launched BEA’s award-winning AquaLogic Service Bus. She also worked as director of Product Marketing and Business Development at Jamcracker Inc., a startup providing aggregation of application service providers through a single-sign-on portal and managed marketplace for enterprises and small- to midsize businesses. She also served two years on the board of the ASP Industry Consortium.
Prior to Jamcracker, Emo worked in HP’s Commercial Systems Business Unit and Information Networking Division in various product marketing and product management roles.
Emo has an MBA from the University of Santa Clara and a Bachelor of Science in computer science from the California Polytechnic State University, San Luis Obispo.