7

この質問をするのは少し恥ずかしいですが、興味があります。私は最近、ストアのログ ファイルを読み取り、その情報をデータベースに保存するスクリプトを (モジュール内のコードを整理せずに) 作成しました。

たとえば、私は次のように書きました (Richard Huxton 経由):

while (<$infile>) {
    if (/item_id:(\d+)\s*,\s*sold/) {
        my $item_id = $1;
        $item_id_sold_times{$item_id}++;
    }
}
my @matched_items_ids = keys %item_id_sold_times;
my $owner_ids =
  Store::Model::Map::ItemOwnerMap->fetch_by_keys( \@matched_item_ids )
  ->entry();
for my $owner_id (@$owner_ids) {
    $item_id_owner_map{$owner_id}++;
}

たとえば、このスクリプトは script.pl と呼ばれます。ファイルをテストするとき、私はファイル script.t を作成し、script.t で script.pl のいくつかのブロックを繰り返さなければなりませんでした。関連するコード セクションをコピーして貼り付けた後、次のような確認を行います。

is( $item_id_sold_times{1}, 1, "Number of sold items of item 1" );
is( $item_id_owner_map{3},  8, "Number of sold items for owner 3" );

などなど。

しかし、私が書いたものはテストではないと指摘する人もいます。確認スクリプトです。適切なテストには、モジュールを使用してコードを記述し、モジュール内のメソッドを起動するスクリプトを記述し、モジュールのテストを記述します。

これにより、ソフトウェア エンジニアリングで最も広く使用されているテストの定義について考えさせられました。おそらく、Perl のコア機能をテストしたことがある人なら、私に手を差し伸べてくれるかもしれません。スクリプト (モジュール化されていない) を適切にテストできませんか?

よろしく

4

3 に答える 3

4

モジュールとしてプログラムを設定すると、プログラムをモジュールのようにテストできます。これについてはあちこちで書いてきましたが、最も注目すべきはMastering Perlです。第 18 章は現在オンラインで無料で読むことができます。現在、第 2 版を公開中です。:)

于 2013-06-12T04:13:50.050 に答える