توسعه رفتارمحور
تخصصی قطعه سازی پشتیبانی > مثال برای ابزارها

نمونه‌های متعددی از ابزارهای نرم‌افزاری BDD که در پروژه‌ها امروزی، برای زبانها و سیستم‌های عمل مختلف مورد استفاده هستند وجود دارد.
احتمالاً شناخته شده‌ترین آن‌ها JBehave است که توسط Dan North توسعه داده شده‌است. مثال زیر از این پروژه گرفته شده‌است:
پیاده‌سازی بازی زندگی را در نظر بگیرید. یک متخصص دامنه (یا تحلیلگر کسب و کار) ممکن است بخواهد مشخص کند که وقتی کسی تنظیمات پیکربندی اولیه خانه‌های بازی را تنظیم کند چه باید رخ دهد. برای انجام این کار، ممکن است بخواهید نمونه‌ای از تعدادی از اقداماتی که توسط فردی که خانه‌ها را سوییچ می‌کند مشخص کند. با رفتن به بخش روایت، او می‌تواند این کار را با نوشتن سناریو زیر به یک سند متن ساده (که نوعی سند ورودی است که JBehave قادر به خواندن آن است):
داریم: یک بازی ۵ در ۵
وقتی که من وضعیت خانه (۳, ۲)را تغییر می‌دهم
آنگاه جدول بازی باید وضعیت زیر را داشته باشند
.....
.....
.....
..X..
.....
وقتی که من وضعیت خانه (۳, ۱) را تغییر می‌دهم
آنگاه جدول بازی باید وضعیت زیر را داشته باشند
.....
.....
.....
..X..
..X..
وقتی که من وضعیت خانه (۳, ۲)را تغییر می‌دهم
آنگاه جدول بازی باید وضعیت زیر را داشته باشند
.....
.....
.....
.....
..X..
متن‌های با فونت پررنگ بخشی از ورودی نیست؛ بلکه در اینجا آمده‌است تا نشان دهد که کدام کلمات به عنوان زبان رسمی شناخته شده‌اند. JBehave کلمات داریم (Given) (به عنوان پیش شرطی که شروع یک سناریوی را مشخص می‌کند)، وقتی که (When) (به عنوان یک راه انداز رویداد) و آنگاه (Then) (به عنوان یک نتیجه شرط که باید به عنوان نتیجه عمل که به دنبال ماژول تأیید می‌شود، شناسایی شود). بر این اساس JBehave قادر به خواندن فایل متنی حاوی سناریو و تجزیه آن به مقادیر (یک بند تنظیم و سپس سه رویداد با شرایط قابل تأیید) می‌باشد. سپس JBehave این مقررات را می‌گیرد و آن‌ها را به کدی که قادر به تنظیم یک آزمون و پاسخ به فراخوانندگان رویداد و تأیید نتیجه است ارسال می‌کند. این کد باید توسط تیم توسعه دهندگان پروژه نوشته شود (در زبان جاوا به دلیل اینکه پلت فرم JBehave بر اساس زبان جاوا می‌باشد). در این مورد، کد مورد نظر ممکن است مشابه کد زیر باشد:
کد برای هر نوع عبارتی در یک سناریو یک روش دارد. JBehaveJBehave مشخص می‌کند که کدام روش با کدام عبارت، از چه کاربردی از حاشیه نویسی استفاده کند و هر متد را در هنگام اجرا از طریق سناریو فراخوانی کند .انتظار می‌رود متن هر عبارت سناریو با قالب متن داده شده در کد برای آن بند مطابقت داشته باشد (برای مثال، انتظار می‌رود که در یک سناریو عبارت داریم (Given) با یک جمله از فرم "یک بازی X در Y" دنبال شود). JBehave از تطبیق عبارات به قالب‌ها پشتیبانی می‌کند و دارای پشتیبانی داخلی برای درآوردن الفاظ از قالب و انتقال آن‌ها به عنوان پارامتر به متدها در کد آزمون می‌باشد. کد تست برای هر نوع بند در یک سناریو یک نوع پیاده‌سازی فراهم می‌کند که با کد مورد آزمایش تعامل می‌کند و بر اساس سناریو تست انجام می‌دهد. در این مورد:
دستورtheGameIsRunning با تنظیم شبکه بازی اولیه به یک عبارت داریم (Given) واکنش نشان می‌دهد.
دستورiToggleTheCellAt در پاسخ به عبارت وقتی که (When) رویداد تغیر وضعیت توصیف شده در جمله را فراخوانی می‌کند.
متدtheGridShouldLookLike با مقایسه وضعیت خانه‌های بازی به وضعیت مورد انتظار از سناریو واکنش نشان می‌دهد.
عملکرد اصلی این کد ایجاد پلی بین یک فایل متنی با یک داستان و کد مورد آزمایش است. توجه داشته باشید که کد آزمون دارای دسترسی به کد مورد آزمایش (در این مورد یک نمونه از بازی) است و در طبیعت بسیار ساده است. کد آزمون باید ساده باشد، در غیر این صورت یک توسعه دهنده مجبور به نوشتن آزمون برای آزمایشهایش خواهد بود.
در نهایت، برای اجرای آزمون، JBehave به برخی از برنامه‌های رابطی نیاز دارد که فایل‌های متنی را که حاوی سناریو هستند و وابستگی‌ها (مانند موارد بازیGame)را به کد آزمون تزریق می‌کند، شناسایی کند .این کد رابط در اینجا نشان داده نمی‌شود، زیرا یک نیاز فنی JBehave است و مستقیماً به اصل تست ت.ر.م مربوط نمی‌شود.