Agile Testing Using Agile Tools

Preview:

Citation preview

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

Resources to Explore

• The Only Agile Tools You’ll Ever Need, by Jeff Langr, Tim Ottinger

http://pragprog.com/magazines/2011-09/the-only-agile-tools-youll-ever-need

• Everyday Scripting with Ruby: for Teams, Testers, and You, by Brian Marick

http://pragprog.com/book/bmsft/everyday-scripting-with-ruby

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

Recommended