テストを書いています。テストとは、システムをユーザーがブラウザーやアプリを操作し結果が得られるかを確認するテストを、人が操作して確認するのではなく自動的に行うテストです。基本的には操作手順や結果の確認はプログラムまたは、独自の言語で記述します。RSpec等)に比べると大がかりになります。テストを行うには実際にサービスの動くサーバーを準備し、ブラウザーを制御する、またはブラウザー同等のソフトを使ってテストを行う上の画像のように、サーバーやブラウザーに相当する部分をツールで置き換えサーバーを起動せずにテストを行うこのように、テスト環境を構築するのに手間がかかります。いろいろなツールが登場しては消えていきました。2004年から現在も使われているツールです、ただしAPIが大きく変わったりと変化しています。テスト記述用言語ブラウザー等の操作や結果の確認は、何らなの言語で記述します。JavaScriptなどの通常のプログラミング言語(+テスト用API)自然言語に近いGherkin記法、とブラウザー等の操作を結ぶログラミング言語(CucumberではStepsと呼ばれています)独自の言語ノンプログラミング1,2が主流ではないかと思います。4.のノンプログラミングは独自のWebベースのGUIを使いテスト手順を作っていきます、またブラウザーでの操作をキャプチャーする機能がありプログラマーでない人にもテストを作れるメリットがあります。RSpecに書き換えました。サービスやアプリを記述するプログラミング言語と同じ言語を使う必要がないことです。場合は基本的にはサービスやアプリとテストは独立しているので、テストに最適なツールがサービスやアプリとテストとは別の言語でも使う事が可能です。最初はRubyで作られツールでしたが、その素晴らしい特徴からJavaやPHP等で開発している人達の間でも使われていました。