AusLUG2011
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
I Smell A RAT
Rapid Application Testing
Peter Presnell (GBS)
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Peter Presnell
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Contact Information
Twitter: PeterPresnell
Blog: www.bleedyellow.com (www.planetlotus.org)
Skype: peter.presnell
LinkedIn: PeterPresnell
Sametime: Yellowbleeders
www.bleedyellow.com
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
4
AusLUG2011
Effer Of The Ineffible
Adjective
Incapable of being expressed or described in
words; inexpressible
Not to be spoken because of its sacredness;
unutterable
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
5
AusLUG2011
And So To Testing....
“Testing is an infinite process of comparing the
invisible to the ambiguous in order to avoid the
unthinkable happening to the anonymous”
James Bach
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
6
AusLUG2011
Are There Any Testers In The Room?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
“we have as many testers as we have developers. And testers
spend all their time testing, and developers spend half their
time testing. We're more of a testing, a quality software
organization than we're a software organization.”
Bill Gates (Information Week, May 2002)
8
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
Name Your Poison
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
9
AusLUG2011
Test Planning
Make testing more of a science
than an art
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
10
AusLUG2011
Unit Testing
Applications work because each of the
parts (units) do their job
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
11
AusLUG2011
Unit Testing
LotusScript is easier to unit test than @Formula
OO LS is easier to unit test than Procedural LS
Java is easier to unit test than SSJS
MY code is always easier to test than YOURS!www.junit.org
www.junit.org
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
12
AusLUG2011
Testing XPages?
Medusa
www.openntf.org
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
13
AusLUG2011
Integration Testing
Validate the little bits with some big
picture testing
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
14
AusLUG2011
Smoke Testing
Those tests which must always be
executed every time
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
15
AusLUG2011
System Testing
What did we add?
What did we change.
What did we fix?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
16
AusLUG2011
Regression Testing
Ouch... did something else break?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
17
AusLUG2011
Performance Testing
One user on a local workstation: OK
1,000 users on a shared prod. server: ???
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
18
AusLUG2011
Finding Memory Leaks
www.yourkit.com
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
RAT: Kill Bugs Faster
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Rapid Application Development
RAD is a methodology and
NOT a speed contest
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
“Is That What You Want”
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
XPages
“XPages Is Less RAD Than Classic Notes”
Peter Presnell, AUSLUG 2011
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Agile Methodologies
www.rallydev.com
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
24
AusLUG2011
Test Driven Development
Define your criteria for success
before you start to write the solution
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
25
AusLUG2011
TDD: Example
Requirement:
Salary Field: Numeric
TDD:
When field contains non-numeric characters Fail…
When field is zero Fail....
When field is negative Fail…
When field is not an integer Modify & Pass…
Else Pass
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
26
AusLUG2011
Automated Test Plans
More time and effort should go into
test planning than test execution.
Rapid requires Automation
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
27
AusLUG2011
Automated Test Execution
Automation allows the same test to be run
many times for little additional cost
www.seleniumhq.org
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
The Art Of Trapping
Notes Bugs?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
DXL
... the answer is out there
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
CRUD
For each Form/Object....
Can I Create, Read, Update, and Delete
(where applicable)
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
CRUD
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
CRUD
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
UI Components
Ensuring every component
behaves the way it should
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
UI Components (XPages)
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
UI Components
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
UI State
For every combination of Hide-When
(Visible, Rendered) what can I see
(or not see)
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
UI State
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Event Model
What events do I have, and do they
work at the correct time in the correct
sequence?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Event Model
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Event Model (Logging)
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Event Model (Program Logic)
www.aivosto.com
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Styling
Beauty is in the eye of the beholder
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Styling
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Workflow
Define and verify states and transitions
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
Building a “Before
And After” Mousetrap
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Common Scenarios
Who wrote this $%&* code!
Migrating to a new release
Migrating to XPages
Adding a Mobile interface
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
True Or False?
Our company's Notes applications are
always well documented?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
True Or False?
All of our Notes applications have
formal test plans?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
True Or False?
Most of our Notes applications have
formal test plans?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
True Or False?
Some of our Notes applications have
formal test plans (I think)?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
True Or False?
None of our Notes applications have
formal test plans?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Ineffable?
Does it still do what it did before?
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Before And After Testing
Write One Set of Tests
Compare Results
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
54
AusLUG2011
The Goal Of Testing
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Cost Versus Risk
Keep throwing more and more tests
Automated tests are faster (cheaper?)
Some tests are better predictors than others
Save all failed tests and re-use
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
3 Minutes!!!
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
In Closing....
“Sometimes it pays to stay in bed on
Monday, rather than spending the rest
of the week debugging Monday's code.”
~Dan Salomon
Meet.Share.Learn 29th
& 30th
August, Sydney, Australia
AusLUG2011
Questions???

I Smell a RAT: Rapid Application Testing