—d1142

برای درک اینکه زبان برنامه‌نویسی گرا چیست، ابتدا برنامهنویسیهای اصلی امروزی بررسی خواهند شد. میتوان گفت این زبانها به طور تقریبی مراحل زیر را طی میکنند:
فکر: یک برنامه باید نوشته شود، بنابراین باید یک مدل مفهومی در ذهن برنامهنویس در مورد چگونگی حل مشکل تشکیل شود.
انتخاب کردن: برنامهنویس تعدادی از زبانهای همه منظوره را برای نوشتن راه حل انتخاب میکند (مانند جاوا یا C + +).
نوشتن: برنامهنویس راه حل را با انجام یک نگاشت دشوار از مدل مفهومی خود به زبان برنامهنویسی می‌نویسد.
گام برنامهنویسی گلوگاه است زیرا در بسیاری از موارد نگاشت کاری آسان یا طبیعی نیست ( REF _Ref375943816 h شکل ).
شکل 2-1: برنامه‌نویسی جریان اصلی با یک زبان همه‌منظوره [2]روش ذکرشده برای برنامهنویسان در بیان برنامههای پیچیده، روشی کارا نیست و این امر ثابت شده است. در مقابل، برنامهنویسی زبان گرا به این‌گونه کار میکند:
فکر: یک برنامه باید نوشته شود، بنابراین برنامهنویس باید یک مدل مفهومی در ذهن خود در مورد چگونگی حل مشکل شکل دهد.
انتخاب کردن: برنامهنویس تعدادی از زبانهای خاص دامنه را برای نوشتن راه حل انتخاب میکند.
ایجاد: اگر هیچ زبان خاص دامنه مناسبی برای مسئله‌ی وجود نداشت، برنامهنویس زبانی ایجاد میکند که مناسب باشد.
برنامه‌نویسی: با انجام یک نگاشت نسبتاً مستقیم از مدل مفهومی خود به زبانهای خاص دامنه، راه حل را مینویسد.
در حال حاضر، گام برنامهنویسی بسیار کمتر از این است که یک تنگنا باشد چرا که زبانهای خاص دامنه، ترجمهی مسئله به چیزی که برای رایانه قابل‌درک باشد را بسیار سادهتر میکنند ( REF _Ref375943965 h شکل ). ممکن است این‌گونه به نظر برسد که مشکل فقط به «مرحلهی ایجاد» منتقل شده است، اما ترکیبی از ابزارهای پشتیبانی و استفاده از برنامه‌نویسی زبان گرا این مرحله را بسیار آسانتر میکنند.
شکل 2-2: برنامه‌نویسی زبان گرا با زبان خاص دامنه [2]هدف برنامهنویسی زبان گرا این است که باید بتوان بر حسب مفاهیم و تصاویر ذهنی، روی مسئله کارکرد به جای اجبار در ترجمه ایدهها و مفاهیمی که یک زبان همه منظوره قادر به فهم آنها باشد; به عنوان مثال کلاسها، روشها، حلقهها، شرطی و غیره. برای رسیدن به این هدف، به استفاده از زبانهای خاص دامنه نیاز است و آنها باید ایجاد شوند.
2-4 برنامه در برنامه‌نویسی زبان گراامروزه، اکثر برنامهنویسان فکر میکنند برنامهنویسی یعنی نوشتن مجموعهای از دستورالعمل‌ها برای رایانه دنبال شوند. اینگونه آموزش داده شده است که رایانه‌ها بعد از ماشین تورینگ مدلسازی شدند و بنابراین آن‌ها بر حسب مجموعهای از دستورالعملها فکر میکنند؛ اما این دیدگاه برنامهنویسی ناقص است. این معنی برنامهنویسی هدف‌دار را دچار سردرگمی میکند.
زمانی که یک مسئله باید حل شود، برنامهنویس در سر خود در مورد راه حل فکر میکند. این راه حل در واژهها، تصورات، مفاهیم، ​​افکار و یا هر چیز دیگری نشان داده شده است. این یک مدل است در سر برنامهنویس که چگونه این مسئله باید حل شود. او تقریباً هرگز در مورد آن به عنوان یک مجموعهای از دستورالعملها فکر نمیکند، بلکه به آنها به چشم مجموعهای از مفاهیم وابسته به هم نگاه میکند که مخصوص دامنهای هستند که در آن کار میکند. برای مثال، اگر در دامنه رابط کاربری گرافیکی فکر میکند، به اینگونه میاندیشد که «من میخواهم این دکمه به اینجا برود، این فیلد به اینجا برود و این جعبهی صفحه خالی باید یک لیست از برخی از دادهها را در خود داشته باشد.» حتی ممکن است آن را در ذهن خود بدون هیچ‌گونه کلمهای به تصویر بکشد.
این مدل ذهنی یک راه حل است زیرا میتواند این مدل را برای یک برنامهنویس دیگر با جزئیات کافی توضیح دهد به طوری که برنامهنویس دیگر میتواند با آن یک برنامه بنویسد (به عنوان مثال در جاوا) که این برنامه مسئله را حل خواهد کرد و نیازی ندارد که راه حل را بر حسب یک زبان برنامهنویسی توضیح دهد، برنامه میتواند تقریباً در هر شکلی توضیح داده شود. برای اینکه توضیح دهد که چگونه یک فرم گرافیکی را ذخیره کند، فقط فرم را ترسیم میکند. به عنوان مثال، اگر این طراحی به اندازه کافی جزئیات را گفته باشد، بنابراین طراحی به خودی خود نشان‌دهنده راه حل است. برنامه باید چنین بازنماییهای خاص دامنهای باشد؛ به عبارت دیگر، باید یک روش باشد که به برنامهنویس اجازه دهد تا از این بازنمایی به عنوان یک برنامهی واقعی استفاده کند، نه فقط به عنوان یک راه برقراری ارتباط با دیگر برنامه‌نویسان؛ بنابراین این منجر به تعریف غیررسمی از برنامه میشود: برنامه هر گونه راه حل بدون ابهام یک مشکل است. یا به بیان دقیق تر: برنامه هر مدل تعریف‌شده‌ی دقیق از یک راه حل برای بعضی از مسائل در برخی از دامنههاست که با استفاده از مفاهیم دامنه بیان شده است.
این است دلیل اصلی که برنامهنویسان باید این آزادی را داشته باشند تا زبان خود را به گونهای ایجاد کنند که بتوانند راه‌حل‌ها را در اشکال طبیعی بیشتری بیان کنند. زبانهای همه منظوره بدون ابهام هستند، اما بیش از حد طولانیاند و گزافهگویی دارند و همچنین مستعد خطا هستند. زبان طبیعی (به عنوان مثال انگلیسی) بسیار غنی است، اما در حال حاضر بیش از حد دشوار است چرا که بسیار غیررسمی و مبهم است.
باید به راحتی بتوان اقدام به ایجاد زبانهای خاص دامنه رسمی و با تعریف دقیق کرد؛ بنابراین زبان برنامه‌نویسی گرا نه فقط برای نوشتن برنامههاست، بلکه زبانی را نیز ایجاد میکند که با آن بتوان برنامهها را نوشت؛ بنابراین برنامهها نزدیکتر به دامنهی مسئله نوشته خواهد شد به جای دامنهی مجموعهای از دستورالعملهای رایانه و به گونهای که نوشتن آنها بسیار ساده‌تر باشد.
همه این ایده را دارند که یک برنامه به عنوان یک متن ذخیره شده است، یعنی یک جریان از کاراکترها. پس از همهی اینها، ابزارهای بیشماری برای ویرایش، نمایش و دست‌کاری متن وجود دارد. امروزه بخشهای مرکزی زبانهای برنامهنویسی دستور زبان، تجزیه کنندهها، مترجم‌ها و اشکالزداهای خط گرا هستند؛ اما متن برنامه فقط یک نماینده از این برنامه است. برنامهها متن نیستند. اگر برنامهها وادار شوند که متن باشند، مشکلات بسیاری به وجود خواهد آمد که همگان ممکن است حتی از آن آگاه نباشند چرا که به راههای مختلف برای ذخیره و کار با برنامهها نیازاست.
هنگامی که یک مترجم کد منبع را ترجمه میکند، متن را به یک ساختار درخت مانند گراف تجزیه میکند که «درخت نحوی انتزاعی» نامیده میشود. برنامهنویسان در هنگام خواندن کد منبع، اساساً همان عملیات ذهنی را انجام میدهند. هنوز باید در مورد ساختار درخت گونه‌ی برنامه فکر کنند. به همین دلیل است که کروشه و پرانتز و مانند آنها وجود دارند. همچنین به همین دلیل است که نیاز به قالب و تو رفتگی کد و دنبال کردن قراردادهای برنامهنویسی دارند، چرا که این کار خواندن کد منبع را آسان تر میکند. آنها متوسل به ذخیرهسازی متن میشوند به این دلیل که در حال حاضر، راه جهانی و راحت برای خواندن و ویرایش برنامهها با یک ویرایشگر متن است؛ اما باز هم هزینهای پرداخت میشود چرا که نمایشدهندههای متن برنامهها دارای اشکالات بزرگاند، مهم‌ترین آنها این است که گسترش زبانهای برنامهنویسی مبتنی بر متن بسیار دشوار است. اگر برنامهها به صورت متن ذخیره شوند، برنامهنویس نیاز به یک دستور زبان بدون ابهام دارد تا بتواند این برنامه را تجزیه کند. از آنجا که ویژگیها به زبان اضافه‌شده‌اند، ایجاد گسترشهای جدید در برنامه به گونهای که زبان مبهم نشود، کار بسیار دشواری است. نیاز است انواع بیشتری از کروشه‌ها، عملگرها، کلمات کلیدی، قواعد سفارش، تودرتو و غیره اختراع شود. طراحان زبان مقادیر زیادی از زمان خود را صرف تفکر در مورد نحو متن کرده و تلاش میکنند راه‌های جدیدی برای گسترش آن پیدا کنند.
اگر میخواهیم ایجاد زبان را ساده سازیم، باید نمایش و ذخیرهی برنامه، از خود برنامه جدا شود. باید برنامه به طور مستقیم به عنوان یک گراف ساختار ذخیره شود، این کار اجازه میدهد هرگونه گسترشی که نیاز است در برنامه ایجاد شود. گاهی اوقات، حتی به کل نیازی به در نظر گرفتن ذخیره‌سازی متن وجود ندارد. امروزه یک مثال خوب، یک صفحه گسترده اکسل است. اکثر مردم به طور کلی نیاز ندارد با قالب ذخیره‌شده سروکار داشته باشند، در آنجا همیشه زمانی که یک فرضیه مطرح میشود ویژگیهای ورودی و خروجی وجود دارد. تنها دلیل واقعی که امروزه از متن استفاده میشود این است که هیچ ویرایشگری که بهتر از ویرایشگرهای متنی باشد وجود ندارد؛ اما میتوان این را تغییر داد.
مشکل این است که ویرایشگرهای متنی هوشمند نیستند و نمیدانند که چگونه با ساختار اساسی گراف برنامه کار کنند؛ اما با ابزار مناسب، ویرایشگر میتواند به طور مستقیم با ساختار گراف کار کند و به برنامهنویس آزادی استفاده از هر گونه نمایش مجازی که میخواهد را بدهد. میتوان برنامه را به عنوان متن، جداول، نمودارها، درختان، یا هر چیز دیگری ارائه داد. حتی میتوان از نمایشهای مختلف برای مقاصد مختلف استفاده کرد، به عنوان مثال یک نمایش گرافیکی برای مشاهده و یک نمایش متنی برای ویرایش. میتوان از نمایشهای خاص دامنه برای بخشهای مختلف کد استفاده کرد، به عنوان مثال نمادهای ریاضی گرافیکی برای فرمولهای ریاضی، نمودار گرافیکی برای نمودار، ردیفها و ستونها برای صفحات گسترده و غیره. میتوان از مناسبترین نمایش برای دامنه مسئله استفاده کرد که ممکن است متن باشد، اما به متن محدود نمیشود. بهترین نمایش بستگی به این دارد که برنامهنویس چگونه در مورد دامنه مسئله فکر میکند. این انعطافپذیری در نمایشها، این زمینه را فراهم میآورد تا ویرایشگرها قویتر از همیشه شوند، چرا که نمایشهای مختلف میتوانند راههای تخصصی برای ویرایش داشته باشند [2].
2-5 زبان‌های خاص دامنهزبان‌های خاص دامنه بنا به تعریف به زبان‌هایی گفته می‌شود که حیطه خاصی از محاسبات را هدف گرفته‌اند. این زبان‌ها اگر به درستی انتخاب و به‌کاربرده شوند، می‌توانند در حوزه کاربردی خود، کدهای پیچیدهی زبان‌های دیگر را به کدهای ساده و خوانا تبدیل کرده، ارتباط مؤثرتر با مشتریان را فراهم کرده، بهره‌وری را بالاتر برده و گلوگاه‌های فرآیند کد نویسی را از بین ببرند. این زبان‌ها معمولاً کوچک هستند و بر جنبه خاصی از یک سیستم نرم‌افزاری متمرکزشده‌اند. با این زبان‌ها نمی‌توان یک برنامه کامل نوشت، بلکه معمولاً در یک سیستم نرم‌افزاری که خودش با یک زبان همه منظوره نوشته شده است، از چندین زبان خاص دامنه استفاده می‌شود (تفکر برنامه‌نویسی زبان گرا) [6].
برای کارشناسان دامنه سادهتر است که از زبانهای خاص دامنه استفاده کنند تا از زبانهای خصوصیات رسمی، همچنین دقت بالاتر در زبانهای خاص دامنه نسبت به زبان‌های طبیعی، ساخت ابزار را برای آن آسان تر می‌کند و این ساده شدن به کمک محدود کردن زبانهای خاص دامنه به دامنهی خط محصول نرم‌افزار در حال توسعه به دست آمده است [7].
به رغم این‌که مدت مدیدی از پدیدار شدن زبانهای خاص دامنه می‌گذرد، اما فقدان دانش برنامه‌نویسی با این زبان‌ها مانع بزرگی در توسعه و فراگیری آن‌ها است و به همان میزان در کاهش سرعت و بهره‌وری پروژه‌های خاص نرم‌افزاری مؤثر است. معمولاً بر استفاده از زبانهای خاص دامنه به عنوان لایه‌ای روی یک کتابخانه معمولی تأکید فراوانی شده است. به این ترتیب، برنامه‌نویس این دو مورد را باهم پیش برده و روش‌هایی را نیز در زمینه تولید کد یاد خواهد گرفت [8].
در بسیاری از زبانهای خاص دامنه برای رسیدن به درک آن‌ها نیاز به مهارتهای برنامهنویسی است و توسط متخصصین حرفه‌ای فناوری اطلاعات و نرم‌افزار در کارهای روزانه، ساختار و سیستمهای حفظ و مدیریت استفاده میشود. آن‌ها برای یک جنبه فنی ویژه از توسعه سیستم خاص هستند؛ بنابراین حوزهی CSS به عنوان یک زبان خاص دامنه و به طور کلی توسعهی وب و به خصوص سبک نگارش و طرحبندی است. بسیاری از توسعهدهندگان وب از یک پس زمینه طراحی گرافیکی شروع و تبدیل به متخصصینی به عنوان کد نویسان HTML، CSS و جاوا اسکریپت میشوند، تنها به این دلیل که این کار به آن‌ها کنترل ریزدانه‌ی بهتری در فرایند طراحی میدهد. بسیاری از طراحان گرافیک، به همین دلیل، در نهایت خود را به گونهای در مییابند که برای بهتر شدن کد از ابزارهای گرافیکی مانند دریمویور اجتناب میکنند. هدف در زندگی این نیست که همه به یک کد نویس تبدیل شوند. با اینکه بسیاری از زبانهای خاص دامنه در قلمرو برنامهنویس باقی میمانند، موارد بسیاری وجود دارند که در آن یک زبان خاص دامنه که به خوبی طراحی‌شده، میتواند با سایر کسانی که در فرایند توسعه سهم دارند، به غیر از توسعه‌دهندگان حرفهای استفاده شود. در برخی موارد، زبانهای خاص دامنه میتوانند آنهایی که در فرایند توسعه سهم دارند را قادر سازند باعث به وجود آمدن قسمتهایی از سیستم شوند به گونه‌ای که این قسمتها را قادر سازند که خودشان، خود را کد نویسی کنند. در موارد دیگر، زبان خاص دامنه میتواند یک نمایش از سیستم شود که به اشتراک گذاشته شده است. اگر هدف یک زبان خاص دامنه ویژه، پیاده‌سازی قوانین کسب‌وکار است، به صورت ایدهآل، آن زبان خاص دامنه باید قانون کسب‌وکار را به گونه‌ای بیان کند که هم ذینفعان کسب‌وکار که آن را مشخص کرده‌اند و هم برنامهنویسی که آن را نوشته است وقتی آن را میخوانند به طور واضح آن را درک کنند [9].
در اصل، زبان خاص دامنه یک نام جدید برای چیزی است که ما هر روز در زندگی برنامهنویسی حرفه‌ای خود از آن استفاده میکنیم. برنامههای کاربردی زیادی وجود ندارند که بتوانند به طور کامل در یک زبان همه منظوره واحد نوشته شوند. به این ترتیب ما همه‌روزه مصرف‌کنندگان تعداد زیادی از زبانهای خاص دامنه مختلف هستیم که هر کدام از آنها مختص یک هدف خاص است. اصطلاح زبان خاص دامنه فقط چند سال است که وجود دارد. این اصطلاح یک زبان برنامهنویسی را توصیف میکند که مختص یک دامنهی مسئله‌ی خاص است. زبانهای خاص دامنه مدت زمان زیادی است که در اطراف ما هستند. یکی از ویژگیهای هیجان‌انگیز یونیکس همیشه زبانهای مینی آن بوده است. زبانهای خاص دامنه شامل مجموعهای غنی از زبانهای حروف‌چینی (troff, eqn, pic)، ابزارهای shell(awk, sed and so on) و ابزارهای توسعه نرمافزار (make, yacc, lex) میشوند. [10]
2-5-1 طراحی و پیاده‌سازی زبان خاص دامنهزبانهای خاص دامنه اشکال مختلفی دارند. برخی از زبانهای خاص دامنه، مانند مینی زبان‌های یونیکس (sed awk, troff)، ساختاری نحوی دارند که برای آن زبان خاص، یکتا است. برای اجرای چنین زبانهای خاص دامنهای، باید قادر به تجزیه این ترکیب نحوی به چیزی غیر از فایلهای متنی بود که حاوی کد منبع آن زبان خاص باشد تا بتوان زبان خاص دامنه خود را در این سبک (که شامل پیادهسازی یک مترجم کوچک است که از lexing و ابزار تجزیه مانند LEX، YACC و یا antlr استفاده میکند)، پیادهسازی کرد [5].
نوشتن مترجم یک مهارت خاص است که خارج از مجموعه مهارتهای اکثر گروههای توسعه نرم‌افزار است. نوشتن تجزیه کننده‌ای اختصاصی و یا مترجم دستور زبان، نیازمند تلاش قابل‌توجهی است، مگر اینکه زبان خاص دامنه بخواهد به صورت کلی استفاده شود که این فراتر از محدودهی بسیاری از زبانهای خاص دامنه خاص برنامه است.
بسیاری از زبانهای خاص دامنه که استفاده میشوند، در زبانهای دیگر جاسازی‌شده‌اند. نمونهی آن اکثر اسکریپتهای پیکربندی XML در پلت فرم جاواست. این مینی زبانهای خاص دامنه بر پشت نحو XML سوار شدهاند و به صورت اختیاری میتوانند از یک تعریف شِما برای تعریف نحو خاص خودشان استفاده کنند.
2-5-2 انواع زبان‌های خاص دامنهزبانهای خاص دامنه به سه دسته اصلی تقسیم میشوند: زبانهای خاص دامنه خارجی، زبانهای خاص دامنه داخلی و میز کار زبان: [6]
زبان خاص دامنه خارجی، یک زبان جدا از زبان اصلی برنامهی کاربردی است که برنامه با آن کار میکند و معمولاً یک نحو سفارشی دارد، اما استفاده از نحو یک زبان دیگر نیز رایج است (XML انتخابی مکرر است). یک اسکریپت، زبان خاص دامنه خارجی است که معمولاً توسط یک کد در برنامهی میزبان بررسی و تفسیر خواهد شد (با استفاده از فنون تجزیه متن). سنت یونیکس با زبانهای کوچک، مطابق با این سبک است. نمونههایی از زبانهای خاص دامنه خارجی عبارت‌اند از عبارات منظم، SQL، AWK و فایلهای پیکربندیXML برای سیستمهایی مانندStruts و هایبرنیت.
زبان خاص دامنه داخلی روشی خاص برای استفاده از یک زبان همه منظوره است. یک اسکریپت در یک زبان خاص دامنه داخلی، کدی معتبر در زبان همه منظورهی خود است، اما تنها از یک زیرمجموعه از ویژگیهای این زبان در یک سبک خاص استفاده میکند که جنبهی کوچکی از سیستم کلی را لمس میکند. نتیجه باید به جای اینکه زبان میزبان خود را نشان دهد، احساس یک زبان سفارشی را بدهد. مثال کلاسیک این سبک، لیسپ است. برنامهنویسان لیسپ اغلب از این برنامهنویسی به عنوان ایجاد و استفاده از زبانهای خاص دامنه یاد میکنند. روبی نیز فرهنگی قوی برای زبان خاص دامنه دارد. بسیاری از کتابخانههای روبی به سبک زبانهای خاص دامنه هستند. به طور خاص، معروف‌ترین چارچوب روبی، یعنی ریلز، اغلب به عنوان مجموعهای از زبانهای خاص دامنه دیده میشود.
میز کار زبان یک محیط توسعه یکپارچه تخصصی برای تعریف و ایجاد زبانهای خاص دامنه میباشد. به طور خاص، یک میز کار زبان فقط برای تعیین ساختار یک زبان خاص دامنه استفاده نمیشود بلکه به عنوان یک محیط ویرایش سفارشی برای مردم استفاده میشود که اسکریپتهای زبانهای خاص دامنه را بنویسند. اسکریپتهای به دست آمده محیط ویرایش و زبان را صمیمانه باهم ترکیب میکنند [6].
هنگامی که صحبت از زبانهای خاص دامنه باشد، تصور میشود ساخت زبان خاص دامنه کاری دشوار است. در واقع، معمولاً کار سخت، ساخت مدل است. زبانهای خاص دامنه پس از آن فقط در بالای آن لایهبندی میشوند. هنوز تلاش لازم است تا زبان خاص دامنهای به دست آورد که خوب کار کند، اما این تلاش معمولاً از تلاشی که برای ساخت مدل اساسی میشود بسیار کمتر است. [11]
به طور کلی به زبانهای خاص دامنه به این صورت اشاره شد که آنهایی که با نحو منحصربه‌فرد خود پیاده‌سازی شدهاند، به عنوان زبانهای خاص دامنه خارجی معرفی میشوند و زبانهای خاص دامنه که در نحو یک زبان میزبان پیادهسازی شدهاند، جاسازی‌شده، و یا زبانهای خاص دامنه داخلی هستند. در حالت ایده آل، هر زمان یک زبان خاص دامنه جدید ساخته شد، بهترین چیز میتواند این باشد که به آن نحو یکتا و فردی خودش داده شود؛ بنابراین می‌توان ساختارهای زبانی تعریف کرد که هم با دامنه مسئله طراحی‌شده‌اند و هم با مخاطبان هدف در ذهن [5].
اگر کاربری که برای زبان خاص دامنه در نظر گرفته شده است، غیر برنامه‌نویس باشد، توسعهی یک نحو بر پایهی XML میتواند مشکل‌ساز باشد. XML در باز و بسته شدن و درست خاتمه دادن به برچسبها دارای قوانین خاص خود است که برای هر کس به جز یک برنامهنویس، محرمانه به نظر میرسد. در هنگام کار با زبانهای خاص دامنه که جاسازی‌شده/داخلی در زبان دیگر هستند، یک محدودیت طبیعی وجود دارد. یک زبان خاص دامنه مبتنی برXML نمیتواند کمک کند که شبیه به XML باشد.
با توجه به محدودیتهای زبان میزبان، زبانهای خاص دامنه جاسازی‌شده/داخلی، هرگز به اندازهای که یک زبان خاص دامنه خارجی سفارشی آزاد است، آزاد نخواهند بود. خوشبختانه، زبانهای خاص دامنه مبتنی بر گرووی، قادرند در قالبی ساختار دهی شوند که برای انسان خواناتر است. با این حال، آن‌ها همیشه نیاز دارند تا از نحوی که به خوبی شکل گرفته است، استفاده کنند و همیشه در هنگام طراحی زبانهای خاص دامنه مبتنی بر گرووی که برای مخاطبانتان قابل خواندن هستند، وضعیت رو به مصالحه پیش میرود.
با استفاده از برنامهنویسی زبان گرا، هدف باید ساخت زبانهای خاص دامنهای باشد که میتوانند توسط همهی ذینفعان خوانده و درک شوند. به این ترتیب، این زبانهای خاص دامنه باید تبدیل به خصوصیات به اشتراک گذاشتهی زندگی سیستم شوند، حتی اگر در پایان آنها ضرورتاً باید توسط یک برنامهنویس با درک فنی زبانهای خاص دامنه نوشته شوند.
با اینکه زبانهای خاص دامنه، بسیاری از چالشهای فعلی توسعه نرم افزار را حل میکنند، ادبیات مربوطه ادعا میکند که زبانهای خاص دامنه معمولاً یک ایراد دارند و آن تلاشهای بالای مورد نیاز برای پیادهسازی و استفاده از آنهاست. با این حال، زبانهای خاص دامنه داخلی با تلاش کمتری توسعه مییابند، چرا که بر روی یک زبان برنامه نویسی موجود ساخته شده و میتوانند از تمام زیرساختهای زبان که شامل مفسر، کامپایلر، و یا مترجم میشود، استفاده کنند. [12]
2-6 گرووی، زبان میزبانجاوا و پلت فرم جاوا با همهی چارچوب‌ها و کتابخانه‌های آن، در حال حاضر به یک جهان همه‌جانبه برای توسعه‌دهنده نرم‌افزار تبدیل شده است. ماشین مجازی جاوا بر روی همه چیز قابل‌اجراست، از بزرگ‌ترین پردازنده مرکزی گرفته تا کوچک‌ترین ریزتراشه و هر برنامهی کاربردی قابل تصوری را پشتیبانی میکند. برای اولین بار وسعت کل حوزه نرم‌افزار، از بازی‌های تلفن همراه بر روی تلفن گرفته تا مأموریت برنامههای سازمانی حیاتی، توسط این پلت فرم زبان پشتیبانی میشوند.
تاکنون، زبان برنامه‌نویسی جاوا جایگاه خود را به عنوان زبان برنامه‌نویسی استاندارد پلت فرم جاوا، به دست آورده است. این زبان به مدت تقریباً نه سال،  نیازهای برنامه‌نویسان را به بهترین شکل ممکن برطرف کرده است، اما جاوا نمی‌تواند و نباید تمام نیازهای همه گروه‌های برنامه‌نویسان را که پروژه‌ها و اهداف متفاوتی را دنبال می‌کنند برآورده سازد. چرا که زبانی با این مشخصات بخش بزرگی از قابلیت‌های خود را به نفع پاسخ‌گویی به همه کاربران از دست می‌دهد و تضعیف می‌شود. زبان جاوا مانند زبانهای‌C++‌ ، ‌C#، به شدت ساخت یافته است. این نوع زبان‌ها که گاه زبان‌های قراردادی نامیده می‌شوند، برای حل بسیاری از مسایل مناسب هستند اما پاسخگوی  همه مشکلات نیستند. زبان‌های قراردادی بسیار نکته‌سنج و خرده‌گیر هستند به این معنی که کوچک‌ترین اشکال در نوشتن برنامه، ترجمه کردن کد را ناممکن می‌سازد. اگرچه این دقت بیش از حد،  نتیجه اجرای کد را قابل پیش‌بینی می‌سازد، اما از سوی دیگر از سرعت کار برنامه‌نویس می‌کاهد.‌
در هنگام توسعه با جاوا، به خاطر در دسترس بودن کتابخانهها و یا چارچوبها هرگز محدودیتی وجود ندارد. مسلماً تنها محدودیتی که باقی میماند خود زبان است؛ مانند تمام زبانهای شیءگرای سنتی، حتی جاوا نیاز به حجم زیادی متن استاندارد و تنظیم صحنه در هنگام برنامهنویسی دارد. در جاوا، به عنوان یک زبان همه منظوره، هیچ مسئله‌ای وجود ندارد که نتوان یک راه حل برای آن کد کرد. گاهی اوقات، با این حال، بهتر است راهحل در شکل کوتاهتری از کد بیان شود که توسط زبانهای پویایی مانند روبی و پایتون پشتیبانی میشود [5].
با آمدن این زبانها و بعدها زبانهای اسکریپتی پویا یا دینامیک (دینامیک معنی گستردهای دارد، به شکل خلاصه میتوان گفت توانایی گسترش نحو و یا پشتیبانی یک فناوری در سطح زبان نه رابط برنامه کاربردی و یا نوع دهی خودکار) مثل روبی نیاز به افزوده شدن امکانات جدید به دستور زبان جاوا هر روز بیشتر و بیشتر احساس میشود. مخصوصاً اینکه رقیب تجاری جاوا یعنی .Net با پشتیبانی از تعدادی زبان برنامهنویسی برای پلت فرم آن، در برنامهنویسها ایجاد کشش میکند. همان طور که اشاره شد اضافه کردن موارد جدید به جاوا مثل چیزهایی که در C یا C ++ و یا روبی و غیره هست با فلسفه وجودی جاوا سازگار نیست [13].
اکنون زمان آن رسیده است که پلت فرم جاوا یک زبان سریع را برای پیشبرد اهداف خود به کار گیرد. جواب جاوا به این تناقضات (ارائه امکانات جدید جالب و جذاب و ایجاد زبانی به غیر از جاوا برای برنامهنویسی پلت فرم جاوا در مقابل فلسفه و مدل پیشرفت و مقاومتهایی که در مقابل امکانات جدید هست) و به شکل استاندارد و مورد تأیید سان، گرووی است. گرووی اکنون زمینه لازم برای این کار را دارد و‌ نشان‌دهنده یک دوران جدید برای پلت فرم جاوا است. دورانی که در آن جامعهی برنامهنویسان جاوا از گوناگونی و تنوع ایجادشده بهره فراوانی خواهند برد و قادر به استفاده از تمام پتانسیل‌های پلت فرم جاوا هستند. تشخیص هوشمندانه این مسئله که جاوا چیزی بیش از یک زبان برنامه‌نویسی است و درک این نکته که پلت فرم جاوا  قدرت کافی برای اینکه چند زبان همزمان روی آن کار کنند و به حیات خود ادامه دهند را دارد، از عوامل مهم در موفقیت طرح ایجاد زبان گرووی هستند. امروزه زبان‌های متعددی برای اجرا روی ماشین مجازی جاوا طراحی‌شده‌اند. گرووی به این دلیل بهترین انتخاب است که از پایه و اساس برای پلت فرم جاوا طراحی شده است. از سوی دیگر، دستور زبان آن برای توسعه‌دهندگان برنامه‌های جاوا آشناست. گرووی برخی از بهترین ویژگیهای پایتون، روبی و اسمالتاک را پیاده‌سازی می‌کند. جیتون و جی‌روبی نمونه‌های بسیار درخشانی از پشتیبانی پلت فرم جاوا از دیگر زبان‌های برنامه‌نویسی موجود هستند. با این وجود جیتون و جی‌روبی تنها درگاه‌هایی هستند که ارتباط جاوا را با زبان‌های دیگر ممکن می‌سازند. دستور زبان این درگاه‌ها برای طراحان جاوا ایجاد نشده است و حتی مجموعه کتابخانه‌های استفاده‌شده برای پیاده‌سازی آن‌ها با آنچه که برای برنامه‌نویسی جاوا استفاده می‌شود متفاوت است. در مقابل گرووی برای توسعه‌دهندگان جاوا طراحی شده است و پایه و اساس آن بر مبنای رابطهای برنامه کاربردی استاندارد پلت فرم جاوا استوار است [14].
گرووی، یک زبان شیء‌گرا است که برای پلت فرم جاوا نوشته شده است. گرووی زبانی پویاست و ویژگی‌هایی مشابه پایتون، روبی، پرل و اسمالتاک دارد. همچنین می‌تواند بعنوان یک زبان اسکریپت‌نویسی برای پلت فرم جاوا استفاده شود. دستور زبان گرووی مشابه جاوا است و کدها درون کروشه قرار می‌گیرند. این کدها به صورت بایت کد ترجمه می‌شوند و سپس توسط ماشین مجازی جاوا اجرا می‌شوند. کدهای گرووی می‌توانند به سادگی با دیگر کدهای جاوا و همچنین با کتابخانه‌های جاوا کار کنند. از دیگر ویژگیهای مترجم گرووی این است که می‌تواند بایت کدهای استاندارد جاوا تولید کند. به این ترتیب کدهای گرووی را می‌توان در هر پروژه جاوا مورد استفاده قرارداد. بیشتر کدهای جاوا در مترجم گرووی شناخته می‌شوند. به این ترتیب انتقال کد بین دو زبان بسیار ساده است. توضیحات کاملتر در ضمیمه‌ی یک ذکر شده است.
2-7 آزمون نرم‌افزاراهمیت آزمایش نرم‌افزار و اثرات آن بر کیفیت نرم‌افزار نیاز به تأکید بیشتری ندارد. داچ دراین‌باره این‌گونه بیان مینماید:
توسعه سیستمهای نرم‌افزاری شامل یک سری فعالیت‌های تولید می‌باشد که امکان اشتباهات انسانی در آن زیاد است. خطاها در ابتدای یک فرآیند و مراحل توسعه بعدی آن ظهور مینمایند. به دلیل عدم توانایی انجام کارها و برقراری ارتباط به صورت کامل، توسعه نرم‌افزار همواره با فعالیت تضمین کیفیت همراه است. آزمایش نرم‌افزار عنصری حیاتی از تضمین کیفیت نرم‌افزار میباشد و مرور تقریبی مشخصه، طراحی و تولید کد را نشان میدهد.
آزمایش، مجموعه فعالیت‌هایی است که میتواند از قبل به صورت ساماندهی شده برنامهریزی و هدایت شود. به این دلیل، باید الگویی برای آزمایش نرم‌افزار تعریف شود. این الگو شامل مجموعه مراحلی است که میتوان فنون خاص طراحی نمونه‌های آزمایش و روش‌های آزمایش را در آن قرارداد.
چند راهبُرد آزمایش نرم‌افزار در این رابطه پیشنهاد شده است. همه آن‌ها برای توسعه‌دهنده نرم‌افزار، الگویی را به منظور آزمایش فراهم می‌کنند و همگی دارای خصوصیات زیر هستند:
آزمایش از سطح مؤلفه شروع میشود به سمت خارج در جهت مجتمع سازی کل سیستم رایانه‌ای پیش میرود.
فنون متفاوت آزمایش، در نقاط زمانی مختلف مناسب میباشند.
آزمایش توسط توسعه‌دهنده نرم‌افزار و برای پروژههای بزرگ توسط گروه مستقل آزمایش، هدایت میشود.
آزمایش و اشکال‌زدایی فعالیتهای متفاوتی هستند، اما اشکال‌زدایی باید با هر راهبُرد آزمون همراه باشد.


