Best practices of functional test automation
Treat your automation project as a software development effort
Just like software development, test automation must be carefully designed, documented and reviewed. Time and again, history proves that seat-of-the-pants implementations are doomed to failure.
Successful organizations view quality holistically across the entire software application lifecycle and apply best practices when implementing test automation. For example, they move testing up early in the development process – even as early as requirements definition. They use modular code that is easy to maintain. In addition, they build test assets that can be reused in later quality phases and future versions of the application.
Implementing test automation is not a short-term project. Those who succeed understand that test automation is a full-time effort that requires a significant upfront investment in time and resources. So they set management’s expectations accordingly. They also realize that an automated solution is no substitute for expertise. So they invest in the appropriate training and develop the right skill set by learning about best practices for automation, testing methodologies and the testautomation solution itself.
Ensure collaboration to optimize software quality
Quality is not just the domain of the QA tester; it is a goal that must be owned by the entire company. By creating a collaborative environment with domain experts and software developers during pre-deployment and with operations throughout post-deployment, QA can capture all the relevant input needed to optimize software quality and ensure that applications meet business requirements.One way in which successful QA organizations promote such collaboration is by creating the position of Automation Architect to fill the role of a test developer. The Automation Architect collaborates with domain experts to understand what
business functions the application must perform and how the application must work in the eyes of its users. The Automation Architect can then design the test automation framework accordingly, ensuring that the application will meet its business requirements and end-user needs for functionality, quality and reliability. Another way to foster collaboration is to seek a software test automation vendor with an integrated platform that expands the quality process beyond functional testing to encompass the entire software application lifecycle. Such a platform infuses quality each step of the way from initial design, to deployment and into production. It also promotes cross-functional communication by enabling all stakeholders to access and share the quality-related information captured within the
platform repository.
Manage constantly changing applications
Change is inevitable – and extensive – in software applications as new business objectives, user requirements and computing environments emerge. In fact, the software maintenance required to keep pace with changing applications accounts for more than 70% of all development costs.
Successful companies mitigate these costly maintenance activities by building maintainability into test automation. For example, they create modular test components that isolate and encapsulate application functionality.When a change in functionality occurs, they only have to modify the effected component(s) instead of rescripting the entire test – enabling them to quickly and easily modify tests to reflect changing application needs.
Ease of maintenance and reusability are two major areas in which test automation drives ROI. The best way to build these two attributes into test automation is to adopt an automation solution with an object-oriented architecture. Such an architecture allows the use of any chosen approach to automation (i.e., test modularity, test library architecture, keyworddriven testing, data-driven testing or record/playback).Most importantly, an object-oriented architecture provides a dramatic reduction in the time and effort necessary to modify tests in order to reflect new or expanded functionality. As a result, organizations can keep up with application changes and maintain a high level of reusability among test assets from build to build.