This document discusses acceptance test-driven development (ATDD) and provides a case study of implementing ATDD for a website acceptance testing project. It describes the goals of ATDD as crystallizing acceptance criteria and early regression detection. It then outlines the steps taken in the case study, including using Jenkins for continuous integration, Selenium for browser automation, and the Robot Framework with a Given-When-Then approach for tests. Potential issues and benefits are discussed, such as enabling liberal refactoring but requiring a different mindset and skillset to address intermittency.
Interactive technical talk for the Agile Saturday VI.
Accompanied with live coding. All code is available on github: https://github.com/angryziber/patterns
Interactive technical talk for the Agile Saturday VI.
Accompanied with live coding. All code is available on github: https://github.com/angryziber/patterns
Bdd For Web Applications from Scandinavian Developer Conference 2010Thomas Lundström
Presentation about using BDD for web applications from Scandinavian Developer Conference, March 17 in Gothenburg, Sweden.
The presentation is designed to work with demonstrations, where I show how Cucumber is used to specify a Java Wicket web app.
Software Evolution Cup 2011 - Retrospective and Resultsmircea.lungu
These are the results of the Software Evolution Cup 2011, organized during the Software Design and Evolution course at the University of Bern by Mircea Lungu, Oscar Nierstrasz, and Jorge Ressia.
xUnit and TDD: Why and How in Enterprise Software, August 2012Justin Gordon
“A comprehensive suite of JUnit tests is one of the most import aspects of a software project because it reduces bugs, facilitates adding new developers, and enables refactoring and performance tuning with confidence. Test-driven development (TDD) is the best way to build a suite of tests. And the Dependent Object Framework is the best way to test against database objects.” This presentation covers the benefits of TDD along with practical advice on how to implement TDD in complex projects.
Continuous Delivery refers to the process of releasing high quality software quickly and with confidence through the use of build, test and deployment automation. By applying Lean techniques to the development, test and deployment of software, waste is reduced and staff are freed up to work on more important tasks. By following a continuous delivery model, release cycles shift from a matter of months to weeks or days.
In this presentation, we will look at the key tools and processes involved in transitioning from a manual culture to one that embraces automation. We will look at real world examples, including the tools and architectural components. We will discuss organizational impacts, including the dramatic improvements in morale as team delivery commitments are met more easily through automation.
If you had an opportunity to build an application from the ground up, with testability a key design goal, what would you do?
In this presentation, we will look at just such a situation - a major, two year rewrite of a suite of core business systems. We will discuss how a system looks when testability is as important as functionality - and what it looks like when quality concerns are part of the initial design. We will look at the role of test automation and manual test in a modern project, and look at the tools and processes. The session will conclude with a demo of the latest visual test automation tool from MIT and a Q&A.
This is a 90 min talk with some exercises and discussion that I gave at the DHS Agile Expo. It places DevOps as a series of feedback loops and emphasizes agile engineering practices being at the core.
Slides from a quick and dirty presentation I gave to colleagues on Continuous Integration, Unit / Spec testing, etc.
CREDIT: this is very much in the Zach Holman school of presentation. I borrowed a lot of inspiration (and some colors/fonts) from his designs. Attribution was given.
Bdd For Web Applications from Scandinavian Developer Conference 2010Thomas Lundström
Presentation about using BDD for web applications from Scandinavian Developer Conference, March 17 in Gothenburg, Sweden.
The presentation is designed to work with demonstrations, where I show how Cucumber is used to specify a Java Wicket web app.
Software Evolution Cup 2011 - Retrospective and Resultsmircea.lungu
These are the results of the Software Evolution Cup 2011, organized during the Software Design and Evolution course at the University of Bern by Mircea Lungu, Oscar Nierstrasz, and Jorge Ressia.
xUnit and TDD: Why and How in Enterprise Software, August 2012Justin Gordon
“A comprehensive suite of JUnit tests is one of the most import aspects of a software project because it reduces bugs, facilitates adding new developers, and enables refactoring and performance tuning with confidence. Test-driven development (TDD) is the best way to build a suite of tests. And the Dependent Object Framework is the best way to test against database objects.” This presentation covers the benefits of TDD along with practical advice on how to implement TDD in complex projects.
Continuous Delivery refers to the process of releasing high quality software quickly and with confidence through the use of build, test and deployment automation. By applying Lean techniques to the development, test and deployment of software, waste is reduced and staff are freed up to work on more important tasks. By following a continuous delivery model, release cycles shift from a matter of months to weeks or days.
In this presentation, we will look at the key tools and processes involved in transitioning from a manual culture to one that embraces automation. We will look at real world examples, including the tools and architectural components. We will discuss organizational impacts, including the dramatic improvements in morale as team delivery commitments are met more easily through automation.
If you had an opportunity to build an application from the ground up, with testability a key design goal, what would you do?
In this presentation, we will look at just such a situation - a major, two year rewrite of a suite of core business systems. We will discuss how a system looks when testability is as important as functionality - and what it looks like when quality concerns are part of the initial design. We will look at the role of test automation and manual test in a modern project, and look at the tools and processes. The session will conclude with a demo of the latest visual test automation tool from MIT and a Q&A.
This is a 90 min talk with some exercises and discussion that I gave at the DHS Agile Expo. It places DevOps as a series of feedback loops and emphasizes agile engineering practices being at the core.
Slides from a quick and dirty presentation I gave to colleagues on Continuous Integration, Unit / Spec testing, etc.
CREDIT: this is very much in the Zach Holman school of presentation. I borrowed a lot of inspiration (and some colors/fonts) from his designs. Attribution was given.
Testing is integral to any Agile development process. This slide deck offers an overview of Agile testing-related practices and explains how they work together to mitigate the most common sources of risk on any project.
Similar to Webapp acceptance testing a case study (20)
5. ATDD:
“The
practice
of
expressing
functional
story
requirements
as
concrete
examples
or
expectations
prior
to
story
development”
–
Jennitta
Andrea,
http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectId=16315
6. › Crystallize
acceptance
criteria:
shared
understanding
of
reqs
and
def.
of
done
[1]
Goals
› Win
bug
battle
with
complicated
systems
[2]:
early
regression
detection
[1]
E.
Hendrickson,
http://testobsessed.com/blog/2008/12/08/acceptance-‐test-‐driven-‐development-‐atdd-‐an-‐overview
[2]
J.
E.
Boal,
http://testdrivendeveloper.com/2011/12/27/AutomatedTestsAreTheKeyToScalingAgile.aspx
7. Steps
Implement:
hammer
the
Design
how
to
fulfill
keyboard
until
all
tests
the
requirement
pass
(incl.
other
tests)
Write
Story
Design
Code
tests
Find
out
most
important
Formulate
test
cases,
thing
to
do,
write
a
user
story
most
probable
path
first
10.11.2012
Futurice
34
10. Jenkins
CI
» Open-‐source
continuous
integration
server
» Java
based,
lotsa
plugins
and
stuff
» Distributed
test
running
» Getting
started:
download
.war
and
fire
up
10.11.2012
Futurice
37
11. Selenium
» Automation
of
browsers
› E.g.
for
testing
purposes,
or
for
repetitive
admin
tasks
» Selenium
IDE
for
recording
scripts
(=playing
ariound)
» Scaling
and
distributing
test
running
» Java-‐based,
with
wide
support
for
other
langs
&
testing
frameworks
10.11.2012
Futurice
38
12. Robot
Framework
» Generic
test
automation
framework
for
various
domains
› Web
part
backed
by
Selenium,
but
also
Java
GUI,
SSH,
running
processes...
» Tabular
test
data
syntax
» Extensible
with
Python/Java
10.11.2012
Futurice
39
13. Given-‐When-‐Then
(GWT)
Example
of
a
popular
approach:
» Given
the
shopping
cart
is
visible
and
has
three
items
in
it,
» When
the
user
clicks
an
item’s
trashcan
icon,
» Then
the
item
should
disappear
from
the
list
and
a
notification
should
be
shown
with
the
item’s
name
and
an
“Undo”
link.
10.11.2012
Futurice
40
15. Is
this
worth
all
› Yes!
No
time
not
to
this
hassle?
automate
testing
16. › Fairly
liberal
refactoring
› Finding
regression
bugs
long
before
going
to
prod
› TDD
=>
knowing
early
what
Enables:
you
are
supposed
to
code
› And
writing
less
useless
code
› Taking
in
new
devs
easily
› Continuous
deployment?
› …but
not
quite
yet
17. › Different
mindset
required
› Intermittent,
hard
to
reproduce
test
failures
Issues?
Sure:
› Asynchronity,
other
weirdness
› Requires
lotsa
mad
skillz
› …and
then
some