問題タブ [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.
msbuild - TeamCity: 受け入れテストの展開の依存関係を管理していますか?
TeamCity 6 で一連のビルド構成を構成しようとしており、TeamCity によって可能になる最もクリーンな方法で特定の要件をモデル化しようとしています。
並行して実行したい一連の受け入れテスト (関連するシステムの機能領域ごとにグループ化された約 4 ~ 8 のテスト スイート) があります (それらをビルド構成としてモデル化して、複数のプラットフォームに分散できるようにします)。エージェントのセット)。
私の最初の調査から、スナップショットの依存関係AcceptanceTests
を介して個々の受け入れテスト構成のセットを取り込むメタビルド構成を持つことは、うまくいくはずです。次に、ビルド構成がトリガーされ、それらがすべて取り込まれると言うだけです。Commit
AcceptanceTests
AcceptanceSuiteA
AcceptanceSuiteB
AcceptanceSuiteC
これまでのところ、とても良いです (別の方法で構成Commit
をトリガーすることもできます。問題はAcceptanceSuiteA
、結果AcceptanceSuiteB
をAcceptanceSuiteC
手動で集計して、受け入れテスト全体の全体的な成功を判断する必要があることです)。
複雑なのは、いくつかのアーティファクトAcceptanceSuiteC
が必要なだけで、それ自体で生きることができ、次のことを行う必要があることです。Commit
AcceptanceSuiteA
AcceptanceSuiteB
DeploySite
(2分かかるとしましょう。この実行のためだけに完全に分離されたものをスピンアップする余裕はありません)- デプロイされたサイトに対してテストを実行する
問題は、次のことを確認できる必要があることです。
- ウェブサイトは一度だけ設定されます
- 2 つのスイートの実行中に Web サイトが破壊されることはありません
DeploySite
ビルド構成として設定し、それをスナップショットの依存関係として取得しAcceptanceSuiteA
てAcceptanceSuiteB
プルすると、AFAICT:
- の後続の実行または並行実行により、
AcceptanceSuiteB
別の実行がトリガーされ、使用中のおよび/または使用中DeploySite
の展開が破壊される可能性があります。AcceptanceSuiteA
AcceptanceSuiteB
同時に実行するビルドの数を制限して、一度に 1 つだけ実行するように強制することはできますが、依存部分がまだ実行されている間ではなく、一度に 1 つずつ実行する必要があります。
TeamCity でそのような階層をモデル化する方法はありますか?
編集: アイデア:-
がらくたの解決策はDeploySite
、「使用中フラグ」マーカーを設定し、構成でそのフラグをAcceptanceTests
クリアすることです[完了後]。問題は、ゲートが再び開かれるまで、次のパイプラインを待機させることの 1 つになります (ビルド内でブロッキング待機を行うと、気分が悪くなります。何かをするのに長い時間がかかる)。ただし、この種のものはここにフラグがあり、このビットをチェックしてください。これは、私が逃げようとしている一種の可変状態/フレークネスの匂いです。AcceptanceSuiteA
AcceptanceSuiteB
DeploySite
編集 2: エージェントの構成をプログラムで変更できれば、Agent Requirementsを require InUse=falseに設定し、デプロイの開始時にフラグを設定し、テストの実行後にフラグをクリアできます。
java - テストの実行中に Selenium RC がウィンドウのフォーカスを盗むのを防ぐにはどうすればよいですか?
私が少数派であることは承知していますが、テストの実行中にマシンを使用する必要があります。いつも邪魔になるのは、Selenium RC を使用してテスト ケースを実行すると、ブラウザー ウィンドウが常にフォーカスを奪うことです。これにより、ログアウトする直前の 1 日の終わりに、1 日に複数回テストを実行することができなくなります。Selenium Grid を試してみましたが、0.0.0.0 (ネットワーク管理者からの要件) ではなく、localhost のリクエストのみをリッスンするようにできません。
Selenium のドキュメントと多数の Selenium サイトを調べましたが、決定的な答えを見つけることができませんでした。テストの実行中に Selenium RC テストが Windows フォーカスを盗むのを防ぐことはできますか?
Firefox 3.6.13 を使用しています。
python - Python Web アプリケーション (django) の受け入れテストを作成するには、どのツールを使用しますか?
私は2つだけ見つけました:
これらの (または他の) ツールの実践と経験を知りたいです。
selenium - テストを高速に実行するためのブラウザーが組み込まれている .NET UI テスト ツールはどれですか?
こんにちは、selenium または watin のいずれかに、通常のブラウザー (IE/FF...) よりも速くテストを実行するための「組み込み」ブラウザーがあることを見たのを覚えています。この問題に関する情報やドキュメントを教えてもらえますか?
ありがとう、n
selenium - Selenium を StoryTeller フィクスチャに統合した人はいますか?
SeleniumをStoryTellerフィクスチャに統合した人はいますか? それをどのように行い、継続的インテグレーションに関して彼らの役割は何ですか?
database - specflow を使用した受け入れテストでのデータベースのクリーンアップ
私はtddの初心者です。Brandon Satrom のビデオを見てきました。それらのようなテスト、受け入れテストの外側のループ、単体テストの内側のループを実装しようとしています。受け入れテストはデータベースにも反対だと思っていたので、Specflow でデータベース クリーンアップの [BeginScenario/AfterScenario] イベントに関する例を見つけることを期待しています。データベース クリーンアップに使用されると言われています。しかし、私が見た例はどれもそれをしません。
受け入れテストの概念を誤解していますか? データベースもカバーしていませんか?単体テストで行ったように、そこでモック オブジェクトを使用する必要がありますか?
ruby-on-rails - RESTful Web サービス (Rails) のエンドツーエンドのテスト
私はそこにある無数のテストソリューションをふるいにかけようとしていますが、正しい方向に向かっているかどうかさえわかりません. ストーリーは、Rails アプリとして実装された RESTful Web サービスを実行しており、モバイル クライアントをサポートしています。私たちは Web サービスの単体テストを (もちろん) 行っていますが、それにはアプリケーションの多くの部分 (たとえば、検索スタック (Apache SOLR)) のモック アウトが含まれます。
さらに、私たちのテストは、モバイル サインイン/サインオン プロセスなどの重要なルートをカバーしていません (つまり、できません!)。これは、ユーザーが資格情報を入力できる API アプリケーションとモバイル Web サイト間の通信が含まれるためです。 SSO(ジャンラインエンゲージ)。したがって、標準の Rails 統合テストでは対応できません。
理論的には、テスト スイートが非常によく設計されていて、次のレイヤーのテストが開始される結合ポイントでのみ厳密にモッキングが行われる場合、サービス API とモバイル Web サイトを個別に単体テストまたは機能テストすることで、同じテスト カバレッジを取得できます。ただし、実際には、複数の開発者が個別にテスト スイートに取り組んでいる場合、これは錯覚です。私たちの単体テストがそれほどうまく設計されていないことは認めます。特に TDD を実行すると、テストによってアプリケーション コードを駆動できる一方で、テスト コードの設計はテスト対象のユニットに合わせて調整されているだけであり、テスト スイートがかなり大きくなることがわかりました。
私が見つけたもう1つのことは、単体テストを純粋に使用して回帰を検出しない場合があることです。たとえば、ノックオン効果のために不適切なクエリがSOLRサーバーに送信されました。そのため、スタック全体が重要なルートに沿って機能することを確認する唯一の真の方法は、すべての展開の前にステージング サーバーでエンドツーエンドのテストを自動的に行うこと、つまり実際の HTTP 要求をアプリに送信することだと考えました。
私の質問は次のとおりです。
- これはまったく合理的なことだと思いますか?Web でのライブ API のエンドツーエンド テストに関する情報はほとんど見つかりませんでした。
- どのツール/セットアップを提案しますか? 私たちは Watir を使用して Web サイトの受け入れテストを実行していますが、Web サービスとしてはやり過ぎのようです (ブラウザー環境は不要で、JS や UI っぽいものは必要ありません)。Ruby スクリプトのような単純なものでさえありますか?
- そのようなテストの設計に関して私に与えることができる一般的なベストプラクティスやアドバイスはありますか?
testing - スプリント & 受け入れテスト フェーズ - トレンチからのスクラムと XP
私はちょうどその本のScrum and XP from the Trenchesの途中で、 How we do testingの章、特に Acceptance Testing Phase (私はATPと呼びます) について読んでいます。著者は、1 つのアプローチを提案しています。
アプローチ 2: 「新しいものの構築を開始しても問題ありませんが、古いものを本番環境に移行することを優先します」</p>
しかし(私の意見では、または私は何も得られません)そのアプローチはATPをまったく参照していません. 1 つのスプリントがあり、次に別のスプリントがありますが、ATP はどこにありますか。あるいは、最初のスプリントには ATP が含まれていることを著者が念頭に置いているのかもしれません。もしそうなら、それはステートメントフォームのサブチャプターをどのように参照するか? 受け入れテストはスプリントの一部であるべきか? 数ページ前:
私たちはここでよく迷います。一部のチームは、スプリントに受け入れテストを含めています。しかし、私たちのチームのほとんどは、次の 2 つの理由からそうしません。 スプリントにはタイムボックスがあります。受け入れテスト (デバッグと再リリースを含む私の定義を使用) は、タイムボックス化が非常に困難です。時間がなくなっても重大なバグが残っている場合はどうなりますか? 重大なバグがある状態で本番環境にリリースするつもりですか? 次のスプリントまで待つつもりですか?ほとんどの場合、どちらのソリューションも受け入れられません。そのため、手作業による受け入れテストは外部に任せています。複数のスクラム チームが同じ製品に取り組んでいる場合、手動の受け入れテストは、両方のチームの作業を組み合わせた結果に対して行う必要があります。両方のチームがスプリント内で手動で承認した場合でも、最終リリースをテストするチームが必要になります。
皆さん、(ここに質問があります):その章をどのように理解していますか?
それとは別に、ここに私の考えがあります。著者は、重大なバグの問題があるため、ATP はスプリントの一部であってはならないと述べていますか? では、スプリントで ATP がなければ、このような問題が発生することはありませんか? はい、できます。いずれにせよ (Sptint に ATP があるかどうかに関係なく) 問題が発生します。結論 : スプリント タイムボックスが十分に長い場合 (おそらくそれはアプローチ 2の著者のアイデアでした)、ATP も処理できます。これにより、リリース後に大量のエラーが到着することがなくなります。
ありがとう、パヴェル
PS 本の著者と積極的にチャットできるように変更されたページをご存知ですか?
PS 2質問を投稿する前に読んだときに、おそらく次のように言って、啓発されました。
アプローチ 2: 「新しいものの構築を開始しても問題ありませんが、古いものを本番環境に移行することを優先します」</p>
著者: スプリント 1 が終了し、コードベース (バージョン 1.0.0) が ATP に入ります。同時に、リリース 1.1.0 の Sprint 2 を開始し、同時に 1.0.0 バージョンで発見されたバグを修正します。スプリント 1 で準備されたコードベースに問題がなければ、それは公開されます。ここに、オーバーラップの王様がいます。しかし、それが作者の意図であった場合 (そうではなかったと確信しています)、基本原則を破っています。
- スプリントの後、新しいソフトウェアが利用可能になります (ATP が終了するのを待っているわけではありません)。
- スプリントをスプリント + ATP :) と見なすと、スプリントはタイムボックス化されません。
全体として、その本は素晴らしい読み物ですが、その章は少しあいまいですが(私がその読書中に拾った素敵なクールな言葉でもあります).
database - SQLまたはレポートの受け入れテスト
私は、数百のSqlレポート(SSRS)を含むプロジェクトの開発と保守を担当しています。本当に検収試験を追加したいと思います。レポート受け入れテストのベストプラクティスはありますか?
現在、.netプロジェクトにいくつかのテストフレームワークを使用しているため、TDD、BDDに慣れています-ユーザーストーリーなど。レポート受け入れテストで同様のアプローチを使用している人はいますか。
一部のレポートは実行に時間がかかりますが、専用の検収試験データベースを使用している人はいますか?
SSRSでwatirのようなランナーを使用している人はいますか?
この分野の洞察は大歓迎です!
authentication - UI オートメーションを介して特定のログイン ユーザー ロールを実装する方法
Web UI 自動化 (WatiN など) を介して、ログインしているユーザー ロールの指定されたステップ (SpecFlow など) を実装する方法に問題があります。
次の機能があるとします。
この機能は、管理者ユーザー ロールを使用します。1 つの考えられるシナリオは次のとおりです。
これは単なる例です。シナリオは、ボタンやリンクをクリックして、ページ上のテキストなどを検証することで作成することもできますが、その議論には立ち入りません。
私が知りたいのは、この指定されたステップを実装する方法です。いくつかのオプションが表示されます。
- 一部の管理者としてログインするためのすべてのものを作成します(ログインページに移動し、管理者としてログインします)
- すべてのページに表示される状態の loggid を確認する (現在は ... としてログインしている)
しかし、認証メカニズムが Windows 認証 (統合セキュリティ/Active Directory) または他の環境で同様のものであり、ログイン状態が目に見える形で示されず、サイト全体のすべてのページでログインする必要がある場合はどうでしょうか?
私は何かが欠けていて、誰かが私を正しい方向に向けることができることを願っています.