SlideShare a Scribd company logo
1 of 57
Testing SAP:
Modern Testing Methodologies
         Ethan Jewett
But first!


What’s the problem?
“Enterprise” project trade-offs

              Value



    Budget              Risk



             Duration
Software development trade-offs

              Features



     Budget              Quality



               Time
Client requests

      Build Faster
And produce more Value
       Cheaper
     with less Risk
Remember…

          Value



Budget              Risk



         Duration
Are there hidden assumptions?

               Yes.

          Methodology
        People and Culture
           Technology
Any other assumptions?
Project Preparation

  Business Blueprint

     Project Realization

        Final Preparation

           Go-live and Support


   Technical           Technical
                                            Test Fix       Transport         Go Live
    Design               Build

                                                  Integration                          Live
                             Write and
                                                 & Regression
       Write test scripts                                         Training
                            run unit test                                          Support
                                                      Test
The topic
Over the next hour and a half, we’ll talk about
 how testing methodologies, techniques, and
 technologies can help us

    Change these underlying assumptions.
    Enable modern project methodologies.
      Control the basic project trade-off.
The focus
Project Preparation

  Business Blueprint

     Project Realization

        Final Preparation

           Go-live and Support


   Technical           Technical
                                            Test Fix       Transport         Go Live
    Design               Build

                                                  Integration                          Live
                             Write and
                                                 & Regression
       Write test scripts                                         Training
                            run unit test                                          Support
                                                      Test
The goal

More value
   Faster
With less risk

(and more fun)
For example
V-Model methodology




             http://en.wikipedia.org/wiki/File:V-model.JPG
More parallel, less repetition




                    http://en.wikipedia.org/wiki/File:V-model.JPG
Faster




         http://en.wikipedia.org/wiki/File:V-model.JPG
More iterative




           http://en.wikipedia.org/wiki/File:V-model.JPG
How do we get there?
Modern methodology
• Modern quality assurance and testing
  – Leading practice in custom development, open
    source, and agile projects
     • Test driven development (TDD), behavior driven
       development (BDD), readable tests, executable
       requirements, continuous integration
  – Overview of the SAP test automation technologies
  – Road we're going to take through testing SAP
Leading Practice
•   Context
•   Questions and problems
•   Approaches
•   Tools
Leading Practice
•   Context
•   Questions and problems
•   Approaches
•   Tools
Context
The context of modern software development is
  above all open, agile and decentralized.

Open source projects are usually the furthest
 along this path, and as such these projects use
 (or are forced to invent) tools that fit their
 processes.
Openness
Requirements, specifications, issues reports, test
  cases, source code, and project tools and
  metrics are readily open and available to all
  participants in the project.

(Not necessarily the same as “open source”.)



     Open Collaboration within Corporations Using Software Forges -
     http://www.riehle.org/publications/2009/open-collaboration-within-corporations-using-software-forges
Agility
The values of the Agile Manifesto:
  – Individuals and interactions over processes and
    tools
  – Working software over comprehensive
    documentation
  – Customer collaboration over contract negotiation
  – Responding to change over following a plan



                                      http://agilemanifesto.org/
Decentralization
Open-source projects are decentralized by
 nature, but most organizations today have
 some element of decentralization

Challenges:
  – Quality control
  – Communication
  – Maintaining commitment
Leading Practice
•   Context
•   Questions and problems
•   Approaches
•   Tools
Questions and problems
                                            How do we track 100s
            How do we                          or 1000s of bugs
       enforce disciplined                  (including duplicates)?
              testing?
                               How do we make
    Do we use unit,
                                tests relevant?
functional, integration,
or acceptance testing?              How does testing
    Or all of them?                   integrate with
                                     issue tracking?
How do we ensure that                        How do we
the build complies with                  determine the cause
                             Manual or
       the tests?                           of test failure?
                             automatic
                              testing?
Leading Practice
•   Context
•   Questions and problems
•   Approaches
•   Tools
Approaches
Test Coverage
Test Automation
Test Driven Development
Behavior Driven Development
“Spec as Test” (the test/spec convergence)
Exploratory Testing
Continuous Integration
Test coverage
The percentage of code or development that is
  tested.

