Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Perl Testing Consideration

Perl Testing Consideration

Perl Testing Consideration (seen from other languages) / YAPC::Asia Tokyo 2011 Presentation

Masaki Nakagawa

November 18, 2011
Tweet

More Decks by Masaki Nakagawa

Other Decks in Programming

Transcript

  1. Perl Testing Consideration (seen from other languages) Masaki Nakagawa YAPC::Asia

    Tokyo 2011 (yapcasia.org/2011/talk/80) 2011೥11݄18೔༵ۚ೔
  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೥11݄18೔༵ۚ೔
  3. 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೥11݄18೔༵ۚ೔
  4. Embedded Development • “Hardware Driven” • “The Waterfall” • Development

    Process • QA Process • Systematic Testing 2011೥11݄18೔༵ۚ೔
  5. How • Black Box Testing • White Box Testing Techniques

    for writing tests 2011೥11݄18೔༵ۚ೔
  6. What • Functional Testing • Non-Functional Testing • Performance /

    Stress / Usability / ... the Purpose of testing 2011೥11݄18೔༵ۚ೔
  7. Testing Framework 1. Helping to write tests 2. Executing tests

    3. Reporting test results 2011೥11݄18೔༵ۚ೔
  8. e.g.) RSpec 1. describe ... it ... 2. $ rspec

    ... 3. Spec::Runner::Formatter 2011೥11݄18೔༵ۚ೔
  9. e.g.) Cucumber 1. Given ... When ... Then ... 2.

    $ cucumber ... 3. Cucumber::Formatter 2011೥11݄18೔༵ۚ೔
  10. Perl Testing 1. Test::More, Test::Class, Test::Base, Test::Spec, ... 2. $

    prove ... (TAP::Harness) 3. TAP (TAP::Formatter) 2011೥11݄18೔༵ۚ೔
  11. 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೥11݄18೔༵ۚ೔
  12. 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೥11݄18೔༵ۚ೔
  13. 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೥11݄18೔༵ۚ೔
  14. Browser Integration • WWW:: + WAF Customization • WWW::Mechanize •

    WWW::Selenium (Selenium-RC) • not yet for testing • WWW::HtmlUnit • Selenium::Remote::Driver (WebDriver) 2011೥11݄18೔༵ۚ೔
  15. Test Double • Mock • Test::MockObject • Test::Mock::Recorder • Stub

    • Test::Mock::Guard • Test::Mock::LWP::Dispatch xunitpatterns.com/Test%20Double.html 2011೥11݄18೔༵ۚ೔
  16. Test Double • 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!!! xunitpatterns.com/Test%20Double.html 2011೥11݄18೔༵ۚ೔
  17. Test Double • Spy • DBD::Mock • Fake • Test::mysqld

    • Test::TCP xunitpatterns.com/Test%20Double.html 2011೥11݄18೔༵ۚ೔
  18. 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೥11݄18೔༵ۚ೔
  19. 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೥11݄18೔༵ۚ೔
  20. Comparision • Pros • TAP-based Test Description • Many Helpful

    Modules • Cons • Non-Uniform Browser Integration • Poor Expectation and Verification 2011೥11݄18೔༵ۚ೔
  21. 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೥11݄18೔༵ۚ೔