SlideShare uma empresa Scribd logo
1 de 21
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.”

Mais conteúdo relacionado

Semelhante a Agile Software Development with Intrinsic Quality

Static Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech FestStatic Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech FestDenim Group
 
Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static AnalysisConSanFrancisco123
 
How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08kingsfleet
 
Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client DevelopmentTamir Khason
 
PHX Session #1: Development Best Practices And How Microsoft Helps
PHX Session #1: Development  Best  Practices And  How  Microsoft  HelpsPHX Session #1: Development  Best  Practices And  How  Microsoft  Helps
PHX Session #1: Development Best Practices And How Microsoft HelpsSteve Lange
 
Usability Engineering
Usability EngineeringUsability Engineering
Usability EngineeringEasypeasy
 
Pivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer TestingPivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer Testingguestc8adce
 
Does your functional automation really add value?
Does your functional automation really add value?Does your functional automation really add value?
Does your functional automation really add value?Anand Bagmar
 
Testing Sap: Modern Methodology
Testing Sap: Modern MethodologyTesting Sap: Modern Methodology
Testing Sap: Modern MethodologyEthan Jewett
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for TestersAdam Goucher
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev opsAgile Montréal
 
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsPresentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsGanesh Samarthyam
 
Sqp 090508084934 Phpapp02
Sqp 090508084934 Phpapp02Sqp 090508084934 Phpapp02
Sqp 090508084934 Phpapp02sivavis
 
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"LogeekNightUkraine
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver SoftwareBeyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver SoftwareChris Weldon
 
Testing with cucumber testing framework
Testing with cucumber testing frameworkTesting with cucumber testing framework
Testing with cucumber testing frameworkAIMDek Technologies
 

Semelhante a Agile Software Development with Intrinsic Quality (20)

Static Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech FestStatic Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech Fest
 
Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static Analysis
 
How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08
 
Qtp - Introduction to synchronization
Qtp -  Introduction to synchronizationQtp -  Introduction to synchronization
Qtp - Introduction to synchronization
 
Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client Development
 
Test
TestTest
Test
 
PHX Session #1: Development Best Practices And How Microsoft Helps
PHX Session #1: Development  Best  Practices And  How  Microsoft  HelpsPHX Session #1: Development  Best  Practices And  How  Microsoft  Helps
PHX Session #1: Development Best Practices And How Microsoft Helps
 
Usability Engineering
Usability EngineeringUsability Engineering
Usability Engineering
 
Static Code Analysis
Static Code AnalysisStatic Code Analysis
Static Code Analysis
 
Pivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer TestingPivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer Testing
 
Does your functional automation really add value?
Does your functional automation really add value?Does your functional automation really add value?
Does your functional automation really add value?
 
Tec314f
Tec314fTec314f
Tec314f
 
Testing Sap: Modern Methodology
Testing Sap: Modern MethodologyTesting Sap: Modern Methodology
Testing Sap: Modern Methodology
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for Testers
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
 
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsPresentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
 
Sqp 090508084934 Phpapp02
Sqp 090508084934 Phpapp02Sqp 090508084934 Phpapp02
Sqp 090508084934 Phpapp02
 
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver SoftwareBeyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver Software
 
Testing with cucumber testing framework
Testing with cucumber testing frameworkTesting with cucumber testing framework
Testing with cucumber testing framework
 

Último

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Último (20)

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 

Agile Software Development with Intrinsic Quality

  • 1. Agile Software Development with Intrinsic Quality Theory, Practices and Tools
  • 2. Typical Segregated Process Development-Testing At least 1 month Development Testing Development Testing Bug Bug Bug Bug introduced detected fixed verified Agile?
  • 3. “Pull” Process Vision Operations Stakeholders, Engineer Customers & Users Value Code Features Software Business Engineer Analyst Scenarios and User Acceptance Stories Criterias Quality Engineer
  • 4. 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 – ...
  • 5. Test all the ... time? Old-school Agile Writing Writing Automation Automation Execution Execution Analysis Analysis Where does the quality engineer spend his/her time?
  • 6. Goal: eliminate all manual testing execution Manual testing is a very expensive tax paid at each software development cycle
  • 7. 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
  • 8. The next level Intrinsic Quality (Automated) Developer Test Automation Test Engineer Scenario Language Business Analyst Quality by Inspection (Manual)
  • 9. 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
  • 10. User stories and Scenario Language http://dannorth.net/whats-in-a-story
  • 11. User Stories • In order to ... • As a ... • I want to ...
  • 12. User Stories • In order to ... VALUE • As a ... ROLE • I want to ... FEATURE
  • 13. 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
  • 14. Scenario Language • Given ... – And ... • When ... – And ... • Then ... – And ...
  • 15. Scenario Language • Given ... CONTEXT / PRE-CONDITIONS – And ... • When ... EVENT / INPUT – And ... • Then ... EXPECTATION / OUTPUT – And ...
  • 16. 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
  • 17. 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
  • 18. Automação de Cenários com Cucumber
  • 19. 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
  • 20. 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) } }
  • 21. THE END Remember this: “Manual regression testing is a completely unfeasible and unacceptable practice.” ”Use automated acceptance tests to guide your software product development.”