SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
PL/SQL vienībtestēšana
       ar Ruby
Raimonds Simanovskis




         github.com/rsim
Kāda ir laba
   programma?
                       Jātestē
Strādā pareizi
                  funkcionalitāte!
                       Jātestē
Pietiekoši ātri
                     veiktspēja!
                       Jātestē
 Ir uzturama
                   pēc izmaiņām!
Kā tas tiek darīts?
           kaut ko
         padarbinam
                    dbms_output.put_line(...)

tas taču acīmredzami,
    ka kļūdu nav :)

     lai testētāji testē,
      tas ir viņu darbs
Kādas ir
    problēmas?
 “pamēģinam” nevis testējam

     testi nav atkārtojami

 manuāla rezultātu pārbaude

testēšana tiek sākta pārāk vēlu
Testu veidi
        vienībtesti

     integrācijas testi
                                    programmētāja
veiktspējas & slodzes testi            atbildība

pētnieciskie & lietojamības testi
Testu virzīta
  izstrāde
    Izveido testu


     Izpilda testu


    Uzraksta kodu


     Izpilda testu


     Refaktorē
Labi vienībtesti
          Automātiski, izpildās ātri

Plašs koda pārklājums, iekļauj robežgadījumus

                 Atkārtojami

    Neatkarīgi, nav svarīga izpildes secība

    Izmanto reālus, labi saprotamus datus
Kā to darīt
programmējot
   PL/SQL ?
utPLSQL
izveidoja Steven Feuerstein, 1999

bāzēts uz “xUnit”-stila ietvariem

