SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Perl Testing
                       Consideration
                          (seen from other languages)


                               Masaki Nakagawa

                 YAPC::Asia 2011 Tokyo (yapcasia.org/2011/talk/80)



2011   10   14
Profile
                 • Masaki Nakagawa
                 • @ikasam_a
                 • metacpan.org/author/MASAKI
                 • MC of Yokohama.pm (yokohama.pm.org)
                 • github.com/masaki
                 • socialbios.com/ikasam_a
                 • “Pushing the Team B”
2011   10   14
Thank you !

                 ameblo.jp/yuki-kashiwagi-we/image-11002817849-11452563522.html
2011   10   14
Works
                 • Embedded Development w/ C++
                 • WebApp. Development w/ Ruby
                 • Project Management (small)
                 • New Business Development
                  •   www.ricoh.co.jp/ucs/

                  •   www.ricoh.co.jp/ucs/P3000/



2011   10   14
Embedded Development

                 • “Hardware Driven”
                 • “The Waterfall”
                 • Development Process
                 • QA Process
                 • Systematic Testing
2011   10   14
Classification of Testing


                  Perspective   Target

                     How         What




2011   10   14
Perspective
                      Developer or User (Customer)


                 • Developer Testing
                 • Acceptance Testing


2011   10   14
Target
                               One or More


                 • Unit Testing
                 • Integration Testing


2011   10   14
How
                        Techniques for writing tests


                 • Black Box Testing
                 • White Box Testing


2011   10   14
What
                           the Purpose of testing

                 • Functional Testing
                 • Non-Functional Testing
                  • Performance / Stress / Usability / ...

2011   10   14
Testing Framework


                 1. Helping to write tests
                 2. Executing tests
                 3. Reporting test results




2011   10   14
Ruby Testing




                 www.atmarkit.co.jp/fcoding/rails/articles/passionate/07/passionate07a.html
                                 survey.hamptoncatlin.com/survey/stats
2011   10   14
e.g.) RSpec

                 1. describe ... it ...
                 2. $ rspec ...
                 3. Spec::Runner::Formatter




2011   10   14
e.g.) Cucumber

                 1. Given ... When ... Then ...
                 2. $ cucumber ...
                 3. Cucumber::Formatter




2011   10   14
Many Frameworks


2011   10   14
Perl Testing

                 1. Test::More, Test::Class,
                    Test::Base, Test::Spec, ...
                 2. $ prove ... (TAP::Harness)
                 3. TAP (TAP::Formatter)



2011   10   14
Perl has TAP

2011   10   14
TAP
                 • testanything.org
                  • “the Test Anything Protocol”
                  • “is a simple text-based interface”
        1..4
        ok 1 -     Input file opened
        not ok     2 - First line of the input valid
        ok 3 -     Read the rest of the file
        not ok     4 - Summarized correctly # TODO Not written yet


                             testanything.org/wiki/index.php/Main_Page
2011   10   14
Perl <3 TAP
                 • From any test description
                  •   e.g.) Test::Class, Test::Base, Test::Spec

                 • Convert results to non-TAP format
                  •   e.g.) TAP::Formatter::JUnit

                 • Easy to write test helpers
                  •   e.g.) Test::Exception, Test::Deep, ...


2011   10   14
Rails Testing




                  gihyo.jp/magazine/wdpress/archive/2011/vol61
2011   10   14
Rails Testing
                 •   Perspective
                     •   UnitTest, End-to-End

                 •   Frameworks
                     •   Test::Unit (+ Shoulda), RSpec, Cucumber

                 •   Browser Integration
                     •   Capybara (rack-test, Selenium, Envjs, ...)

                 •   Test Double
                     •   rspec-mocks, rr, WebMock

2011   10   14
Catalyst

                 • Catalyst::Test
                 • Test::WWW::Mechanize::Catalyst
                 • Test::WWW::Selenium::Catalyst

2011   10   14
Plack


                 • Plack::Test
                 • Test::WWW::Mechanize::PSGI


2011   10   14
Browser Integration

                 • WWW:: + WAF Customization
                  • WWW::Mechanize
                  • WWW::Selenium (Selenium-RC)
                 • not yet for testing
                  • WWW::HtmlUnit
                  • Selenium::Remote::Driver (WebDriver)