In code, this might be measured by determining
  if every branch of code can result in a failing
  test condition (“Branch coverage”)



                           Wikipedia - http://en.wikipedia.org/wiki/Code_coverage
Test automation
• Accepted as gospel modern dev communities
  – Regardless of how good they are at testing, accept
    that they should automate as much as possible
  – Can lead to ignoring non-automatable testing
• In the SAP world we haven’t even accepted
  that full test coverage is desirable, much less
  automation
                Test automation pushback -
                       http://railspikes.com/2008/7/11/testing-is-overrated
                       http://michaelfeathers.typepad.com/michael_feathers_blog/2008/06/the-flawed-
                       theo.html
                Automated testing story on SDN (never completed) -
                       https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/4103
A note on the following slides
I’m using bowling as an example because I’m
  copying from the internet. I don’t know much
  about bowling, so the examples are probably
  wrong. My assumption is that a game is
  usually 10 frames of two balls per frame. If
  the last frame is a spare or a strike, you get at
  most two additional frames.

Or something like that.
Test Driven Development (TDD)
                                        Build


                       Design                          Test



                      Design                          Build
• Technical                       • Run tests                     • Run tests
  specification   • Write tests                 • Write code
                                  • Failure!
                    based on                      to address
                    specs                         test failures
    Design                              Test                            Test
TDD Example

require ‘test/unit’
require ‘test/unit/assertions’
require ‘bowling’

class TC_Bowling < Test::Unit::TestCase

 def setup
  bowling = Bowling.new
 end

 def gutter_game
   20.times { bowling.hit(0) }
   assert bowling.score == 0
 end
end
Behavior Driven Development (BDD)
• Focus on the external behavior of the code
• Abstract away implementation details
• Additionally, BDD libraries tend to codify the
  best practices of unit testing and TDD
BDD example

require ‘spec’
require ‘bowling’

describe Bowling do

 it quot;should score 0 for gutter gamequot; do

   bowling = Bowling.new
   20.times { bowling.hit(0) }
   bowling.score.should == 0

 end
end
“Spec as Test” – or writing features
• Recently, the Ruby community has begun
  developing testing frameworks that are even
  closer to natural language.
  – Cucumber
• These frameworks wrap TDD and BDD
  frameworks and allow for “business-writable”,
  “business-readable”, executable test scripts.
Feature example
Feature (visible to the user)               Implementation (not visible to user)

                                            require ‘spec/expectations’
Scenario: Gutter game
                                            require ‘bowling’
  Given I have bowled 20 balls
  and I have knocked over 0 pins per ball   Given /I have knocked over (d+) pins per ball/ do |pins|
  When I check the score                      @pins_per_ball = pins
                                            end
  Then I should have 0 points
                                            Given /I have bowled (d+) balls/ do |balls|
                                              @bowling = Bowling.new
                                              balls.times { @bowling.hit( @pins_per_ball ) }
                                            end

                                            Then /I should have (d+) points/ do |points|
                                              @bowling.score.should == points
                                            end
Feature example cont.
  Note that we can now implement many more
   tests with no more code/implementation:
Scenario: Perfect game                       Scenario: Lots of spares
  Given I have bowled 12 balls                 Given I have bowled 24 balls
  and I have knocked over 10 pins per ball     and I have knocked over 5 pins per ball
  When I check the score                       When I check the score
  Then I should have 300 points                Then I should have ??? Points

Scenario: Bad game                           Or maybe I need something a little
  Given I have bowled 20 balls               different....
  and I have knocked over 2 pins per ball
  When I check the score                     Scenario: Too long a game
  Then I should have 40 points                 Given I have bowled 30 balls
                                               and I have knocked over 0 pins per ball
                                               Then I should receive an error
Side-by-side
                TDD                                      BDD                             Spec as Test
require ‘test/unit’                       require ‘spec/expectations’               Scenario: Gutter game
require ‘test/unit/assertions’            require ‘bowling’
require ‘bowling’                                                                    Given I have bowled 20 balls
                                          describe Bowling do                        and I have knocked over 0 pins per ball
class TC_Bowling < Test::Unit::TestCase
                                           it quot;should score 0 for gutter gamequot; do    When I view the score
 def setup
  bowling = Bowling.new                      bowling = Bowling.new                   Then I should have 0 points
 end                                         20.times { bowling.hit(0) }
                                             bowling.score.should == 0
 def gutter_game
   20.times { bowling.hit(0) }             end
   assert bowling.score == 0              end
 end
