web-dev-qa-db-ja.com

「データのインポート、データの処理、結果のエクスポート」に適用するパターン/アーキテクチャ

次の問題を3つのステップに分けて、どのアーキテクチャ/パターンを選択するのか疑問に思いました。

  1. ファイルからTestScriptの説明をインポート(例:.xls、.txt)
  2. プロセス記述TestScript
  3. 結果を処理した説明を.xmlとしてエクスポート

これが私がこれまでに得たものです:

  • Xlsを読み込んで階層オブジェクト構造を作成するインポーター
  • オブジェクト構造から抽象構文ツリー(If、then、else、end、command)を作成するパーサー
  • ASTのプロセッサ(VisitorPattern)。このプロセッサーは、コマンド実装をインスタンス化し、コマンドを実行し、結果を収集してフローを制御します(if、then、else)。

現在、インポートされたオブジェクト構造にはすでに結果のフィールドが含まれており、xmlとしてシリアル化することができます。しかし、私の意見では、入力オブジェクトに結果フィールドがあることはあまりエレガントではありません。

インポートされたオブジェクト構造を何度も処理するために再利用できないのが、私が気に入らない主な理由です。また、コンポーネント全体を3つの部分に分割したいと思います。

  1. インポート。TestScriptを記述する階層的なオブジェクト構造を作成します(ファイルパーサーとプリプロセッサを含む)。
  2. ASTを作成して処理するプロセス
  3. 結果と説明を取得して書き出すエクスポート

ここに他のいくつかの条件があります:

  • すべてのAST Nodeは、オブジェクト構造(説明)内のオブジェクトを表す)ではありません
  • しかし、各結果オブジェクトは説明オブジェクトに接続されています
  • 説明と結果は階層的です
6
kaeLum

TestScriptの説明に埋め込まれた結果を出力すると、過剰に見える。このように書き込まれた結果が原因で、TestScript記述を編集せずに再利用して削除できない場合、アーキテクチャはばかげています。

出力仕様は、説明に属しています。私がこれまでずっと目にしてきた典型的なテストパターンは、テストに名前があることです。その名前は、テストが何を行うかを識別するために出力に含まれます。個々のテスト結果は、何が行われたか、何が期待されたか、実際に何が見つかったかを識別する必要があります。通常、テスト名は何が行われたかで十分ですが、期待値、許容範囲、および実際の値は出力で確認するのに適しています。

説明からの予想される設定が正しいオブジェクトをもたらすかどうか疑わしいまたは不確実な場合、非常に詳細な出力モードにより、抽象構文ツリーが出力に書き出される可能性があります。合否判定または合否判定が行われた時点で一時停止するシングルステップモードは、決定の瞬間にシステムをフリーズし、開発者または別の開発者やテスト管理者などが周囲を見回して説明の設定が正しく組み立てられていることを確認してください。

出力で説明(verbatum)を再現すると、推定ユーザーが説明と出力の編集/表示ウィンドウを開く必要がなくなります。私は善意を感じるが、表現されていない欲望。

1
Bill IV