Perlのテストがわからない   細越佑介(@hsksyusk)
自己紹介●   細越佑介(@hsksyusk)●   http://about.me/hsksyusk●   SIer●   個人でWebサービスを作ってます●   テストしてません……
わからないこと● Perlのテストってどうやるの?● WAFのテストってどうやるの?
Perlのテストってどうやるの?● perl でテストを始めよう!! - Perl  Advent Calendar Japan 2011 Test  Trackhttp://perl-users.jp/articles/advent-cale...
Perlのテストってどうやるの?● Test::Moreを使う
テスト対象モジュールpackage SomeModule;use strict;use warnings;sub new {  my ($class, %args) = @_;  bless %args, $class;}sub sum {  ...
テスト1 useできる?# t/01_use.tuse strict;use warnings;use Test::More;use_ok(SomeModule);done_testing;$ perl -Ilib t/01_use.tok 1...
テスト2 newできる?# t/02_new.tuse strict;use warnings;use Test::More;use SomeModule;my $obj = SomeModule->new;isa_ok $obj, SomeM...
テスト3 機能は正しく動く?# t/03_sum.tuse strict;use warnings;use Test::More;use SomeModule;my $obj = SomeModule->new;subtest basic =>...
まとめてテスト$ prove -lc tt/01_use.t .. okt/02_new.t .. okt/03_sum.t .. okAll tests successful.Files=3, Tests=5, 0 wallclock sec...
わかったこと● テストにはTest::Moreを使う● 対象モジュールが一つでも、テストファ イルは分けてつくるわからないこと● テストファイルの分け方、命名にルール はあるの?
WAFのテストってどうやるの?● テストなんかしない! ○   Amon2をローカルのPlackで動かし     て確認 ○   サーバに上げて再度確認 ○   ブラウザ、サーバのログ     テストしないでリリースしちゃった         ...
Amon2のテストを見てみる● t/00_compile.t01_root.t02_mech.t03_assets.t06_jslint.t07_dotcloud.t08_teng.t
t/00_compile.tuse strict;use warnings;use utf8;use Test::More;use_ok $_ for qw(   fbsample   fbsample::Web   fbsample::Web...
t/01_root.tuse strict;use warnings;use utf8;use t::Util;use Plack::Test;use Plack::Util;use Test::More;my $app = Plack::Ut...
?
t/02_mech.tuse strict;use warnings;use utf8;use t::Util;use Plack::Test;use Plack::Util;use Test::More;use Test::Requires ...
??
WAFのテストってどうやるの?● Plack::Test?● Test::WWW::Mechanize::PSGI?● このモジュール何?● TestからHTTP Request投げて、 Responseで判定してる?● ステータスコード見れば...
WAFのテストってどうやるの?● 掲示板で投稿されたときの動作を考え ると1. 入力値のチェック2. DB更新3. 完了画面へリダイレクト この辺りをどうテストするの?
WAFのテストってどうやるの?● デプロイしたあとのテストは? ○   DotCloudに上げたら動かない、とか● やっぱりテスト書かなきゃだめですよ ね?
Upcoming SlideShare
Loading in...5
×

Perlのテストがわからない

4,841

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,841
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Perlのテストがわからない

  1. 1. Perlのテストがわからない 細越佑介(@hsksyusk)
  2. 2. 自己紹介● 細越佑介(@hsksyusk)● http://about.me/hsksyusk● SIer● 個人でWebサービスを作ってます● テストしてません……
  3. 3. わからないこと● Perlのテストってどうやるの?● WAFのテストってどうやるの?
  4. 4. Perlのテストってどうやるの?● perl でテストを始めよう!! - Perl Advent Calendar Japan 2011 Test Trackhttp://perl-users.jp/articles/advent-calendar/2011/test/1
  5. 5. Perlのテストってどうやるの?● Test::Moreを使う
  6. 6. テスト対象モジュールpackage SomeModule;use strict;use warnings;sub new { my ($class, %args) = @_; bless %args, $class;}sub sum { my $self = shift; my $ret = 0; for my $num (@_) { $ret += $num; } return $ret;}1;
  7. 7. テスト1 useできる?# t/01_use.tuse strict;use warnings;use Test::More;use_ok(SomeModule);done_testing;$ perl -Ilib t/01_use.tok 1 - use SomeModule;1..1
  8. 8. テスト2 newできる?# t/02_new.tuse strict;use warnings;use Test::More;use SomeModule;my $obj = SomeModule->new;isa_ok $obj, SomeModule;done_testing;$ perl -Ilib t/02_new.tok 1 - The object isa SomeModule1..1
  9. 9. テスト3 機能は正しく動く?# t/03_sum.tuse strict;use warnings;use Test::More;use SomeModule;my $obj = SomeModule->new;subtest basic => sub { my $got = $obj->sum(1, 2, 3); is $got, 6;};done_testing;$ perl -Ilib t/03_sum.t ok 1 1..1ok 1 - basic1..1
  10. 10. まとめてテスト$ prove -lc tt/01_use.t .. okt/02_new.t .. okt/03_sum.t .. okAll tests successful.Files=3, Tests=5, 0 wallclock secs ( 0.10 usr 0.02 sys + 0.20 cusr 0.05 csys = 0.37 CPU)Result: PASS
  11. 11. わかったこと● テストにはTest::Moreを使う● 対象モジュールが一つでも、テストファ イルは分けてつくるわからないこと● テストファイルの分け方、命名にルール はあるの?
  12. 12. WAFのテストってどうやるの?● テストなんかしない! ○ Amon2をローカルのPlackで動かし て確認 ○ サーバに上げて再度確認 ○ ブラウザ、サーバのログ テストしないでリリースしちゃった (・ω<)てへぺろ☆
  13. 13. Amon2のテストを見てみる● t/00_compile.t01_root.t02_mech.t03_assets.t06_jslint.t07_dotcloud.t08_teng.t
  14. 14. t/00_compile.tuse strict;use warnings;use utf8;use Test::More;use_ok $_ for qw( fbsample fbsample::Web fbsample::Web::Dispatcher);done_testing; ああ、useね。
  15. 15. t/01_root.tuse strict;use warnings;use utf8;use t::Util;use Plack::Test;use Plack::Util;use Test::More;my $app = Plack::Util::load_psgi app.psgi;test_psgi app => $app, client => sub { my $cb = shift; my $req = HTTP::Request->new(GET => http://localhost/); my $res = $cb->($req); is $res->code, 200; diag $res->content if $res->code != 200; };done_testing;
  16. 16. ?
  17. 17. t/02_mech.tuse strict;use warnings;use utf8;use t::Util;use Plack::Test;use Plack::Util;use Test::More;use Test::Requires Test::WWW::Mechanize::PSGI;my $app = Plack::Util::load_psgi app.psgi;my $mech = Test::WWW::Mechanize::PSGI->new(app => $app);$mech->get_ok(/);done_testing();
  18. 18. ??
  19. 19. WAFのテストってどうやるの?● Plack::Test?● Test::WWW::Mechanize::PSGI?● このモジュール何?● TestからHTTP Request投げて、 Responseで判定してる?● ステータスコード見ればいいの?
  20. 20. WAFのテストってどうやるの?● 掲示板で投稿されたときの動作を考え ると1. 入力値のチェック2. DB更新3. 完了画面へリダイレクト この辺りをどうテストするの?
  21. 21. WAFのテストってどうやるの?● デプロイしたあとのテストは? ○ DotCloudに上げたら動かない、とか● やっぱりテスト書かなきゃだめですよ ね?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×