end
TDD, BDD, and Test-as-Spec References
• Test Driven Design/Development
  – http://en.wikipedia.org/wiki/Test-
    driven_development
  – http://www.agiledata.org/essays/tdd.html
• Behavior Driven Development
  – http://behaviour-driven.org/
• Spec as test
  – Cucumber - http://cukes.info/
  – Rspec - http://rspec.info/
  – http://www.pragprog.com/titles/achbd/the-rspec-
    book
Exploratory Testing
• The practice of trying to break things
  – Career security for klutzes
• Exploratory testing appears informal, but can
  be structured and is a very important aspect
  of software testing.
  – Probably the most neglected form of testing in
    open source projects



                         http://www.kohl.ca/blog/archives/000185.html
                         http://www.kohl.ca/articles/ExploratoryTesting_MusicofInvestigation.pdf
Continuous Integration
• The practice of automating not only your tests
  but your full commit-build-test cycle
  1. A commit new or changed code
  2. Triggers a full system build
  3. And an execution of the entire test suite



                Cruisecontrol.rb -
                       http://rubyforge.org/projects/cruisecontrolrb
                       http://cruisecontrolrb.thoughtworks.com/
                Hudson -
                       https://hudson.dev.java.net/
                       http://www.softwarebloat.com/2008/11/19/continuous-integration-blueprints-how-
                       to-build-an-army-of-killer-robots-with-hudson-and-cucumber
Leading Practice
•   Context
•   Questions and problems
•   Approaches
•   Tools
Tools
Source version control (svn, git)
Testing libraries (rspec, cucumber, junit,
  ABAPunit, jspec)
Continuous Integration tools (cruisecontrol.rb,
  Hudson)
Issue tracking (Sourceforge, trac, Lighthouse,
  Google Code)
Agile methodologies (Scrum, XP, etc.)
Modern methodology
• Modern quality assurance and testing
  – Leading practice in custom development, open
    source, and agile projects
     • Test driven development (TDD), behavior driven
       development (BDD), readable tests, executable
       requirements, continuous integration
  – Overview of the SAP test automation
    technologies
  – Road we're going to take through testing SAP
The SAP World
• Manual
• Unit testing
  – ABAP Unit
  – Java
• Functional testing
  – eCATT
ABAP Unit
• Modeled on Java Unit
• Excellent (if a bit unwieldy) for traditional unit
  test automation or classes
   – Works well for TDD
• ABAP Objects (object-oriented ABAP)

• TDD Demo – ZBOWLING & ZBOWLING_TEST

                           http://help.sap.com/saphelp_nw70ehp1/helpdata/en/a2/8a1b602e85
                           8645b8aac1559b638ea4/frameset.htm
Non-SAP
• We can use just about anything via RFCs
• For Web Dynpros, BSPs, or Portal applications,
  there are a lot of options using web-drivers
  that can automatically drive browsers

• Address in depth in future sessions
Modern methodology
• Modern quality assurance and testing
  – Leading practice in custom development, open
    source, and agile projects
     • Test driven development (TDD), behavior driven
       development (BDD), readable tests, executable
       requirements, continuous integration
  – Overview of the SAP test automation technologies
  – Road we're going to take through testing SAP
The Road to the Future
• Developing techniques to support agile, open,
  decentralized development in an SAP
  landscape
• Using SAP tools and 3rd party tools
• Shorter, more focused and hands-on sessions
Start with this




            http://en.wikipedia.org/wiki/File:V-model.JPG
Get more parallel, less repetitive



            Spec = Test




                          http://en.wikipedia.org/wiki/File:V-model.JPG
Get faster




     Test
  Automation




               http://en.wikipedia.org/wiki/File:V-model.JPG
Get iterative
 Continuous




 Integration
               http://en.wikipedia.org/wiki/File:V-model.JPG
And end up here
(or somewhere similar)




             http://en.wikipedia.org/wiki/File:Scrum_process.svg
