agile software development with intrinsic quality

21
Agile Software Development with Intrinsic Quality Theory, Practices and Tools

Upload: demetrius-nunes

Post on 15-Jan-2015

1.159 views

Category:

Technology


1 download

DESCRIPTION

This is a little presentation to make absolutely clear why test automation and test driven development are key to any software development process that strives for high quality and high productivity.

TRANSCRIPT

Page 1: Agile Software Development with Intrinsic Quality

Agile Software Development with Intrinsic Quality

Theory, Practices and Tools

Page 2: Agile Software Development with Intrinsic Quality

Typical Segregated ProcessDevelopment-Testing

Development

Testing

Development

Testing

Bug introduced

Bug detected

Bug fixed

Bug verified

Agile?

At least 1 month

Page 3: Agile Software Development with Intrinsic Quality

“Pull” Process

Vision

Value

Features

User Stories

Scenarios and Acceptance

Criterias

Code

Stakeholders,Customers & Users

BusinessAnalyst

QualityEngineer

SoftwareEngineer

OperationsEngineer

Page 4: Agile Software Development with Intrinsic Quality

But how?• Skills

– User Stories writing and Scenarios language– Scenarios automation– Software development

• Practices– AATDD – Automated Acceptance Test Driven-Development– BDD & TDD – Behaviour & Test Driven-Development

• Tools– RFT– Selenium– Watir– Jemmy– Cucumber– Twist– Junit– Java– Ruby– ...

Page 5: Agile Software Development with Intrinsic Quality

WritingAutomationExecutionAnalysis

WritingAutomationExecutionAnalysis

Test all the ... time?

Old-school Agile

Where does the quality engineerspend his/her time?

Page 6: Agile Software Development with Intrinsic Quality

Goal: eliminate all manual testing execution

Manual testing is a very expensive tax paid at each software development cycle

Page 7: Agile Software Development with Intrinsic Quality

Traditional x Agile Testing

Traditional• Manual• Demotivating• Slow• Flawed• Low competency• Low value• Reactive• Defensive• Segregated

Agile• Automated• Fun• Fast• Sistematic• High competency• High value• Proactive• Guiding• Integrated

Page 8: Agile Software Development with Intrinsic Quality

The next level

Quality by Inspection(Manual)

Intrinsic Quality (Automated)

Test AutomationScenario Language

DeveloperTest Engineer

Business Analyst

Page 9: Agile Software Development with Intrinsic Quality

5 reasons to love agile testing

1. There’s always time for testing, because testing is done first

2. No more manual testing3. Test results appear several times a day4. There is a true “team” environment5. The tester can fix bugs too

Page 10: Agile Software Development with Intrinsic Quality

User stories and Scenario Language

http://dannorth.net/whats-in-a-story

Page 11: Agile Software Development with Intrinsic Quality

User Stories

• In order to ...

• As a ...

• I want to ...

Page 12: Agile Software Development with Intrinsic Quality

User Stories

• In order to ... VALUE

• As a ... ROLE

• I want to ... FEATURE

Page 13: Agile Software Development with Intrinsic Quality

User Stories

• In order to best decide what to do in an emergency situation

• As a resources manager

• I want to know which resources of a determined type are available for use

Page 14: Agile Software Development with Intrinsic Quality

Scenario Language

• Given ...– And ...

• When ...– And ...

• Then ...– And ...

Page 15: Agile Software Development with Intrinsic Quality

Scenario Language

• Given ... CONTEXT / PRE-CONDITIONS– And ...

• When ... EVENT / INPUT– And ...

• Then ... EXPECTATION / OUTPUT– And ...

Page 16: Agile Software Development with Intrinsic Quality

Scenario Language

• Given I am monitoring an on-going emergency situation at the factory

• When I enter the Query page– And I click on “Resources” in the navigation tree– And search for “Booms”

• Then I should see a list of records of type “Booms”– And I should see the available quantity for each record– And I should see the distance of each record from its location to

the factory– And I should see the expiration date for each record– And I should see a link “Request” for each record

Page 17: Agile Software Development with Intrinsic Quality

Scenario Automation• Given I am monitoring an on-going emergency situation at

the factory

• When I enter the Query page– And I click on “Resources” in the navigation tree– And search for “Booms”

• Then I should see a list of records of type “Booms”– And I should see the available quantity for each record– And I should see the distance of each record from its location

to the factory– And I should see the expiration date for each record– And I should see a link “Request” for each record

ExecutableCode

ExecutableCode

ExecutableCode

Page 18: Agile Software Development with Intrinsic Quality

Automação de Cenários com Cucumber

Page 19: Agile Software Development with Intrinsic Quality

Scenario Automationwith Cucumber

When /I click on “(.*)” in the navigation tree/ do |type|tree = browser.current_page.navigation_treetree.click(type)

end

Then /I should see a list of records of type “(.*)”/ do |type|page = browser.current_pageassert_true(page.contains_text?(“Query Results”))assert_true(page.contains_text?(“ found”))assert_true(page.contains_text?(type))

end

Page 20: Agile Software Development with Intrinsic Quality

Scenario Automationwith Cucumber-Java

public class TreeSteps {

@When(“I click on \“(.*)\” in the navigation tree”) public void clickOnType(String type) { NavTree tree = new NavTree(browser().getCurrentPage())

tree.click(type) }

}

Page 21: Agile Software Development with Intrinsic Quality

THE END

Remember this: “Manual regression testing is a completely

unfeasible and unacceptable practice.””Use automated acceptance tests to guide your

software product development.”