بخشی از مقاله
پژوهشی های ایده محور در ازمون های نرم افزار
چکیده:
آزمون نرم افزار همواره در پیشرفتهای کاربردی تأثیرگذار بوده است و اهمیت بالایی را به خود اختصاص داده است. در این مقاله به منظور کارآمدتر شدن آزمونهای نرمافزاری دو ویژگی اصلی چارچوبهای اجرای آزمون و ادغام دائمی مورد بررسی قرار گرفته اند. این ویژگیها سبب می شوند که هر آزمون نرم افزاری با توجه به شرایط اولیه، دقیق تر و کاراتر بررسی گردند. همچنین در ادامه به بررسی چالش های آزمون مدرن، اوراکل ها، تجزیه برنامه احتمالی، خصوصیات غیر وظیفهمندی، آزمون بره در زمینه پیشرفت پایه دامنه و اعمال نفوذ ابر و انبوه پرداخته شده است که این چالش ها فرصتهایی را برای مطالعات صنایع به ارمغان خواهد آورد.
کلمات کلیدی: آزمون نرم افزار، الگوریتمها، چارچوبها، ادغام
مقدمه
محدوده آزمون نرمافزار پیشرفتهای مهمی در کاربردهای عملی داشته است. که پژوهشهای ایده محور ۱ نامیده می شوند. دو پژوهش اصلی شناسایی شده توسط محققان عبارتاند از: آ. چارچوبهایی برای اجرای آزمون ب. ادغام پیوسته (پذیرش گسترده روشهای ابتکاری) همانطور که در شکل ۱ مشاهده میگردد، محققان مطالعاتی روی شاخههای پژوهشهای مرکزی، با موضوعات تکمیل شده در قسمت دستاوردها در سمت چپ و اهداف نهایی، چالشها و رویاها در سمت راست انجام دادهاند. چهار نوار افقی مسیرهای پژوهشی های شناسایی شده در حال حرکت به سمت تحقق رویاها به صورت زیر نام گذاری شدهاند: ۱) تئوری آزمون جهانی ۲) آزمون مدل محور ۳) آزمون ۱۰۰٪ خودکار ۴) حداکثر تأثیرات آزمون مسیرهایی در پایین و بالا به طریقی مرتب شدهاند که ابزارهای پیشرفت را نشان می دهند و سبب مهندسی آزمون تأثیر-هزینه می شوند. چالشی های محدوده افقی ۶ نوار عمودی مترادف با سؤالات مهندسی آزمون با عنوان "چرا، چگونه، چه مقدار، چه چیز، کجا و چه موقع " هستند. چالش های پژوهشهای مهندسی آزمون مکانهای دیگری در این نقشه هستند. نوارهای عمودی وابسته به رویاهایی با زمان طولانی یا رویاهایی که عمدتاً تمایل پیوستن به حقیقت دارند، می باشند و نوارهای افقی بر طبق سؤالات، معرفی خصوصیات وظیفه مندی و غیر وظیفه مندی نرمافزار عمدتاً در مرکز میباشند ا۱. ۲]
پژوهشهای ایده محور
چارچوبهایی برای اجرای آزمون: چارچوبها برای اجرای آزمون نرم افزار بهبود یافته در صنعت هستند. آنها به طور غیرمستقیم روی تحقیقات تأثیر میگذارند. مشهورترین و گستردهترین چارچوب برای خودکارسازی اجرای آزمون، Junit است. که به توسعه دهندگان اجازه می دهد برای عملی شدن یک قالب استاندارد، آزمونها را به صورت تکرارپذیر بنویسند. امروزه Junit توسط بسیاری از محیطهای توسعه پشتیبانی می شود. تعدادی از چارچوبهای مشابه برای زبان های دیگر با عنوان XUNIT تکثیر شده است.(مثل NUNIT برای و PHPUNIT برای PHP). که اغلب مترادف آزمون واحد هستند. چارچوبهای XUNIT روش استانداردی برای کدگذاری چهار قسمت اساسی از یک آزمون واحد را فراهم می کنند که عبارتاند از: تنظیم حالت اولیه، فراخوانی وظیفه مندی تحت آزمون، بررسی نتایج آزمون و انجام پاکسازی مورد نیاز. برای مثال، یک آزمون unitل برای روش تشخیص کاراکترها از یک کلاسی فایل به صورت: ۱) ایجاد یک نمونه از فایل ، وابستگی آن با فایل موجود به نام f و باز کردن آن (تنظیم حالت اولیه) ۲) فراخوانی تشخیص کاراکتر برای خواندن یک کاراکتر از T (فراخوانی وظیفه مندی تحت آزمون) ۳) اثبات اینکه کاراکتر خوانده شده اولین کاراکتر T است و 4) بستن فایل (انجام یک پاکسازی در صورت لزوم) استفاده می شود. چارچوبها برای اجرای آزمون خودکار به صورت عمومی در زمینه پردازش های توسعه، توسط پردازش های بنیادی چابک، عملی شدهاند که بازخورد فوری ارائه میدهد و به توسعه دهندگان میگوید ایا تغییرات انها خطاهای رگرسیون باشد یا کدهایی که فقط نیازهای داده شده را نوشته باشند. مثال عملی، استفاده از Junit در پردازش های اسکرام " ۳] است که چارچوبی برای کنترل پروژه به عنوان زیرشاخه مدل تولید نرم افزار چابک محسوب می شود. محققان نه فقط برای انجام ارزیابی تجربی روی سیستمهای بسیار واقع بینانه فعالیت می کنند، بلکه برای تعریف ابزارهای ان ها از یک روشی استاندارد عملی هم استفاده می کنند. یک ابزار که بتواند روی آزمون Junit عمل کند به طور ایده الی روی بسیاری از برنامه ها اجرا می شود چون نوعی از حالات آزمون با قابلیت دسترسی بالا است. ادغام دائمی " ادغام دائمی یا CI پژوهش ایده محور دیگری روی آزمون نرم افزار است [۴]. ایده اساسی به این صورت است که آزمون یک یا چندین بار در یک روز، روی همه نسخههای نرمافزار برای توسعه دهندگان مختلف یا گروه هایی که در انها یک دنباله آزمون ادغام باید به طور خودکار اجرا شود، انجام می گیرند. کدها پیش از نهایی شدن کمک می کنند تا کدهای پایه ثابت بمانند (یعنی خطاهای رگرسیون رخ ندهند) و تلاشی مهندسی می تواند با قابلیت اطمینان بیشتری انجام شود. اگر برخی از ازمون ها با شکست مواجه شود توسعه دهندگان مسئول تغییر باید مشکلات مرتبط با آزمون را تصحیح کنند. این روش سودمند است برای اینکه می تواند مقدار کد مجددا به کار گرفته شده را در فازهای بعدی توسعه کاهش دهد و همچنین توسعه کلی را تسریع نماید. به طور سنتی، ادغام در پایان یک سیکل طولانی انجام می شود و مشکلات ناسازگاری زیادی در طول ماژول های ادغام شده ایجاد می کند. CI اکنون فن مشترک بسیاری از سازمان های تولید کننده نرم افزار است. مثل گوگل (که در یک مقیاس بسیار بزرگ ایجاد شده است)، یا موزیلا (با نرمافزار تیندرباکس)، این شرکت ها به طور فزاینده با تکیه بر CI توسعه محصولات خود را بهبود میبخشند. در برخی زمینه ها، کامپیوترها به طور کامل به اجرای سرورهای ساخته شده، اختصاص داده می شوند و ازمون را فشرده و پرقدرت روی کدهای تولید شده در مخازن اصلی انجام می دهند که توسعه دهندگان بتوانند وضعیت کدهای سیستم را حتی زمانی که سرورهای بزرگتر یا ابرها در آزمون ها به کار می روند، بررسی کنند. CI چالش ها و مشکلات آزمون رگرسیون را به صورت زیر مطرح می کند - توسعه دهندگان باید انتظاری که در مورد تغییرات اعمال شده دارند، برای نمونه حداقل در یک روز، و در بسیاری از حالات اغلب اوقات، مطابقت دهند. نسخه سیستم های کنترل باید نهایی شدن تجزیهناپذیر را پشتیبانی کنند. برای پیشگیری از تلاش روی نهایی شدن جزئی ’، آزمون باید خودکار شود و اوراکل را هم به طور خودکار درگیر کند. همچنین زیربنای آزمون باید به اندازه کافی قوی باشد تا سطح قابل توجهی از به هم زدن کدها را انجام دهد. - چالش دیگر، در زمینه ای از CI این است که چگونه مختصر سازی سیکل ذخیره-کامپایل" بررسی شود و نزدیک تر به محیط توسعه انجام شود. بنابراین توسعه دهندگان باید به طور واقعی بازخورد کد آنها را به دست آورند. برای بررسی نحوی در یک سطح معنایی بسیار فزاینده در آزمون خودکار، CI و فنون دیگر مدارک روشنی از اینکه چگونه یک پردازش ازمون در روش کار، بهبود یافته است، فراهم می کنند. سه عامل مهم برای بررسی مناسب نرمافزار عبارت اند از: ۱) ملزومات بررسی شده برای کیفیت نرم افزار ۲) مجتمع سازی پیوسته برای پردازشهای توسعه و ۳) انجام حرفهای و ماهرانه .||5, 6|| - چالشها و فرصتها این چالشی ها به طور ابتدایی به فاکتورهای انسانی (یعنی توسعه دهندگان و طرز فکر آن ها) و همینطور به انتقال فناوری (یعنی انتقال پژوهشی یا فن کار در ارتباطات بهتر با صنعت). وابسته هستند.
آزمون مدرن، سیستمهای جهان واقعی بسیاری از روشهای آزمون و روش های دانشگاهی ویژه هنوز در کاربردهای صنعتی استفاده نشدهاند. سیستمهای نرم افزار امروزه از نرم افزارهای سنتی بسیار متفاوت هستند و ویژگی هایی دارند که آنها را برای روش های آزمون موجود نامناسب می کند. مخصوصاً برای بسیاری از سیستمهای نرم افزاری مدرن که شامل اجزایی با منشأ متفاوت و با درجه متفاوتی از اتصال به یکدیگر هستند. آنها اغلب توزیع شده هستند و پویایی زیادی دارند. کلاس های بی شماری از نرم افزارهای کاربردی که به طور فزاینده معروف هستند مثل نرم افزارهای موبایل و تحت وب، خط تولید نرم افزار معماریهای سرویس گرا و نرمافزارهای بر پایه ابر این ویژگی ها رادارند. در اینجا نرم افزار تحت وب بررسی میگردد: یک نرم افزار تحت وب به طور نمونه شامل مجموعه ای از اجزای سمت سرور است که ممکن است شامل ترکیبی از سرولتهای جاوا، اسکریپتهای PHP، فایلهای پیکربندی XML، میزبان شده روی یک نرم افزار کاربردی سرور باشد که کارایی آنها وابسته به هزاران پارامتر پیکربندی است. این مؤلفه ها اغلب با یک سرور پایگاه داده تعامل دارند که ممکن است روی ماشین متفاوتی میزبانی شود. و خودش یک فضای پیکربندی پیچیده باشد. یک نرم افزار تحت وب همچنین به طور نمونه مجموعه ای از مؤلفههای سمت کلاینت دارد که شامل مجموعه ای از ترکیب کدهای HTML تولید شده به صورت پویا است و اسکریپت هایی که باید روی مرورگرها و سکوهای گوناگون اجرا شوند.