2011   10   14
Test Double
                         xunitpatterns.com/Test%20Double.html




                 • Mock
                  • Test::MockObject
                  • Test::Mock::Recorder
                 • Stub
                  • Test::Mock::Guard
                  • Test::Mock::LWP::Dispatch
2011   10   14
Test Double
                                  xunitpatterns.com/Test%20Double.html


                 •   Test::Double (under construction)

                     •   0.01 released !

                         •   metacpan.org/release/Test-Double

                     •   github.com/masaki/Test-Double

                     •   Mocks and Stubs

                         •   mock out w/ mocha style

                         •   stub out w/ rr style

                     •   Collaborators Welcome!!!
2011   10   14
Test Double
                          xunitpatterns.com/Test%20Double.html




                 • Spy
                  • DBD::Mock
                 • Fake
                  • Test::mysqld
                  • Test::TCP
2011   10   14
Descriptive Frameworks

                 • Test::More
                 • Test::Class (xUnit style)
                 • Test::Declare / Test::More + “subtest”
                 • Test::Spec (RSpec 1 compat.)
                 • Test::Base (Parameterized Tests)
                 • Test::Cukes / Test::BDD::Cucumber
                   (Cucumber clone)
2011   10   14
Weakness
                 • Expectation and Verification
                  • vs. rr, rspec-mocks, mocha, ...
                 • Browser Integration API
                  • vs. Capybara, Webrat, ...
                 • Naming of Test Double modules
                  • Test::Mock::Guard is “Stub” module
2011   10   14
Comparision
                 • Pros
                  • TAP-based Test Description
                  • Many Helpful Modules
                 • Cons
                  • Non-Uniform Browser Integration
                  • Poor Expectation and Verification
2011   10   14
Conclusions
                 • About Testing
                  • 4 Classifications
                  • 3 Elements in Frameworks
                 • Perl and Ruby/Rails Testing Environments
                  • Perl has TAP and Many Great Modules
                  • Learn and Steal MORE from Ruby/Rails
                    • Write More Descriptively
2011   10   14
Thank you!
                 Questions?


2011   10   14

Más contenido relacionado

La actualidad más candente

ProtractorJS for automated testing of Angular 1.x/2.x applications
ProtractorJS for automated testing of Angular 1.x/2.x applicationsProtractorJS for automated testing of Angular 1.x/2.x applications
ProtractorJS for automated testing of Angular 1.x/2.x applicationsBinary Studio
 
Visual Regression Testing: In search of an Ember solution
Visual Regression Testing: In search of an Ember solutionVisual Regression Testing: In search of an Ember solution
Visual Regression Testing: In search of an Ember solutionLisa Backer
 
Protractor for angularJS
Protractor for angularJSProtractor for angularJS
Protractor for angularJSKrishna Kumar
 
Sonar qube to impove code quality
Sonar qube   to impove code qualitySonar qube   to impove code quality
Sonar qube to impove code qualityMani Sarkar
 
Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully Applitools
 
Real Java EE Testing with Arquillian and ShrinkWrap
Real Java EE Testing with Arquillian and ShrinkWrapReal Java EE Testing with Arquillian and ShrinkWrap
Real Java EE Testing with Arquillian and ShrinkWrapDan Allen
 
Test Automation with Twist and Sahi
Test Automation with Twist and SahiTest Automation with Twist and Sahi
Test Automation with Twist and Sahiericjamesblackburn
 
Jest: Frontend Testing leicht gemacht @EnterJS2018
Jest: Frontend Testing leicht gemacht @EnterJS2018Jest: Frontend Testing leicht gemacht @EnterJS2018
Jest: Frontend Testing leicht gemacht @EnterJS2018Holger Grosse-Plankermann
 
Rethinking Testing
Rethinking TestingRethinking Testing
Rethinking Testingpdejuan
 
How to Use Selenium, Successfully
How to Use Selenium, SuccessfullyHow to Use Selenium, Successfully
How to Use Selenium, SuccessfullySauce Labs
 
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчетыQA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчетыQAFest
 
Automated Testing using JavaScript
Automated Testing using JavaScriptAutomated Testing using JavaScript
Automated Testing using JavaScriptSimon Guest
 
