Documente Academic
Documente Profesional
Documente Cultură
What is it? One of the most popular software testing methodologies (used
by 58% of organizations that have embraced agile according to VersionOne),
Scrum takes a highly iterative approach that focuses on defining key features
and objectives prior to each sprint. It is designed to reduce risk while providing
value quickly.
Scrum starts with a requirement or user story that outlines how features
should perform and be tested. The team then cycles through a series of
sprints to provide small bursts of value quickly. To help the team work in this
flexible way and avoid shifting priorities, Scrum requires that questions be
answered from the very start.
How is it different from Waterfall? Whereas Waterfall includes several
testing and bug fixing cycles before releasing a product, Scrum is far more
collaborative and iterative. One of the biggest differences is that Waterfall
calls for heavy documentation early on. This documentation makes it harder to
change features as the process goes on, which may be a negative in some
environments (such as consumer-grade software) and a positive in others
(such as those where the team is trying to launch a rocket, since no one
wants requirements for something dangerous shifting frequently). That said,
you might think of Scrum like many “mini waterfalls,” since requirements are
well defined at the start of each sprint and shouldn’t shift within it. The
difference is that detailed requirements for the next sprint are not set months
in advance.
Diving deeper, Scrum calls for more regular collaboration between testers,
developers and BAs, typically in the form of daily standups and sprint
retrospectives, to ensure proper communication and alignment. Additionally,
there is a Scrum Master who helps keep the project on task by removing
blockers from the team to make sure they can be most effective. The Scrum
Master can be anyone on the team, such as a developer or a tester.
What does adoption entail? Scrum offers one of the easiest transitions for
teams coming from a Waterfall environment because it’s time-based with
sprints and releases can still be planned out in advance. That said, it does call
for faster iterations and stronger collaboration.
Who is it for? Because of its fast iterations, Scrum is best suited for teams
whose customers and stakeholders want to be actively involved by regularly
seeing working products at showcase meetings. This collaboration allows the
team to make changes for upcoming showcases. Key team members who
should be involved when taking a Scrum approach include:
Product Owner
Scrum Master
Developers
Automation Engineers
Testers
Stakeholders
What are best practices? In addition to strong communication, collaboration
and adaptability, other best practices for testers following a Scrum
methodology include:
Determining acceptance criteria based on communication (typically in the
form of a user story) from a sales representative or customer (note: this
direct connection should help reduce miscommunications)
Using the acceptance criteria to develop code and ensuring team
approval of that code
Testing the code in sandbox-like environments as well as production-like
environments prior to deploying it to production
2) Kanban
What is it? Many people have heard of or used Test Driven Development
(TDD). For example, developers use TDD to write unit tests to fail before code
has been written. BDD is based on the same principles as TDD, but instead of
unit tests, it calls for higher level tests at the business level. Instead of starting
with a technical-facing unit test as TDD does, BDD starts with an initial
requirement based on end user behavior and calls for tests that are “human
readable” and can even replace some requirements documentation. This
requirement is based on behaviors that the product should exhibit, creating an
airtight guide for engineers to use as they develop tests.
For more information, read our article: “Why BDD
is the Secret Sauce for Testing in DevOps.”
Specifically, BDD starts with a functional specification using the Gherkin
Given/When/Then syntax. This specification then guides developers, testers
and product owners who move across features. As they do, they use
automated test functions to determine completeness, refining code until it
passes the test, much like in the TDD approach except at the team level. To
ensure the test passes (and it typically requires multiple tries), the developer
should only refactor code, not add any new functionality.
In sum, BDD requires a “smart” automation strategy that drives a high level of
efficiency. This strategy sets BDD apart from other Agile methodologies.
How is it different from standard Waterfall testing? BDD is extremely
different from standard Waterfall testing because the former requires test
cases to be written early against requirements and calls for those tests to be
executed toward the end of the development cycle. With BDD in an Agile
environment though, tests are not based on requirements and testing
happens in conjunction with development of the features.
Additionally, within a Waterfall methodology, testers are the ones writing the
test cases. A BDD approach, on the other hand, lends itself to the business
owners writing the tests. This switch reduces communication (or
miscommunication) between the business analysts, developers and testers.
What does adoption entail? Changing to a BDD methodology can be
challenging when the team is used to a traditional style of testing. It requires a
BA or tester to write tests up front and for the developers to write the test
specification in code to match. It’s a new type of coordination within the team,
but it’s extremely positive in that the team works together as one unit,
business users included.
Who is it for? The BDD methodology is ideal for teams that work on feature-
focused software and/or teams that put the user experience first. Key team
members who should be involved in a BDD environment include:
Product Owner/Business Analyst
Project Manager
Developers
Automation Engineer/Testers
What are best practices? Best practices for testers following a BDD
methodology include:
Streamlining documentation in order to keep the entire process lean
Embracing a “three amigos” model where the product owner, developer
and tester form a cohesive team
Using a test framework like Cucumber to define criteria
Building automated tests in a way that make them easy to reuse as much
as possible
Having business analysts learn the Gherkin syntax and write test cases
directly
2) Acceptance Test Driven Development (ATDD)
What is it? ATDD is like BDD in that it requires tests to be created first and
calls for the code to be written to pass those tests. However, unlike in TDD
where the tests are typically technical-facing unit tests, in ATDD the tests are
typically customer-facing acceptance tests.
The idea behind ATDD is that user perception of the product is just as
important as functionality, so this perception should drive product performance
in order to help increase adoption. To bring this idea to life, ATDD collects
input from customers, uses that input to develop acceptance criteria,
translates that criteria into manual or automated acceptance tests and then
develops code against those tests. Like TDD and BDD, ATDD is a test-first
methodology, not a requirements driven process.
Also like the TDD and BDD methodologies, ATDD helps eliminate potential
areas for misunderstanding by removing the need for developers to interpret
how the product will be used. ATDD goes one step further than TDD and BDD
though because it goes directly to the source (aka the customer) to
understand how the product will be used. Ideally, this direct connection should
help minimize the need to re-design features in new releases.
How is it different from standard Waterfall testing? ATDD is different from
standard Waterfall testing because it is a test-first methodology. Standard
Waterfall testing calls for test cases to be written upfront based on
requirements, whereas ATDD is not a requirements driven testing process.
What does adoption entail? Because ATDD represents such a departure
from traditional methods, going from one to the other isn’t easy for teams to
do. To be in the best position to adopt an ATDD methodology, teams need to
get stakeholder buy-in, which can prove challenging at times.
Who is it for? Due to its emphasis on user perception, ATDD is best suited
for teams that are focused on the user experience, have goals around high
rates of adoption and want to minimize the number of feature changes in
future releases. Key team members who should be involved in an ATDD
environment include:
Customer/Customer Advocate
Developer
Product Owner/Business Analyst
Automation Engineer/Testers
Project Manager
What are best practices? Best practices for testers following an ATDD Agile
methodology include:
Interacting closely with customers, for example through focus groups, in
order to determine expectations
Leaning on customer-facing team members, such as sales
representative, customer service agents and account managers, to
understand customer expectations
Developing acceptance criteria based on customer expectations
Prioritizing two questions:
o Will customers use the system if it does X?
o How can we validate if the system does X?
3) Exploratory Testing
What is it? Finally, let’s review session based testing. Session based testing
builds on exploratory testing by providing more structure. Because exploratory
testing is completely unscripted, it makes accountability difficult and relies
heavily on the skills and experience of the tester(s) involved. Session based
testing aims to ease some of these shortcomings by bringing more structure
to exploratory testing without taking away from the benefits that exploratory
testing provides, such as the ability to better mimic the user experience and
get creative with testing.
Session based testing provides this structure by conducting testing during
time-boxed, uninterrupted sessions, testing against a charter and requiring
testers to report on the testing that took place during each session.
Additionally, session based testing should be capped off with a “debrief”
between the tester(s) and the manager that covers the five PROOF points:
What happened (Past), what was achieved (Results), what got in the way
(Obstacles), what still needs to be done (Outlook) and how does the tester
feel about it (Feelings).
How is it different from standard Waterfall testing? The same as
exploratory testing, session based testing can be run in both Agile and
Waterfall environments, but it is more conducive to the tight collaboration
between testers and developers that is typically found in Agile environments.
What does adoption entail? Much like with exploratory testing, adopting
session based testing proves relatively easy because it is easy to pick up and
launch quickly. For testers already accustomed to exploratory testing, the
biggest hurdle is embracing the additional structure for which session based
testing calls. Also like with exploratory testing, teams running session based
testing should remember that it is not a final stop, but rather a method to help
determine the best type of testing to conduct next.
Who is it for? Session based testing can help reduce testing time while
increasing defect discovery and code coverage, making it ideal for teams that
face time constraints and need more guidance to determine what types of
tests to run. It is also ideal for teams that have found benefits in exploratory
testing but need to improve accountability throughout the process. Key team
members who should be involved in session based testing include:
Testers
Managers
What are best practices? Best practices for testers using session based
testing include:
Outlining a mission so that testers are clear about the software they’re
testing
Developing a clear charter that indicates the mission, the areas of the
software to test, which tester(s) will run the session, when the session
will take place and for how long, the tests designed and executed, the
bugs found and overall notes (like with exploratory testing, a
documentation tool like qTest Explorer can help here)
Running the testing session without any interruptions
Clearly documenting activities and notes during the session in a session
report
Holding a debrief between the tester(s) and the manager to review
findings from the session and discuss next steps for testing
How to Align Testing with an Agile
Delivery Process
Once you determine which testing methodology is right for your organization,
you’re not quite done yet. You still need to align testing with the delivery. To
achieve this goal we recommend a three-pronged approach:
1) Get involved in the development process
as early as possible
The sooner testers can get involved, the better. Ideally, testers should be
present from day one. That’s because giving testers a seat at the table every
step of the way provides a higher level of insight into requirements and goals,
encourages collaboration and helps hammer home the need to conduct
frequent (if not continuous) testing.
2) Test frequently, but thoughtfully
As more and more teams adopt Agile methodologies, efficiency is
everything. This need for speed has led teams to embrace DevOps and
continuous integration as well in order to keep things moving, and that
requires testing more frequently. But in the midst of an efficiency and
frequency focused shakeup, testers need to remain thoughtful so as not to
create more overhead and run unnecessary tests that actually slow down the
process.
3) Hit the ground running with test creation
Keeping in mind the need for speed in today’s Agile, DevOps driven world,
testers need to hit the ground running when it comes to getting tests created.
Specifically, the more testers can reduce the time from requirements
gathering to test creation, the better. Having a seat at the table for all
conversations from the very beginning should help in this regard.
What’s Next for Agile Testing?
Although Agile has already made significant inroads into the software
development lifecycle, there’s still a long way to go, especially among testing
teams.
Going forward, more widespread adoption and greater maturity of Agile
methodologies will require testers to go beyond test creation and execution
and begin to focus on code delivery and integration too. At the same time,
testers will need to hone their automation skills, become more involved in the
entire software development process and continue to develop a collaborative
relationship with developers. Ultimately, these changes will also require
testers to become experts at development and product usage in order to
provide more holistic testing strategies and take on the role of “quality
champions.”
In the future, three key tenets will become particularly important for testers
working in Agile environments:
1) Communication
Agile requires a tight collaboration between testers and developers, and that
collaboration makes communication a top priority for testers. Additionally, in a
world where quality becomes everyone’s responsibility, testers will become
“quality champions” that serve as internal experts, which will put their ability to
clearly communicate testing needs and reasoning under the spotlight.
2) Skill Diversity
In an Agile environment, everything can change on a dime, and that requires
testers to be adaptable. Part of this adaptability is having a diverse skillset so
that testers can change course as needed. For instance, functional testers
need to expand their skills beyond manual scripted execution. This diverse
skillset will be a must as different sprints require different types of testing to be
executed in a short timeframe.
3) Business Mindset
Finally, Agile takes on a very customer-centric approach in order to ensure
customers receive as much value as possible as quickly and as early on as
possible. Testers have a big role to play in delivering this value, but it requires
them to take on a business mindset so that they can understand customer
expectations, desires and concerns and develop their testing strategies
accordingly.