Visual Studio Test Automation Enables Agile Sprints Velocity
A large accounting firm wanted to replace their legacy audit application with a SharePoint 2013-based system to process their auditor workflows, documentation, tasks, and risk management for their client engagements. The firm used this opportunity to not only design how the new application should support auditors, but also to redefine how an auditor manages their work and documentation – taking them from an existing attitude of “we do our job this way because the software makes us” to “this is how we want to do our job.”
The accounting firm looked to SPR Consulting for all aspects of creating their new platform: business analysis, UX design, project management, software development and testing. They trusted SPR’s broad experience and objectivity in developing a testing strategy, software verification and validation, and defect management. Our goal was to apply tools, processes and experience to raise our clients’ technology to the highest reliability through manual, performance and automated testing.
A Perfect Storm of Changes and Requirements
Constant stakeholder feedback plus an Agile development methodology led to a “perfect storm” of requirements and design changes. With user stories and wireframe documents in a high state of flux, extensive regression testing was necessary to keep up with the changes. This data- and content-driven application was an ideal candidate for test automation because, with so many changes happening constantly, validating all system functions and data management manually would be virtually impossible. With automated testing, yesterday’s updates could be incorporated and tested before we had to implement today’s changes.
Automating Testing Works in Any Target Environment
The test automation framework was developed using Microsoft Visual Studio and the CodedUI extensions in C# and integrated into the SharePoint code base for the client’s application. Benefits of this modular and data-driven framework include:
- Re-use of data from manual functional test cases in Microsoft’s Team Foundation Server/Test Manager (TFS/MTM).
- Parameterization that enables each automated test to run without overwriting data in use for manual testing.
- Execution of the same automation code against any deployment target environment: Development, QA, UAT or Production.
- Multiple suites of individual automated tests are defined, so that a smoke test against the development environment uses the same automated scripts and execution console as a full regression test against the QA environment.
- Re-use of data and automated scripts, saves significant time in automation development as the code has already been debugged.
Significant Time Savings with Automated Testing
Automated Deployment Smoke Test: While a manual smoke test would take at least 1-2 hours per day to verify that each functional SharePoint area was installed correctly, an automated smoke test is now run after each code deployment with nightly builds in the Development environment and weekly builds in the QA and UAT environments. Total hours saved per week: 8-16, based on volume of code change with each deployment.
Automated QA Regression: In an Agile environment, it is crucial for manual testers to test new features. There is no time available for manual end-to-end regression testing, however, which is essential with constantly changing requirements and enhancement requests. By automating this QA regression testing, SPR saved the client significant time and effort. Total hours saved per week: 16-24, based on code changes requiring regression.
Automated Pick List Validation: All pick list configurations are defined in a data dictionary document, created by the business analyst with client input. Testing each individual combination would be tedious and time-consuming for a manual tester. Instead, selections are built into the automated regression suite’s data tables, validating that the deployed selections match the dictionary. Total hours saved: 4 per week.
Load Test Scripting: Before project acceptance and production deployment, performance tests validate the robustness of the user interface, network, load balancing server, etc., at standard and maximum predicted user load (and beyond). The load is generated by the Load Test Wizard built into Visual Studio. The Wizard uses the same CodedUI scripts from the automated regression suite, allowing for reuse of already debugged code. Total hours saved: 24 (per performance test cycle).