چکیده: راه اندازی محیط تست در کنار نوشتن Test Scriptها(البته در صورت تمایل به تست اتوماتیک) مهمترین کار در مرحله Test Implementation محسوب میشود. موضوعی چالش برانگیز، که نیازمند پیشبینی حالات مختلف و استخراج نیازمندیهای گوناگون در اجرای تست است. ضعف در ایجاد محیط تست به سادگی میتواند فرآیند تست را با یک تاخیر و چالش جدی که در نهایت منجر به اتلاف هزینه میشود، مواجه نماید. در این مقاله قصد تا حداقلهای ایجاد یک محیط تست کارآمد را بیان نماییم.
- محیط تست چیست؟
محیط تست مجموعه ای از نرم افزارها و سخت افزارها برای اجرای Test Case هاست که در اختیار تیم های تست قرار دارد. به عبارت دیگر، محیط تست از اجرای تست با در محیطی که با سخت افزار، نرم افزار و شبکه پیکربندی شده است، پشتیبانی می کند.
به بیان دیگر، بستر تست یا محیط تست بر اساس نیاز نرم افزارهای تحت تست، پیکربندی شده است. در برخی موارد، ترکیبی از محیط تست و داده های تست (Test Data) بستر تست را تشکیل میدهند.
راه اندازی یک محیط تست مناسب، موفقیت تست نرم افزار را تضمین میکند. هرگونه نقص در این روند ممکن است منجر به پرداخت هزینه و وقت برای مشتری شود.
- مناطق کلیدی برای راه اندازی محیط تست
برای فراهم کردن محیط تست، مناطق کلیدی شامل موارد ذیل است:
- سیستم و برنامهها
- دادههای تست(Test Data)
- سرور پایگاه داده (Database server)
- محیط اجرایFront-end
- سیستم عامل Client
- مرورگر
- سخت افزار(شامل سیستم عامل Server)
- شبکه
- مستنداتی از قبیل اسناد مرجع، راهنماهای پیکربندی، راهنماهای نصب، کتابچه های راهنمای کاربر
- روند راه اندازی محیط تست نرم افزار
تستها محدود به مواردی میشوند که برای اجرا مجازند و باقی تستها از این محدوده خارج می شود.
افراد زیر درگیر تنظیم محیط مناسب برای تست هستند:
- Admin سیستم
- برنامه نویسان (Developer)
- تسترها
- و البته گاهی اوقات کاربران یا متخصصانی که مایلند نرم افزار را تست کنند.
محیط تست نیاز به ایجاد تعداد زیادی از مناطق مجزا دارد که در ذیل بدانها پرداختهایم.
الف. راه اندازی تست سرور (Test Server)
ممکن است هر تستی را نتوان بر روی دستگاه محلی اجرا کرد و نیاز باشد تا یک سرور تست داشته باشیم که بتواند از برنامهها پشتیبانی کند. به عنوان مثال،Fedora برایPHP ، Java-based Applicationها(با Mail Server یا بدون آن)، ستاپ cron، و … راه اندازی شده است.
ب. شبکه
شبکه بر اساس نیاز تست راه اندازی میشود. که شامل موارد ذیل است:
- راهاندازی اینترنت
- راهاندازی LAN Wifi
- راهاندازی شبکه خصوصی
این بخش تضمین میکند که ازدحام احتمالی که هنگام تست ایجاد میشود، بر اعضای دیگری که از شبکه عمومی استفاده میکنند تأثیر نگذارد.(به طور مثال از ازدحام احتمالی فعالیت برنامه نویسان، طراحان، نویسندگان محتوا و غیره جلوگیری می کند)
پ. نصب تست PC
برای تست وب، ممکن است لازم باشد مرورگرهای مختلفی را برای تسترها تنظیم کنید. برای برنامههای دسکتاپ(Desktop Application)، به نصب انواع مختلف سیستم عاملها در کامپیوترهای شخصی تسترها نیاز دارید. به عنوان مثال، ممکن است به منظور تست برنامه ویندوز فون(که مدتهاست از رده خارج شده) نیاز به:
- نصب ویژوال استودیو
- شبیه ساز Windows phone
- و ارائه یک موبایل دارای سیستم عامل ویندوز به تست کننده
ت. Bug Reporting (گزارشگیری باگ)
ابزار Bug Reporting باید در اختیار تسترها قرار گیرد.
ث. ایجاد Test Data برای محیط تست
بسیاری از شرکت ها برای تست محصول نرم افزاری خود، از یک محیط تست جداگانه استفاده میکنند. رویکرد معمول که امروزه استفاده می شود چنین است که شرکتها دادههای واقعی را برای تست کردن کپی میکنند. این موضوع به تستر کمک میکند تا بدون خراب کردن دادههای واقعی، مشکلات مشابه سرور اصلی را تشخیص دهد.
رویکرد استفاده از داده های اصلی(منظور داده هایی است که توسط خود نرم افزار تولید شده است) به عنوان Test Data شامل موارد زیر است:
- کپی گیری: ستاپ Production Jobها برای کپی دادهها در یک محیط تست مشترک.
- دستکاری دادهها: همه PII(اطلاعات قابل شناسایی شخصی یا Personally Identifiable Information) همراه با سایر دادههای حساس اصلاح میشوند. بدین معنا که PIIها با دادههای منطقی درست اما غیر شخصی جایگزین میشود.
- داده های غیرمرتبط با تست خود را حذف کنید.
تسترها یا برنامهنویسان میتوانند موارد ذکر شده را در محیط تست فردی خود کپی کنند، همچنین میتوانند آن را طبق نیاز خود تغییر دهند.
توجه شود، موضوع حریم خصوصی، مسئله اصلی در کپی اطلاعات واقعی در راستای اجرای تست است. برای غلبه بر مسائل مربوط به حریم خصوصی، باید به دنبال Test Dataمبهم و ناشناس باشید.
برای ناشناس سازی دادهها میتوان از دو روش استفاده کرد:
- لیست سیاه(Black List): سیاه بدین معنی که دادهها در لیست تماما ناشناس و مبهم هستند. در این روش، تمام قسمتهای داده بدون تغییر باقی میمانند. به جز آن قسمتهایی که کاربران مشخص کردهاند.
- لیست سفید(Black List): سفید بدین معنی که دادهها در لیست تماما مشخص و شفاف هستند. به طور پیش فرض، این روش، تمام حوزه های دادهها را ناشناس میکند. به جز لیستی از فیلدهایی که تسترها اجازه کپی کردن آنها را دارند. یک قسمت در لیست سفید وجود دارد که نشان میدهد کپی کردن دادهها به همان صورت موجود اشکالی ندارد و ناشناس شدن مورد نیاز نیست.
همچنین، اگر از دادههای اصلی استفاده میکنید، باید در مورد نحوه ارسال داده، هوشمند باشید. Query زدن روی پایگاه داده با استفاده از اسکریپت SQL یک روش موثر است.
- مدیریت محیط تست
مدیریت محیط تست در واقع با نگهداری بستر تست سروکار دارد.
لیست فعالیتهای مدیریت محیط تست عبارتند از:
- نگهداری از مخزن مرکزی با تمام نسخههای به روز شده محیطهای.
- مدیریت محیط تست طبق درخواست تیم تست.
- ایجاد محیطهای جدید مطابق شرایط جدید.
- نظارت بر محیطها(آن را مانیتور کنید).
- محیطهای منسوخ شده تست را حذف و یا به روز رسانی کنید.
- در مورد Issueهایایجاد شده در محیط تست تحقیق و بررسی کنید.
- تا زمان حل Issueها آنرا رها نکنید، و مرتب هماهنگیهای لازم را انجام دهید.
- فهرست موارد مورد نیاز بررسی محیط تست
علاوه بر موارد ذکر شده، چند سوال دیگر وجود دارد که باید قبل از ستاپ محیط تست به آنها پاسخ دهید.
- آیا میتوان محیط تست داخلی ایجاد کرد یا باید برونسپاری شود؟
- آیا بایداز استاندارد داخلی شرکت تبعیت شود یا از استانداردهای خارجی(مانند IEE , ISOو …) پیروی کنید؟
- چه مدت به محیط تست نیاز داریم؟
- تفاوت بین سیستمهای تست و سیستم اصلی(Production) بررسی شود و تأثیر آنها بر اعتبار تست باید تعیین گردد.
- آیا میتوانید از تنظیمات موجود برای سایر پروژههای شرکت استفاده کنید؟
- چالشهای ستاپ کردن مدیریت محیط تست
- برنامهریزی مناسب در مورد استفاده از منابع
برنامه ریزی ناکارآمد برای استفاده از منابع میتواند بر خروجی واقعی تأثیر بگذارد. همچنین، ممکن است منجر به درگیری بین تیمها شود.
- محیط از راه دور(Remote Environment)
ممکن است محیط تست از نظر جغرافیایی از تیم فاصله داشته باشد(در مکان دیگری قرار داشته باشد). در چنین حالتی، تیم تست برای دسترسی به محیط تست و برطرف کردن نیازهای احتمالی مختلف باید به تیم پشتیبانی اعتماد کند.(نیازهایی چون نرم افزار، سخت افزار و سایر موارد)
- تنظیم زمان دقیق
گاهی اوقات تنظیم زمان دقیق تست( بالاخص در Integration Testing) خیلی مفصل و پیچیده می شود.
- استفاده مشترک توسط تیمها
اگر محیط تست توسط تیم برنامه نویس و تیم تست به طور همزمان استفاده شود، نتایج تست احتمالا خراب خواهد شد، مگر آنکه ترفندی بیندیشید.
- پیکربندی تستهای پیچیده
تستهای خاص به پیکربندی محیط تست پیچیده نیاز دارند. این موضوع ممکن است تیم تست را به چالش بکشد.
- Best Practiceها برای راهاندازی مدیریت محیط تست
- نیازهای تست را کاملاً بفهمید و اعضای تیم را آموزش دهید.
- اتصالپذیری باید قبل از شروع تست بررسی شود.
- داشتن مجوزها را برای سخت افزارها و نرم افزارهای مورد نیاز بررسی کنید.
- مرورگرها و نسخههای نرم افزارها را چک کنید.
- یک Planبرای استفاده برنامهریزی شده از محیط تست داشته باشید.
- ابزارهای اتوماسیون و تنظیمات آنها را بررسی کنید.
- Test Bed در تست نرم افزار چیست؟
Test Bed در تست نرم افزار یک محیط توسعه نرم افزار است که به برنامه نویسان اجازه میدهد، ماژولهای خود را بدون تأثیر بر سرورهای زنده Production، تست کنند. Test Bed نه تنها توسط برنامهنویسان استفاده میشود، بلکه توسط تسترها نیز مورد استفاده قرار میگیرد و از آن به عنوان محیط تستی برای تست دقیق و شفاف فناوریهای جدید یاد میشود.
- خلاصه
- محیط تست مجموعهای از نرم افزارها و سخت افزارها میباشد که تیم تست، تست خود را بر روی آن انجام میدهد.
- برای محیط تست، یک سری مناطق کلیدی برای راه اندازی دارد که شامل موارد ذیل است:
- سیستمها و برنامهها
- دادههای تست(Test Data)
- سرور پایگاه داده(Database server)
- محیط Front-end Running و …
- چند نمونه ازچالشها هنگام ستاپ یک محیط تست:
- محیط از راه دور(Remote Environment)
- تنظیم زمان دقیق
- استفاده مشترک توسط تیمها
- پیکربندی تستهای پیچیده
- برنامهریزی ناکارآمد برای استفاده از منابع