0

RoR アプリケーション mysql があり、ワークフローがあるシナリオがあります。

  • エンド ユーザーはそのワークフローに従い、ソフトウェアを登録します。
  • ソフトウェアはエンド ユーザーに対してローカルであり、エンド ユーザーのマシン上で実行されます
  • このワークフローの合間に、このソフトウェアに http リクエストを送信すると、応答が返されます
  • この握手は、レールアプリとそのソフトウェアの間で行われます
  • データベース内のいくつかのエントリを更新する
  • そして今、私はこれのためのテストケースを書かなければなりません
  • このワークフローが完了した後、
    • 適切なエントリがデータベースに追加されました
    • ワークフローが正常に実行されたかどうかを確認する
    • 加えて、握手がうまく行われたので、完全なサイクル
  • そして、ここで最善のアプローチを探しています

今のところ、ここでアプリ全体をテストする適切な方法を準備または計画していませんが、いくつかの重要なテスト ケースのみを準備しています。そして、これはこの種の最初のものです。これまでは手作業で行っていました。

今は怠け者なので、これを自動化したいので、watir を使用することを考えています。私はハンドシェイク用のソフトウェアシミュレーターを持っています。そのシミュレーターを watir で実行し、このサイクル全体をテストすることができました。

私のwatir/rbスクリプトが

  • スクリプトの実行
  • データベースのステータスを確認しています
  • ワークフローの実行
  • そのスクリプトを停止する
  • データベースのステータスを確認しています

しかし、ここに含まれるすべての Ruby/Rails ユニットには、個別に準備された独自のユニット テスト ケースがあることは明らかですが、このサイクル全体をテストすることに興味があります。

より良い提案、コメントはありますか?

4

2 に答える 2

0

ユニットおよび機能レベル、IMO でテストを行うことが重要なので、一般的なアプローチは良いと思います。

Watir、または Selenium/WebDriver は、使用するのに適したツールです。まだアプローチを考えていない場合は、Cheezy (Jeff Morgan) のpage-object gemを調べてください。Watir-webdriver と Selenium-webdriver で動作します。

データベースへのアクセスを明示的に呼び出して、適切なレコードが作成されているかどうかを確認することが気に入っています。システムが正常に動作していることを確認するために、テスト オラクルとして DB をヒットすることが非常に重要です。

于 2012-06-03T15:03:43.470 に答える
0

哲学的な議論を始めたくありませんが、あなたが考えている道をたどることは、過去に私にとって時間の無駄でした. コードを単体テスト可能な構造にリファクタリングすることに時間を費やすことを強くお勧めします。単体テストに焦点を当てることの本当に良い副作用の 1 つは、気付いているかどうかにかかわらず、単一責任の原則に従うコード ベースの作成を終了することです。

また、高レベルのテスト フレームワークの誤謬に関するこの議論をざっと読むことを検討してください。

とにかく、頑張ってください、友よ。

于 2012-06-03T15:31:18.910 に答える