تمام تصمیمات شرطی را در دو بخش درست و غلط بررسی نمایند.
تمام حلقهها را در شرایط مرزی و در محدودههای عملیاتی اجرا کنند.
ساختمان داده های داخلی را بررسی نمایند تا از اعتبار آنها مطمئن شوند.
۲-۷-۲-۲ آزمون جعبه سیاه
آزمایش جعبه سیاه که آزمایش رفتاری نیز نامیده می شود، بر نیازهای تابعی نرمافزار تأکید دارد. یعنی، آزمایش جعبه سیاه باعث می شود مهندس نرمافزار مجموعههایی از شرایط ورودی را به دست آورد که کاملاً تمام نیازهای تابعی برنامه را بررسی می کنند. آزمایش جعبه سیاه راه جایگزینی برای روش جعبه سفید نیست. در عوض، روشی تکمیلی است که احتمالاً رده متفاوتی از خطاها را نسبت به روشهای جعبه سفید آشکار میکند. به واسطهی آنکه آزمون وبسایت از دید کاربر انجام می شود، روش پیشنهادی در این پایان نامه یک آزمون جعبه سیاه می تواند در نظر گرفته شود.
آزمایش جعبه سیاه سعی در یافتن خطاهایی در دستهبندیهای زیر دارد:
توابع غلط یا حذفشده
خطاهای واسطها
خطا در ساختمان داده ها یا دسترسی به بانک اطلاعاتی خارجی
خطاهای رفتاری یا کارایی
خطاهای آماده سازی و اختتامیه
برخلاف آزمون جعبه سفید که در اوایل فرایند آزمایش انجام می شود، آزمایش جعبه سیاه در مراحل آخر آزمون به کار گرفته می شود. چون آزمایش جعبه سیاه عمدتاً به ساختار کنترلی توجهی ندارد، توجه بر دامنه اطلاعات متمرکز می شود. آزمایشها برای پاسخگویی به سؤالات زیر طراحی میشوند:
چگونه اعتبار عملکردی آزمایش می شود؟
چگونه رفتار و کارایی سیستم آزمایش می شود؟
چه ردههایی از ورودی، نمونههای آزمایش خوبی میسازند؟
آیا سیستم مخصوصاً به مقادیر خاص ورودی حساس است؟
چگونه مرزهای یک رده از داده ها مجزا می شود؟
سیستم چه نوساناتی برای سرعت و حجم داده ها دارد؟
ترکیبات خاص داده ها چه اثری بر عملکرد سیستم دارند؟
با بهکارگیری روشهای آزمایش جعبه سیاه، مجموعه ای از نمونههای آزمایشی به دست میآیند که معیارهای زیر را برآورده میسازند:
نمونههای آزمایشی که باعث کاهش بیش از حد یک واحد از تعداد نمونههای آزمایشی میشوند که برای رسیدن به آزمایش قابلقبول مورد نیاز میباشند.
نمونههای آزمایشی که چیزی در مورد حضور یا عدم حضور ردههایی از خطاها ارائه دهند. به جای اینکه یک خطا مربوط به یک آزمایش خاص در حال انجام را آشکار نمایند.
۲-۸ کارهای مرتبط
استفاده از زبانهای خاص دامنه برای آزمون نرمافزار امری متداول است. این مسئله در سالهای اخیر که ابزارهای تولید و طراحی زبانهای خاص منظور پیشرفت قابلملاحظهای داشتهاند، بیش از پیش مورد توجه قرار گرفته است.
طبق بررسیهای انجامشده زبان خاص دامنهای که به طور خاص برای انجام آزمون بار روی برنامههای کاربردی تحت وب باشد، وجود ندارد. اکثر زبانهای خاص دامنه موجود در حوزه آزمون نرمافزار، برای آزمون عملکردی برنامههای کاربردی (چه در فضای وب و چه در فضای سیستمعامل) نوشتهشدهاند. آزمون عملکردی برنامههای تحت وب، در واقع بخشی از آزمون بار است؛ به عبارت دیگر از ابزارهای موجود برای انجام آزمون عملکردی برنامههای وبی، میتوان برای آزمون بار نیز استفاده کرد. در واقع آزمون بار اجرای سناریوهای مشخصی از آزمون عملکردی به صورت همزمان توسط تعداد زیادی کاربر و ثبت رفتار سیستم در برابر این درخواستها است. از آنجا که زبان خاص دامنهای به طور اختصاصی برای آزمون بار وجود ندارد، در این بخش اشارهای به زبانهای خاص دامنه و ابزارهای موجود برای انجام آزمون عملکردی که برای انجام آزمون بار نیز میتوانند مورد استفاده قرار گیرند، خواهد شد.
زبانهای مختلف هر یک به تناسب خود دارای کتابخانههایی هستند که میتوان با آنها آزمون بار نیز انجام داد. با بررسی کارهای مشابه، میتوان این کتابخانهها را عمدتاً در دو دسته جای داد:
کتابخانهها و چهارچوبهای انتخاب و انجام عملیات روی عناصر موجود در صفحه وب.
کتابخانههای کار با نخها و اتصالها.
کتابخانههای دسته اول عمدتاً نحو خاص خود را دارند و به همین دلیل در زمره زبانهای خاص دامنه قرار میگیرند. معروفترین کتابخانه در این دسته، سلنیوم[۲۸] است. نسخه جدید این کتابخانه، در واقع چارچوبی قابلحمل برای آزمون برنامههای کاربردی است. این چارچوب امکانی فراهم میکند که در آن کاربر میتواند با عناصر وب از طریق برنامه تعامل داشته باشد. این ابزار در زبانهای مختلفی چون جاوا، C#، Modern C++، پرل، پایتون، PHP، روبی و گرووی قابل استفاده است. رابط برنامه کاربردی جدید مورد استفاده در این زبانهای برنامهنویسی که از نسخه سلنیوم۲ به بعد ارائه گردید، با نام سلنیوم وب درایور[۲۹] شناخته میشود. با بهره گرفتن از وب درایور کاربر میتواند در برنامه خود با برنامه کاربردی تحت وب، «تعامل کامل» داشته باشد[۱۷]. این تعامل درست شبیه حالتی است که کاربر در مرورگر با برنامه کار میکند با این تفاوت که درخواستها به و پاسخها از برنامه تحت آزمون، کاملاً توسط برنامه آزمون کننده مدیریت میشود.
هرچند با بهره گرفتن از سلنیوم آزمونهای مختلفی روی برنامههای تحت وب نوشته شده است، اما تمامی این آزمونها در راستای آزمون کاربردی نرمافزارهای وبی بودهاند و هیچ یک قابلیتی برای آزمون بار در نظر نگرفته و طبعاً زبان خاص دامنهای نیز برای این منظور ارائه ندادهاند.
در بسیاری از کارهای مشابه که از چهارچوبهای خودکاری سازی مانند سلنیوم استفاده نکردهاند، عموماً درخواستها به صورت دستی ارسال، دریافت و پردازش میشوند. معمولاً این نوع آزمونها «کامل» نیستند زیرا تأثیرات زبان سمت کلاینت (معمولاً جاوااسکریپت) که توسط مرورگر به اجرا درمیآید، در آنها نادیده گرفته میشود[۱۸]. در این موارد تعامل با عناصر وب، مسئله مهم دیگری است. روش عمومی استفاده از عبارات منظم است تا بتوان با عناصر مختلف صفحه تعامل داشت. به طور کلی به دلیل کندی، دشواری توصیف الگوها، در برخی موارد ضعف در پشتیبانی از کُدگذاریهای صفحه و نهایتاً امکان خطای بیشتر، در موارد کمی از عبارات منظم برای انتخاب عناصر صفحه استفاده شده است.
ابزار دیگری که میتوان آن را در زمره زبانهای خاص دامنه کار با عناصر وب جای داد، تویل[۳۰] است. این ابزار در واقع یک مرورگر کوچک و سبک خط فرمانی است که با دستورات خاص خود قادر به انجام فرآیندهایی در صفحات وب است[۱۹]. تویل در واقع موتور برنامههای کاربردی وبی گوگل است و توسط این شرکت پشتیبانی میشود. این ابزار قادر به شناسایی خطاهای رخ داده در سطح پروتکل است اما در کل نسبت به ابزارهای دیگری چون سلنیوم قدرت و انعطافپذیری کمتری دارد.
چهارچوب دیگر ویندمیل[۳۱] نام دارد که بسیار شبیه به سلنیوم است با این تفاوت که این چهارچوب با زبان پایتون و جاوااسکریپت نوشتهشده و انعطافپذیری سلنیوم برای استفاده در زبانهای گوناگون را ندارد. با بهره گرفتن از این چهارچوب و بر اساس نحو خاصی که دارد، میتوان آزمونهای برنامههای کاربردی تحت وب نوشت. ویندمیل هم میتواند به صورت خط فرمانی و هم با ضبط رفتار کاربر در مرورگر به کار رود[۲۰].
اما دسته دوم کتابخانهها، مربوط به مدیریت تعداد درخواستهای همزمان به برنامه کاربردی است. این درخواستها عمدتاً از طریق برنامهنویسی چندنخی پیادهسازی میشوند. هرچند مدل کلی برنامهنویسی چندنخی تقریباً در تمامی موارد یکسان است، اما زبانهای مختلف هر یک قواعد خاص خود را برای کار با نخها دارند. همچنین زبان مورد استفاده باید امکان ایجاد اتصالات شبکه به طور همزمان را نیز داشته باشد.
جدول ۲-۱: مقایسه زبانهای خاص دامنه با زبان خاص دامنه پیشنهادی
gatling | grinder | twill | زبان پیشنهادی | |
زبانهای مورد استفاده در توسعه چهارچوب یا ابزارها | اسکالا | موتور اصلی آن به زبان جاوا نوشته شده است اما اسکریپتهای تست آن با زبانهای جیتون و Clojure نوشته می شود. |