This document summarizes a presentation on agile testing anti-patterns and rescue strategies. It discusses common problems like silos between teams, lack of automation, discontinuous integration, poor test architecture/structure, duplication, and bad coding practices. It provides examples of good vs bad code for page objects and waiting for elements. The presentation emphasizes building unit tests, inverting the test pyramid, avoiding dependencies, and using page object modeling for maintainable tests. It concludes with references and image sources for further reading.
Agile Testing Anti-Patterns and Rescue Strategies (Version2)
1. Again
on
21st
October
2013
|
Hotel
Savera,
Chennai
Agile
Tes)ng
An)-‐Pa.erns
&
Rescue
Strategies
by
Karthik
Sirasanagandla
Agile
Coach
Independent
Consultant
|
Industrial
Logic
Next
Genera*on
Tes*ng
Conference
(c)
2. What do you expect out of this
session?
Is anyone having a painful story to
share?
6. • Nothing in life is to be feared, it is only to be
understood. -- Marie Curie
– You’re not afraid to try again, you’re just afraid of
getting hurt.
• In Everyday Scripting with Ruby, Brian Marick
advises to learn to program by writing one.
#FailProof
• Learn By Doing
17. Quiz Time
• What is the wolf that can huff and puff your hay stack in
your test pyramid?
• What is the wolf that can break your wooden stack in
your test pyramid?
• Who is the wolf that can break you brick stack in your
test pyramid?
• What is the moral of the story? Just build unit
tests???
28. Scenario To Code: Good Versus Bad
As a user
I should be able to add notes to the table
so that the information is recorded for future reference.
def add_and_save_notes notes
fill_in("my_target_text_box", :with => notes)
click_button "Save" # This makes an AJAX request and
adds new row to the table upon successfully saving
sleep(3) #<-- This is BAD code.
end
def add_and_save_notes notes
...
wait_until { has_text?(notes) } #<-- This is GOOD
practice that enables test stability and hence faith in
test results
end
29. Asserting message for exactness
• #my_target_spec.rb
describe "save notes" do
it "should add notes as new row to table upon successful save" do
notes = "sample notes"
expected_update_message = "Your note is added successfully!"
@my_target_page. add_and_save_notes notes
@my_target_page.update_message.should == expected_update_message
end
end
Why measure
exactness???
33. Didn’t we discuss about it all the way?
...Do you want to know anything more?
34. References Resources
• Agile Testing by Lisa Crispin and Janet
Gregory
• http://patrickwilsonwelsh.com/
• http://kartzontech.blogspot.in/
• http://blogs.agilefaqs.com/2011/02/01/
inverting-the-testing-pyramid/
• Everyday scripting with Ruby for Teams,
Testers and You.