FIT and JBehave - Good, Bad and Ugly
FIT and JBehave - Good, Bad and UglyFIT and JBehave - Good, Bad and Ugly
FIT and JBehave - Good, Bad and UglyBrian Repko
 
Fabulous Tests on Spock and Groovy
Fabulous Tests on Spock and GroovyFabulous Tests on Spock and Groovy
Fabulous Tests on Spock and GroovyYaroslav Pernerovsky
 
AngularJS and Protractor
AngularJS and ProtractorAngularJS and Protractor
AngularJS and ProtractorFilipe Falcão
 
API Testing following the Test Pyramid
API Testing following the Test PyramidAPI Testing following the Test Pyramid
API Testing following the Test PyramidElias Nogueira
 
Jest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRWJest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRWHolger Grosse-Plankermann
 
Test Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEMTest Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEMSagar Sane
 
Selenium
SeleniumSelenium
Seleniumg2ix
 
Behaviour testing for single-page applications and API’s
Behaviour testing for single-page applications and API’sBehaviour testing for single-page applications and API’s
Behaviour testing for single-page applications and API’sAndrew Kirkpatrick
 

La actualidad más candente (20)

ProtractorJS for automated testing of Angular 1.x/2.x applications
ProtractorJS for automated testing of Angular 1.x/2.x applicationsProtractorJS for automated testing of Angular 1.x/2.x applications
ProtractorJS for automated testing of Angular 1.x/2.x applications
 
Visual Regression Testing: In search of an Ember solution
Visual Regression Testing: In search of an Ember solutionVisual Regression Testing: In search of an Ember solution
Visual Regression Testing: In search of an Ember solution
 
Protractor for angularJS
Protractor for angularJSProtractor for angularJS
Protractor for angularJS
 
Sonar qube to impove code quality
Sonar qube   to impove code qualitySonar qube   to impove code quality
Sonar qube to impove code quality
 
Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully
 
Real Java EE Testing with Arquillian and ShrinkWrap
Real Java EE Testing with Arquillian and ShrinkWrapReal Java EE Testing with Arquillian and ShrinkWrap
Real Java EE Testing with Arquillian and ShrinkWrap
 
Test Automation with Twist and Sahi
Test Automation with Twist and SahiTest Automation with Twist and Sahi
Test Automation with Twist and Sahi
 
Jest: Frontend Testing leicht gemacht @EnterJS2018
Jest: Frontend Testing leicht gemacht @EnterJS2018Jest: Frontend Testing leicht gemacht @EnterJS2018
Jest: Frontend Testing leicht gemacht @EnterJS2018
 
Rethinking Testing
Rethinking TestingRethinking Testing
Rethinking Testing
 
How to Use Selenium, Successfully
How to Use Selenium, SuccessfullyHow to Use Selenium, Successfully
How to Use Selenium, Successfully
 
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчетыQA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
QA Fest 2015. Сергей Пирогов. Красивые JBehave отчеты
 
Automated Testing using JavaScript
Automated Testing using JavaScriptAutomated Testing using JavaScript
Automated Testing using JavaScript
 
FIT and JBehave - Good, Bad and Ugly
FIT and JBehave - Good, Bad and UglyFIT and JBehave - Good, Bad and Ugly
FIT and JBehave - Good, Bad and Ugly
 
Fabulous Tests on Spock and Groovy
Fabulous Tests on Spock and GroovyFabulous Tests on Spock and Groovy
Fabulous Tests on Spock and Groovy
 
AngularJS and Protractor
AngularJS and ProtractorAngularJS and Protractor
AngularJS and Protractor
 
API Testing following the Test Pyramid
API Testing following the Test PyramidAPI Testing following the Test Pyramid
API Testing following the Test Pyramid
 
Jest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRWJest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRW
 
Test Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEMTest Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEM
 
Selenium
SeleniumSelenium
Selenium
 
Behaviour testing for single-page applications and API’s
Behaviour testing for single-page applications and API’sBehaviour testing for single-page applications and API’s
Behaviour testing for single-page applications and API’s
 

Similar a Perl Testing Consideration (seen from other languages)

Thucydides - a brief review
Thucydides - a brief reviewThucydides - a brief review
Thucydides - a brief reviewCristian COȚOI
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overviewJesse Warden
 
Seasprint2012ploneconferencereportout
Seasprint2012ploneconferencereportoutSeasprint2012ploneconferencereportout
Seasprint2012ploneconferencereportoutableeb
 
