タグ

Perl-Testに関するbarlogのブックマーク (23)

  • All Test::Successful - Articles Advent Calendar 2011 Test

    はじめに こんにちは、xaicron です。みんな、僕のグラビア写真は買ってくれたかな?買ってない人は WEB+DB Press vol.66 を今すぐゲットだぜ!! さて、ついに長かった Test Track も最終日がやって参りました!みなさんはどうせリア充を尻目にリナカフェの閉店を見たり、独り者同士でなんとなーく集まってお酒飲んだり、もしくは僕のように一人寂しく Advent Calendar を書いているのでしょうね!!その昔、コンビニでゆでたまご買って間違って「あ、あっためてください」っていっちゃったことを何故か思い出しました。 というわけで、クリスマスぐらいはせめてテストを書きたくないし、そもそもコケたテストとか見たくないわけですね。ですので、僕からのスペシャルなクリスマスプレゼンツ!!その名も Test::Successful だぜ!ベイベー!! これはなに? これはあれです

    All Test::Successful - Articles Advent Calendar 2011 Test
  • テストダブルについて - Articles Advent Calendar 2011 Test

    はじめに ikasam_a です。クリスマスイブいかがお過ごしでしょうか。私は寿司べたりしてました。 16日のエントリでテストダブル、特にフェイクやスタブについて触れましたが、今日はそもそもテストダブルって何ぞや、という話をします。またまた Perl の話はあまり出てこない予定です。 テストダブルとは http://xunitpatterns.com/Test Double.html:title=xUnit Test Patterns] で登場した言葉で、システムのある部分をテストするために特定箇所を置き換えることがあるが、その置き換え手段の総称として「テストダブル(代役)」という名前を当てたということです。 置き換え手段としては、以下の5つが挙げられています。 ダミー スタブ スパイ モック フェイク ダミー メソッド呼び出しの数合わせに使うことを目的とした、ダミーオブジェクトのことで

    テストダブルについて - Articles Advent Calendar 2011 Test
  • prove についてのおさらい - Articles Advent Calendar 2011 Test

    はじめに 忘年会シーズンまっただ中で皆さんは毎日お酒を飲んでいることでしょうが、僕は友達が少ないため忘年会とか全然無いので財布はまだホットな状態なんですが、なぜ僕の妹は小鳩ちゃんじゃないんだっていうかそもそも妹いないしもう死ぬって感じの xaicron です。こんにちは。 そろそろ prove について簡単に説明しときますよっと。 prove のよく使うオプション prove にはいっぱいオプションがあるんですが、ここではよく使いそうなやつをピックアップして紹介しちゃいますよ! -v, --verbose # いっぱい出力する -l, --lib # lib を INC についかする perl -Ilib 相当 -b, --blib # blib/lib とか blib/arch を INC につかする -Mblib 相当 -c, --color # カラフルになる! MSWin32 だと

    prove についてのおさらい - Articles Advent Calendar 2011 Test
    barlog
    barlog 2012/01/31
    21 prove オプチオン
  • Devel::CoverとJenkins - Articles Advent Calendar 2011 Test

    数日前にカバレッジの話がありましたが、そんな事言ってたって自分でカバレッジなんてとらないでしょ?僕はそうそうとらないです。 なのでそんなのJenkinsにやらせればいいんですよ。 自動的にカバレッジを計測しましょう (Jenkinsじゃなくてもそうですが)Devel::Coverでカバレッジを計測するならPERL5OPTで渡すのが一番簡単ですね。 export PERL5OPT="-MDevel::Cover" ちなみにJenkinsでテストしてるときにはなるたけテストに使っているPerlから見えるところに余計な依存ライブラリを置きたくないので、Devel::Coverはそれだけ別の場所にいれてます。こうすればDevel::Coverを使う時以外はDevel::Coverをインストールしてあるディレクトリを有効化しないようにしてます。 cpanm -l/path/to/devel-cove

    Devel::CoverとJenkins - Articles Advent Calendar 2011 Test
  • データの偏りを考慮したデータ増幅:【続】PerlとOracleDatabaseでの性能試験 - Articles Advent Calendar 2011 Test

    単純な増幅ではテストで見抜けない性能ボトルネック こんにちは。dukkiedukkieです。クリスマスが近づいてきてますね。 さて、先日[/articles/advent-calendar/2011/test/6]を書かせていただきましたが、今日はその話の続きで。 エンティティのカーディナリティを考慮しつつデータ増幅を行ったとしても、先日のやり方では、全ての増幅データのデータ量が均一になってしまいます。ですが、現実のデータストア運用現場で発生する問題には、 「WHERE条件句で絞込みを行なっているのだけど、この条件指定に対してマッチする行数が多すぎて、結果の返却スピードが遅い」 「実行計画的には変わらないのだけど、当該IDのみconsistent gets量がメガバイト単位になってしまって、どうしてもクエリがスローダウンしてしまう」 「AWRとかRDBMSの統計情報を見ると、バッファイン、

    データの偏りを考慮したデータ増幅:【続】PerlとOracleDatabaseでの性能試験 - Articles Advent Calendar 2011 Test
  • テストのためにデーモンを自動的に起動するやりかた2011年版 - Articles Advent Calendar 2011 Test

    はじまりはパクり 最近あんまりコード書いてません、lestrratです。 テストを走らせる時にいろんな他のデーモンを立ち上げたり、そのテストのためだけの設定を先にしないといけなかったりとか色々ありますよね。結構長い間Makefile.PLはModule::Installで書いていたせいもあって、ちょっと前にxaicronさんが書いてたModule::Install::TestTargetでごにょごにょやってたのですが、ちょっと前にYappo/tokuhiromさんがproveで書いてたセットアップがまるっと自分の欲しい用途にも使える事に気づいたのでいろんなアプリケーションのテストをそのように変えてみました。 流れ proveでテストをすると、proveのプラグインを呼び出す設定ができるのですが、これをプラグインというよりテスト前に実行されるフックとして利用する事によって任意の設定用のコード

    テストのためにデーモンを自動的に起動するやりかた2011年版 - Articles Advent Calendar 2011 Test
  • ちょっと他言語に行ったら例えば RSpec にハマった人のために - Articles Advent Calendar 2011 Test

    はじめに こんにちは。ikasam_a です。 ちょっと3年ほど Ruby でプロダクトコード書いてて RSpec に体がすっかり慣れたのが私です。今日は、そんな人が例えば 「Perl でテストを書くときにも、同じような書き方とかしたい!」みたいな中毒が出る場合に、どういうアプローチを取れるかという話をします。 Perl で宣言的テスト RSpec といえば DSL によって宣言的に仕様を書くようにテストが書ける、というのがウリなわけですが、Perl で宣言的にテストを書くにはどういう手段があるか、ちょっと調べてみました。

    ちょっと他言語に行ったら例えば RSpec にハマった人のために - Articles Advent Calendar 2011 Test
  • HTTP通信を含むモジュールのテスト #2 - Articles Advent Calendar 2011 Test

    はじめに こんにちは。ikasam_a です。 8日目に bayashi さんが [/articles/advent-calendar/2011/test/8:title=HTTP通信を含むモジュールのテスト] というエントリを書かれていますが、今日はその続編的な話をします。 フェイクとスタブ 前のエントリでは Test::Fake::HTTPD を使ってフェイクサーバを立ててテストする、という手法が紹介されています。これは テストダブル (Test Double) で言うところの Fake という概念で、"動作するけど手抜き" なサーバを用意して実際に HTTP 通信可能にするってわけです。これで実際のサービスに DoS することなくテストできるので、積極的に使いたいところです。 テストダブルとは何ぞや?という話は、別のエントリでしたいと思いますので、今日はさらっと流してください! この

    HTTP通信を含むモジュールのテスト #2 - Articles Advent Calendar 2011 Test
  • テストのカバレッジを出す - Articles Advent Calendar 2011 Test

    はじめに 最近腰痛と肩こりで寝るのも辛い xaicron です。凝り固まった体と心を優しくときほぐしてくれる。そんな人間を皆さんには目指して欲しい。 さて、今日はテストのカバレッジを取る方法についてちょろっと書こうと思います。 カバレッジというと原理主義てきな人たちにはご褒美であり、僕らのような lazy な人間にはちょっとめんどくさいなって感じますね。 要件的議所とかにカバレッジ率 100% を目指せ!みたいなことが書いてあったりして、それが目的になっちゃったりすることもあるかと思います。 でもまぁ、カバレッジを上げることが当の目的ではないので、あくまでも目安として使うぐらいでいいでしょう。だってカバレッジ上げるとかめんd(ry カバレッジを取る perl でカバレッジを取る方法といえば Devel::Cover ですね。他にもいろいろありますが。 とりあえず、テストしたいプロジェクト

    テストのカバレッジを出す - Articles Advent Calendar 2011 Test
  • Test::Exception で Death テスト - Articles Advent Calendar 2011 Test

    こんにちは。ikasam_a です。 今日は、以前のテスト分類のお話とは一転して Test::Exception というモジュールを紹介します。 これを使うと、実行中に die しちゃうようなコードを気軽にテストできます。 例えば、アイコンを作りたいんだけど不正な状態だったら例外投げちゃう感じのクラスがあるとしますね。例ですよ。そんなクラスのテストもこんな感じで書けるようになります。 use Test::More; use Test::Exception; use My::Icon; lives_ok { My::Icon->new(+{ name => 'ikasam_a', state => 'cute' }); } 'icon is cute'; dies_ok { My::Icon->new(+{ name => 'nekokak', state => 'cute' }); } '

    Test::Exception で Death テスト - Articles Advent Calendar 2011 Test
    barlog
    barlog 2012/01/26
    14 Test::Exception
  • perl ♡ tests - Articles Advent Calendar 2011 Test

    こんにちはとみたトミールです。先日会社の勉強会で枠をもらいまして、「あまりperlによる開発をしていない人へのperl紹介」的な話としてperlのカルチャーとしてのテスト、という紹介をしました。わりと評判がよかったのでほかのトラックと内容かぶるところありますが気にせず書き起こし的に書いてみます。 dev w/perl select modules write tests ... perlを使った開発の特徴として、モジュールが充実してる話はわりと有名とおもいますが、実際のコード書き始める前にまず使うモジュールを選ぶ作業があったりします。そのへんはそのうち話すとして。 ほかに、テストを大事にするというかテストを書いてから実際のコードを書くという文化があるのが誇れる点だとおもっていて、 perl's test code = just simple perl script perlのテストコードは

    perl ♡ tests - Articles Advent Calendar 2011 Test
    barlog
    barlog 2012/01/26
    13 perl ♡ tests <3
  • bless を使った Casual な Test Double について - Articles Advent Calendar 2011 Test

    はじめに こんにちは、tsucchi と申します。(はてなでは id:tsucchi1022 で活動してます。) 今年の YAPC::Asia で、テストについてあれこれ話させていただいたので、正直ネタがかなり尽きているのですが、最近やってみた、ちょっとヘンなテストの仕方について書いてみます。 背景 少し前に、DBD::mysqlPPというモジュールのメンテナンスを引き継いだのですが、コレ全然テストコード書いてなかったんですね。まあネタ的なモジュールだし、古いので、仕方ないのかもしれませんが。で、プレースホルダまわりの処理にバグとかセキュリティーホールとかあったりしたので、その辺を直したり、テストコードの整備を少しだけしました。 困ったこと 皆さん良く知っていると思いますが、DBD って、コンストラクタ無いんですよね。無い、というか connect がコンストラクタなので、インスタンスを作

    bless を使った Casual な Test Double について - Articles Advent Calendar 2011 Test
  • Jenkinsで継続的メトリクス測定のすすめ - Articles Advent Calendar 2011 Test

    はじめに こんばんは、家で凍死しそうなので、そろそろセラムヒートでも買おうと思っているdannです Test Track 11日目です! ikasam_a さんから「Jenkinsの話を書いて!」と言われたので、ACDD(Advent Calendar Driven Development) という手法で作った、メトリクス測定ツールとJenkinsへのインテグレーションについての話をします。 メトリクスを測定すると捗るぞ 大きなチームで開発する時に、数百行の謎メソッドができたりとかあったりしますよね(涙) 僕は、Working Effectively With Legacy CodeやClean Codeを読んでいること前提にチームの人がコードを書いていると思っていたら、あれ?という場面があったりします。こういうときは、品質の問題を測定できるようにすると、数値レベルで具体的にした共通認識が

    Jenkinsで継続的メトリクス測定のすすめ - Articles Advent Calendar 2011 Test
    barlog
    barlog 2012/01/26
    11 Jenkinsで継続的メトリクス測定
  • Perlテストのリファクタリング的なあれ - Articles Advent Calendar 2011 Test

    はじめに こんにちはこんにちは!最近アレでアレな zentooo です。 ちょっと前まで自分で書いたテスト用データをDBにほげほげするモジュールの話を書こうかと思っていたのですが、disで有名なあの方に会社で「それはいけてないわ」と言われ、確かに自分でもこれはいけてないわー、という気分になってself-reject!したので今日は予定を変えて全体的にふわっとしたことを書きます。 ※書いてしまってから昨日の記事と内容かぶってる!と気づきましたがそのままで testがモリモリ肥大化する テスト自体はとりあえず書くことは書くんだけど、何も考えずにテストを書いていると、こんな感じになっちゃったー、ってことがよくありますね。僕もよくあります。 subtest with_case1 => sub { my $data_for_test = +{ }; # 上のデータからオブジェクト作ったりDBにins

    Perlテストのリファクタリング的なあれ - Articles Advent Calendar 2011 Test
  • テストだってテストが必要です - Articles Advent Calendar 2011 Test

    @ikasam_aさんにTest::Classの話でもとお誘いを受けて安請け合いしたのはいいものの、まじめな話はモダンPerlの連載にそこそこまとまっているので、今日はどうしてTest::Classのようなモジュールを使うのかという話をしてみます。 テストをモジュールの中に移す Test::Classやその仲間たちは、うまく使えばとても便利なのですが、テストの数が少ないうちは手間ばかりかかるので、なかなか使う機会に恵まれないかもしれません。テストをモジュールの中に移すといわれてもピンとこない方のために、まずは簡単な例をあげておきましょう。 今年のカレンダーでも何度か出てきているように、Perlのテストはふつう.tファイルにべた書きします。 #!perl use strict; use warnings; use Test::More; pass "simplest test"; done_

    テストだってテストが必要です - Articles Advent Calendar 2011 Test
    barlog
    barlog 2012/01/26
    9 A Test for the Test
  • HTTP通信を含むモジュールのテスト - Articles Advent Calendar 2011 Test

    こんにちは!こんばんは!寒いのがめっぽう苦手、bayashi です! きょうは、HTTP通信を伴うモジュールのテストについて書いてみます! サンプルモジュール WWW::Foo8 具体的に説明するために、WWW::Foo8 というモジュールを書きました! package WWW::Foo8; use strict; use warnings; our $VERSION = '0.01'; use Class::Accessor::Lite ( rw => [qw/agent error/], ); sub new { my ($class, %args) = @_; $args{agent} = _default_agent() unless $args{agent}; bless \%args, $class; } sub get { my ($self, $uri) = @_; my

    HTTP通信を含むモジュールのテスト - Articles Advent Calendar 2011 Test
    barlog
    barlog 2012/01/26
    8 HTTP通信を含むモジュールのテスト
  • Test::MockTime - 時間にまつわるtest - Articles Advent Calendar 2011 Test

    はい、kawamotoです blogは書いているとはとても言えないぐらいサボっております。 右も左もわからぬひよっこですので奇をてらわずにTest::名前空間のモジュールの紹介をしようと思います。 Test::MockTime は testの最中に実行される time, localtime, gmtime などの時間に関する関数の振る舞いを書き換える便利なモジュールです。 以下のような症状によく効きます。 テストの期待する結果に時刻を入れたいが固定の値を指定できない。 外部のコンポーネントに存在する、時間で変動する要素に依存しないテストを書きたい(たとえば MySQL で時系列のパーティションを使っているなど) テストを実行するたびに経過時間が変動してtestが通ったりこけたりする 使い方はこちらの記事でも説明されていますが、 $ cat ~/test.pl use feature qw(

    Test::MockTime - 時間にまつわるtest - Articles Advent Calendar 2011 Test
    barlog
    barlog 2012/01/26
    7 Test::MockTime
  • PerlとOracleDatabaseでの性能試験(データ増幅) - Articles Advent Calendar 2011 Test

    はじめに はじめまして! dukkiedukkie と申します。 知人にこちらを教えて頂きまして登録させていただきましたが、予備知識なく&&不慣れでご迷惑おかけすると思いますが、よろしくお願いいたします!! IT業界を16年ほどさまよっており現在はPerlで色々書いてます。が、ゴリゴリのプログラマというわけでもなく 前職は某ポータルサイトにて広告システム全般のシステム基盤設計とシステム運用、前々職は某金融システムにてDBA(Oracle中心)、その前は某ブログシステムのDBA(Oracle中心)、さらにその前は、某IT情報配信サイトのエンジニアとして、働いてきた90年代CGIプログラミングを原点とする”オッサンPerler”です。 ですが、どんどん新しいことを学びたいので、なかよくしてくださいね!! データベースの性能試験とPerl さて、ほとんど準備もしておりませんため(次回はがんばりま

    PerlとOracleDatabaseでの性能試験(データ増幅) - Articles Advent Calendar 2011 Test
  • Perl から Hadoop と連携したテストをしてみる - Articles Advent Calendar 2011 Test

    はじめに はじめまして。xaicron さんに誘われて advent calendar に挑戦してみることにしました yayohei です。お手柔らかにお願いします。 今日は、テストを行う際に作ったオレオレテスト Module の Test::HadoopSingleNode を紹介したいと思います。 データ増による課題 データ量の増加に伴ってくるとDatabaseからデータを取り出す処理が重すぎて処理が期待した時間に終わらないということが起きることもあると思います。 そこで処理を分割したり並列化したりして解決しようとするわけですが、最近流行の汎用的な分散処理基盤としてApache Hadoopがあります。 Apache Hadoopとは、”Apache Hadoopは大規模データの分散処理を支えるJavaソフトウェアフレームワークであり、フリーソフトウェアとして配布されている。Hadoo

    Perl から Hadoop と連携したテストをしてみる - Articles Advent Calendar 2011 Test
    barlog
    barlog 2012/01/26
    5 Test::HadoopSingleNode
  • Module::Build で let's `make love` - Articles Advent Calendar 2011 Test

    Win32 の プリンスキー*1 として知る人ぞ知るところの tokuhirom です。 マリオカート7にいそがしくてアドベントカレンダーをかく暇がありません。 さて、クリスマスも近いということで、みなさんも make love したいところだと思います。 しかし、自力で Makefile をいじるのも大変です。 「愛のためにはその程度の障害はむしろご褒美だ!」という人もいるかもしれませんが、僕は昨今話題の草植、もとい草男子ですので、そんな面倒なことはできません。 ここでは、perl で簡単に `make love` をするために書いたという経緯がない Module::Build を紹介します。 Module::Build ではハックっぽいことをしなくても簡単にいろいろと hook できるんです。make love も出来るのでリア充も安心!! 使い方 たとえば、Module::Buil

    Module::Build で let's `make love` - Articles Advent Calendar 2011 Test