テスト

複雑なデータ構造に対するテストをする - Test::Differences編

Perlでは複雑なデータ構造に対するテストを行うモジュールの一つとして、Test::Differencesという二つのモジュールが存在します。例えば、以下のように複数行に渡る文字列があったとしましょう。 use strict; use warnings; use Test::More qw(no_plan); use…

複雑なデータ構造に対するテストをする - Test::Deep編

HashやArrayを含む複雑なデータ構造を比較しテストする事のできるモジュールがTest::Deepです。例えば、Hashの構造を比較したい場合、以下のようにcmp_deeplyというメソッドで比較する事ができます。 use strict; use warnings; use Test::More qw(no_plan);…

Devel::Coverでカバレッジテスト

機能テストで機能仕様を満たしているかを確認するのにテストケースを書く場合、それらのテストをしていてもカバレッジが100%になっていなければ、何らかの漏れがあるか、使われていない古いコードが残っているかの可能性が高くなります。どちらのケースも後…

SeleniumのGoog/Badから考えるアクセプタンステスト

Seleniumは使いこなすと非常に強力なテストツールですが、向き不向きもあり、テスト用途によって、どのようなテストをどのようなタイミングで実行すべきかを変えた方がよくあります。そこで、SeleniumのGood/Bad、Seleniumのテストの用途、Seleniumのテスト…

SeleniumRCでTestSuiteを実行

SeleniumRCを使うケースだと定期的にTestSuiteを実行させたいなぁっていうのがあるんじゃないかと思います。以下のようなスクリプトをCRONで1日単位でまわして朝見るってだけでも、ユースケースレベルのテストを確認するのには使えます。 #!/bin/sh BROWSER=…

SeleniumIDEでさくさくアクセプタンステスト

ユーザー操作をシミュレートしてテストをしたいというニーズはあって、それに使えるツールとしてSeleniumIDEがあります。以下では、SeleniumIDEを使って、簡単にアクセプタンステストをする方法を説明します。 SeleniumIDEでテストケース記録 t/acceptance/ …

Test::Classでヘルパースクリプトを作らずにテストを実行する

ベースクラス package My::TestBase; use strict; use warnings; use base 'Test::Class'; INIT { Test::Class->runtests } 1; テストクラス package My::Dog::Test; use base qw/My::TestBase/; use Test::More; sub test_bark : Test(2) { is &#39…

xUnitでの単体テスト

単体テストでxUnitを使う場合、クラスに対して1つのテストクラスを作るのが一般的です。例えば、Dogクラスがあれば、Dog::Testというクラスを作り、Dogの振る舞いに対してテストを書きます。クラスの振る舞いごとに、テストメソッドを書いていきます。テスト…