Date post: | 15-Jan-2015 |
Category: |
Technology |
Upload: | demetrius-nunes |
View: | 1,157 times |
Download: | 1 times |
Agile Software Development with Intrinsic Quality
Theory, Practices and Tools
Typical Segregated ProcessDevelopment-Testing
Development
Testing
Development
Testing
Bug introduced
Bug detected
Bug fixed
Bug verified
Agile?
At least 1 month
“Pull” Process
Vision
Value
Features
User Stories
Scenarios and Acceptance
Criterias
Code
Stakeholders,Customers & Users
BusinessAnalyst
QualityEngineer
SoftwareEngineer
OperationsEngineer
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– ...
WritingAutomationExecutionAnalysis
WritingAutomationExecutionAnalysis
Test all the ... time?
Old-school Agile
Where does the quality engineerspend his/her time?
Goal: eliminate all manual testing execution
Manual testing is a very expensive tax paid at each software development cycle
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
The next level
Quality by Inspection(Manual)
Intrinsic Quality (Automated)
Test AutomationScenario Language
DeveloperTest Engineer
Business Analyst
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
User stories and Scenario Language
http://dannorth.net/whats-in-a-story
User Stories
• In order to ...
• As a ...
• I want to ...
User Stories
• In order to ... VALUE
• As a ... ROLE
• I want to ... FEATURE
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
Scenario Language
• Given ...– And ...
• When ...– And ...
• Then ...– And ...
Scenario Language
• Given ... CONTEXT / PRE-CONDITIONS– And ...
• When ... EVENT / INPUT– And ...
• Then ... EXPECTATION / OUTPUT– And ...
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
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
Automação de Cenários com Cucumber
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
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) }
}
THE END
Remember this: “Manual regression testing is a completely
unfeasible and unacceptable practice.””Use automated acceptance tests to guide your
software product development.”