Agile Software Development with Intrinsic Quality - Presentation Transcript
Agile Software Development
with Intrinsic Quality
Theory, Practices and Tools
Typical Segregated Process
Development-Testing
At least 1 month
Development Testing Development Testing
Bug Bug Bug Bug
introduced detected fixed verified
Agile?
“Pull” Process
Vision
Operations Stakeholders,
Engineer Customers & Users
Value
Code Features
Software Business
Engineer Analyst
Scenarios
and User
Acceptance Stories
Criterias
Quality
Engineer
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
– ...
Test all the ... time?
Old-school Agile
Writing Writing
Automation Automation
Execution Execution
Analysis Analysis
Where does the quality engineer
spend 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 Agile
• Manual • Automated
• Demotivating • Fun
• Slow • Fast
• Flawed • Sistematic
• Low competency • High competency
• Low value • High value
• Reactive • Proactive
• Defensive • Guiding
• Segregated • Integrated
The next level
Intrinsic Quality
(Automated)
Developer
Test Automation
Test Engineer
Scenario Language
Business Analyst
Quality by
Inspection
(Manual)
5 reasons to love agile testing
1. There’s always time for testing, because
testing is done first
2. No more manual testing
3. Test results appear several times a day
4. There is a true “team” environment
5. 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 Executable
situation at the factory Code
• When I enter the Query page Executable
– And I click on “Resources” in the navigation tree Code
– 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 Executable
location to the factory Code
– And I should see the expiration date for each record
– And I should see a link “Request” for each record
Automação de Cenários
com Cucumber
Scenario Automation
with Cucumber
When /I click on “(.*)” in the navigation tree/ do |type|
tree = browser.current_page.navigation_tree
tree.click(type)
end
Then /I should see a list of records of type “(.*)”/ do |type|
page = browser.current_page
assert_true(page.contains_text?(“Query Results”))
assert_true(page.contains_text?(“ found”))
assert_true(page.contains_text?(type))
end
Scenario Automation
with 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.”
This is a little presentation to make absolutely cl more
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. less
0 comments
Post a comment