Developers Testing - Girl Code at bloomon
Developers Testing - Girl Code at bloomonDevelopers Testing - Girl Code at bloomon
Developers Testing - Girl Code at bloomonIneke Scheffers
 
Test::Kantan - Perl and Testing
Test::Kantan - Perl and TestingTest::Kantan - Perl and Testing
Test::Kantan - Perl and TestingTokuhiro Matsuno
 
Java for XPages Development
Java for XPages DevelopmentJava for XPages Development
Java for XPages DevelopmentTeamstudio
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLBarry Jones
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release WorkflowTuenti
 
Web a Quebec - JS Debugging
Web a Quebec - JS DebuggingWeb a Quebec - JS Debugging
Web a Quebec - JS DebuggingRami Sayar
 
2009 seminar - tim m - vs 2010 developer edition
2009   seminar - tim m - vs 2010 developer edition2009   seminar - tim m - vs 2010 developer edition
2009 seminar - tim m - vs 2010 developer editionTim Mahy
 
Introduction to tempest
Introduction to tempest Introduction to tempest
Introduction to tempest openstackindia
 
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Dinis Cruz
 
Practical maven-slides 2
Practical maven-slides 2Practical maven-slides 2
Practical maven-slides 2Will Iverson
 
Automated Testing with Cucumber, PhantomJS and Selenium
Automated Testing with Cucumber, PhantomJS and SeleniumAutomated Testing with Cucumber, PhantomJS and Selenium
Automated Testing with Cucumber, PhantomJS and SeleniumDev9Com
 
New Java features: Simplified Design Patterns[LIT3826]
New Java features: Simplified Design Patterns[LIT3826]New Java features: Simplified Design Patterns[LIT3826]
New Java features: Simplified Design Patterns[LIT3826]Miro Wengner
 
Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1Tuenti
 
Testing sync engine
Testing sync engineTesting sync engine
Testing sync engineIlya Puchka
 
Testing - How Vital and How Easy to use
Testing - How Vital and How Easy to useTesting - How Vital and How Easy to use
Testing - How Vital and How Easy to useUma Ghotikar
 

Similar a Perl Testing Consideration (seen from other languages) (20)

Thucydides - a brief review
Thucydides - a brief reviewThucydides - a brief review
Thucydides - a brief review
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
Seasprint2012ploneconferencereportout
Seasprint2012ploneconferencereportoutSeasprint2012ploneconferencereportout
Seasprint2012ploneconferencereportout
 
Developers Testing - Girl Code at bloomon
Developers Testing - Girl Code at bloomonDevelopers Testing - Girl Code at bloomon
Developers Testing - Girl Code at bloomon
 
Test::Kantan - Perl and Testing
Test::Kantan - Perl and TestingTest::Kantan - Perl and Testing
Test::Kantan - Perl and Testing
 
Java for XPages Development
Java for XPages DevelopmentJava for XPages Development
Java for XPages Development
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
 
Web a Quebec - JS Debugging
Web a Quebec - JS DebuggingWeb a Quebec - JS Debugging
Web a Quebec - JS Debugging
 
2009 seminar - tim m - vs 2010 developer edition
2009   seminar - tim m - vs 2010 developer edition2009   seminar - tim m - vs 2010 developer edition
2009 seminar - tim m - vs 2010 developer edition
 
Introduction to tempest
Introduction to tempest Introduction to tempest
Introduction to tempest
 
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
 
Practical maven-slides 2
Practical maven-slides 2Practical maven-slides 2
Practical maven-slides 2
 
Automated Testing with Cucumber, PhantomJS and Selenium
Automated Testing with Cucumber, PhantomJS and SeleniumAutomated Testing with Cucumber, PhantomJS and Selenium
Automated Testing with Cucumber, PhantomJS and Selenium
 
Stackato
StackatoStackato
Stackato
 
New Java features: Simplified Design Patterns[LIT3826]
New Java features: Simplified Design Patterns[LIT3826]New Java features: Simplified Design Patterns[LIT3826]
New Java features: Simplified Design Patterns[LIT3826]
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
 
Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1Tuenti Release Workflow v1.1
Tuenti Release Workflow v1.1
 
Testing sync engine
Testing sync engineTesting sync engine
Testing sync engine
 
