問題タブ [specflow]
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.
excel - 「コード化された UI テスト用の Excel アドイン」は、Excel ワークシートからテスト シナリオ データを読み取るときに役立ちますか
これには詳細な説明が必要です。
1 つのワークシートにテスト ケースを含む Excel スプレッドシートがあり、(最初のワークシートに期待されるメッセージに加えて) 別のワークシートに (検証) メッセージが期待されるとします。
1 番目のワークシートと 2 番目のワークシートのフィールドの値の間のリンクもあります。
参照:ようこそ、<名> <姓>例として。
「テスト ケース」ワークシートの「期待される結果」フィールドで、フィールドの値が次のようになっていることがわかります。名前はデイブ、姓はブラウンです。」
したがって、「&Messages!$B$1244&」は、ワークシート「Messages」のフィールド B1244 を示します。
今質問です。
以下の e コマース Web サイトの例のようなすべてのテスト ケースが与えられた場合、この入力に基づいてコード化された UI テストをどのように使用できますか? Excel を自動化し、テスト ケース ワークシートの手順を使用して、データ入力と検証のコード化された UI 記録と組み合わせることはできますか?
記録された入力手順とコード化された UI レコーダーからの検証を部分的に使用し、場合によっては検証のために手動プログラミングを使用して、手動でコーディングを行う必要があると思います。他の人が同様のことをしたかどうか聞きたいです。
機能/ユーザー ストーリーとこれらのテスト ケースをシナリオとして記述することで、これを Specflow BDD に組み込みたいと考えています。
Excel テスト自動化をデータ ドリブン テストとして使用することについての考え。
ありがとうラド
b>コード化された UI テストについて少し読んだ後: 確かに実行できますが、次のようなデータ/文:
「テスト ストアフロントを起動します」<br>「サインイン リンクをクリックします」
"登録に成功。
ユーザーは [マイ アカウント] ページに移動し
、
次のウェルカム メッセージが表示されます
。
アクションとデータの両方が含まれているため、文の一部にドリルダウンしてアクションに変換し、パラメーターにバインドする必要があります。私がよく理解している場合、データバインディングは列の値をいくつかのパラメーターにバインドするためにのみ使用できます。したがって、これらの文の意味を自動的に認識し、その一部からバインディングを使用する方法が必要です。
だから私は文を持っている場合:
「テスト ストアフロントを立ち上げる」は、次のように翻訳されます。
CurrentBrowser.Navigate(Helper.TranslateTargetUrlFrom(“test storefront”)) ここで、「test storefront」はhttp://testserver.com/index storefront ホームページに解決される可能性があり、URL のデータ列を無視するか、Launch キーワードをキャプチャして意味を取得できますCurrentBrowser.Navigate(ColumnValue(Data)) を入力し、文の「テスト ストアフロント」部分を無視します。
「サインイン リンクをクリックする」は、CurrentBrowser.FindLink(「サインイン」).Click() に変換できます。
この場合、サインインがリンクのテキストであることを知る必要があります。ここでも、リンクのテキストを意味する「サインイン」を抽出する必要があります。
これは CodedUI の非常に手動的なスタイルであり、いくつかのアクションについて小さな記録を行い、特定の文から用語を手動で抽出することに依存していると考えています。
自動化を可能にするために、より良いテストケースを意味的に書く方法を知りたいです。クリック、ナビゲート、起動、入力、下をクリックなどの単語の意味を認識し、既存のヘルパー メソッドと記録されたアクションを再利用してこれをコードに変換する、ある種の自由形式のテスト ケース パーサーが必要になるでしょう。手動バインディングを行いますが、列のデータ値全体ではなく、抽出された値を使用します。
この種の自動化のアイデアはありますか?
watin - WatiN と SpecFlow を使用した UI コンポーネントの BDD
私の質問は、私のセットアップが現在、UI 受け入れテストを使用した BDD に関するベスト プラクティス アプローチに従っているかどうかに焦点を当てています。私は SpecFlow で WatiN を使用して UI 受け入れテストを作成し、アプリケーションを AppHarbor (.Net アプリケーションのサービスとしてのクラウド プラットフォーム) にデプロイしています。AppHarbor は、デプロイ時にユニット/統合テストを実行し、テストに合格した場合にのみサイトを公開します。そのため、最初に次のように基本的な失敗テストを作成することから始めました。
このテストに関連する手順では、WatiN を使用してブラウザーを開き、ビューのタイトル属性が "Welcome" に設定されていることを確認します。WatiN ブラウザーでテストする URL を決定するために環境をチェックしています。たとえば、開発中の場合は、ホームとして「http://localhost:49641/」に移動します。それ以外の場合は、「http://myappharborapp.com/」に移動します。
私の問題は、このアプリケーションを初めて展開する場合、ページまたはビューが実際には存在しないため、テストが失敗することです (サイトがまだ公開されていないため)。たとえば、後で「About」ページビューを追加し、失敗するテストを最初に書いた場合、これも失敗します。更新をプッシュすると、「About」ページがまだ存在しないため、テストは失敗します。
私の質問は次のとおりです。UI テストをどのように設定するかに関して、ベスト プラクティスに従っていませんか? どのような環境でも合格するために、これらのテストをどのように設定する必要がありますか?
どんな洞察も大歓迎です!
asp.net-mvc - ASP.NET MVC で BDD スタイルの単体テストと統合テストを行うにはどうすればよいですか?
私は ASP.NET MVC を使用したビヘイビア駆動開発を学んでおり、 Steve Sandersonの投稿に基づいて、 BDD が少なくとも次のテスト タイプを意味する可能性があることを理解しています: コードの個々のユニットと UI の相互作用。この投稿で同様のことが言及されています。単体テストと統合テストの両方が必要な場合、2 つの異なるテスト フレームワークが必要ですか?
MSpec などのコンテキスト/仕様フレームワークを使用した、リポジトリ、コントローラー、およびサービスの単体テスト。これを使用したテストの結果は、開発チームに役立ちます。
SpecFlow と Watin のように、特定の/when/then フレームワークを使用して、完全な動作 (統合) をテストします。このテストの結果は、私のクライアントに役立ちます。
BDD の使用についてこれまでに見たビデオは、リポジトリやコントローラーなどの動作をテストせずに、エンティティの動作をテストすることに限定されていました。 BDDアプローチ?
.net - デフォルト値Specflowステップ定義
私はSpecFlowの世界から始めており、最初の問題に遭遇しました。コードをDRYに保つという観点から、次のことを行いたいと思います。
2つのシナリオがあります。
Given I am on a product page
And myfield equals todays date
Then...
Given I am on a product page
And myfield equals todays date plus 4 days
Then...
次のステップ定義を使用して、And句の両方のバリアントをカバーすることを望んでいました。
[Given(@"myfield equals todays date(?: (plus|minus) (\d+) days)?")]
public void MyfieldEqualsTodaysDate(string direction, int? days)
{
//do stuff
}
ただし、SpecFlowがintを解析しようとすると、例外が発生し続けますか?パラメータ。正規表現を確認しましたが、シナリオは確実に期待どおりに解析されます。メソッドのオーバーロードなど、大雑把なものができることは承知しています。SpecFlowがデフォルトのパラメーター値のアイデアをサポートしているのか、それとも同じ効果を実現する別の方法をサポートしているのか、疑問に思っていました。
どうもありがとう
specflow - SpecFlowカスタムツール「SpecFlowSingleFileGenerator」
このカスタムツールは、SpecFlowの.featureファイルから.csファイルを生成するために使用されていることがわかりました。VSの外でこのツールを使用する方法はありますか?NAntを使用してプロジェクトをビルドするときに、特定の.featureファイルのコンソールからこのツールを呼び出したいと思います。
よろしく、
ヴァジダウラジミール
asp.net-mvc - 前提条件とデータベースの相互作用
次のようなシナリオがある場合は、何か質問させてください。
この場合、プロジェクト ページに表示する必要があるプロジェクトを作成するには、一般的に何をしますか? プロジェクトを作成するためにリポジトリ自体を呼び出すリポジトリ パターンを使用しているとします。または、Watin を使用してプロジェクトの作成をシミュレートしますか? リポジトリを直接呼び出す場合、データベースへの接続は Web プロジェクトの接続と同じでなければなりませんか? その場合、テストデータベースと開発データベースを持つことはできません。ありがとう
specflow - テストを実行せずに、不足しているステップ定義のリストを SpecFlow に生成させることはできますか?
SpecFlow で実装された BDD テストをリファクタリング中です。この作業の一環として、ほとんどのステップ定義をコメントアウトしました。
テストを実行すると、「1 つ以上のステップに対して一致するステップ定義が見つかりませんでした」というメッセージが表示されます。メッセージ。
ただし、テストが実際に実行されるまで待ちたくありません。テストを実行せずに、欠落しているステップ定義を SpecFlow でチェックする方法はありますか?
specflow - Specflowの【AfterScenario】
stepdefinition クラスで [AfterScenario] バインディングを定義し、各シナリオの後に実行されるメソッドを持っていますが、何らかの理由でこれが機能しません。私のメソッドは各シナリオの後に呼び出されないため、いくつかのテストの後、Excel は開いたままになります...また、失敗したテストのログはありません。なんで?アイデアや提案はありますか?
これが私の方法です:
c# - Specflow / Watin ページ チェック
specflow と watin を使用して受け入れテストを書き始めたところです。私たちは、いくつかの一般的な慣行を解決しようとしています。
ユーザーが特定のページにいるかどうかを確認する良い方法は何ですか? たとえば、ユーザー x がアクション y を実行すると、ページ z にリダイレクトされます。それらがページzにあることをテストするための好ましい方法は何ですか? URL、ページのタイトル、ページの見出しなどを確認してみました...
それらはすべて機能しますが、最も信頼できるものは何ですか?
cucumber - SpecFlow / Cucumber/Gherkin-シナリオの概要でのテーブルの使用
うまくいけば、他の人が理解できるように自分の問題を十分に明確に説明できます。ここで、次の2つの仮想シナリオがあると想像してください。
これらのシナリオは、関連するコンパイル済みテストステップを変更せずに、フィールド/値およびThenValueエントリのWhen行を好きなだけ追加できるので便利です。ただし、さまざまなフィルターテストのコピー/貼り付けのシナリオは繰り返しになり、多くのコードを使用することになります。これは避けたいことです。理想的には、シナリオのアウトラインを作成し、上記のテストでの動的な性質を維持したいと思いますが、それを実行しようとすると、サンプルテーブルの定義で問題が発生し、適切と思われる新しい行を追加できません。新しいテストインスタンス、現在私はこれを持っています:
したがって、シナリオのアウトラインを使用すると、フィルターと期待されるデータに行を動的に追加できるという問題があります。これを回避する方法を知っている人はいますか?別の角度からこれにアプローチする必要がありますか?
回避策は次のようになります。
しかし、それはあまり動的ではありません....より良い解決策を望んでいますか?:)