2-1 مقدمه…………………… 7
2-2 روند تحول زبانها…………………… 8
2-2-1 زبانهای همه منظوره ……………………8
2-2-2 صفحه گستردهها و زبانهای نسل چهارم……….. 8
2-1 مقدمه…………………… 7
2-2 روند تحول زبانها…………………… 8
2-2-1 زبانهای همه منظوره ……………………8
2-2-2 صفحه گستردهها و زبانهای نسل چهارم……….. 8
2-2-3 برنامهنویسی زبان گرا ……………………9
2-4 برنامه در برنامهنویسی زبان گرا…………………… 13
2-5 زبانهای خاص دامنه……………………. 16
2-5-1 طراحی و پیادهسازی زبان خاص دامنه……………………. 18
2-5-2 انواع زبانهای خاص دامنه……………………. 19
2-6 گرووی، زبان میزبان……………………. 21
2-7 آزمون نرمافزار……………………. 23
2-7-1 اهداف آزمون……………………. 24
2-7-2 انواع آزمون……………………. 25
2-7-2-1 آزمون جعبه سفید…………………… 25
2-7-2-2 آزمون جعبه سیاه…………………… 25
2-8 کارهای مرتبط…………………….. 27
فصل سوم: روش تحقیق
3-1 مقدمه…………………… 34
3-2 آزمون نرمافزار……………………. 34
3-3 مشکلات پیش روی آزموننویسها…………………… 35
3-4 زبان خاص دامنه برای آزمون دامنه……………………. 35
3-4-1 نیاز به وجود یک زبان خاص دامنه برای دامنه آزمون بار………. 36
3-5 آزمون نرمافزارهای تحت وب……………………… 37
3-5-1 آزمونهای سمت مشتری…………………….. 37
3-6 معماری سیستم پیشنهادی…………………….. 38
3-7 پارامترهای مؤثر در آزمون بار……………………. 40
3-7-1 پارامترهای زمانی…………………….. 40
3-7-2 پارامترهای مشخصکننده رخداد خطا در برنامه……………… 40
3-8 چارچوبهای مورد استفاده جهت آزمون نرمافزارهای تحت وب……….. 41
3-9 طرح پیشنهادی…………………….. 44
3-9-1 تعریف آزمون بار……………………. 45
3-9-1-1 فرآیندهای مورد نیاز برای آزمون بار……………………. 47
3-9-2 بررسی ساختار چهارچوب جب……………………… 47
3-9-3 نحو زبان خاص دامنه پیشنهادی…………………….. 49
3-9-3-1 ساختار کلی هر آزمون بار در زبان خاص دامنه پیشنهادی…………. 50
3-9-3-1-1 انتخابگرها…………………… 50
3-9-3-1-2 رخدادها…………………… 55
3-9-3-1-3 ایجاد رخدادها…………………… 56
3-9-3-1-4 بارگذاری اطلاعات از فایل…………………….. 56
فصل چهارم: محاسبات و یافته های تحقیق
4-1 مقدمه…………………… 58
4-2 آزمون زبان خاص دامنه پیشنهادی…………………….. 58
4-2-1 برنامه کاربردی 1: ورود و مشاهده نتیجه……………………. 60
4-2-2 برنامه کاربردی 2: ثبتنام در سایت……………………… 65
4-3 دستاورد زبان خاص دامنه پیشنهادی…………………….. 69
4-4 کاستیهای DSL پیشنهادی…………………….. 69
فصل پنجم : نتیجه گیری و پیشنهادات
2-1 مقدمه…………………… 7 2-2 روند تحول زبانها…………………… 8 2-2-1 زبانهای همه منظوره ……………………8 2-2-2 صفحه گستردهها و زبانهای نسل چهارم……….. 8 2-2-3 برنامهنویسی زبان گرا ……………………9 2-4 برنامه در برنامهنویسی زبان گرا…………………… 13 2-5 زبانهای خاص دامنه……………………. 16 2-5-1 طراحی و پیادهسازی زبان خاص دامنه……………………. 18 2-5-2 انواع زبانهای خاص دامنه……………………. 19 2-6 گرووی، زبان میزبان……………………. 21 2-7 آزمون نرمافزار……………………. 23 2-7-1 اهداف آزمون……………………. 24 2-7-2 انواع آزمون……………………. 25 2-7-2-1 آزمون جعبه سفید…………………… 25 2-7-2-2 آزمون جعبه سیاه…………………… 25 2-8 کارهای مرتبط…………………….. 27 فصل سوم: روش تحقیق 3-1 مقدمه…………………… 34 3-2 آزمون نرمافزار……………………. 34 3-3 مشکلات پیش روی آزموننویسها…………………… 35 3-4 زبان خاص دامنه برای آزمون دامنه……………………. 35 3-4-1 نیاز به وجود یک زبان خاص دامنه برای دامنه آزمون بار………. 36 3-5 آزمون نرمافزارهای تحت وب……………………… 37 3-5-1 آزمونهای سمت مشتری…………………….. 37 3-6 معماری سیستم پیشنهادی…………………….. 38 3-7 پارامترهای مؤثر در آزمون بار……………………. 40 3-7-1 پارامترهای زمانی…………………….. 40 3-7-2 پارامترهای مشخصکننده رخداد خطا در برنامه……………… 40 3-8 چارچوبهای مورد استفاده جهت آزمون نرمافزارهای تحت وب……….. 41 3-9 طرح پیشنهادی…………………….. 44 3-9-1 تعریف آزمون بار……………………. 45 3-9-1-1 فرآیندهای مورد نیاز برای آزمون بار……………………. 47 3-9-2 بررسی ساختار چهارچوب جب……………………… 47 3-9-3 نحو زبان خاص دامنه پیشنهادی…………………….. 49 3-9-3-1 ساختار کلی هر آزمون بار در زبان خاص دامنه پیشنهادی…………. 50 3-9-3-1-1 انتخابگرها…………………… 50 3-9-3-1-2 رخدادها…………………… 55 3-9-3-1-3 ایجاد رخدادها…………………… 56 3-9-3-1-4 بارگذاری اطلاعات از فایل…………………….. 56 فصل چهارم: محاسبات و یافته های تحقیق 4-1 مقدمه…………………… 58 4-2 آزمون زبان خاص دامنه پیشنهادی…………………….. 58 4-2-1 برنامه کاربردی 1: ورود و مشاهده نتیجه……………………. 60 4-2-2 برنامه کاربردی 2: ثبتنام در سایت……………………… 65 4-3 دستاورد زبان خاص دامنه پیشنهادی…………………….. 69 4-4 کاستیهای DSL پیشنهادی…………………….. 69 فصل پنجم : نتیجه گیری و پیشنهادات 5-1 نتیجهگیری…………………….. 72 5-2 کارهای آینده…………………… 76 پیوست الف: معرفی زبان گرووی……………… 78 ویژگیهای گرووی…………………….. 79 قدرت در کد گرووی…………………….. 81 محیط توسعه یکپارچه گرووی و پشتیبانی ویرایشگر………… 82 پیوست ب: واژهنامه فارسی به انگلیسی…………………….. 83 پیوست ج: واژهنامه انگلیسی به فارسی…………………….. 85 فهرست مراجع ……………………….87 چکیده: این پایاننامه در مورد طراحی و پیادهسازی یک زبان خاص دامنه جهت انجام آزمون بار روی برنامههای کاربردی تحت وب است. زبانهای خاص دامنه، زبانهایی هستند که برای انجام اموری در حوزه خاص و با هدف سهولت در تولید برنامهها طراحی میشوند. در توسعه هر سیستم نرمافزاری، مرحله آزمون نرمافزار از جهات مختلف اهمیت بسیار داشته و زمان و هزینه زیادی را تحمیل میکند. برای نرمافزارهای تحت وب، آزمون بار از اهمیت ویژهای برخوردار است. هدف از این پایاننامه، ارائه زبانی است که با استفاده از آن بتوان آزمون بار برای برنامههای کاربردی تحت وب را با سهولت و سرعت بیشتر و با هزینه و تخصص کمتری انجام داد. در این حوزه، زبانهای خاص دامنه به منظور انجام آزمونهای واحد و آزمونهای کاربردی ارائهشدهاند. هرچند با استفاده از برخی قابلیتهای این زبانها و ترکیب آنها با امکانات زبانهای همه منظوره، میتوان آزمون بار نیز انجام داد، اما نمیتوان از آنها به عنوان یک زبان خاص دامنه جهت آزمون بار نام برد زیرا کاربران همچنان با برخی دشواریهای زبانهای همه منظوره درگیر هستند؛ به عبارت دیگر زبان خاص دامنهای که تنها مختص آزمون بار باشد، طراحی و یا گزارش نشده است. این پایاننامه در واقع پاسخی به این نیاز است. زبان خاص دامنه پیشنهادی بر مبنای زبان گرووی و چارچوبهای جِب و اسپاک بنانهاده شده و قادر است تمامی سناریوهایی که یک کاربر انسانی در یک صفحه وب انجام میدهد را پشتیبانی نماید. در این زبان کاربر میتواند مشخص کند که برنامه کاربردی مورد نظر وی، با چه تعداد کاربر به صورت همزمان مورد آزمون قرار گیرد. همچنین امکان ذخیره خروجی و نتایج آزمون به قالبهایی مانند XML، XLS، CSV و TXT در نظر گرفتهشده تا نتایج به راحتی در نرمافزارهای تحلیلی و آماری مورد استفاده باشد. در این پایاننامه برای دو برنامه کاربردی تحت وب که سناریوهای متداولی هستند، دو آزمون بار انجامشده تا صحت عملکرد زبان در انجام آزمون بار مشخص شود. بر اساس این آزمونها، زبان خاص دامنه پیشنهادی زمان ایجاد یک آزمون بار را به طور تقریبی تا 40 برابر برای زبانهای سطح بالایی چون Java و C# کاهش میدهد. این میزان کاهش برای زبان سطح پایینتری چون C++ تا 80 برابر نیز میرسد. از نظر کد نویسی نیز استفاده از زبان خاص دامنه پیشنهادی برای زبانهای سطح بالای مذکور تا 6 برابر و برای زبان سطح پایینی چون C++، 10 تا 12 برابر حجم کد نویسی را کاهش میدهد. فصل اول: مقدمه و کلیات تحقیق 1-1- مقدمه امروزه برنامههای کاربردی و نرمافزاری نقش بسزایی در زندگی روزمره دارند و بنابراین نیاز است هرگونه خطا در این برنامهها به حداقل مقدار ممکن برسد. در این میان برنامههای کاربردی وب از جمله برنامههایی هستند که بیشتر از بقیه مورد استفاده قرارگرفته و اهمیت یافتهاند لذا آزمون آنها نیز بسیار مورد توجه است. به دلیل تخصصی بودن حوزهی آزمون نرمافزار، زبانهای خاص دامنه متعددی برای این حوزه به وجود آمدهاند که نسبت به زبانهای همهمنظوره کاراتر عمل میکنند. یکی از این حوزهها آزمون برنامههای کاربردی وب است. در اکثر روشهای تولید برنامههای کاربردی فاز آزمون وجود دارد؛ اما در مورد برنامههای کاربردی وب این قضیه کمی متفاوت است چرا که این برنامههای کاربردی دو بخشی هستند. بخشی از آنها به قسمت سرور مربوط میشود و بخش دیگر از مرورگر کاربر به سمت سرور رفته و از دید کاربر بررسی میشوند؛ بنابراین برای برنامههای کاربردی وب دو نوع آزمون برای دو بخش مختلف صورت میپذیرد [1]: آزمون الگوریتمها و عناصر داخلی سرور آزمون این برنامهها از دید کاربر و آزمون موارد کاربری سیستم چارچوبهای متعددی وجود دارند که کار و تعامل با برنامههای کاربردی وب را سادهتر ساخته و به خودکارسازی آزمون آنها میپردازند که نمونههایی از آنها عبارتند از جب[1]، کانو[2]، گردل[3] و… که با زبان گرووی[4] طراحیشدهاند چرا که زبان گرووی از جهات مختلفی که در فصلهای آتی ذکر خواهد شد، مناسبتر از هر زبان دیگری برای انجام این کار است. بر خلاف گذشته که فقط آزمون واحد برای برنامههای کاربردی وب انجام میشد، این چارچوبها زمینهی ایجاد آزمون عملکردی را نیز فراهم میکنند. از آنجا که آزمون برنامههای کاربردی وب با این چارچوبها سادهتر انجام میگیرد و در بین آنها محیط جب با دیگر چارچوبها و تمام مرورگرها سازگار است، از آن استفاده شده است تا زبانی برای آزمون بار در برنامههای کاربردی وب طراحی شود. 1-2- بیان مسئله اهمیت آزمون نرمافزار و اثرات آن بر كیفیت نرمافزار کاملاً واضح است. نوشتن آزمونها کاری گرانقیمت، خواندن آنها مشقتبار و نگهداریشان بسیار دشوار است. برای کار با این حوزه به تخصص بالایی نیاز است به همین دلیل این تفکر به وجود آمده است که برای دامنهی آزمون نرمافزار، زبانی طراحی شود تا آزمونها با تمرکز و تخصص بیشتری انجام گیرند. آزمون عملکردی برنامههای کاربردی وب به طور موثر، همواره یک چالش بوده است چرا که با وجود دشواری که در مسیر نوشتن و آزمون این برنامهها وجود دارد اما باز هم تا کنون فقط آزمون واحد به صورت سنتی برای وب وجود داشته است .[1] برخی از اشکالات اساسی در یک برنامه وب، مواردی هستند که یک آزمون واحد هیچ راهی برای بررسی آنها ندارد. متأسفانه، تحقیقات انجامشده نشان میدهد که استفاده از ابزارها برای نوشتن و اجرای آزمون عملکردی دست و پاگیر هستند. تفاوتهای موجود در مرورگرها و محیطها باعث شده است که اجرای آزمونها توسط توسعهدهندگان بر روی رایانههای مختلف تبدیل به یک چالش شود و یا اینکه اجرای آن عملی نباشد. همچنین نشاندهندهی این است که حتی پس از سرمایهگذاری زمان و تلاش برای نوشتن آزمون عملکردی، آنها تمایل دارند که بسیار شکننده باشند و همچنین فهم آنها برای توسعهدهندگان دیگر مشکل است. در این پایاننامه از جب که تمامی این موارد را تغییر داده و محیطی ساده فراهم آورده است تا بتوان با برنامههای کاربردی وب به سادگی تعامل برقرار کرد، استفاده شده است تا یکی از این چالشها برطرف شده و با طراحی یک زبان خاص دامنه، آزمون عملکردی برای حوزهی آزمون بار وبسایت صورت پذیرد تا بتوان برنامههای کاربردی وب را باکیفیت بالاتر عرضه داشت. 1-3- مشکل طراحی زبان خاص دامنه برای آزمون بار این که جب یک چهارچوب مناسب جهت ارتباط با صفحات وب و کار با آنها است و به ما اجازه میدهد که بتوان از طریق یک رابط برنامهنویسی، در قالب یک زبان خاص دامنه، با تمامی تگهای صفحه وب مورد نظر ارتباط برقرار کنیم، به تنهایی برای آن چه که ما به دنبال آن هستیم کافی نخواهد بود. طراحی و اجرای یک آزمون عملکرد، به خصوص در مورد این پایاننامه که هدفش آزمون بار بر روی یک نرمافزار وب است، بسیار فراتر از کار با تگهای یک صفحه و ساخت درخواستهای GET و POST پروتکل HTTP است. اندازهگیری زمان اجرا، اندازهگیری میزان اطلاعات جا به جا شده و همین طور بررسی پاسخهای HTTP بازگشتی از سرویسدهنده وب، خود از مواردی هستند که یک
5-1 نتیجهگیری…………………….. 72
5-2 کارهای آینده…………………… 76
پیوست الف: معرفی زبان گرووی……………… 78
ویژگیهای گرووی…………………….. 79
قدرت در کد گرووی…………………….. 81
محیط توسعه یکپارچه گرووی و پشتیبانی ویرایشگر………… 82
پیوست ب: واژهنامه فارسی به انگلیسی…………………….. 83
پیوست ج: واژهنامه انگلیسی به فارسی…………………….. 85
فهرست مراجع ……………………….87
چکیده:
این پایاننامه در مورد طراحی و پیادهسازی یک زبان خاص دامنه جهت انجام آزمون بار روی برنامههای کاربردی تحت وب است. زبانهای خاص دامنه، زبانهایی هستند که برای انجام اموری در حوزه خاص و با هدف سهولت در تولید برنامهها طراحی میشوند. در توسعه هر سیستم نرمافزاری، مرحله آزمون نرمافزار از جهات مختلف اهمیت بسیار داشته و زمان و هزینه زیادی را تحمیل میکند. برای نرمافزارهای تحت وب، آزمون بار از اهمیت ویژهای برخوردار است. هدف از این پایاننامه، ارائه زبانی است که با استفاده از آن بتوان آزمون بار برای برنامههای کاربردی تحت وب را با سهولت و سرعت بیشتر و با هزینه و تخصص کمتری انجام داد. در این حوزه، زبانهای خاص دامنه به منظور انجام آزمونهای واحد و آزمونهای کاربردی ارائهشدهاند. هرچند با استفاده از برخی قابلیتهای این زبانها و ترکیب آنها با امکانات زبانهای همه منظوره، میتوان آزمون بار نیز انجام داد، اما نمیتوان از آنها به عنوان یک زبان خاص دامنه جهت آزمون بار نام برد زیرا کاربران همچنان با برخی دشواریهای زبانهای همه منظوره درگیر هستند؛ به عبارت دیگر زبان خاص دامنهای که تنها مختص آزمون بار باشد، طراحی و یا گزارش نشده است. این پایاننامه در واقع پاسخی به این نیاز است. زبان خاص دامنه پیشنهادی بر مبنای زبان گرووی و چارچوبهای جِب و اسپاک بنانهاده شده و قادر است تمامی سناریوهایی که یک کاربر انسانی در یک صفحه وب انجام میدهد را پشتیبانی نماید. در این زبان کاربر میتواند مشخص کند که برنامه کاربردی مورد نظر وی، با چه تعداد کاربر به صورت همزمان مورد آزمون قرار گیرد. همچنین امکان ذخیره خروجی و نتایج آزمون به قالبهایی مانند XML، XLS، CSV و TXT در نظر گرفتهشده تا نتایج به راحتی در نرمافزارهای تحلیلی و آماری مورد استفاده باشد. در این پایاننامه برای دو برنامه کاربردی تحت وب که سناریوهای متداولی هستند، دو آزمون بار انجامشده تا صحت عملکرد زبان در انجام آزمون بار مشخص شود. بر اساس این آزمونها، زبان خاص دامنه پیشنهادی زمان ایجاد یک آزمون بار را به طور تقریبی تا 40 برابر برای زبانهای سطح بالایی چون Java و C# کاهش میدهد. این میزان کاهش برای زبان سطح پایینتری چون C++ تا 80 برابر نیز میرسد. از نظر کد نویسی نیز استفاده از زبان خاص دامنه پیشنهادی برای زبانهای سطح بالای مذکور تا 6 برابر و برای زبان سطح پایینی چون C++، 10 تا 12 برابر حجم کد نویسی را کاهش میدهد.
فصل اول: مقدمه و کلیات تحقیق
1-1- مقدمه
امروزه برنامههای کاربردی و نرمافزاری نقش بسزایی در زندگی روزمره دارند و بنابراین نیاز است هرگونه خطا در این برنامهها به حداقل مقدار ممکن برسد. در این میان برنامههای کاربردی وب از جمله برنامههایی هستند که بیشتر از بقیه مورد استفاده قرارگرفته و اهمیت یافتهاند لذا آزمون آنها نیز بسیار مورد توجه است. به دلیل تخصصی بودن حوزهی آزمون نرمافزار، زبانهای خاص دامنه متعددی برای این حوزه به وجود آمدهاند که نسبت به زبانهای همهمنظوره کاراتر عمل میکنند. یکی از این حوزهها آزمون برنامههای کاربردی وب است. در اکثر روشهای تولید برنامههای کاربردی فاز آزمون وجود دارد؛ اما در مورد برنامههای کاربردی وب این قضیه کمی متفاوت است چرا که این برنامههای کاربردی دو بخشی هستند. بخشی از آنها به قسمت سرور مربوط میشود و بخش دیگر از مرورگر کاربر به سمت سرور رفته و از دید کاربر بررسی میشوند؛ بنابراین برای برنامههای کاربردی وب دو نوع آزمون برای دو بخش مختلف صورت میپذیرد [1]:
آزمون الگوریتمها و عناصر داخلی سرور
آزمون این برنامهها از دید کاربر و آزمون موارد کاربری سیستم
چارچوبهای متعددی وجود دارند که کار و تعامل با برنامههای کاربردی وب را سادهتر ساخته و به خودکارسازی آزمون آنها میپردازند که نمونههایی از آنها عبارتند از جب[1]، کانو[2]، گردل[3] و… که با زبان گرووی[4] طراحیشدهاند چرا که زبان گرووی از جهات مختلفی که در فصلهای آتی ذکر خواهد شد، مناسبتر از هر زبان دیگری برای انجام این کار است. بر خلاف گذشته که فقط آزمون واحد برای برنامههای کاربردی وب انجام میشد، این چارچوبها زمینهی ایجاد آزمون عملکردی را نیز فراهم میکنند. از آنجا که آزمون برنامههای کاربردی وب با این چارچوبها سادهتر انجام میگیرد و در بین آنها محیط جب با دیگر چارچوبها و تمام مرورگرها سازگار است، از آن استفاده شده است تا زبانی برای آزمون بار در برنامههای کاربردی وب طراحی شود.
1-2- بیان مسئله
اهمیت آزمون نرمافزار و اثرات آن بر كیفیت نرمافزار کاملاً واضح است. نوشتن آزمونها کاری گرانقیمت، خواندن آنها مشقتبار و نگهداریشان بسیار دشوار است. برای کار با این حوزه به تخصص بالایی نیاز است به همین دلیل این تفکر به وجود آمده است که برای دامنهی آزمون نرمافزار، زبانی طراحی شود تا آزمونها با تمرکز و تخصص بیشتری انجام گیرند. آزمون عملکردی برنامههای کاربردی وب به طور موثر، همواره یک چالش بوده است چرا که با وجود دشواری که در مسیر نوشتن و آزمون این برنامهها وجود دارد اما باز هم تا کنون فقط آزمون واحد به صورت سنتی برای وب وجود داشته است .[1] برخی از اشکالات اساسی در یک برنامه وب، مواردی هستند که یک آزمون واحد هیچ راهی برای بررسی آنها ندارد.
متأسفانه، تحقیقات انجامشده نشان میدهد که استفاده از ابزارها برای نوشتن و اجرای آزمون عملکردی دست و پاگیر هستند. تفاوتهای موجود در مرورگرها و محیطها باعث شده است که اجرای آزمونها توسط توسعهدهندگان بر روی رایانههای مختلف تبدیل به یک چالش شود و یا اینکه اجرای آن عملی نباشد. همچنین نشاندهندهی این است که حتی پس از سرمایهگذاری زمان و تلاش برای نوشتن آزمون عملکردی، آنها تمایل دارند که بسیار شکننده باشند و همچنین فهم آنها برای توسعهدهندگان دیگر مشکل است. در این پایاننامه از جب که تمامی این موارد را تغییر داده و محیطی ساده فراهم آورده است تا بتوان با برنامههای کاربردی وب به سادگی تعامل برقرار کرد، استفاده شده است تا یکی از این چالشها برطرف شده و با طراحی یک زبان خاص دامنه، آزمون عملکردی برای حوزهی آزمون بار وبسایت صورت پذیرد تا بتوان برنامههای کاربردی وب را باکیفیت بالاتر عرضه داشت.
1-3- مشکل طراحی زبان خاص دامنه برای آزمون بار
این که جب یک چهارچوب مناسب جهت ارتباط با صفحات وب و کار با آنها است و به ما اجازه میدهد که بتوان از طریق یک رابط برنامهنویسی، در قالب یک زبان خاص دامنه، با تمامی تگهای صفحه وب مورد نظر ارتباط برقرار کنیم، به تنهایی برای آن چه که ما به دنبال آن هستیم کافی نخواهد بود. طراحی و اجرای یک آزمون عملکرد، به خصوص در مورد این پایاننامه که هدفش آزمون بار بر روی یک نرمافزار وب است، بسیار فراتر از کار با تگهای یک صفحه و ساخت درخواستهای GET و POST پروتکل HTTP است. اندازهگیری زمان اجرا، اندازهگیری میزان اطلاعات جا به جا شده و همین طور بررسی پاسخهای HTTP بازگشتی از سرویسدهنده وب، خود از مواردی هستند که یک
2-2-3 برنامهنویسی زبان گرا ……………………9
2-4 برنامه در برنامهنویسی زبان گرا…………………… 13
2-5 زبانهای خاص دامنه……………………. 16
2-5-1 طراحی و پیادهسازی زبان خاص دامنه……………………. 18
2-5-2 انواع زبانهای خاص دامنه……………………. 19
2-6 گرووی، زبان میزبان……………………. 21
2-7 آزمون نرمافزار……………………. 23
2-7-1 اهداف آزمون……………………. 24
2-7-2 انواع آزمون……………………. 25
2-7-2-1 آزمون جعبه سفید…………………… 25
2-7-2-2 آزمون جعبه سیاه…………………… 25
2-8 کارهای مرتبط…………………….. 27
فصل سوم: روش تحقیق
3-1 مقدمه…………………… 34
3-2 آزمون نرمافزار……………………. 34
3-3 مشکلات پیش روی آزموننویسها…………………… 35
3-4 زبان خاص دامنه برای آزمون دامنه……………………. 35
3-4-1 نیاز به وجود یک زبان خاص دامنه برای دامنه آزمون بار………. 36
3-5 آزمون نرمافزارهای تحت وب……………………… 37
3-5-1 آزمونهای سمت مشتری…………………….. 37
3-6 معماری سیستم پیشنهادی…………………….. 38
3-7 پارامترهای مؤثر در آزمون بار……………………. 40
3-7-1 پارامترهای زمانی…………………….. 40
3-7-2 پارامترهای مشخصکننده رخداد خطا در برنامه……………… 40
3-8 چارچوبهای مورد استفاده جهت آزمون نرمافزارهای تحت وب……….. 41
3-9 طرح پیشنهادی…………………….. 44
3-9-1 تعریف آزمون بار……………………. 45
3-9-1-1 فرآیندهای مورد نیاز برای آزمون بار……………………. 47
3-9-2 بررسی ساختار چهارچوب جب……………………… 47
3-9-3 نحو زبان خاص دامنه پیشنهادی…………………….. 49
3-9-3-1 ساختار کلی هر آزمون بار در زبان خاص دامنه پیشنهادی…………. 50
3-9-3-1-1 انتخابگرها…………………… 50
3-9-3-1-2 رخدادها…………………… 55
3-9-3-1-3 ایجاد رخدادها…………………… 56
3-9-3-1-4 بارگذاری اطلاعات از فایل…………………….. 56
فصل چهارم: محاسبات و یافته های تحقیق
4-1 مقدمه…………………… 58
4-2 آزمون زبان خاص دامنه پیشنهادی…………………….. 58
4-2-1 برنامه کاربردی 1: ورود و مشاهده نتیجه……………………. 60
4-2-2 برنامه کاربردی 2: ثبتنام در سایت……………………… 65
4-3 دستاورد زبان خاص دامنه پیشنهادی…………………….. 69
4-4 کاستیهای DSL پیشنهادی…………………….. 69
فصل پنجم : نتیجه گیری و پیشنهادات
5-1 نتیجهگیری…………………….. 72
5-2 کارهای آینده…………………… 76
پیوست الف: معرفی زبان گرووی……………… 78
ویژگیهای گرووی…………………….. 79
قدرت در کد گرووی…………………….. 81
محیط توسعه یکپارچه گرووی و پشتیبانی ویرایشگر………… 82
پیوست ب: واژهنامه فارسی به انگلیسی…………………….. 83
پیوست ج: واژهنامه انگلیسی به فارسی…………………….. 85
فهرست مراجع ……………………….87
چکیده:
این پایاننامه در مورد طراحی و پیادهسازی یک زبان خاص دامنه جهت انجام آزمون بار روی برنامههای کاربردی تحت وب است. زبانهای خاص دامنه، زبانهایی هستند که برای انجام اموری در حوزه خاص و با هدف سهولت در تولید برنامهها طراحی میشوند. در توسعه هر سیستم نرمافزاری، مرحله آزمون نرمافزار از جهات مختلف اهمیت بسیار داشته و زمان و هزینه زیادی را تحمیل میکند. برای نرمافزارهای تحت وب، آزمون بار از اهمیت ویژهای برخوردار است. هدف از این پایاننامه، ارائه زبانی است که با استفاده از آن بتوان آزمون بار برای برنامههای کاربردی تحت وب را با سهولت و سرعت بیشتر و با هزینه و تخصص کمتری انجام داد. در این حوزه، زبانهای خاص دامنه به منظور انجام آزمونهای واحد و آزمونهای کاربردی ارائهشدهاند. هرچند با استفاده از برخی قابلیتهای این زبانها و ترکیب آنها با امکانات زبانهای همه منظوره، میتوان آزمون بار نیز انجام داد، اما نمیتوان از آنها به عنوان یک زبان خاص دامنه جهت آزمون بار نام برد زیرا کاربران همچنان با برخی دشواریهای زبانهای همه منظوره درگیر هستند؛ به عبارت دیگر زبان خاص دامنهای که تنها مختص آزمون بار باشد، طراحی و یا گزارش نشده است. این پایاننامه در واقع پاسخی به این نیاز است. زبان خاص دامنه پیشنهادی بر مبنای زبان گرووی و چارچوبهای جِب و اسپاک بنانهاده شده و قادر است تمامی سناریوهایی که یک کاربر انسانی در یک صفحه وب انجام میدهد را پشتیبانی نماید. در این زبان کاربر میتواند مشخص کند که برنامه کاربردی مورد نظر وی، با چه تعداد کاربر به صورت همزمان مورد آزمون قرار گیرد. همچنین امکان ذخیره خروجی و نتایج آزمون به قالبهایی مانند XML، XLS، CSV و TXT در نظر گرفتهشده تا نتایج به راحتی در نرمافزارهای تحلیلی و آماری مورد استفاده باشد. در این پایاننامه برای دو برنامه کاربردی تحت وب که سناریوهای متداولی هستند، دو آزمون بار انجامشده تا صحت عملکرد زبان در انجام آزمون بار مشخص شود. بر اساس این آزمونها، زبان خاص دامنه پیشنهادی زمان ایجاد یک آزمون بار را به طور تقریبی تا 40 برابر برای زبانهای سطح بالایی چون Java و C# کاهش میدهد. این میزان کاهش برای زبان سطح پایینتری چون C++ تا 80 برابر نیز میرسد. از نظر کد نویسی نیز استفاده از زبان خاص دامنه پیشنهادی برای زبانهای سطح بالای مذکور تا 6 برابر و برای زبان سطح پایینی چون C++، 10 تا 12 برابر حجم کد نویسی را کاهش میدهد.
فصل اول: مقدمه و کلیات تحقیق
1-1- مقدمه
امروزه برنامههای کاربردی و نرمافزاری نقش بسزایی در زندگی روزمره دارند و بنابراین نیاز است هرگونه خطا در این برنامهها به حداقل مقدار ممکن برسد. در این میان برنامههای کاربردی وب از جمله برنامههایی هستند که بیشتر از بقیه مورد استفاده قرارگرفته و اهمیت یافتهاند لذا آزمون آنها نیز بسیار مورد توجه است. به دلیل تخصصی بودن حوزهی آزمون نرمافزار، زبانهای خاص دامنه متعددی برای این حوزه به وجود آمدهاند که نسبت به زبانهای همهمنظوره کاراتر عمل میکنند. یکی از این حوزهها آزمون برنامههای کاربردی وب است. در اکثر روشهای تولید برنامههای کاربردی فاز آزمون وجود دارد؛ اما در مورد برنامههای کاربردی وب این قضیه کمی متفاوت است چرا که این برنامههای کاربردی دو بخشی هستند. بخشی از آنها به قسمت سرور مربوط میشود و بخش دیگر از مرورگر کاربر به سمت سرور رفته و از دید کاربر بررسی میشوند؛ بنابراین برای برنامههای کاربردی وب دو نوع آزمون برای دو بخش مختلف صورت میپذیرد [1]:
آزمون الگوریتمها و عناصر داخلی سرور
آزمون این برنامهها از دید کاربر و آزمون موارد کاربری سیستم
چارچوبهای متعددی وجود دارند که کار و تعامل با برنامههای کاربردی وب را سادهتر ساخته و به خودکارسازی آزمون آنها میپردازند که نمونههایی از آنها عبارتند از جب[1]، کانو[2]، گردل[3] و… که با زبان گرووی[4] طراحیشدهاند چرا که زبان گرووی از جهات مختلفی که در فصلهای آتی ذکر خواهد شد، مناسبتر از هر زبان دیگری برای انجام این کار است. بر خلاف گذشته که فقط آزمون واحد برای برنامههای کاربردی وب انجام میشد، این چارچوبها زمینهی ایجاد آزمون عملکردی را نیز فراهم میکنند. از آنجا که آزمون برنامههای کاربردی وب با این چارچوبها سادهتر انجام میگیرد و در بین آنها محیط جب با دیگر چارچوبها و تمام مرورگرها سازگار است، از آن استفاده شده است تا زبانی برای آزمون بار در برنامههای کاربردی وب طراحی شود.
1-2- بیان مسئله
اهمیت آزمون نرمافزار و اثرات آن بر كیفیت نرمافزار کاملاً واضح است. نوشتن آزمونها کاری گرانقیمت، خواندن آنها مشقتبار و نگهداریشان بسیار دشوار است. برای کار با این حوزه به تخصص بالایی نیاز است به همین دلیل این تفکر به وجود آمده است که برای دامنهی آزمون نرمافزار، زبانی طراحی شود تا آزمونها با تمرکز و تخصص بیشتری انجام گیرند. آزمون عملکردی برنامههای کاربردی وب به طور موثر، همواره یک چالش بوده است چرا که با وجود دشواری که در مسیر نوشتن و آزمون این برنامهها وجود دارد اما باز هم تا کنون فقط آزمون واحد به صورت سنتی برای وب وجود داشته است .[1] برخی از اشکالات اساسی در یک برنامه وب، مواردی هستند که یک آزمون واحد هیچ راهی برای بررسی آنها ندارد.
متأسفانه، تحقیقات انجامشده نشان میدهد
2-1 مقدمه…………………… 7
2-2 روند تحول زبانها…………………… 8
2-2-1 زبانهای همه منظوره ……………………8
2-2-2 صفحه گستردهها و زبانهای نسل چهارم……….. 8
2-2-3 برنامهنویسی زبان گرا ……………………9
2-4 برنامه در برنامهنویسی زبان گرا…………………… 13
2-5 زبانهای خاص دامنه……………………. 16
2-5-1 طراحی و پیادهسازی زبان خاص دامنه……………………. 18
2-5-2 انواع زبانهای خاص دامنه……………………. 19
2-6 گرووی، زبان میزبان……………………. 21
2-7 آزمون نرمافزار……………………. 23
2-7-1 اهداف آزمون……………………. 24
2-7-2 انواع آزمون……………………. 25
2-7-2-1 آزمون جعبه سفید…………………… 25
2-7-2-2 آزمون جعبه سیاه…………………… 25
2-8 کارهای مرتبط…………………….. 27
فصل سوم: روش تحقیق
3-1 مقدمه…………………… 34
3-2 آزمون نرمافزار……………………. 34
3-3 مشکلات پیش روی آزموننویسها…………………… 35
3-4 زبان خاص دامنه برای آزمون دامنه……………………. 35
3-4-1 نیاز به وجود یک زبان خاص دامنه برای دامنه آزمون بار………. 36
3-5 آزمون نرمافزارهای تحت وب……………………… 37
3-5-1 آزمونهای سمت مشتری…………………….. 37
3-6 معماری سیستم پیشنهادی…………………….. 38
3-7 پارامترهای مؤثر در آزمون بار……………………. 40
3-7-1 پارامترهای زمانی…………………….. 40
3-7-2 پارامترهای مشخصکننده رخداد خطا در برنامه……………… 40
3-8 چارچوبهای مورد استفاده جهت آزمون نرمافزارهای تحت وب……….. 41
3-9 طرح پیشنهادی…………………….. 44
3-9-1 تعریف آزمون بار……………………. 45
3-9-1-1 فرآیندهای مورد نیاز برای آزمون بار……………………. 47
3-9-2 بررسی ساختار چهارچوب جب……………………… 47
3-9-3 نحو زبان خاص دامنه پیشنهادی…………………….. 49
3-9-3-1 ساختار کلی هر آزمون بار در زبان خاص دامنه پیشنهادی…………. 50
3-9-3-1-1 انتخابگرها…………………… 50
3-9-3-1-2 رخدادها…………………… 55
3-9-3-1-3 ایجاد رخدادها…………………… 56
3-9-3-1-4 بارگذاری اطلاعات از فایل…………………….. 56
فصل چهارم: محاسبات و یافته های تحقیق
4-1 مقدمه…………………… 58
4-2 آزمون زبان خاص دامنه پیشنهادی…………………….. 58
4-2-1 برنامه کاربردی 1: ورود و مشاهده نتیجه……………………. 60
4-2-2 برنامه کاربردی 2: ثبتنام در سایت……………………… 65
4-3 دستاورد زبان خاص دامنه پیشنهادی…………………….. 69
4-4 کاستیهای DSL پیشنهادی…………………….. 69
فصل پنجم : نتیجه گیری و پیشنهادات
5-1 نتیجهگیری…………………….. 72
5-2 کارهای آینده…………………… 76
پیوست الف: معرفی زبان گرووی……………… 78
ویژگیهای گرووی…………………….. 79
قدرت در کد گرووی…………………….. 81
محیط توسعه یکپارچه گرووی و پشتیبانی ویرایشگر………… 82
پیوست ب: واژهنامه فارسی به انگلیسی…………………….. 83
پیوست ج: واژهنامه انگلیسی به فارسی…………………….. 85
فهرست مراجع ……………………….87
چکیده:
این پایاننامه در مورد طراحی و پیادهسازی یک زبان خاص دامنه جهت انجام آزمون بار روی برنامههای کاربردی تحت وب است. زبانهای خاص دامنه، زبانهایی هستند که برای انجام اموری در حوزه خاص و با هدف سهولت در تولید برنامهها طراحی میشوند. در توسعه هر سیستم نرمافزاری، مرحله آزمون نرمافزار از جهات مختلف اهمیت بسیار داشته و زمان و هزینه زیادی را تحمیل میکند. برای نرمافزارهای تحت وب، آزمون بار از اهمیت ویژهای برخوردار است. هدف از این پایاننامه، ارائه زبانی است که با استفاده از آن بتوان آزمون بار برای برنامههای کاربردی تحت وب را با سهولت و سرعت بیشتر و با هزینه و تخصص کمتری انجام داد. در این حوزه، زبانهای خاص دامنه به منظور انجام آزمونهای واحد و آزمونهای کاربردی ارائهشدهاند. هرچند با استفاده از برخی قابلیتهای این زبانها و ترکیب آنها با امکانات زبانهای همه منظوره، میتوان آزمون بار نیز انجام داد، اما نمیتوان از آنها به عنوان یک زبان خاص دامنه جهت آزمون بار نام برد زیرا کاربران همچنان با برخی دشواریهای زبانهای همه منظوره درگیر هستند؛ به عبارت دیگر زبان خاص دامنهای که تنها مختص آزمون بار باشد، طراحی و یا گزارش نشده است. این پایاننامه در واقع پاسخی به این نیاز است. زبان خاص دامنه پیشنهادی بر مبنای زبان گرووی و چارچوبهای جِب و اسپاک بنانهاده شده و قادر است تمامی سناریوهایی که یک کاربر انسانی در یک صفحه وب انجام میدهد را پشتیبانی نماید. در این زبان کاربر میتواند مشخص کند که برنامه کاربردی مورد نظر وی، با چه تعداد کاربر به صورت همزمان مورد آزمون قرار گیرد. همچنین امکان ذخیره خروجی و نتایج آزمون به قالبهایی مانند XML، XLS، CSV و TXT در نظر گرفتهشده تا نتایج به راحتی در نرمافزارهای تحلیلی و آماری مورد استفاده باشد. در این پایاننامه برای دو برنامه کاربردی تحت وب که سناریوهای متداولی هستند، دو آزمون بار انجامشده تا صحت عملکرد زبان در انجام آزمون بار مشخص شود. بر اساس این آزمونها، زبان خاص دامنه پیشنهادی زمان ایجاد یک آزمون بار را به طور تقریبی تا 40 برابر برای زبانهای سطح بالایی چون Java و C# کاهش میدهد. این میزان کاهش برای زبان سطح پایینتری چون C++ تا 80 برابر نیز میرسد. از نظر کد نویسی نیز استفاده از زبان خاص دامنه پیشنهادی برای زبانهای سطح بالای مذکور تا 6 برابر و برای زبان سطح پایینی چون C++، 10 تا 12 برابر حجم کد نویسی را کاهش میدهد.
فصل اول: مقدمه و کلیات تحقیق
1-1- مقدمه
امروزه برنامههای کاربردی و نرمافزاری نقش بسزایی در زندگی روزمره دارند و بنابراین نیاز است هرگونه خطا در این برنامهها به حداقل مقدار ممکن برسد. در این میان برنامههای کاربردی وب از جمله برنامههایی هستند که بیشتر از بقیه مورد استفاده قرارگرفته و اهمیت یافتهاند لذا آزمون آنها نیز بسیار مورد توجه است. به دلیل تخصصی بودن حوزهی آزمون نرمافزار، زبانهای خاص دامنه متعددی برای این حوزه به وجود آمدهاند که نسبت به زبانهای همهمنظوره کاراتر عمل میکنند. یکی از این حوزهها آزمون برنامههای کاربردی وب است. در اکثر روشهای تولید برنامههای کاربردی فاز آزمون وجود دارد؛ اما در مورد برنامههای کاربردی وب این قضیه کمی متفاوت است چرا که این برنامههای کاربردی دو بخشی هستند. بخشی از آنها به قسمت سرور مربوط میشود و بخش دیگر از مرورگر کاربر به سمت سرور رفته و از دید کاربر بررسی میشوند؛ بنابراین برای برنامههای کاربردی وب دو نوع آزمون برای دو بخش مختلف صورت میپذیرد [1]:
آزمون الگوریتمها و عناصر داخلی سرور
آزمون این برنامهها از دید کاربر و آزمون موارد کاربری سیستم
چارچوبهای متعددی وجود دارند که کار و تعامل با برنامههای کاربردی وب را سادهتر ساخته و به خودکارسازی آزمون آنها میپردازند که نمونههایی از آنها عبارتند از جب[1]، کانو[2]، گردل[3] و… که با زبان گرووی[4] طراحیشدهاند چرا که زبان گرووی از جهات مختلفی که در فصلهای آتی ذکر خواهد شد، مناسبتر از هر زبان دیگری برای انجام این کار است. بر خلاف گذشته که فقط آزمون واحد برای برنامههای کاربردی وب انجام میشد، این چارچوبها زمینهی ایجاد آزمون عملکردی را نیز فراهم میکنند. از آنجا که آزمون برنامههای کاربردی وب با این چارچوبها سادهتر انجام میگیرد و در بین آنها محیط جب با دیگر چارچوبها و تمام مرورگرها سازگار است، از آن استفاده شده است تا زبانی برای آزمون بار در برنامههای کاربردی وب طراحی شود.
1-2- بیان مسئله
اهمیت آزمون نرمافزار و اثرات آن بر كیفیت نرمافزار کاملاً واضح است. نوشتن آزمونها کاری گرانقیمت، خواندن آنها مشقتبار و نگهداریشان بسیار دشوار است. برای کار با این حوزه به تخصص بالایی نیاز است به همین دلیل این تفکر به وجود آمده است که برای دامنهی آزمون نرمافزار، زبانی طراحی شود تا آزمونها با تمرکز و تخصص بیشتری انجام گیرند. آزمون عملکردی برنامههای کاربردی وب به طور موثر، همواره یک چالش بوده است چرا که با وجود دشواری که در مسیر نوشتن و آزمون این برنامهها وجود دارد اما باز هم تا کنون فقط آزمون واحد به صورت سنتی برای وب وجود داشته است .[1] برخی از اشکالات اساسی در یک برنامه وب، مواردی هستند که یک آزمون واحد هیچ راهی برای بررسی آنها ندارد.
متأسفانه، تحقیقات انجامشده نشان میدهد که استفاده از ابزارها برای نوشتن و اجرای آزمون عملکردی دست و پاگیر هستند. تفاوتهای موجود در مرورگرها و محیطها باعث شده است که اجرای آزمونها توسط توسعهدهندگان بر روی رایانههای مختلف تبدیل به یک چالش شود و یا اینکه اجرای آن عملی نباشد. همچنین نشاندهندهی این است که حتی پس از سرمایهگذاری زمان و تلاش برای نوشتن آزمون عملکردی، آنها تمایل دارند که بسیار شکننده باشند و همچنین فهم آنها برای توسعهدهندگان دیگر مشکل است. در این پایاننامه از جب که تمامی این موارد را تغییر داده و محیطی ساده فراهم آورده است تا بتوان با برنامههای کاربردی وب به سادگی تعامل برقرار کرد، استفاده شده است تا یکی از این چالشها برطرف شده و با طراحی یک زبان خاص دامنه، آزمون عملکردی برای حوزهی آزمون بار وبسایت صورت پذیرد تا بتوان برنامههای کاربردی وب را باکیفیت بالاتر عرضه داشت.
1-3- مشکل طراحی زبان خاص دامنه برای آزمون بار
این که جب یک چهارچوب مناسب جهت ارتباط با صفحات وب و کار با آنها است و به ما اجازه میدهد که بتوان از طریق یک رابط برنامهنویسی، در قالب یک زبان خاص دامنه، با تمامی تگهای صفحه وب مورد نظر ارتباط برقرار کنیم، به تنهایی برای آن چه که ما به دنبال آن هستیم کافی نخواهد بود. طراحی و اجرای یک آزمون عملکرد، به خصوص در مورد این پایاننامه که هدفش آزمون بار بر روی یک نرمافزار وب است، بسیار فراتر از کار با تگهای یک صفحه و ساخت درخواستهای GET و POST پروتکل HTTP است. اندازهگیری زمان اجرا، اندازهگیری میزان اطلاعات جا به جا شده و همین طور بررسی پاسخهای HTTP بازگشتی از سرویسدهنده وب، خود از مواردی هستند که یک
که استفاده از ابزارها برای نوشتن و اجرای آزمون عملکردی دست و پاگیر هستند. تفاوتهای موجود در مرورگرها و محیطها باعث شده است که اجرای آزمونها توسط توسعهدهندگان بر روی رایانههای مختلف تبدیل به یک چالش شود و یا اینکه اجرای آن عملی نباشد. همچنین نشاندهندهی این است که حتی پس از سرمایهگذاری زمان و تلاش برای نوشتن آزمون عملکردی، آنها تمایل دارند که بسیار شکننده باشند و همچنین فهم آنها برای توسعهدهندگان دیگر مشکل است. در این پایاننامه از جب که تمامی این موارد را تغییر داده و محیطی ساده فراهم آورده است تا بتوان با برنامههای کاربردی وب به سادگی تعامل برقرار کرد، استفاده شده است تا یکی از این چالشها برطرف شده و با طراحی یک زبان خاص دامنه، آزمون عملکردی برای حوزهی آزمون بار وبسایت صورت پذیرد تا بتوان برنامههای کاربردی وب را باکیفیت بالاتر عرضه داشت.
1-3- مشکل طراحی زبان خاص دامنه برای آزمون بار
این که جب یک چهارچوب مناسب جهت ارتباط با صفحات وب و کار با آنها است و به ما اجازه میدهد که بتوان از طریق یک رابط برنامهنویسی، در قالب یک زبان خاص دامنه، با تمامی تگهای صفحه وب مورد نظر ارتباط برقرار کنیم، به تنهایی برای آن چه که ما به دنبال آن هستیم کافی نخواهد بود. طراحی و اجرای یک آزمون عملکرد، به خصوص در مورد این پایاننامه که هدفش آزمون بار بر روی یک نرمافزار وب است، بسیار فراتر از کار با تگهای یک صفحه و ساخت درخواستهای GET و POST پروتکل HTTP است. اندازهگیری زمان اجرا، اندازهگیری میزان اطلاعات جا به جا شده و همین طور بررسی پاسخهای HTTP بازگشتی از سرویسدهنده وب، خود از مواردی هستند که یک