テスト
Perlでは複雑なデータ構造に対するテストを行うモジュールの一つとして、Test::Differencesという二つのモジュールが存在します。例えば、以下のように複数行に渡る文字列があったとしましょう。 use strict; use warnings; use Test::More qw(no_plan); use…
HashやArrayを含む複雑なデータ構造を比較しテストする事のできるモジュールがTest::Deepです。例えば、Hashの構造を比較したい場合、以下のようにcmp_deeplyというメソッドで比較する事ができます。 use strict; use warnings; use Test::More qw(no_plan);…
機能テストで機能仕様を満たしているかを確認するのにテストケースを書く場合、それらのテストをしていてもカバレッジが100%になっていなければ、何らかの漏れがあるか、使われていない古いコードが残っているかの可能性が高くなります。どちらのケースも後…
Seleniumは使いこなすと非常に強力なテストツールですが、向き不向きもあり、テスト用途によって、どのようなテストをどのようなタイミングで実行すべきかを変えた方がよくあります。そこで、SeleniumのGood/Bad、Seleniumのテストの用途、Seleniumのテスト…
SeleniumRCを使うケースだと定期的にTestSuiteを実行させたいなぁっていうのがあるんじゃないかと思います。以下のようなスクリプトをCRONで1日単位でまわして朝見るってだけでも、ユースケースレベルのテストを確認するのには使えます。 #!/bin/sh BROWSER=…
ユーザー操作をシミュレートしてテストをしたいというニーズはあって、それに使えるツールとしてSeleniumIDEがあります。以下では、SeleniumIDEを使って、簡単にアクセプタンステストをする方法を説明します。 SeleniumIDEでテストケース記録 t/acceptance/ …
ベースクラス 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 '…
単体テストでxUnitを使う場合、クラスに対して1つのテストクラスを作るのが一般的です。例えば、Dogクラスがあれば、Dog::Testというクラスを作り、Dogの振る舞いに対してテストを書きます。クラスの振る舞いごとに、テストメソッドを書いていきます。テスト…