わかりました、私はこの思考プロセスを後押しする必要があります-私の脳は痛いです。いくつかのアプローチについてフィードバックをお寄せください。
以下の説明で注意を失った場合に備えて、質問を前もって投稿します。
以前に同様の製品のスクリプトを作成したことがありますか?どのようにアプローチしましたか?
これらのアプローチのいずれかが、何らかの理由で素晴らしい/ひどいものとして際立っていますか?もしそうなら、何ですか?
- より適切だと思う別のアプローチはありますか?
私がテストしているワークフローがあります。議論のために、さまざまなtext_fields、radio_buttons、select_listsで構成されるショッピングカートと呼びます。 ある会社がこのショッピングカートを最大60のクライアントに提供しており、すべてのクライアントが同じ正確なフォームを使用しているわけではありませんが、一般的なプロセスは同じです。一般的な考え方はクライアント間で同じであり(同じターゲット機能)、まったく同じワークフローを持つクライアントのサブセットがありますが、多くは一意です。このシナリオでは、一意とは、特定のフィールドが不要であり、他のクライアント用である可能性があることを意味する場合があります。または、特定の質問/ text_fieldsが1つのクライアントに存在し、他のクライアントはまったく使用できません。
この時点でのスクリプトの目的は、プロセスの個々のステップを「テスト」として検証することではなく、Webインターフェイスを介して注文を生成することです。ここで私を少し信頼する必要があります。ネガティブ/エッジケースを許容可能なレベルの精度で実行できるようにするための一般的な詳細はまだたくさんあります。
私がこれまでに見たアプローチは次のとおりです。
ページオブジェクトパターンを使用して、クライアントサイトごとに「ページ」ファイルを作成し、テストするクライアントに応じて異なるページクラスを使用します。これは退屈で、ほとんどが壊れやすく、維持するのに多くの作業が必要です。ただし、それは機能し、特定のページファイルにアクセスできる限り、すべての人に同じ機能/シナリオを使用できます。
DOMからすべての入力要素を取得するメソッドを作成し、それらが特定の必要な入力を挿入する必要がある予約済みフィールドであるかどうかを検出するか、注文を完了するために情報を入力するだけです。これはDBに便乗しないため、全体的にパフォーマンスが向上するはずです。
DBに接続し、ページの作成に使用される特定のクライアントに必要なすべての情報を収集し、注文のフィールドを動的に作成して、それに応じて回答します。これは理論的には素晴らしいように聞こえますが、メンテナンスはほとんど必要ありません。DBのスクレイピングは簡単ですが、フィールドの構築の難しさはまだ私にはわかりません...
現在使用しているもの: watir-webdriverキュウリCheezyのページオブジェクトgem続編