Agile Software Testing

Outline

  • Introduction
  • What is Agile?
  • Principles of Agile Testing
  • Agile vs. Waterfall
  • Role of Testing in Agile
  • Challenges of Testers in Agile
  • Agile Tester Should be
  • Pros and Cons
  • Role of Testing in Agile
  • Conclusion

Introduction

In the world of software development, the term agiletypically refers to any approach to project management that strives to unite teams around the principles of collaboration, flexibility, simplicity, transparency, and responsiveness to feedback throughout the entire process of developing a new program or product.

And agile testing generally means the practice of testing software for bugs or performance issues within the context of an agile workflow.

What is Agile

Agile Software Development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.

It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.

  • Agile => Speed
  • Speed requires discipline

It is not;

  • Compressing the schedule
  • Throwing out the documentation
  • Coding up to the last minute

Agile methodology may result in short term speed, but at the cost of long term pain.

Principles of Agile Testing

  • Testing moves the project forward
  • Testing is not a phase
  • Everyone tests
  • Shortening feedback loops
  • Keep the code clean
  • Lightweight documentation
  • From Test-last to Test-driven

Testing moves the project forward

pic2

On traditional projects, testing is usually treated as a quality gate, and the QA/Test group often serves as the quality gatekeeper. It’s considered the responsibility of testing to prevent bad software from going out to the field. The result of this approach is long, drawn out bug scrub meetings in which we argue about the priority of the bugs found in test and whether or not they are sufficiently important and/or severe to delay a release.

On Agile teams, we build the product well from the beginning, using testing to provide feedback on an ongoing basis about how well the emerging product is meeting the business needs. This results as decreasing the hard path of the test process, which can prevent of cause the Project deadline to be exceeded.

Testing is not a phase

pic3

Agile teams test continuously. It’s the only way to be sure that the features implemented during a given iteration or sprint are actually done.

Continuous testing is the only way to ensure continuous progress.

Everyone Tests

pic4

In traditional projects, the independent testers are responsible for all test activities. In Agile, whole team is responsible for testing.

Agile need speed, testing duration would not slow down if the whole team joins the testing phase. Sprints are planned according to the development phases, so testing phase has to be as fast as development phase.

Shortening feedback loops

pic5

Feedback loop:

  • Programmer writes code
  • Someone executes code
  • Provides info about how it behaves

If the software isn’t tested until the very end of a long release, the feedback loops will be extended and can be measured in months. In Agile it cannot be done in this way.

Shorter feedback loops increase Agility in the project.

Keep the code clean

pic6

  • This principle in an example of the discipline that Agile teams have.
  • Buggy software is harder to test, harder to debug-modify, and slows everything down.
  • Every developer should keep the code clean and fix bugs fast.

Lighweight documentation

pic7

Instead of writing verbose, comprehensive test documentation, Agile testers:

  • Use reusable checklists to suggest tests
  • Focus on the essence of the test rather than the incidental details
  • Use lightweight documentation styles/tools
  • Capturing test ideas in charters for Exploratory Testing
  • Leverage documents for multiple purpose

From Test-last to Test-driven

pic8

In traditional environments, tests are derived from project artifacts such as requirements documents. The requirements and design come first, and the tests follow. And executing those tests happens at the end of the project

Defining the tests with the requirements, rather than after, and using those tests to drive the development effort, gives us much more clear done criteria and shared focus on the goal. T. This is a “testlast” approach.

Agile vs. Waterfall

Waterfall is 

  • Structured
  •  One big project
  • A sequential process
  • Suited for situations where change is uncommon
  • Internal
  • A process that requires clearly defined requirements upfront

Agile is

  • Flexible
  • Many small projects
  • Highly collaborative
  • Best for those who want continuous improvements
  • Involves customers
  • A process in which requirements are expected to evolve and change

In Waterfall Projects

  • Test is planned before testing phase
  • Test plan is rarely reviewed during testing phase.

In Agile Projects

  • Test is planned before project start and during project often
  •  Test plan is reviewed each sprint

pic1.png

Software Quality improves because testing starts from day one.

Role of Testing in Agile

  • Testing is the headlights of the project – where are you now? Where are you headed?
  • Testing provides information to the team – allowing the team to make informed decisions
  • A “bug” is anything that could bug a user – testers don’t make the final call
  • Testing does not assure quality – the team does (or doesn’t)
  • Testing is not a game of “got you!” – find ways to set goals, rather then focusing on mistakes

Challenges of testers in Agile

  • No traditional style business requirements or functional specification documents. We have small documents (story cards developed from the 4×4 inch cards) which only detail one feature. Any additional details about the feature are captured via collaborative meetings and discussions.
  • You will be testing as early as practical and continuously throughout the lifecycle so expect that the code won’t be complete and is probably still being written
  • Your acceptance Test cases are part of the requirements analysis process as you are developing them before the software is developed
  • The development team has a responsibility to create automated unit tests which can be run against the code every time a build is performed
  • With multiple code deliveries during the iteration, your regression testing requirements have now significantly increased and without test automation support, your ability to maintain a consistent level of regression coverage will significantly decrease

Agile Tester Should be

  • Provide continuous feedback.
  • Deliver value to the customer.
  • Enable face-to-face communication.
  • Have courage.
  • Keep it simple.
  • Practice continuous improvement.
  • Respond to change.
  • Self-organize.
  • Focus on people.
  • Enjoy.

Pros and Cons

Pros

  • Flexible model, adaptive planning
  • Customer feedback simultaneously with development and testing
  • Facilitates interaction and communication between stakeholders

Cons

  • Active user involment needed
  • Intense collobration needed
  • Hard to predict timeline-budget
  • Everthing in the plan is vague-uncertain

 

Future of Agile Testing

Agile has already won the battle for mainstream acceptance, and by all indications its general precepts are going to remain viable for some time. While much of this success is undoubtedly due to its effectiveness when used in appropriate circumstances, liberating software teams from old, tired ways of doing business, it’s also at least partially the result of the changing territory of computing itself.

The speed of software sales and numbers of downloads are increasing, and development processes should follow this trend. Agile is the best solution for this problem that we have, but for now.

 

Conclusion

  • An “agile testing mind-set” is customer-focused, results-oriented, collaborative, creative, eager to learn, and passionate about delivering business value in a timely manner.
  • Attitude is important, and it blurs the lines between testers, programmers, and other roles on an agile team.
  • Agile testers apply agile values and principles such as feedback, communication, courage, simplicity, enjoyment, and delivering value in order to help the team identify and deliver the customer requirements for each story.
  • Agile testers add value to their teams and their organizations with their unique viewpoint and team-oriented approach.

 

References

Advertisements

Hello World

The title sounds still exciting and meaningful for most of the developers, and still is the first sentence to print on the screen when you start writing codes on any programming language. The reason that I am using this sentence is pretty obvious, this is my first blog. I’m planning to start sharing my research articles that I wrote during my master classes. After that I will write my blog posts mostly about technology, computer sciences and life.

That’s pretty amazing for me, even though that I am following the latest technology trends I have always been away from writing blog posts. But now I am feeling that I can share some of my researches, my experiences and maybe discuss it with my friends online. That’s what I am gonna do, I will write some things here.

Comments are welcomed, also feel free to contact me.