Thanks
General references for inclusion
•   Open Collaboration within Corporations Using Software Forges - http://www.riehle.org/publications/2009/open-collaboration-within-corporations-using-software-forges/
•   Continuous integration tools
      –      http://rubyforge.org/projects/cruisecontrolrb - http://cruisecontrolrb.thoughtworks.com/
      –      https://hudson.dev.java.net/
      –      http://www.softwarebloat.com/2008/11/19/continuous-integration-blueprints-how-to-build-an-army-of-killer-robots-with-hudson-and-cucumber
•   Exploratory testing
      –      http://www.kohl.ca/blog/archives/000185.html
      –      http://www.kohl.ca/articles/ExploratoryTesting_MusicofInvestigation.pdf
•   The ongoing revolution in software testing
      –      http://www.kaner.com/pdfs/TheOngoingRevolution.pdf
•   ABAP Unit
      –      Spotlight on ABAP Unit Part 1 - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/1088
•   Load testing
      –      http://dannorth.net/2007/02/monkey-business-value
•   Joel Spolsky – 12 steps to better code - http://www.joelonsoftware.com/articles/fog0000000043.html
•   Automated testing story on SDN - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/4103
•   JUnit - http://www.junit.org/
•   Open Source
      –      http://www.paulgraham.com/opensource.html (What business can learn from open source)
•   Watir
      –      http://wtr.rubyforge.org/
•   Spec as test
      –      Cucumber - http://cukes.info/
      –      Rspec - http://rspec.info/
      –      http://www.pragprog.com/titles/achbd/the-rspec-book
•   SAP testing
      –      http://www.beteoblog.com/beteo-alm-miniguides/software-quality/
      –      http://raa.ruby-lang.org/project/saprfc/
      –      Integration Tests in ABAP Development und Tool Support - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/7131
      –      XSLT - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/12173
•   Test automation as panacea (not)
      –      http://railspikes.com/2008/7/11/testing-is-overrated
      –      http://michaelfeathers.typepad.com/michael_feathers_blog/2008/06/the-flawed-theo.html
•   BDD - http://behaviour-driven.org/
•   Blue Ruby - https://sap.na.pgiconnect.com/p16473929/ - http://www.slideshare.net/schmerdy/blue-ruby-sdn-webinar-1260181 -
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/408a9a3b-03f9-2b10-b29c-f0a3374b19d8

More Related Content

What's hot

Alfresco & Kofax - scan, manage, collaborate
Alfresco & Kofax - scan, manage, collaborateAlfresco & Kofax - scan, manage, collaborate
Alfresco & Kofax - scan, manage, collaborate
Alfresco Software
 

What's hot (20)

Enterprise Content Management
Enterprise Content ManagementEnterprise Content Management
Enterprise Content Management
 
Ca Service Desk Presentation
Ca Service Desk PresentationCa Service Desk Presentation
Ca Service Desk Presentation
 
Business Process Management Introduction
Business Process Management IntroductionBusiness Process Management Introduction
Business Process Management Introduction
 
Brd template
Brd template Brd template
Brd template
 
Alfresco & Kofax - scan, manage, collaborate
Alfresco & Kofax - scan, manage, collaborateAlfresco & Kofax - scan, manage, collaborate
Alfresco & Kofax - scan, manage, collaborate
 
Service Support Process PPT
Service Support Process PPTService Support Process PPT
Service Support Process PPT
 
Structured Approach to Solution Architecture
Structured Approach to Solution ArchitectureStructured Approach to Solution Architecture
Structured Approach to Solution Architecture
 
How to use BABoK 3.0?
How to use BABoK 3.0?How to use BABoK 3.0?
How to use BABoK 3.0?
 
Lecture 3: The Role of Enterprise Architecture Practice
Lecture 3: The Role of Enterprise Architecture PracticeLecture 3: The Role of Enterprise Architecture Practice
Lecture 3: The Role of Enterprise Architecture Practice
 
ITIL Service Desk
ITIL Service DeskITIL Service Desk
ITIL Service Desk
 
