バックグラウンド
チームが新しいモバイル アプリ プロジェクトを組織するのを手伝おうとしています。個々のユーザー ストーリーごとに利害関係者と開発者の間の契約を形成する平易な英語の要件を把握するために、BDD ( BDD の定義も参照)に従うことを選択しました。
受け入れテストを使用して、各ユーザー ストーリーの要件を文書化します。受け入れテストは、スプリント計画の前に作成されます。開発者は、スプリント計画中にテストを改良して追加します。
受け入れ基準をルールのリスト (例: 入力の検証、デフォルト値など) として定義し、受け入れテストを Cucumber シナリオのリストとして定義します。モバイル テストにはCalabashを使用する予定です。
受け入れ基準/テストはより機敏であり、したがって、より正式な要件文書に対するより良いソリューションだと思います。
効果的な解決策を見つけたと思いますが、他の人が要件を収集して受け入れテストを作成する方法を理解したいと思います。
問題
Cucumberコミュニティでは、命令型と宣言型のテスト ステップについて議論があります。開発者は、成果物のユーザー ストーリーがどのようなものかを知っている必要があるため、私は必須に傾いています。
UI カップリング、別名脆弱なテストが問題になるとは思いません。UI をテストから分離する方法があります (例: page objects )。また、詳細な手順を用意しても、技術に詳しくない利害関係者が理解するのが難しくなるとは思いません (Web ブラウザーやモバイル デバイスの使用方法を知らない場合を除きますが、それは別の問題です)。
「受け入れテスト」という用語を流用している可能性があります。私の使用では、受け入れテストは単体テストと同じレベルのスコープではありません。私は受け入れテストを高度な統合テストと見なしています。
例
- ゲストとして
- ログインしたい
- アプリの機能にアクセスする
命令テスト
- シナリオ: 有効なログイン
- 「ログイン」画面にいるとします
- 「email」に「email@domain.com」と入力すると
- そして、「password」に「password1」と入力します
- そして「ログイン」をタップ
- 次に、「ログイン成功」と表示されます
宣言的テスト
- シナリオ: 有効なログイン
- 有効なアカウントを持っている場合
- その後、ログインできます
これらはどちらも同じ機能をカバーでき、後者は短いですが、ユーザー名、電子メール、または facebook/twitter/google/etc アカウントでログインできるかどうかはわかりません。実際にソリューションをコーディングするだけでは十分ではありません
質問
宣言的な手順で機能の要件をどのように把握しますか?