Welcome!

Security Authors: Raja Patel, Yeshim Deniz, Liz McMillan, John Barco, Peter Silva

Related Topics: .NET, Java, SOA & WOA, Linux, Web 2.0, Security

.NET: Article

Reboot Testing for Modern Software Development

The testing industry must evolve and adapt to keep pace with modern software engineering.

Traditional methods of software development went over the waterfall in a barrel and smashed on the rocks below. The Agile Manifesto was written more than a decade ago. Agile adoption has worked wonders for software development. New products leap from concept to market faster than ever before.

Software updates are expected to roll out quickly into live products without disruption, the cloud is growing ever larger, and mobile technology is impacting heavily on how applications are developed. Feedback from the end user informs the design. Documentation and planning are sidelined in favor of flexibility and speed. It's a trend that has powered the app revolution, but it's so focused on developers that testing has been forgotten.

Clear Out the Old
New builds come thick and fast nowadays. It has become much tougher to estimate the required resources to properly test a project at the outset and, even if you could create an accurate estimation, it would soon be rendered obsolete.

It's not feasible to have small, fixed-size teams of testers covering an Agile project. As each new sprint introduces new features, the amount of work grows. Testers must check the new functionality, but they also have to verify bug fixes and complete regression testing. If you don't scale the team up as time wears on, or develop automated tests to reduce the workload, then things will start to slip.

Building a New Approach
The Agile mindset in the developer community has given birth to countless methodologies, supported by books and dedicated software tools. The discussion and support is lacking in the testing industry and that needs to change. Testers need software tools that are up to the job. Test management should cover the entire lifecycle of testing. An adjunct of the project management software designed for developers is not going to fulfill their needs.

The Agile age demands skilled testers equipped with tools that enable them to record tests step-by-step, link user stories and test cases, automate scripts where necessary, export and import bugs, and extract an overview of testing progress.

By developing exploratory testing skills and employing automation where it makes economic sense, testers can rise to the challenges of modern software development.

Employ Automation When Appropriate
The real value of testers is in their ability to test drive new features and validate bugs. You don't want them engaged in a regression testing slog. It means duplicating work and it's dull and repetitive for the testers. You won't get maximum value from your resources that way.

Automating regression testing can free up testers to focus where you want them. It's not easy, but with the right plan it can work. You can't create your test cases and scripts until the code is deployed. What you can do is record the testing process as your testers work through the new build and then use the steps captured to generate new test cases that can serve as the basis for automated regression testing on the next release.

Tester as End User
In the days of waterfall development, testers would have extensive documentation and requirements to pore over in order to create a detailed test plan. All the test cases would be prepared and ready to execute when the build arrived. That's often not possible with agile development. If the developers are going to adopt an agile mindset, then testers need to do likewise.

Exploratory testing can be employed to examine each new set of features when the build lands. Testers can record their steps and then edit them to create a solid base for regression testing. A core set of test cases can be fully scripted and automated. This process requires an evaluation of where the most value can be derived and that decision should be informed by what you know is coming down the pipeline from the developers.

For this to work testers must be included in the development process early and often. They need to be in Scrum meetings, they need to understand the user stories, and they must be empowered to contribute and ask questions. Testers can obviously learn a lot from developers on the project, but they should also be able to ask questions on the business side. If they can truly emulate the intended audience for the softwar, they can make a bigger contribution toward ensuring that it hits the mark.

Let's Make a Change
If we accept that the development landscape has changed irreversibly, we can really focus on ways to empower testers. Adopt an Agile mindset, but apply it from a testing perspective. Seek out new processes and new tools that really deliver the functionality and structure testers need in order to add value in a timely manner. Encourage more communication and deeper involvement in projects so that testers can emulate your end users accurately and help to ensure that expectations are met. Modern software development is still evolving and testing needs to evolve along with it.

More Stories By Vu Lam

Vu Lam is founder and CEO of QASymphony, developers of defect capture tools that track user interactions with applications. He was previously with First Consulting Group and was an early pioneer in Vietnam’s offshore IT services industry since 1995. He holds an MS degree in electrical engineering from Purdue University. You may reach him at [email protected]

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.