Business Requirements: How to Create a Business Requirements Document (Free T...
Business Requirements: How to Create a Business Requirements Document (Free T...Business Requirements: How to Create a Business Requirements Document (Free T...
Business Requirements: How to Create a Business Requirements Document (Free T...
 
Sap test center of excellence
Sap test center of excellenceSap test center of excellence
Sap test center of excellence
 
Transition to operations template Julie Bozzi Oregon
Transition to operations template   Julie Bozzi OregonTransition to operations template   Julie Bozzi Oregon
Transition to operations template Julie Bozzi Oregon
 
Tcoe team
Tcoe teamTcoe team
Tcoe team
 
Performance Testing in Agile Process
Performance Testing in Agile ProcessPerformance Testing in Agile Process
Performance Testing in Agile Process
 
Patterns of a “good” test automation framework
Patterns of a “good” test automation frameworkPatterns of a “good” test automation framework
Patterns of a “good” test automation framework
 
Introduction to Enterprise architecture and the steps to perform an Enterpris...
Introduction to Enterprise architecture and the steps to perform an Enterpris...Introduction to Enterprise architecture and the steps to perform an Enterpris...
Introduction to Enterprise architecture and the steps to perform an Enterpris...
 
Perils of Page-Object Pattern
Perils of Page-Object PatternPerils of Page-Object Pattern
Perils of Page-Object Pattern
 
Project roll-out Implementation - decisions & options
Project roll-out Implementation - decisions & optionsProject roll-out Implementation - decisions & options
Project roll-out Implementation - decisions & options
 
What is Software Testing | Edureka
What is Software Testing | EdurekaWhat is Software Testing | Edureka
What is Software Testing | Edureka
 

Similar to Testing Sap: Modern Methodology

Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
LB Denker
 
Trends in Agile Testing by Lisa Crispin
Trends in Agile Testing by Lisa CrispinTrends in Agile Testing by Lisa Crispin
Trends in Agile Testing by Lisa Crispin
Directi Group
 

Similar to Testing Sap: Modern Methodology (20)

Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Agile testing
Agile testingAgile testing
Agile testing
 
Agile Testing 20021015
Agile Testing 20021015Agile Testing 20021015
Agile Testing 20021015
 
Test Driven Development Introduction
Test Driven Development IntroductionTest Driven Development Introduction
Test Driven Development Introduction
 
Agile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveAgile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer Perspective
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile Adoption
 
Just Java2007 - Daniel Wildt - Tools For Java Test Automation
Just Java2007 - Daniel Wildt - Tools For Java Test AutomationJust Java2007 - Daniel Wildt - Tools For Java Test Automation
Just Java2007 - Daniel Wildt - Tools For Java Test Automation
 
Eswaranand Attuluri CV
Eswaranand Attuluri CVEswaranand Attuluri CV
Eswaranand Attuluri CV
 
Manual testing1
Manual testing1Manual testing1
Manual testing1
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Releasing fast code - The DevOps approach
Releasing fast code - The DevOps approachReleasing fast code - The DevOps approach
Releasing fast code - The DevOps approach
 
ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in Practice
 
Semiconductor Design Community
Semiconductor Design CommunitySemiconductor Design Community
Semiconductor Design Community
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
Agile Eng Practices Agilesparks
Agile Eng Practices AgilesparksAgile Eng Practices Agilesparks
Agile Eng Practices Agilesparks
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers Perspective
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
Trends in Agile Testing by Lisa Crispin
Trends in Agile Testing by Lisa CrispinTrends in Agile Testing by Lisa Crispin
Trends in Agile Testing by Lisa Crispin
 
Session #1: Development Practices And The Microsoft Approach
Session #1: Development Practices And The Microsoft ApproachSession #1: Development Practices And The Microsoft Approach
Session #1: Development Practices And The Microsoft Approach
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Recently uploaded (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 

Testing Sap: Modern Methodology

  • 1. Testing SAP: Modern Testing Methodologies Ethan Jewett
  • 3. “Enterprise” project trade-offs Value Budget Risk Duration
  • 4. Software development trade-offs Features Budget Quality Time
  • 5. Client requests Build Faster And produce more Value Cheaper with less Risk
  • 6. Remember… Value Budget Risk Duration
  • 7. Are there hidden assumptions? Yes. Methodology People and Culture Technology
  • 8. Any other assumptions? Project Preparation Business Blueprint Project Realization Final Preparation Go-live and Support Technical Technical Test Fix Transport Go Live Design Build Integration Live Write and & Regression Write test scripts Training run unit test Support Test
  • 9. The topic Over the next hour and a half, we’ll talk about how testing methodologies, techniques, and technologies can help us Change these underlying assumptions. Enable modern project methodologies. Control the basic project trade-off.
  • 10. The focus Project Preparation Business Blueprint Project Realization Final Preparation Go-live and Support Technical Technical Test Fix Transport Go Live Design Build Integration Live Write and & Regression Write test scripts Training run unit test Support Test
  • 11. The goal More value Faster With less risk (and more fun)
  • 13. V-Model methodology http://en.wikipedia.org/wiki/File:V-model.JPG
  • 14. More parallel, less repetition http://en.wikipedia.org/wiki/File:V-model.JPG
  • 15. Faster http://en.wikipedia.org/wiki/File:V-model.JPG
  • 16. More iterative http://en.wikipedia.org/wiki/File:V-model.JPG
  • 17. How do we get there?
  • 18. Modern methodology • Modern quality assurance and testing – Leading practice in custom development, open source, and agile projects • Test driven development (TDD), behavior driven development (BDD), readable tests, executable requirements, continuous integration – Overview of the SAP test automation technologies – Road we're going to take through testing SAP
  • 19. Leading Practice • Context • Questions and problems • Approaches • Tools
  • 20. Leading Practice • Context • Questions and problems • Approaches • Tools
  • 21. Context The context of modern software development is above all open, agile and decentralized. Open source projects are usually the furthest along this path, and as such these projects use (or are forced to invent) tools that fit their processes.
  • 22. Openness Requirements, specifications, issues reports, test cases, source code, and project tools and metrics are readily open and available to all participants in the project. (Not necessarily the same as “open source”.) Open Collaboration within Corporations Using Software Forges - http://www.riehle.org/publications/2009/open-collaboration-within-corporations-using-software-forges
  • 23. Agility The values of the Agile Manifesto: – Individuals and interactions over processes and tools – Working software over comprehensive documentation – Customer collaboration over contract negotiation – Responding to change over following a plan http://agilemanifesto.org/
  • 24. Decentralization Open-source projects are decentralized by nature, but most organizations today have some element of decentralization Challenges: – Quality control – Communication – Maintaining commitment
  • 25. Leading Practice • Context • Questions and problems • Approaches • Tools
  • 26. Questions and problems How do we track 100s How do we or 1000s of bugs enforce disciplined (including duplicates)? testing? How do we make Do we use unit, tests relevant? functional, integration, or acceptance testing? How does testing Or all of them? integrate with issue tracking? How do we ensure that How do we the build complies with determine the cause Manual or the tests? of test failure? automatic testing?
  • 27. Leading Practice • Context • Questions and problems • Approaches • Tools
  • 28. Approaches Test Coverage Test Automation Test Driven Development Behavior Driven Development “Spec as Test” (the test/spec convergence) Exploratory Testing Continuous Integration
  • 29. Test coverage The percentage of code or development that is tested. In code, this might be measured by determining if every branch of code can result in a failing test condition (“Branch coverage”) Wikipedia - http://en.wikipedia.org/wiki/Code_coverage
  • 30. Test automation • Accepted as gospel modern dev communities – Regardless of how good they are at testing, accept that they should automate as much as possible – Can lead to ignoring non-automatable testing • In the SAP world we haven’t even accepted that full test coverage is desirable, much less automation Test automation pushback - http://railspikes.com/2008/7/11/testing-is-overrated http://michaelfeathers.typepad.com/michael_feathers_blog/2008/06/the-flawed- theo.html Automated testing story on SDN (never completed) - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/4103
  • 31. A note on the following slides I’m using bowling as an example because I’m copying from the internet. I don’t know much about bowling, so the examples are probably wrong. My assumption is that a game is usually 10 frames of two balls per frame. If the last frame is a spare or a strike, you get at most two additional frames. Or something like that.
  • 32. Test Driven Development (TDD) Build Design Test Design Build • Technical • Run tests • Run tests specification • Write tests • Write code • Failure! based on to address specs test failures Design Test Test
  • 33. TDD Example require ‘test/unit’ require ‘test/unit/assertions’ require ‘bowling’ class TC_Bowling < Test::Unit::TestCase def setup bowling = Bowling.new end def gutter_game 20.times { bowling.hit(0) } assert bowling.score == 0 end end
  • 34. Behavior Driven Development (BDD) • Focus on the external behavior of the code • Abstract away implementation details • Additionally, BDD libraries tend to codify the best practices of unit testing and TDD
  • 35. BDD example require ‘spec’ require ‘bowling’ describe Bowling do it quot;should score 0 for gutter gamequot; do bowling = Bowling.new 20.times { bowling.hit(0) } bowling.score.should == 0 end end
  • 36. “Spec as Test” – or writing features • Recently, the Ruby community has begun developing testing frameworks that are even closer to natural language. – Cucumber • These frameworks wrap TDD and BDD frameworks and allow for “business-writable”, “business-readable”, executable test scripts.
  • 37. Feature example Feature (visible to the user) Implementation (not visible to user) require ‘spec/expectations’ Scenario: Gutter game require ‘bowling’ Given I have bowled 20 balls and I have knocked over 0 pins per ball Given /I have knocked over (d+) pins per ball/ do |pins| When I check the score @pins_per_ball = pins end Then I should have 0 points Given /I have bowled (d+) balls/ do |balls| @bowling = Bowling.new balls.times { @bowling.hit( @pins_per_ball ) } end Then /I should have (d+) points/ do |points| @bowling.score.should == points end
  • 38. Feature example cont. Note that we can now implement many more tests with no more code/implementation: Scenario: Perfect game Scenario: Lots of spares Given I have bowled 12 balls Given I have bowled 24 balls and I have knocked over 10 pins per ball and I have knocked over 5 pins per ball When I check the score When I check the score Then I should have 300 points Then I should have ??? Points Scenario: Bad game Or maybe I need something a little Given I have bowled 20 balls different.... and I have knocked over 2 pins per ball When I check the score Scenario: Too long a game Then I should have 40 points Given I have bowled 30 balls and I have knocked over 0 pins per ball Then I should receive an error
  • 39. Side-by-side TDD BDD Spec as Test require ‘test/unit’ require ‘spec/expectations’ Scenario: Gutter game require ‘test/unit/assertions’ require ‘bowling’ require ‘bowling’ Given I have bowled 20 balls describe Bowling do and I have knocked over 0 pins per ball class TC_Bowling < Test::Unit::TestCase it quot;should score 0 for gutter gamequot; do When I view the score def setup bowling = Bowling.new bowling = Bowling.new Then I should have 0 points end 20.times { bowling.hit(0) } bowling.score.should == 0 def gutter_game 20.times { bowling.hit(0) } end assert bowling.score == 0 end end end
  • 40. TDD, BDD, and Test-as-Spec References • Test Driven Design/Development – http://en.wikipedia.org/wiki/Test- driven_development – http://www.agiledata.org/essays/tdd.html • Behavior Driven Development – http://behaviour-driven.org/ • Spec as test – Cucumber - http://cukes.info/ – Rspec - http://rspec.info/ – http://www.pragprog.com/titles/achbd/the-rspec- book
  • 41. Exploratory Testing • The practice of trying to break things – Career security for klutzes • Exploratory testing appears informal, but can be structured and is a very important aspect of software testing. – Probably the most neglected form of testing in open source projects http://www.kohl.ca/blog/archives/000185.html http://www.kohl.ca/articles/ExploratoryTesting_MusicofInvestigation.pdf
  • 42. Continuous Integration • The practice of automating not only your tests but your full commit-build-test cycle 1. A commit new or changed code 2. Triggers a full system build 3. And an execution of the entire test suite Cruisecontrol.rb - http://rubyforge.org/projects/cruisecontrolrb http://cruisecontrolrb.thoughtworks.com/ Hudson - https://hudson.dev.java.net/ http://www.softwarebloat.com/2008/11/19/continuous-integration-blueprints-how- to-build-an-army-of-killer-robots-with-hudson-and-cucumber
  • 43. Leading Practice • Context • Questions and problems • Approaches • Tools
  • 44. Tools Source version control (svn, git) Testing libraries (rspec, cucumber, junit, ABAPunit, jspec) Continuous Integration tools (cruisecontrol.rb, Hudson) Issue tracking (Sourceforge, trac, Lighthouse, Google Code) Agile methodologies (Scrum, XP, etc.)
  • 45. Modern methodology • Modern quality assurance and testing – Leading practice in custom development, open source, and agile projects • Test driven development (TDD), behavior driven development (BDD), readable tests, executable requirements, continuous integration – Overview of the SAP test automation technologies – Road we're going to take through testing SAP
  • 46. The SAP World • Manual • Unit testing – ABAP Unit – Java • Functional testing – eCATT
  • 47. ABAP Unit • Modeled on Java Unit • Excellent (if a bit unwieldy) for traditional unit test automation or classes – Works well for TDD • ABAP Objects (object-oriented ABAP) • TDD Demo – ZBOWLING & ZBOWLING_TEST http://help.sap.com/saphelp_nw70ehp1/helpdata/en/a2/8a1b602e85 8645b8aac1559b638ea4/frameset.htm
  • 48. Non-SAP • We can use just about anything via RFCs • For Web Dynpros, BSPs, or Portal applications, there are a lot of options using web-drivers that can automatically drive browsers • Address in depth in future sessions
  • 49. Modern methodology • Modern quality assurance and testing – Leading practice in custom development, open source, and agile projects • Test driven development (TDD), behavior driven development (BDD), readable tests, executable requirements, continuous integration – Overview of the SAP test automation technologies – Road we're going to take through testing SAP
  • 50. The Road to the Future • Developing techniques to support agile, open, decentralized development in an SAP landscape • Using SAP tools and 3rd party tools • Shorter, more focused and hands-on sessions
  • 51. Start with this http://en.wikipedia.org/wiki/File:V-model.JPG
  • 52. Get more parallel, less repetitive Spec = Test http://en.wikipedia.org/wiki/File:V-model.JPG
  • 53. Get faster Test Automation http://en.wikipedia.org/wiki/File:V-model.JPG
  • 54. Get iterative Continuous Integration http://en.wikipedia.org/wiki/File:V-model.JPG
  • 55. And end up here (or somewhere similar) http://en.wikipedia.org/wiki/File:Scrum_process.svg
  • 57. General references for inclusion • Open Collaboration within Corporations Using Software Forges - http://www.riehle.org/publications/2009/open-collaboration-within-corporations-using-software-forges/ • Continuous integration tools – http://rubyforge.org/projects/cruisecontrolrb - http://cruisecontrolrb.thoughtworks.com/ – https://hudson.dev.java.net/ – http://www.softwarebloat.com/2008/11/19/continuous-integration-blueprints-how-to-build-an-army-of-killer-robots-with-hudson-and-cucumber • Exploratory testing – http://www.kohl.ca/blog/archives/000185.html – http://www.kohl.ca/articles/ExploratoryTesting_MusicofInvestigation.pdf • The ongoing revolution in software testing – http://www.kaner.com/pdfs/TheOngoingRevolution.pdf • ABAP Unit – Spotlight on ABAP Unit Part 1 - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/1088 • Load testing – http://dannorth.net/2007/02/monkey-business-value • Joel Spolsky – 12 steps to better code - http://www.joelonsoftware.com/articles/fog0000000043.html • Automated testing story on SDN - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/4103 • JUnit - http://www.junit.org/ • Open Source – http://www.paulgraham.com/opensource.html (What business can learn from open source) • Watir – http://wtr.rubyforge.org/ • Spec as test – Cucumber - http://cukes.info/ – Rspec - http://rspec.info/ – http://www.pragprog.com/titles/achbd/the-rspec-book • SAP testing – http://www.beteoblog.com/beteo-alm-miniguides/software-quality/ – http://raa.ruby-lang.org/project/saprfc/ – Integration Tests in ABAP Development und Tool Support - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/7131 – XSLT - https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/12173 • Test automation as panacea (not) – http://railspikes.com/2008/7/11/testing-is-overrated – http://michaelfeathers.typepad.com/michael_feathers_blog/2008/06/the-flawed-theo.html • BDD - http://behaviour-driven.org/ • Blue Ruby - https://sap.na.pgiconnect.com/p16473929/ - http://www.slideshare.net/schmerdy/blue-ruby-sdn-webinar-1260181 - https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/408a9a3b-03f9-2b10-b29c-f0a3374b19d8