Testing - How Vital and How Easy to use
Testing - How Vital and How Easy to useTesting - How Vital and How Easy to use
Testing - How Vital and How Easy to use
 

Más de Masaki Nakagawa

YAPCと俺 (吉祥寺.pm #17)
YAPCと俺 (吉祥寺.pm #17)YAPCと俺 (吉祥寺.pm #17)
YAPCと俺 (吉祥寺.pm #17)Masaki Nakagawa
 
10年モノ熟成Perlとの付き合い方
10年モノ熟成Perlとの付き合い方10年モノ熟成Perlとの付き合い方
10年モノ熟成Perlとの付き合い方Masaki Nakagawa
 
レシピブログのサービス設計と今後の展望
レシピブログのサービス設計と今後の展望レシピブログのサービス設計と今後の展望
レシピブログのサービス設計と今後の展望Masaki Nakagawa
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestMasaki Nakagawa
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告Masaki Nakagawa
 
WebサービスのソフトウェアQAと自動テスト戦略
WebサービスのソフトウェアQAと自動テスト戦略WebサービスのソフトウェアQAと自動テスト戦略
WebサービスのソフトウェアQAと自動テスト戦略Masaki Nakagawa
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage PlatformMasaki Nakagawa
 
Software Engineer in Test at DeNA
Software Engineer in Test at DeNASoftware Engineer in Test at DeNA
Software Engineer in Test at DeNAMasaki Nakagawa
 
Carton について何か話す
Carton について何か話すCarton について何か話す
Carton について何か話すMasaki Nakagawa
 

Más de Masaki Nakagawa (10)

YAPCと俺 (吉祥寺.pm #17)
YAPCと俺 (吉祥寺.pm #17)YAPCと俺 (吉祥寺.pm #17)
YAPCと俺 (吉祥寺.pm #17)
 
10年モノ熟成Perlとの付き合い方
10年モノ熟成Perlとの付き合い方10年モノ熟成Perlとの付き合い方
10年モノ熟成Perlとの付き合い方
 
レシピブログのサービス設計と今後の展望
レシピブログのサービス設計と今後の展望レシピブログのサービス設計と今後の展望
レシピブログのサービス設計と今後の展望
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in Test
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告
 
WebサービスのソフトウェアQAと自動テスト戦略
WebサービスのソフトウェアQAと自動テスト戦略WebサービスのソフトウェアQAと自動テスト戦略
WebサービスのソフトウェアQAと自動テスト戦略
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform
 
Software Engineer in Test at DeNA
Software Engineer in Test at DeNASoftware Engineer in Test at DeNA
Software Engineer in Test at DeNA
 
Carton について何か話す
Carton について何か話すCarton について何か話す
Carton について何か話す
 
As an Test Engineer
As an Test EngineerAs an Test Engineer
As an Test Engineer
 

Último

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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 WorkerThousandEyes
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 

Perl Testing Consideration (seen from other languages)

  • 1. Perl Testing Consideration (seen from other languages) Masaki Nakagawa YAPC::Asia 2011 Tokyo (yapcasia.org/2011/talk/80) 2011 10 14
  • 2. Profile • Masaki Nakagawa • @ikasam_a • metacpan.org/author/MASAKI • MC of Yokohama.pm (yokohama.pm.org) • github.com/masaki • socialbios.com/ikasam_a • “Pushing the Team B” 2011 10 14
  • 3. Thank you ! ameblo.jp/yuki-kashiwagi-we/image-11002817849-11452563522.html 2011 10 14
  • 4. Works • Embedded Development w/ C++ • WebApp. Development w/ Ruby • Project Management (small) • New Business Development • www.ricoh.co.jp/ucs/ • www.ricoh.co.jp/ucs/P3000/ 2011 10 14
  • 5. Embedded Development • “Hardware Driven” • “The Waterfall” • Development Process • QA Process • Systematic Testing 2011 10 14
  • 6. Classification of Testing Perspective Target How What 2011 10 14
  • 7. Perspective Developer or User (Customer) • Developer Testing • Acceptance Testing 2011 10 14
  • 8. Target One or More • Unit Testing • Integration Testing 2011 10 14
  • 9. How Techniques for writing tests • Black Box Testing • White Box Testing 2011 10 14
  • 10. What the Purpose of testing • Functional Testing • Non-Functional Testing • Performance / Stress / Usability / ... 2011 10 14
  • 11. Testing Framework 1. Helping to write tests 2. Executing tests 3. Reporting test results 2011 10 14
  • 12. Ruby Testing www.atmarkit.co.jp/fcoding/rails/articles/passionate/07/passionate07a.html survey.hamptoncatlin.com/survey/stats 2011 10 14
  • 13. e.g.) RSpec 1. describe ... it ... 2. $ rspec ... 3. Spec::Runner::Formatter 2011 10 14
  • 14. e.g.) Cucumber 1. Given ... When ... Then ... 2. $ cucumber ... 3. Cucumber::Formatter 2011 10 14
  • 16. Perl Testing 1. Test::More, Test::Class, Test::Base, Test::Spec, ... 2. $ prove ... (TAP::Harness) 3. TAP (TAP::Formatter) 2011 10 14
  • 18. TAP • testanything.org • “the Test Anything Protocol” • “is a simple text-based interface” 1..4 ok 1 - Input file opened not ok 2 - First line of the input valid ok 3 - Read the rest of the file not ok 4 - Summarized correctly # TODO Not written yet testanything.org/wiki/index.php/Main_Page 2011 10 14
  • 19. Perl <3 TAP • From any test description • e.g.) Test::Class, Test::Base, Test::Spec • Convert results to non-TAP format • e.g.) TAP::Formatter::JUnit • Easy to write test helpers • e.g.) Test::Exception, Test::Deep, ... 2011 10 14
  • 20. Rails Testing gihyo.jp/magazine/wdpress/archive/2011/vol61 2011 10 14
  • 21. Rails Testing • Perspective • UnitTest, End-to-End • Frameworks • Test::Unit (+ Shoulda), RSpec, Cucumber • Browser Integration • Capybara (rack-test, Selenium, Envjs, ...) • Test Double • rspec-mocks, rr, WebMock 2011 10 14
  • 22. Catalyst • Catalyst::Test • Test::WWW::Mechanize::Catalyst • Test::WWW::Selenium::Catalyst 2011 10 14
  • 23. Plack • Plack::Test • Test::WWW::Mechanize::PSGI 2011 10 14
  • 24. Browser Integration • WWW:: + WAF Customization • WWW::Mechanize • WWW::Selenium (Selenium-RC) • not yet for testing • WWW::HtmlUnit • Selenium::Remote::Driver (WebDriver) 2011 10 14
  • 25. Test Double xunitpatterns.com/Test%20Double.html • Mock • Test::MockObject • Test::Mock::Recorder • Stub • Test::Mock::Guard • Test::Mock::LWP::Dispatch 2011 10 14
  • 26. Test Double xunitpatterns.com/Test%20Double.html • Test::Double (under construction) • 0.01 released ! • metacpan.org/release/Test-Double • github.com/masaki/Test-Double • Mocks and Stubs • mock out w/ mocha style • stub out w/ rr style • Collaborators Welcome!!! 2011 10 14
  • 27. Test Double xunitpatterns.com/Test%20Double.html • Spy • DBD::Mock • Fake • Test::mysqld • Test::TCP 2011 10 14
  • 28. Descriptive Frameworks • Test::More • Test::Class (xUnit style) • Test::Declare / Test::More + “subtest” • Test::Spec (RSpec 1 compat.) • Test::Base (Parameterized Tests) • Test::Cukes / Test::BDD::Cucumber (Cucumber clone) 2011 10 14
  • 29. Weakness • Expectation and Verification • vs. rr, rspec-mocks, mocha, ... • Browser Integration API • vs. Capybara, Webrat, ... • Naming of Test Double modules • Test::Mock::Guard is “Stub” module 2011 10 14
  • 30. Comparision • Pros • TAP-based Test Description • Many Helpful Modules • Cons • Non-Uniform Browser Integration • Poor Expectation and Verification 2011 10 14
  • 31. Conclusions • About Testing • 4 Classifications • 3 Elements in Frameworks • Perl and Ruby/Rails Testing Environments • Perl has TAP and Many Great Modules • Learn and Steal MORE from Ruby/Rails • Write More Descriptively 2011 10 14
  • 32. Thank you! Questions? 2011 10 14