web-dev-qa-db-ja.com

Behat / Mink:WebアプリケーションのGUIで文字列をテストするためのベストプラクティス

Behat/Minkを使用してWebアプリケーションの受け入れテストを作成しています。

GUIで文字列をテストするためのベストプラクティスを知りたいです。例:「ログイン」などのテキストを含むリンクを探して、ホームページにログイン画面へのリンクが存在することをテストしたいとします。

堅牢にしたい。たとえば、現時点では、リンクのテキストをシナリオにハードコーディングして、リンクの存在をテストしています。

Feature: Website Nagivation
  To use the website
  As a website visitor
  The nagivation needs to work

Scenario: Check that the login link exists on the homepage
  Given I am on "/"
  Then I should see a link labelled "Log In"

明らかに、これは本当に壊れやすいです。リンクのテキストが「サインイン」に変更されると、テストは失敗します。 (他の問題の中でも、たとえば、サイトが国際化されている場合、問題は倍増します)。

これにはどのような戦略を使用できますか?例えば:

  • データをDRYに保つ必要があるので、GUIに入力するために使用される文字列は、テストに使用される文字列と同じ場所から取得され、一意の識別子で文字列を参照しますか?
  • これをGherkin/Behat受け入れテストのライター/リーダーにとって最もユーザーフレンドリーにするにはどうすればよいでしょうか?
1
CL22

ビヘイビア駆動開発ツールを使用すると、Behatが最適になります。機能ファイルをテストではなく要件として考えてみてください。最初に要件を変更してから、システムを変更してテストに合格してください。

言語に関する質問に具体的に答えるために、多言語サイトをお持ちの場合は、シナリオの上部に「私は英国人です」のような追加の手順を追加してみてください。

編集:ただし、Behatスイートが常にUIに緊密に結合されていると、扱いにくくなる可能性があることに注意してください。大規模なシステムでは、「サービスレベル」のテストを増やし、「UI」のテストを減らすことを検討してください。参照: http://sam-burns.co.uk/108/testing-pyramid/

2
Sam Burns