یک راهبُرد برای آزمایش نرم‌افزار باید آزمایشهای سطح پایینی را هدایت کند که برای بازبینی صحت پیادهسازی یک قطعه کد کوچک لازم میباشند. همچنین این راهبُرد باید آزمایشهای سطح بالایی را سازمان‌دهی کند که اکثر توابع سیستم را در رابطه با نیازهای مشتری اعتبارسنجی مینمایند. یک راهبُرد باید راهنماییهایی را برای مجری و مجموعهای از علائم نشان‌دهنده را برای مدیر فراهم نماید. چون این مراحل راهبُرد آزمایش، زمانی انجام میشوند که فشار مربوط به پایان مهلت، شروع به افزایش مینماید، پیشرفت باید قابل اندازهگیری باشد و مشکلات باید تا حد امکان به سادگی برطرف شوند [15].
2-7-1 اهداف آزموندر مورد آزمایش نرم‌افزار، میر چند قانون زیر را بیان می‌کند که اهداف مناسبی برای آزمایش هستند: [15]
آزمایش فرآیندی است شامل اجرای برنامه باهدف یافتن خطا.
یک نمونه آزمایش خوب، نمونه‌ای است که با احتمال بالایی خطاها را بیابد.
آزمایش موفق، آزمایشی است که خطاهای یافت نشده تاکنون را بیابد.
این اهداف تغییری اساسی در دیدگاه ایجاد مینمایند. این اهداف باعث تغییر در دیدگاه متداولی میشوند که آزمایش موفق را آن نوع آزمایشی میداند که در آن خطایی یافت نشود. هدف، طراحی آزمایشهایی است که به طور سامان‌بخش ردههای متفاوتی از خطاها را آشکار نمایند و این عمل را با حداقل مقدار زمان و فعالیت انجام دهند
2-7-2 انواع آزمونآزمون نرم‌افزار به گونه‌های مختلفی انجام می‌شود که در ادامه بررسی خواهند شد.
2-7-2-1 آزمون جعبه سفیدآزمایش جعبه سفید، که گاهی آزمایش جعبه شیشهای نامیده میشود، یک روش طراحی نمونههای آزمایش است که از ساختار کنترل طراحی رویهای برای هدایت نمونههای آزمایش استفاده میکند. با استفاده از روشهای آزمایش جعبه سفید، مهندس نرم‌افزار میتواند نمونههای آزمایشی را به دست آورد که: [16]
تضمین نمایند که تمام مسیرهای مستقل داخل پیمانه حداقل یک بار آزمایش شوند.
تمام تصمیمات شرطی را در دو بخش درست و غلط بررسی نمایند.
تمام حلقهها را در شرایط مرزی و در محدودههای عملیاتی اجرا کنند.
ساختمان دادههای داخلی را بررسی نمایند تا از اعتبار آن‌ها مطمئن شوند.
2-7-2-2 آزمون جعبه سیاهآزمایش جعبه سیاه که آزمایش رفتاری نیز نامیده میشود، بر نیازهای تابعی نرم‌افزار تأکید دارد. یعنی، آزمایش جعبه سیاه باعث میشود مهندس نرم‌افزار مجموعههایی از شرایط ورودی را به دست آورد که کاملاً تمام نیازهای تابعی برنامه را بررسی میکنند. آزمایش جعبه سیاه راه جایگزینی برای روش جعبه سفید نیست. در عوض، روشی تکمیلی است که احتمالاً رده متفاوتی از خطاها را نسبت به روش‌های جعبه سفید آشکار می‌کند. به واسطه‌ی آنکه آزمون وب‌سایت از دید کاربر انجام میشود، روش پیشنهادی در این پایاننامه یک آزمون جعبه سیاه میتواند در نظر گرفته شود.
آزمایش جعبه سیاه سعی در یافتن خطاهایی در دستهبندیهای زیر دارد:
توابع غلط یا حذف‌شده
خطاهای واسط‌ها
خطا در ساختمان دادهها یا دسترسی به بانک اطلاعاتی خارجی
خطاهای رفتاری یا کارایی
خطاهای آماده سازی و اختتامیه
برخلاف آزمون جعبه سفید که در اوایل فرآیند آزمایش انجام میشود، آزمایش جعبه سیاه در مراحل آخر آزمون به کار گرفته میشود. چون آزمایش جعبه سیاه عمدتاً به ساختار کنترلی توجهی ندارد، توجه بر دامنه اطلاعات متمرکز میشود. آزمایشها برای پاسخگویی به سؤالات زیر طراحی میشوند:
چگونه اعتبار عملکردی آزمایش میشود؟
چگونه رفتار و کارایی سیستم آزمایش میشود؟
چه ردههایی از ورودی، نمونههای آزمایش خوبی میسازند؟
آیا سیستم مخصوصاً به مقادیر خاص ورودی حساس است؟
چگونه مرزهای یک رده از دادهها مجزا میشود؟
سیستم چه نوساناتی برای سرعت و حجم دادهها دارد؟
ترکیبات خاص دادهها چه اثری بر عملکرد سیستم دارند؟
با به‌کارگیری روشهای آزمایش جعبه سیاه، مجموعهای از نمونههای آزمایشی به دست میآیند که معیارهای زیر را برآورده میسازند:
نمونههای آزمایشی که باعث کاهش بیش از حد یک واحد از تعداد نمونههای آزمایشی میشوند که برای رسیدن به آزمایش قابل‌قبول مورد نیاز میباشند.
نمونههای آزمایشی که چیزی در مورد حضور یا عدم حضور ردههایی از خطاها ارائه دهند. به جای اینکه یک خطا مربوط به یک آزمایش خاص در حال انجام را آشکار نمایند.
2-8 کارهای مرتبطاستفاده از زبان‌های خاص دامنه برای آزمون نرم‌افزار امری متداول است. این مسئله در سال‌های اخیر که ابزارهای تولید و طراحی زبان‌های خاص منظور پیشرفت قابل‌ملاحظه‌ای داشته‌اند، بیش از پیش مورد توجه قرار گرفته است.
طبق بررسی‌های انجام‌شده زبان خاص دامنهای که به طور خاص برای انجام آزمون بار روی برنامه‌های کاربردی تحت وب باشد، وجود ندارد. اکثر زبانهای خاص دامنه موجود در حوزه آزمون نرم‌افزار، برای آزمون عملکردی برنامه‌های کاربردی (چه در فضای وب و چه در فضای سیستم‌عامل) نوشته‌شده‌اند. آزمون عملکردی برنامه‌های تحت وب، در واقع بخشی از آزمون بار است؛ به عبارت دیگر از ابزارهای موجود برای انجام آزمون عملکردی برنامه‌های وبی، می‌توان برای آزمون بار نیز استفاده کرد. در واقع آزمون بار اجرای سناریوهای مشخصی از آزمون عملکردی به صورت همزمان توسط تعداد زیادی کاربر و ثبت رفتار سیستم در برابر این درخواست‌ها است. از آنجا که زبان خاص دامنه‌ای به طور اختصاصی برای آزمون بار وجود ندارد، در این بخش اشاره‌ای به زبان‌های خاص دامنه و ابزارهای موجود برای انجام آزمون عملکردی که برای انجام آزمون بار نیز می‌توانند مورد استفاده قرار گیرند، خواهد شد.
زبان‌های مختلف هر یک به تناسب خود دارای کتابخانه‌هایی هستند که می‌توان با آن‌ها آزمون بار نیز انجام داد. با بررسی کارهای مشابه، می‌توان این کتابخانه‌ها را عمدتاً در دو دسته جای داد:
کتابخانه‌ها و چهارچوب‌های انتخاب و انجام عملیات روی عناصر موجود در صفحه وب.
کتابخانه‌های کار با نخها و اتصال‌ها.
کتابخانه‌های دسته اول عمدتاً نحو خاص خود را دارند و به همین دلیل در زمره زبان‌های خاص دامنه قرار می‌گیرند. معروف‌ترین کتابخانه در این دسته، سلنیوم است. نسخه جدید این کتابخانه، در واقع چارچوبی قابل‌حمل برای آزمون برنامه‌های کاربردی است. این چارچوب امکانی فراهم می‌کند که در آن کاربر می‌تواند با عناصر وب از طریق برنامه تعامل داشته باشد. این ابزار در زبان‌های مختلفی چون جاوا، C#، Modern C++، پرل، پایتون، PHP، روبی و گرووی قابل استفاده است. رابط برنامه کاربردی جدید مورد استفاده در این زبان‌های برنامه‌نویسی که از نسخه سلنیوم2 به بعد ارائه گردید، با نام سلنیوم وب درایور شناخته می‌شود. با استفاده از وب درایور کاربر می‌تواند در برنامه خود با برنامه کاربردی تحت وب، «تعامل کامل» داشته باشد[17]. این تعامل درست شبیه حالتی است که کاربر در مرورگر با برنامه کار می‌کند با این تفاوت که درخواست‌ها به و پاسخ‌ها از برنامه تحت آزمون، کاملاً توسط برنامه آزمون کننده مدیریت می‌شود.
هرچند با استفاده از سلنیوم آزمون‌های مختلفی روی برنامه‌های تحت وب نوشته شده است، اما تمامی این آزمون‌ها در راستای آزمون کاربردی نرم‌افزارهای وبی بوده‌اند و هیچ یک قابلیتی برای آزمون بار در نظر نگرفته‌ و طبعاً زبان خاص دامنهای نیز برای این منظور ارائه نداده‌اند.
در بسیاری از کارهای مشابه که از چهارچوب‌های خودکاری سازی مانند سلنیوم استفاده نکرده‌اند، عموماً درخواست‌ها به صورت دستی ارسال، دریافت و پردازش می‌شوند. معمولاً این نوع آزمون‌ها «کامل» نیستند زیرا تأثیرات زبان سمت کلاینت (معمولاً جاوااسکریپت) که توسط مرورگر به اجرا درمی‌آید، در آن‌ها نادیده گرفته می‌شود[18]. در این موارد تعامل با عناصر وب، مسئله مهم دیگری است. روش عمومی استفاده از عبارات منظم است تا بتوان با عناصر مختلف صفحه تعامل داشت. به طور کلی به دلیل کندی، دشواری توصیف الگوها، در برخی موارد ضعف در پشتیبانی از کُدگذاری‌های صفحه و نهایتاً امکان خطای بیشتر، در موارد کمی از عبارات منظم برای انتخاب عناصر صفحه استفاده شده است.
ابزار دیگری که می‌توان آن را در زمره زبان‌های خاص دامنه کار با عناصر وب جای داد، تویل است. این ابزار در واقع یک مرورگر کوچک و سبک خط فرمانی است که با دستورات خاص خود قادر به انجام فرآیندهایی در صفحات وب است[19]. تویل در واقع موتور برنامه‌های کاربردی وبی گوگل است و توسط این شرکت پشتیبانی می‌شود. این ابزار قادر به شناسایی خطاهای رخ داده در سطح پروتکل است اما در کل نسبت به ابزارهای دیگری چون سلنیوم قدرت و انعطاف‌پذیری کمتری دارد.
چهارچوب دیگر ویندمیل نام دارد که بسیار شبیه به سلنیوم است با این تفاوت که این چهارچوب با زبان پایتون و جاوااسکریپت نوشته‌شده و انعطاف‌پذیری سلنیوم برای استفاده در زبان‌های گوناگون را ندارد. با استفاده از این چهارچوب و بر اساس نحو خاصی که دارد، می‌توان آزمون‌های برنامه‌های کاربردی تحت وب نوشت. ویندمیل هم می‌تواند به صورت خط فرمانی و هم با ضبط رفتار کاربر در مرورگر‌ به کار رود[20].
اما دسته دوم کتابخانه‌ها، مربوط به مدیریت تعداد درخواست‌های همزمان به برنامه کاربردی است. این درخواست‌ها عمدتاً از طریق برنامه‌نویسی چندنخی پیاده‌سازی می‌شوند. هرچند مدل کلی برنامه‌نویسی چندنخی تقریباً در تمامی موارد یکسان است، اما زبان‌های مختلف هر یک قواعد خاص خود را برای کار با نخها دارند. همچنین زبان مورد استفاده باید امکان ایجاد اتصالات شبکه به طور همزمان را نیز داشته باشد.
جدول 2-1: مقایسه زبانهای خاص دامنه با زبان خاص دامنهی پیشنهادیgatling grinder twill زبان پیشنهادی
زبانهای مورد استفاده در توسعه چهارچوب یا ابزارها اسکالا موتور اصلی آن به زبان جاوا نوشته شده است اما اسکریپتهای تست آن با زبانهای جیتون و Clojure نوشته میشود. پایتون
گرووی
قابلیت دریافت و فرستادن کوکیها (مدیرت نشستها) بطور کامل از کوکیها پشتیبانی میکند مدیریت کوکی های از دید کاربر پنهان است. ارسال و دریافت کوکیها بصورت پنهان از برنامهنویس میتواند غیرفعال شود و برنامهنویس میتواند به کمک واسطهای برنامهنویسی کوکیها را دستکاری کند پشتیبانی کامل از کوکیها و قابلیت مدیریت خودکار و پنهان از برنامه نویس کوکیها از کوکیها پشتیبانی میکند.
به دلیل پشتیبانی جب از این قابلیت، زبان پیشنهادی نیز از این ویژگی پشتیبانی می کند. عملیات کار و تعامل با کوکی‌ها از دید کاربر پنهان است.
نحوهی تعریف و تزریق سناریوی تست قابلیت تعریف سناریو به کمک یک زبان خاص دامنه قابلیت تعریف سناریو به کمک زبانهای جیتون و Clojure قابلیت تعریف سناریو به کمک زبان پایتون
تعریف سناریو با استفاده از یک زبان خاص دامنه مشخص انجام می‌شود. روال انتخاب و تعامل با عناصر صفحه براساس نحو انتخابگرهای CSS3 و jQuery است.
منابع دادهای تست بار قابلیت لود داده بار از فایلهای با قالب CSV، TSV و SSV و همینطور قابلیت لود داده از پایگاه دادههای مختلف به کمک JDBC
دارای قابلیت دریافت داده پویا از فایلها با فرمتهای مختلف همینطور دادههای تصادفی و پایگاه دادهها میباشد. همینطور در گریندر این امکان وجود دارد که از دادههای ضبط شدهی تستهای قبل در تست جدید استفاده کرد. از طرفی یک رابط گرافیکی امکان تزریق دادههای پویا را در زمان تست فراهم میکند. ندارد قابلیت لود داده های ورودی از فایل های متنی
زبانهای پشتیبانی شده برای تست جاوا، زبان خاص دامنه گتلینگ، اسکالا قابلیت تست برنامه های نوشته شده به زبانهای جیتون وClojure را داراست. همچنین این چارچوب میتواند برنامههای تحت وب و API های نوشته شده با جاوا برای وب را نیز بیازماید. پایتون بطور کلی تمامی برنامههای اجرا شده در محیط وب
قابلیت کار با SSL بله بله
خیر به دلیل پشتیبانی جب از SSL، زبان پیشنهادی نیز این قابلیت را داراست.
قابلیت انجام تست بار بله بله بله بله
قابلیت انجام تست ظرفیت بله بله بله به صورت صریح ندارد اما با برخی تنظیمات میتوان به تست ظرفیت رسید.
قابلیت تست functionalityهای نرم افزار تحت وب (تست پایداری و اتکاپذیری) قابل انجام است اما به دلیل نحو این چارچوب، بسیار مشکل می باشد. قابل انجام است اما به دلیل نحو این چارچوب، بسیار مشکل می باشد. قابل انجام است اما به دلیل نحو این چارچوب، بسیار مشکل می باشد. بله، با تنظیم تعداد کاربران روی عدد 1 و مشخص کردن روال مد نظر، کاملاً می توان تست Functionality نیز انجام داد.
قابلیت انجام تست استرس بله بله با استفاده از قابلیت fork در کتابخانهی تویل میتوان فرایندهای زیادی جهت انجام تست استرس به وجود آورد. بله
وابستگی به چهارچوبهای دیگر Akka
Netty
Async Http Client بستگی به تعدادی از دیگر محصولات منبع باز دارد از جمله:
Jython
HTTPClient
JEdit Syntax
Apache XMLBeans
PicoContainer
Clojure
سلنیوم
Scotch گرووی
جب
اسپاک
متن باز بودن و مجوز منبع باز
مجوز Apache v2 منبع باز
مجوز BSD style منبع باز
مجوز MIT منبع باز
قابلیت ضبط و بازپخش یک سناریوی تست دارد. به کمک TCP proxy می تواند عملیات یک کاربر را ذخیره کند. به کمک پروژهی Scotch میتواند عملیات کاربر را ذخیره و بعداً اجرا کند. قابلیت ضبط رفتار کاربر از روی مرورگر ندارد.
پشتیبانی از درخواستهای همزمان به دلیل وجود تست استرس و نیاز به درخواست های همزمان به منظور پیاده سازی تست استرس همزمانی وجود دارد. به دلیل وجود تست استرس و نیاز به درخواست های همزمان به منظور پیاده سازی تست استرس همزمانی وجود دارد.
به دلیل وجود تست استرس و نیاز به درخواستهای همزمان به منظور پیاده سازی تست استرس همزمانی وجود دارد. بله. در ذات زبان خاص دامنه پیشنهادی این مسئله وجود دارد.
پشتیبانی از آژاکس پشتیبانی نمیکند پشتیبانی نمیکند پشتیبانی داخلی ندارد اما به کمک Browser Driverهای سلنیوم و Pamie میتواند درخواست های آزاکس بسازد پشتیبانی میشود چون جب پشتیبانی میکند.
داشتن ابزارهای جانبی یک سری ابزار خط فرمان برای اجرا و ضبط سناریو
ابزار گزارش گیری
ابزار تنظیمات
ابزار نظارت بر نحوه ی روند اجرای تست دارای یک ابزار به نامTCP proxy است که برای ضبط سناریو از آن استفاده میشود و همچنین دارای یک ابزار و یک موتور گزارشگیری و آمار گیری است. Twill-sh دارای یک ابزار خط فرمان برای اجرای سناریوهای تست است ابزار جانبی خاصی ندارد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *