問題タブ [acceptance-testing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - ヘッドレス環境でカピバラでキーボードイベントをどのようにシミュレートしますか?
重要なキーボード操作を含む複雑な Web アプリ GUI をテストしようとしています。GUI の特定のコンポーネントの単体テストを行っていますが、エンドツーエンドの受け入れテストには Cucumber と Capybara も使用しています。これにはヘッドレス Linux ボックスを使用しています。すべては ssh 経由で行われます。
問題は、Javascript をサポートし、キーボード イベントをシミュレートでき、ヘッドレスである Capybara ドライバーが見つからないことです。
これまでの私の研究の要約:
capybara-webkit .
execute_script
多くのドキュメントとコードを試し、研究し、簡単なキーボードシミュレーションがないことがわかりましたが、この質問を使用して自分で作成したり、どのように機能するかを理解しようとすることができtrigger
ます.セレン。は、完璧
send_keys
に聞こえますが。「Firefox がインストールされていれば、すべてがセットアップされます」。Firefox をインストールできませんが、セットアップを試すことができるSelenium-remoteがあります。capybara-envjs .
trigger
ちょっとハックに見えますが、ドキュメントはありませんが、コードを見てどのように機能するかを理解することは可能です.
だから、私は研究と指導を求めることにうんざりしています。
私が見逃している明らかな解決策はありますか?リストのどのオプションを最初に試す必要がありますか? ヘッドレス環境で Capybara を使用して Javascript キーボード イベントをシミュレートするテストを行った経験のある方がいらっしゃるのではないでしょうか?
acceptance-testing - コンコーディオン要約レポートの生成
私のプロジェクトでは、Concordion を使用して自動受け入れテストを行うことを検討しています。私が Concordion で見た大きな欠点は、自動生成された要約ページです。現状では、テスト担当者または機能ユーザーが、生成された HTML ページのそれぞれを掘り下げて、成功または失敗をチェックする必要があります。
Concordion の svn リポジトリを見ると、要約 XML ファイルを生成するための修正案が 1 つあります。しかし、私が知る限り、その変更は幹線に組み込まれていません。できれば、Concordion のソースを開いて直接変更することは避けたいと思います。
コンコーディオン マスター/サマリー レポート タイプのページを生成する簡単で汚い方法を知っている人はいますか?
ruby-on-rails - 受け入れテストで高価なリソースをあざける(rspec、キュウリ)
私は、回避しようとしている高価なネットワーク呼び出しとのインターフェースを低レベルで行うフルスタック受け入れテストを作成する方法について少し困惑しています。
私はrspecとcucumberを使用しており、モックのほとんどをrspeckモックで行っています。
以下は、私がテストしているもののコンテキストを説明するために私が行っていることの不自然な例です。
後でレシピなどを作成できる材料を追加するためのページがあります。新しい材料の作成が成功すると、材料モデルはWebサービスにアクセスして、特定の食品に関するusda栄養情報を取得し、材料モデルに保存します。
食品の名前を取得し、Webサービスを介して適切な要求を行い、xml応答を返すWebServiceInterfaceクラスを作成しました。次に、別のヘルパークラスがxml応答を解析し、栄養情報のコレクションを返します。このコレクションは、成分インスタンスで使用されます。
今、私はすでにWebServiceInterfaceを実行する一連の単体テストを作成しました。こんな感じ
get_response_xml
これは、応答パーサーによって内部的に呼び出されることに注意してください。この場合、ResponseParserはget_response_xml
注入されたでを呼び出しますfake-webservice
。
モデルの場合、それはうまく機能し、ダンディですが、受け入れテストでは状況はより複雑です。「新しい材料の作成」ページ(new_ingredient_path
)と、すべての材料とその栄養情報を一覧表示する材料インデックスパス()の統合をテストするページの検収テストを作成したいと思いますingredients_path
。
検収試験は次のようになります。
冗長なコンテキストはさておき、これが質問です。実際のWebサービスがプロセスで呼び出されないようにしながら、このタイプの受け入れテストを作成するための最良の方法は何ですか。
サービスはリクエストごとに課金され、私は多くのテストを行うため、この状況では「統合/受け入れテストですべての相互作用を実際にテストする必要があります」では不十分です。
テスト環境で実際のWebサービスの代わりに偽のWebサービスなどが使用されていることを確認する方法を見つける必要があります(おそらく開発でも?)。.Netのバックグラウンドから来て、私が聞き慣れている典型的な答えは「依存性注入を使用する!!?!!」です。DIにはメリットがあると思いますが(これをDIの議論に変えないでください)、ここにはもっと単純で軽量なソリューションがあると思います。
If ENV["RAILS_ENV"] == 'test'
私はそれから偽物を使うようなことをすることを考えました、さもなければ本物のものを使います。これは、レール環境で一般的に使用されるイディオムですか、それとも粘着性が高すぎますか?
これを、たとえば「spec_helper.rb」ブロックまたはキュウリfeatures / support / env.rbブロックで構成できるプロバイダーのタイプとして登録する方法はありますか?
考え、アイデア、インプット、アドバイス???? Rails開発者を体験できますか?および/またはCucumber/Rspecの第一人者は、このタイプのテストを実行するための一般的な方法を教えてください。
automated-tests - エンドツーエンドの回帰テストにSpecFlowを使用する
BDDを採用し、SpecFlowを使用して開発(ATDD)を推進しています。
私たちのQAチームは、(Gherkin / SpecFlowで)独自のエンドツーエンド回帰テストを定義し、すでに定義したステップを再利用したいと考えています。
(注意してください-これは良い例ではありませんが、十分な詳細を提供するはずです)
テストには以下が含まれる場合があります。
- ログイン
- 製品を検索する
- 購入する製品を選択してください
- 注文を作成する
- 配信オプションを選択します。
- 注文を送信します。
- 注文を取り消す。
これは、次のようなシナリオを示唆します。
ログインしている
場合、商品を検索し、
購入する商品を選択し
、注文を作成し、
配送オプションを選択
し、注文を送信して、注文
をキャンセルします
か?? !!
各ステップで出力をチェックしていないため、これは明らかに間違っています。
したがって、これは一連のシナリオとして解決される可能性があります。
シナリオ1:
ログインして
いる場合、製品を検索すると、製品
のリストが表示されます
シナリオ2:
購入する製品を選択すると
、注文を作成できます
シナリオ3:
注文を作成し、
配送オプションを選択すると
、注文を送信できます
などなど
これに関する主な問題は、シナリオが実行される順序/シーケンスを指定する方法がないように見えることです(nUnitの特性?)。シナリオ間には依存関係があるため(開始点がわかっているように設定されていないため)、順番に実行する必要があります。
私の質問は次のとおりです。
a)丸い穴に四角いペグをはめ込もうとしていますか?!
b)SpecFlow / Gherkinをこのように使用する方法があるかどうか誰かが知っていますか?
c)または、他にどのような選択肢があるか知っている人はいますか?
どうもありがとう!
selenium - Play Framework での Selenium テストに @Before を使用する
Play でプログラムの Selenium テストを実行する前に、データベースをセットアップしたいと思います。フレームワーク。ただし、ドキュメントによると、データベースを削除し、さまざまな YML ファイルを 1 つずつロードするだけの方法しかありませんが、実際にはさまざまな機能が必要です。単体テストと機能テストを書くのは簡単です。必要なのは
@Before
public void setup() {
(new asyncjobs.Bootstrap()).doJob();
}
ここで、BootStrap は必要なデータをすべてロードします。Seleniumでこれを指定するにはどうすればよいですか?
continuous-integration - Cruisecontrol.net exec の Fitnesse: テストが失敗してもビルドが失敗しないようにしました
フィットネスをクルーズコントロールのセットアップに統合しようとしています。
リリースの機能に取り組む前に、一連の受け入れテストを開発したいと考えています。受け入れテストを開発し、ナイトリー ビルドに対して実行します (チェックインのたびに実行するわけではありません。そのための仕事はありますが、受け入れテストでは速度が大幅に低下するのではないかと思います)。
そのため、fitnesse テスト スイートを実行できるようにして、一部のテストが失敗したときにビルドが失敗しないようにしたいと考えています (リリースが完了するまで、一部のテストは失敗することが予想されます)。
統合サーバー上に受け入れテストを構築し、フィットネス スイートをコマンド ラインから (統合ジョブの実行タスクとして) 実行しています。
現時点では、ビルドに失敗しています (テストが失敗した場合、runner.exe にはゼロ以外の終了コードがあります)。
それで...誰かfitsharp runner.exeの終了コードのリストを持っていますか? ジョブからの戻り値を本当に気にしないことをクルーズコントロールの実行タスクに伝える方法はありますか? 代わりに使用する必要がある別の cc.net タスクはありますか?
編集:
現在の最良のアイデアは、fitsharp ランナーをバッチ ファイルまたは powershell スクリプトでラップし、フィットネスからのリターン コードを飲み込むこと
です
。 Cruisecontrol.net exec タスクは難しい)
ruby-on-rails - Capybara-webkitはCapybara::Driver :: Webkit::WebkitInvalidResponseErrorを発生させます
rspecのwebkitドライバーから次のメッセージが表示されました。
数日前、それは機能しました。問題はsave_page
方法にあります。何が間違っている可能性がありますか?
asp.net-mvc - フォーム入力機能の仕様を定義するときに、すべてのエッジケースをテストすることは実用的ですか?
受け入れテストを学び始めており、SpecFlowを使用してASP.NETMVCアプリをテストしたいと考えています。現在、CRUDシナリオのテストを作成しています
が、これは完全に初心者向けの質問ですが、SpecFlowシナリオですべてのエッジケースをテストするのは実用的ですか?記入するフォームがあります。約15個のフィールドがあります。たとえば、「フィールドAが有効で、フィールドBが無効な場合、この検証メッセージが画面に表示されるはずです」とテストする必要がありますか?または、「フォームが正しく入力されていれば、「タスクが追加されました」というメッセージが表示されるはずです」と書くだけで十分ですか?この場合、モデル検証を個別に単体テストする必要がありますか?よろしくお願いします
javascript - 特定の文字列がページにあるかどうかを確認します
ページにzombie.jsの特定のテキストが含まれているかどうかを確認するにはどうすればよいですか?応答をチェックして、文字列が含まれているかどうかを確認しますか?