dmitry lebedev: agile testing using agile tools
TRANSCRIPT
Agile Testing Using Agile Tools
Dmitry LebedevNB Crew
Agile Tour, Vilnius, 6 of october, 2011
Dmitry Lebedev
www.agile-latvia.org
www.jug.lv
www.agiletestingdays.com
NB Crew
Consulting & Development
Meaning of methodology?
Meaning of methodology!
Methodology
Avoid a FailureHit the Target
Story of Two Islands (Sad One)
Two Tribes
Two Mindsets (I)
Two Mindsets (II)
Two Complexities
Internal Complexity External Complexity
Two Islands (Reconsidered)
Traditional Testing Tools
Expensive software
Custom scripts
Customized OS tools
Hands & Brain
Agile Testing Tools?
Approach to Quality
Agile Tools You Really Need
• Whiteboard, markers
• Pairing stations
• Index cards
• Toys, food
• Stickies,sharpies
Typical Case
Web Frontend
Java Application3rd party web-service
DB
Log File
Tested Points (Often)
Web Frontend
Java Application3rd party web-service
DB
Log File
Tested Points (Less Often)
Web Frontend
Java Application3rd party web-service
DB
Log File
Tested Points (Sweet Dreams)
Web Frontend
Java Application3rd party web-service
DB
Log File
Enterprise Tesing Is Boring
How to Make It Fun Again?!
Recipes
1. Become a software craftsman
Recipes
1. Become a software craftsman
2. Create rather than buy
Recipies
1. Become a software craftsman
2. Create rather than buy
3. Don’t come un-armed
Recipies
1. Become a software craftsman
2. Create rather than buy
3. Don’t come un-armed
4. Automate as much as can
Why Ruby?!
1. Free
2. Flexible but Powerful
3. Great Community
Let's automate!
- Watir
- Selenium
- Cucumber
- RSpecs
When It's Not Possible...
- Legacy
- 3rd Party Systems
- Propietary Software
Code Examples
Log parsing
Code Examples
File.open("tesfile.log", "r") do |infile|while (line = infile.gets) if line =~ /.*Id:\d+ session (start|finish)/
puts "#{line}" end
endend
Code Examples
Testing web services
Code Examples
require 'rubygems'
require 'httpclient'
clnt = HttpClient.new
params = {"user_id"=>"123",
"action"=>"credit",
"currency"=>"EUR",
"amount" => "10"}
puts clnt.get("http://somehost/service", params)
Code Examples
Gathering the pack
Code Example
require 'test/unit'
class MyFirstTest < Test::Unit::TestCase
def test_logs_output
....
end
def test_web_service
....
end
end
Questions?!
1. Twitter – lebedev_dmitry
2. www.agile-latvia.org
3. www.jug.lv
Copyrights
All images were taken from en.wikipedia.org and are used under wikimedia creative, creative commons,
GPL licenses