pēdējos gados netiek uzturēts :(
Piemērs
 Simbolu virknes apakšvirkne
no sākuma līdz beigu pozīcijai
Testi
Rezultāti
Vizuālie testēšanas
          rīki
Quest Code Tester   SQL Developer 2.1
Kāpēc maz lieto?
      liels testu koda apjoms?

  nepārskatāmi, slikta lasāmība?

grūti testēt sarežģītākus gadījumus?

nav labās prakses kā rakstīt testus?

neviens nelieto, kāpēc lai es lietotu?
ruby-plsql-spec
         ideāla valoda testu rakstīšanai



 RSpec       spēcīgi testēšanas rīki
              ar “lasāmu” sintaksi

               bibliotēka PL/SQL
ruby-plsql         procedūru
             izsaukšanai no Ruby
ruby-plsql-spec
     Demo
Ieguvumi
          kompakta, lasāma sintakse

spēcīgas iespējas arī sarežģītu testu rakstīšanai

       labākā prakse no Ruby kopienas

     veidots uz reālu projektu vajadzībām
Saites
http://blog.rayapps.com/2009/11/27/oracle-
        plsql-unit-testing-with-ruby/

    http://blog.rayapps.com/2010/01/06/
screencasts-of-oracle-plsql-unit-testing-with-
                    ruby/

   http://github.com/rsim/ruby-plsql-spec

Contenu connexe

Plus de Raimonds Simanovskis

Profiling Mondrian MDX Requests in a Production Environment
Profiling Mondrian MDX Requests in a Production EnvironmentProfiling Mondrian MDX Requests in a Production Environment
Profiling Mondrian MDX Requests in a Production EnvironmentRaimonds Simanovskis
 
Improve Mondrian MDX usability with user defined functions
Improve Mondrian MDX usability with user defined functionsImprove Mondrian MDX usability with user defined functions
Improve Mondrian MDX usability with user defined functionsRaimonds Simanovskis
 
Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015
Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015
Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015Raimonds Simanovskis
 
Data Warehouses and Multi-Dimensional Data Analysis
Data Warehouses and Multi-Dimensional Data AnalysisData Warehouses and Multi-Dimensional Data Analysis
Data Warehouses and Multi-Dimensional Data AnalysisRaimonds Simanovskis
 
eazyBI Overview - Embedding Mondrian in other applications
eazyBI Overview - Embedding Mondrian in other applicationseazyBI Overview - Embedding Mondrian in other applications
eazyBI Overview - Embedding Mondrian in other applicationsRaimonds Simanovskis
 
Atvērto datu izmantošanas pieredze Latvijā
Atvērto datu izmantošanas pieredze LatvijāAtvērto datu izmantošanas pieredze Latvijā
Atvērto datu izmantošanas pieredze LatvijāRaimonds Simanovskis
 
JavaScript Unit Testing with Jasmine
JavaScript Unit Testing with JasmineJavaScript Unit Testing with Jasmine
JavaScript Unit Testing with JasmineRaimonds Simanovskis
 
JRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMJRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMRaimonds Simanovskis
 
Agile Operations or How to sleep better at night
Agile Operations or How to sleep better at nightAgile Operations or How to sleep better at night
Agile Operations or How to sleep better at nightRaimonds Simanovskis
 
Analyze and Visualize Git Log for Fun and Profit
Analyze and Visualize Git Log for Fun and ProfitAnalyze and Visualize Git Log for Fun and Profit
Analyze and Visualize Git Log for Fun and ProfitRaimonds Simanovskis
 
opendata.lv Case Study - Promote Open Data with Analytics and Visualizations
opendata.lv Case Study - Promote Open Data with Analytics and Visualizationsopendata.lv Case Study - Promote Open Data with Analytics and Visualizations
opendata.lv Case Study - Promote Open Data with Analytics and VisualizationsRaimonds Simanovskis
 
Extending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on RailsExtending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on RailsRaimonds Simanovskis
 
Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRaimonds Simanovskis
 
RailsWayCon: Multidimensional Data Analysis with JRuby
RailsWayCon: Multidimensional Data Analysis with JRubyRailsWayCon: Multidimensional Data Analysis with JRuby
RailsWayCon: Multidimensional Data Analysis with JRubyRaimonds Simanovskis
 
Why Every Tester Should Learn Ruby
Why Every Tester Should Learn RubyWhy Every Tester Should Learn Ruby
Why Every Tester Should Learn RubyRaimonds Simanovskis
 
Multidimensional Data Analysis with JRuby
Multidimensional Data Analysis with JRubyMultidimensional Data Analysis with JRuby
Multidimensional Data Analysis with JRubyRaimonds Simanovskis
 

Plus de Raimonds Simanovskis (20)

Profiling Mondrian MDX Requests in a Production Environment
Profiling Mondrian MDX Requests in a Production EnvironmentProfiling Mondrian MDX Requests in a Production Environment
Profiling Mondrian MDX Requests in a Production Environment
 
Improve Mondrian MDX usability with user defined functions
Improve Mondrian MDX usability with user defined functionsImprove Mondrian MDX usability with user defined functions
Improve Mondrian MDX usability with user defined functions
 
Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015
Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015
Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015
 
Data Warehouses and Multi-Dimensional Data Analysis
Data Warehouses and Multi-Dimensional Data AnalysisData Warehouses and Multi-Dimensional Data Analysis
Data Warehouses and Multi-Dimensional Data Analysis
 
mondrian-olap JRuby library
mondrian-olap JRuby librarymondrian-olap JRuby library
mondrian-olap JRuby library
 
eazyBI Overview - Embedding Mondrian in other applications
eazyBI Overview - Embedding Mondrian in other applicationseazyBI Overview - Embedding Mondrian in other applications
eazyBI Overview - Embedding Mondrian in other applications
 
Atvērto datu izmantošanas pieredze Latvijā
Atvērto datu izmantošanas pieredze LatvijāAtvērto datu izmantošanas pieredze Latvijā
Atvērto datu izmantošanas pieredze Latvijā
 
JavaScript Unit Testing with Jasmine
JavaScript Unit Testing with JasmineJavaScript Unit Testing with Jasmine
JavaScript Unit Testing with Jasmine
 
JRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMJRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVM
 
Agile Operations or How to sleep better at night
Agile Operations or How to sleep better at nightAgile Operations or How to sleep better at night
Agile Operations or How to sleep better at night
 
TDD - Why and How?
TDD - Why and How?TDD - Why and How?
TDD - Why and How?
 
Analyze and Visualize Git Log for Fun and Profit
Analyze and Visualize Git Log for Fun and ProfitAnalyze and Visualize Git Log for Fun and Profit
Analyze and Visualize Git Log for Fun and Profit
 
PL/SQL Unit Testing Can Be Fun
PL/SQL Unit Testing Can Be FunPL/SQL Unit Testing Can Be Fun
PL/SQL Unit Testing Can Be Fun
 
opendata.lv Case Study - Promote Open Data with Analytics and Visualizations
opendata.lv Case Study - Promote Open Data with Analytics and Visualizationsopendata.lv Case Study - Promote Open Data with Analytics and Visualizations
opendata.lv Case Study - Promote Open Data with Analytics and Visualizations
 
Extending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on RailsExtending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on Rails
 
Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
 
RailsWayCon: Multidimensional Data Analysis with JRuby
RailsWayCon: Multidimensional Data Analysis with JRubyRailsWayCon: Multidimensional Data Analysis with JRuby
RailsWayCon: Multidimensional Data Analysis with JRuby
 
Why Every Tester Should Learn Ruby
Why Every Tester Should Learn RubyWhy Every Tester Should Learn Ruby
Why Every Tester Should Learn Ruby
 
Multidimensional Data Analysis with JRuby
Multidimensional Data Analysis with JRubyMultidimensional Data Analysis with JRuby
Multidimensional Data Analysis with JRuby
 
Rails on Oracle 2011
Rails on Oracle 2011Rails on Oracle 2011
Rails on Oracle 2011
 

PL/SQL vienībtestēšana ar ruby

  • 2. Raimonds Simanovskis github.com/rsim
  • 3. Kāda ir laba programma? Jātestē Strādā pareizi funkcionalitāte! Jātestē Pietiekoši ātri veiktspēja! Jātestē Ir uzturama pēc izmaiņām!
  • 4. Kā tas tiek darīts? kaut ko padarbinam dbms_output.put_line(...) tas taču acīmredzami, ka kļūdu nav :) lai testētāji testē, tas ir viņu darbs
  • 5. Kādas ir problēmas? “pamēģinam” nevis testējam testi nav atkārtojami manuāla rezultātu pārbaude testēšana tiek sākta pārāk vēlu
  • 6. Testu veidi vienībtesti integrācijas testi programmētāja veiktspējas & slodzes testi atbildība pētnieciskie & lietojamības testi
  • 7. Testu virzīta izstrāde Izveido testu Izpilda testu Uzraksta kodu Izpilda testu Refaktorē
  • 8. Labi vienībtesti Automātiski, izpildās ātri Plašs koda pārklājums, iekļauj robežgadījumus Atkārtojami Neatkarīgi, nav svarīga izpildes secība Izmanto reālus, labi saprotamus datus
  • 10. utPLSQL izveidoja Steven Feuerstein, 1999 bāzēts uz “xUnit”-stila ietvariem pēdējos gados netiek uzturēts :(
  • 11. Piemērs Simbolu virknes apakšvirkne no sākuma līdz beigu pozīcijai
  • 12. Testi
  • 14. Vizuālie testēšanas rīki Quest Code Tester SQL Developer 2.1
  • 15. Kāpēc maz lieto? liels testu koda apjoms? nepārskatāmi, slikta lasāmība? grūti testēt sarežģītākus gadījumus? nav labās prakses kā rakstīt testus? neviens nelieto, kāpēc lai es lietotu?
  • 16. ruby-plsql-spec ideāla valoda testu rakstīšanai RSpec spēcīgi testēšanas rīki ar “lasāmu” sintaksi bibliotēka PL/SQL ruby-plsql procedūru izsaukšanai no Ruby
  • 18. Ieguvumi kompakta, lasāma sintakse spēcīgas iespējas arī sarežģītu testu rakstīšanai labākā prakse no Ruby kopienas veidots uz reālu projektu vajadzībām
  • 19. Saites http://blog.rayapps.com/2009/11/27/oracle- plsql-unit-testing-with-ruby/ http://blog.rayapps.com/2010/01/06/ screencasts-of-oracle-plsql-unit-testing-with- ruby/ http://github.com/rsim/ruby-plsql-spec