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

Agile Software Development with Intrinsic Quality

Embed Size (px)

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.

Citation preview

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.”