2

TDD と BDD について非常に刺激的なトレーニングを受けた後、 と を使用して方法論を実装しようとしていMSTestますSpecflow。しかし、私がこだわっている質問があります:

取り組んでいるサブシステムを検証するための受け入れテストを作成しました。私たちのシステムは少し分散しています:

  • サードパーティのコンピュータがあります
  • 独自のアプリケーションを自由に実行
  • tcp/ip を介してアクセスしているサードパーティのデータベースを使用する

しかし、私の Specflow シナリオは、私自身の開発セットアップには特化しすぎているようです。これには、私だけに有効な入力が含まれています。以下の例では、IP アドレスは主に私からアクセスできます。ターゲットディレクトリは、つまり私のマシン上のディレクトリです。

認定されたテスター/検証者、または製品所有者は、このマシンにアクセスできないため、同じテスト シナリオを開始できない可能性があります。しかし、私の開発者の同僚もそうではないかもしれません。

@lastOne
Scenario: Get lattest 3rdParty OCR Data into specified directory
Given I indicate 'database' as the databaseName of third party computer
And I indicate '12.126.42.21' as the ipAddress of the third party computer
And I indicate 'user' as the databaseUser in third party computer
And I indicate 'c:\Temp\test_ocr\' as the destination path where to put the ocr data
And I indicate '2013020800009E' as the truck identifier to be associated with ocr data
When I call the OCR Application program
Then the destination path should contain correctly named xml file, with validated xml data, and jpg files about ocr data.

私は BDD についていくつかの誤解を持っていることを恐れています。シナリオが具体的すぎますか? はいの場合、どこで停止すればよいですか?

4

1 に答える 1

3

あなたの質問がBDD固有のものかどうかはわかりませんが、それでも良い質問です。

私は通常、すべての開発は、チェックインするたびにテストを実行する継続的インテグレーション サーバーで行うことをお勧めします。TeamCity は無料で、チェックイン時に自宅の子供用デスクトップがアイドル状態になっているため、私自身の個人的なプロジェクトでさえこれを取得します。ビルドする最新のソース コード。

しかし、それはあなたが抱えている問題も止めます。自分の個人用マシンとビルド マシンの両方で動作しないため、何かが具体的すぎる場合はすぐにわかります。これらの問題は、BDD、TDD、ATDD、またはあらゆる種類のテストで作業する場合に存在します。

上記の例を見ると、それは非常に具体的であり、非常にもろいと思います。ある日、サード パーティの PC の電源がオフになると、すべてのテストが失敗します。Specflow を使用して単体テストを実行している場合は、ほとんどのコードをモックして、テスト pc を呼び出さずにテストできるようにすることをお勧めしますが、この例は、システム/統合テストを実行しようとしているように見えます。

すべてのパラメータを個別に指定する代わりに、バンドル全体に名前を付けてみませんか

Given Im using the test pc

その後、それらの多くをバインディングに設定し、必要に応じてそれらを調整して、テストに合格することができます

[Given]
public void GivenImUsingTheTestPc()
{
  if (Environment.ComputerName == "d1234")
  {
    ipadress = 1.2.3.4;
    ....

これは明らかにもろさを動かすだけですが、少なくとも今のところは続けられます

于 2013-02-20T11:46:50.157 に答える