tokuhirom's Blog

Perl テスティングハンドブックという電子書籍をだしてみた

主に KDP をためしてみたいという理由ですが、だしてみました。

Perl で Test を書くときのポイントを押さえてちいさくまとめています。ボリューム的にはちょっとした小冊子程度です。本当に自分で実践につかったことがあるものしかのせてないのがひとつの特徴です。

今回は pandoc でつくってみました。

gumroad からも買えるようにしてみました

なお目次は以下のとおり

-   前書き
    -   対象読者
    -   なにはのっていないか
    -   想定環境
    -   カイゼン

-   Test::More をもちいた基本的なテスト
    -   便利なユーティリティ関数
        -   is 関数
        -   cmp\_ok 関数
        -   is\_deeply($a, $b[, $msg]);
        -   like($got, $regexp[, $msg]);

    -   subtest 関数でテストケースをネストさせる
    -   Test::More をたすけるライブラリたち
        -   Test::Difflet

-   Test::Base::Less によるデータドリブンテスト
    -   Test::Base::Less の使い方
        -   シンプルな用法
        -   データにフィルターをかける
        -   run\_is をつかう
        -   複数行のデータをつかう
        -   Perl code でデータを書く

    -   まとめ

-   モックとスタブ
    -   Test::Stub

-   日付/時刻にかんするテスト
    -   Test::MockTime
    -   Test::Time

-   LWP::UserAgent のテスト
    -   LWP::UserAgent をフックポイントでスタブする

-   fork() をともなうテスト
    -   Test::SharedFork の制限

-   PSGI のテスト
    -   Test::WWW::Mechanize::PSGI
    -   HTTP::Message::PSGI
        -   PSGI のリクエストから HTTP::Request への変換
        -   HTTP::Request オブジェクトから PSGI のリクエストへの変換
        -   PSGI のレスポンスから HTTP::Response への変換

-   TCP を利用するテストケース
-   データベースとテスト
    -   DBD::SQLite をテストに利用する
    -   Test::mysqld を利用する

-   CPAN にアップロードするモジュールのテスト
    -   Test::More への依存
    -   xt/ と t/ の使い分け
        -   外部への通信をともなうテスト
        -   非常に時間がかかるテスト
        -   Pod の正当性のテストや PerlCritic など

    -   基礎的なテスト
        -   Test::Spelling
        -   Test::Perl::Critic
        -   Test::Pod
        -   Test::MinimumVersion;
        -   Test::CPAN::Meta
        -   Parse::CPAN::Meta によるさらなるチェック

-   Ukigumo をもちいた CI
    -   サーバーの設置
    -   クライアントを走らせる

-   Travis CI をもちいた公開モジュールの CI
-   TAP - Test Anything Protocol
-   prove コマンド
    -   prove をのりこなす
    -   Test::Pretty をつかう

-   落穂ひろい
    -   ふれなかったモジュール
        -   Test::Exception
        -   Test::Exception::LessClever
        -   Test::Warn
        -   Test::Class
        -   Test::Name::FromLine
        -   Test::Spec
        -   Test::Double
        -   Test::Declare
        -   Test::Base

    -   マニアックすぎる話題
        -   prove にとらわれない