2017-04-05 13 views
4

私はSpecflowとBDDの巨大なファンです。それは私のために様々なプロジェクトで素晴らしい仕事をしました。フィーチャーファイルを整理する最良の方法は何ですか?

私がまだ解決していない1つの課題は、フィーチャーファイルとシナリオをある方法で整理することで、ナビゲートや探索が容易になります。一年後に他の誰かが来て、そのシステムについて学びたいと考えています。どこから始めれば?最も重要なことは、それほど重要でないことは何ですか?フィーチャ間の関係は何ですか?システムは特定のシナリオを処理しますか?著者はこの問題について考えましたか?

誰かが、それに焦点を当てたいくつかのテクニック、読み取り、またはツールを共有できますか?

答えて

5

この質問は本当に個人的な好みですが、私の答えは私のディレクトリをわかりやすくする方法です。

私が取り組んでいるプロジェクトでは、このような問題についてかなり考えなければなりませんでした。私は後でラインを知っている、他の人がキュウリのディレクトリを介してより多くを追加するか、バグ修正の様々な部分を見ていきます。

一般的に言って、私たちは(私は例として、私たちのCucumberJS構造を使用します)このアプローチをとっている:

project 
| features 
| | elements 
| | | pages 
| | | | home.js 
| | | | index.js // grab all of the things in the pages directory 
| | | | search.js 
| | | index.js // grab everything in elements directory and the index of pages 
| | | urls.js 
| | | test_customers.js 
| | feature_files 
| | | home 
| | | | homepage_links.feature 
| | | | homepage_accessibility.feature 
| | | | homepage_check_welsh_translation.feature 
| | | search 
| | | | search.feature 
| | | | search_security.feature 
| | step_definitions 
| | | common // Won't go into this, but we have a library of reusable steps and functions in here for different projects that we can just port over from git 
| | | project 
| | | | pages 
| | | | | search 
| | | | | | search_steps.js 
| | | | | | search_security_steps.js 
| | | | | home 
| | | | | | home_steps.js 
| | | | | | home_accessibility_steps.js 
| | | | navigation_steps.js 
| | | | login_steps.js 
| | support 
| | | env.js // Timeouts 
| | | hooks.js // Setup/Teardown for scenarios 
| | | world.js // Setting up the drivers 
| reports 
| | 2017 
| | | 03 
| | | | 05 
| | | | | report.html 
| | | | | report.js 
| | | | 06 
| | | | | report.html 
| | | | | report.js 
| | | | 07 
| | | | | report.html 
| | | | | report.js 
| | report.json 
| screenshots 
| | failed 
| | | 2017-03-05 
| | | | search_security_xss_204057.png 
| | | 2017-03-06 
| | | | search_security_xss_100532.png 
| | | | search_security_xss_101054.png 
| | | | search_security_xss_101615.png 
| | search_security 
| | | 2017-03-06 
| | | | search_security_xss_100528.png 
| | | | search_security_xss_101050.png 
| | | | search_security_xss_101611.png 
| | | | search_security_xss_101841.png 
| .gitignore 
| README.md   

あなたはシナリオが持っているものを知りたいので、あなたは、プロジェクトに新しいしていると言います書かれている。 これはフィーチャーセットの一部なので、フィーチャーファイルを探しているため、そのルートを下ります。あなたはセキュリティが検索機能のためにどのようにテストされたかに興味があるので、そこに入り、ファイルを探します。

これは、フォルダ構造の残りの部分でも同じです。すべてが正確にあなたがそれが期待される場所です。

+1

カイルさん、ありがとう、とても助かります。だからあなたはフォルダ構造と機能の故障に多くの思考と規律を入れて注文を達成する。機能とステップは、ソフトウェアコンポーネントの構造と整合します。機能ファイルは、それらが保持するシナリオに共通の特定の側面によって分解される。ステップ定義は、フィーチャー・ファイル名に従ってファイルにグループ化されます。これをすべて同期させていくためには、ある種の規律が必要だと思いますか?私はリファクタリングの一環として同じことを試みます。 – Pasho

+0

それは規律を必要としますが、チームのメンバーはディレクトリの周りを操縦することがいかに簡単かを認識します。 また、私たちはスイートをGNOME正規表現ではなくJS ObjectsとCucumber Expressionsを使用してできるだけ人間が読めるようにしています。 C#の同等の要素は、[下線](http://specflow.org/documentation/Step-Definition-Styles/)および[ExpandoObjects](http://stackoverflow.com/questions/6625907/javascript-var-obj- new-object-in-c-sharp)を使用します。人間の読みやすさは、新しいスターターと経験したプロジェクトとの間のギャップを少なくするので、釘付けには大変です。 –

+0

また、新しいファイルを追加する必要がない場合もあります。私の例では、 'homepage_check_welsh_translation.feature'を見ることができますが、ウェールズの翻訳ステップはありません。これは実際にはかなり起こります。この場合、私は 'home_steps.js'で書いたステップをウェールズの翻訳でうまく動作させることができますが、技術的に2つの異なる機能であるため、フィーチャーファイルを分離します。 ウェールズ語の翻訳にしか使用していない新しいステップを追加したい場合、その場合は新しいステップファイルを作成します。 –

関連する問題