کلیدواژگان: تست های نرم افزاری، اجرای تست، انواع تست، ارزیابی نرم افزار.
شیوه های بررسی نرم افزار
شیوه های بررسی نرم افزار عبارت اند از:
1. تست جعبه سفید (White-Box test)
نام دیگر این روش، تست جعبه شیشه ای است و با استفاده از ساختارهای درونی یک قطعه، حالات تست را استخراج می کند. در این روش، سعی می شود حالات تست به گونه ای استخراج شوند که موارد زیر تضمین گردند:
- - تمامی مسیرهای کنترلی مستقل در کد یک قطعه، دستکم یکبار تست شده باشند؛
- - تمامی تصمیم گیری های منطقی (if) بر اساس درست یا نادرست بودن شرط آن تست شده باشند؛
- - تمامی حلقه های تکرار (loop) در محدوده تکرار و ابتدا و انتهای شرط حلقه تست شده باشند؛
- - تمامی ساختارهای داده ای داخلی از جهت اعتبارسنجی وارسی شده باشند.
2. تست مسیرهای بنیادی (Basic Path Testing)
در این روش، سعی می گردد تا تمامی مسیرهای کنترلی برنامه حداقل یکبار اجرا شوند تا بدین صورت، تمامی دستورهای برنامه اجرا شده باشند. برای انجام این تست، ساختار جریان کنترلی به صورت گراف، جریان در نظر گرفته می شود. این گراف جریان کنترلی، منطق درون برنامه را نشان می دهد و ساختار برنامه را می توان به صورت چنین گرافی بیان کرد. در این روش، برای استخراج حالات تست، با استفاده از طراحی و یا کد منبع گراف، جریان متناظر آن رسم می گردد. میزان پچیدگی منطق درون برنامه برای گراف جریان تعیین می شود و برای هر کدام از مسیرهای مستقل، یک حالت تست آماده می گردد تا تضمین کند که آن حالت، حتماً اجرا می شود.
3. تست ساختارهای کنترلی (contro structures control)
این روش، شرط های منطقی (if) موجود در برنامه را تست می کند. شرط ها می توانند به انواع مختلفی باشند:
- - شرط ساده: یک متغیر بولی؛
- - عبارات رابطه ای: عباراتی با عملگرهای رابطه ای < و =<و = و =< و< ؛
- - شرط مرکب: ترکیبی از شرط های ساده، عملگرهای بولی و گرانتز.
4. تست حلقه (Ring test)
حلقه ها، عناصر مهم و سازنده اغلب الگوریتم هایی هستند که در نرم افزار به کار می روند. برای یک حلقه ساده که حداکثر n مرتبه باید انجام شود، تست های زیر را می توان انجام داد:
- - به طور کلی، از روی حلقه بگذریم؛
- - حلقه تنها یک مرتبه انجام گردد؛
- - حلقه دو مرتبه انجام گیرد؛
- - حلقه m مرتبه انجام گیرد (n>m)؛
- - حلقه n-1 و n+1 مرتبه انجام شود.
برای تست حلقه های متوالی نیز می توان فرض کرد که هرکدام، یک حلقه مستقل هستند و از روش تست حلقه ساده استفاده کرد.
5. تست جعبه سیاه (Black-Box Testing)
نام دیگر این روش، تست رفتاری است و بر وری نیازمندی های عملیاتی نرم افزار تمرکز دارد. حالات تستی که در این روش استخراج می گردند، باید به گونه ای باشند که تمامی نیازمندی های عملیاتی نرم افزار را تست کنند. روش تست جعبه سیاه، مکملی برای تست جعبه سفید است و توسط آن، یک مجموعه نیازهای متفاوتی را می توان تشخیص داد. توسط این تست، می توان دسته خطاهای زیر را تشخیص داد:
- - عملیات اشتباه و یا از قلم افتاده؛
- - خطاهای موجود در واسط ها؛
- - خطاهای موجود در ساختارهای داده ای و دسترسی به پایگاه داده ای خارجی؛
- - خطاهای رفتاری یا اشتباهات، از نظر کارایی؛
- - اشتباه در مقداردهی اوّلیه و یا کارهای اختتامی.
تقسیم بندی به گروه های هم ارز
یکی از روش های جعبه سیاه، تست تقسیم بندی به گروه های هم ارز است. در این روش، دامنه داده های ورودی برنامه به دسته های متفاوتی تقسیم می شوند و حالات تست، بر اساس این دسته ها انتخاب می شوند. هدف اصلی استفاده از این روش، کم کردن تعداد حالات تست است؛ بدین صورت که از یک مجموعه حالات یکسان، تنها یک حالت تست اعمال شود.
تحلیل مقادیر مرزی
معمول تعداد بسیاری از خطاها، در حالات مرزی یک ورودی رخ می دهد. بنابراین، این روش نیز بر این تمرکز دارد که حالات تست، حتما شامل مقادیر مرزی باشند. این روش، مکمل روش تقسیم بندی به گروه های هم ارز است و حالات تستی که توسط آن استخراج می گردند، شامل مقادیر مرزی هر دسته هست.
تست تشابه
در بعضی از شرایط، قابلیت اعتماد نرم افزار تولیدشده بسیار حساس و مورد نیاز است؛ همانند سیستم های پرواز و سیستم ترمز اتومبیل. در این حالت، دو تیم توسعه مختلف یک تعریف، مشخصات یکسانی را از سیستم که در مرحله تحلیل و طراحی ایجاد گردیده است، پیاده سازی می کنند. در این حال، هر دو نسخه متفاوت چک می گردند تا به ازای حالات تست متفاوت، خروجی های صحیح یکسانی را تولید کنند. سپس، هر دو سیستم به صورت موازی اجرا می شوند تا خروجی های آنها به ازای حالات متفاوت تست شود. اگر به ازای یک ورودی، یکی از نسخه ها خروجی متفاوت با دیگری تولید کرد، آنگاه دو نسخه برای وجود خطا تست می شوند.
آزمون های بررسی نرم افزار
ابزارهایی که فرآیند تولید نرم افزار را بهینه می کنند، با استانداردهای خاص خود درباره چگونگی تولید نرم افزار و عملیاتی است که درون PLC باید اتفاق بیفتد تا به حد مطلوب برسد. روش های مختلف ارزیابی، برای آن است تا چیدمان غیربهینه و تخصص و ابزار نامناسب به کار برده نشود.
ابتدا باید PLC وجود داشته باشد و بعد متریک های نرم افزاری را روی آن اعمال کنند که در این مسیر، یکسری شاخص در مراحل مختلف تعریف می شود.
برای بهینه کردن پردازش، حتماً باید روش اندازه گیری داشته باشیم. متریک ها در یک محیط قابل مدیریت، اعداد کمی هستند که با استفاده از آنها کنترل و ارتقا کیفی محصول را در راستای اهداف خواهد داشت. هدف از متریک های نرم افزاری افزایش کارایی، کیفیت و قدرت تولید تیم توسعه است که در امتداد آن، اهداف تجاری هم باید مد نظر باشد.
وقتی نسخه های جدید را تولید می کنند، استانداردی باید رعایت شود تا از نظر کیفی از بار پیش پایین تر نرود.
خواص اصلی متریک های نرم افزاری
این خواص عبارت اند از:
- بالابردن کیفیت محصول؛
- بهترکردن عملکرد؛
- بهترکردن تولید گروهی.
در تصمیم گیری کنترل کیفیت، برای تأیید، ردّ یا نمره دهی به محصولات، از این متریک ها استفاده می شود که برخی از آنها در بخش فنی محاسبه می شود و در اختیار کنترل کیفیت قرار می گیرد و بخشی از آنها نیز در بررسی نرم افزار محاسبه می شود و در اختیار کنترل کیفیت قرار خواهد گرفت.
مدل های مختلفی برای استاندارد کردن متریک ها وجود دارد؛ مثل مدل: McCall، Boehm، FURPS، Dromey،ajile و مدل ISO 9126.
تست های خودکار
در مرحله تست، نرم افزار پیاده سازی شده به آزمایش گذاشته می شود و هدف از آن، پیدا کردن خطاهای سیستم است. تست در دو زمینه صورت می پذیرد:
اوّلاً، تست در مورد اجزاء به طور مستقل انجام می گیرد که در این خصوص، هم در مورد عملیات و دستورات داخلی برنامه آزمایش می شود که درست عمل کند و هم در مورد وظایف خارجی پیمانه ها که مشخص می شود بر اساس ورودی های مختلف، آیا نتایج مورد نظر به دست می آیند یا نه.
ثانیاً، تست در مورد مجموعه اجزا در ارتباط با هم صورت می گیرد که در این حالت، مشخص می شود آیا خواسته های مورد نظر کاربر حاصل شده است یا نه و بدین صورت، کل نرم افزار مورد آزمایش واقع می شود.
در صورت وجود اشکال هایی که نتوان در خود این مرحله رفع نمود، بسته به نوع اشکال، باید به یکی از مراحل پیش، یعنی طراحی یا تعریف خواسته ها و یا فهم و تحلیل خواسته ها بازگشت نمود. خودکارسازی تست، در واقع، انجام تست های نرم افزاری است که به وسیله ماشین انجام می شود؛ یعنی تست هایی را که به صورت دستی انجام می شود، در هر پروژه معیّن کرده و به صورت خودکار، برنامه انجام تست را اجرا می کنیم.
گفتنی است که همه تست های انجام شده در یک نرم افزار قابلیت انجام به صورت ماشینی را دارند.
برای جلوگیری از هزینه های مالی و زمانی، معمولاً تست هایی به صورت ماشینی و خودکار انجام می شود که در طول تولید نرم افزار، چندین بار انجام شود که اصطلاحاً به این گونه تست ها، تست های تکرارپذیر می گویند. تست های تکرارپذیر، ارزش این را دارند که به صورت ماشینی انجام شوند.
به طور معمول، برای خودکارسازی تست های یک نرم افزار مراحل ذیل انجام می شود:
- شناسایی تست های تکرارپذیر؛
- روال مند و قانون مند کردن تست های تکرارپذیر؛
- تقسیم کردن یک تست تکرارپذیر به چندین تست تکرارپذیر کوچک تر برای ارزیابی های دقیق؛
- پیاده سازی تست های تکرارپذیر با کمک نرم افزارهای انجام تست خودکار و یا نوشتن تست خودکار مربوطه؛
- تست های تکرارپذیر می تواند تحت یک زمان بندی خاص و یا در موقع نیاز انجام شود؛
- برخی از تست های تکرارپذیر با ابزارها و نرم افزارهای موجود قابل پیاده سازی نمی باشند که می توان این تست های را یا به صورت دستی انجام داد و در صورتی که از اهمیت بالایی برخوردار باشد، به صورت ماشینی انجام شود و چنانچه برای این کار هزینه زمانی و مالی وجود داشته باشد، می توان ابزاری برای انجام این گونه تست ها نوشت تا به صورت ماشینی انجام شود.
به طور کلی، تست های تکرارپذیر را می توان در دو بخش دسته بندی کرد:
- تست های تکرارپذیر جعبه سفید: که توسط برنامه نویسان انجام می گیرد و برای انجام این گونه تست ها، بیشتر از ابزارهای تست داخلی استفاده می شود.
- تست های تکرارپذیر جعبه سیاه: که توسط کارشناسان تست محصول انجام می شود و برای انجام این گونه تست ها، ابزارهای بسیاری وجود دارد؛ مثل تست: کامپلیت، انی ور، سلنیم و رونکس.
از جمله مزایا و فواید تست خودکار در جعبه سفید و جعبه سیاه، این است که هزینه های زمانی، مالی و سرمایه انسانی را کم می کند.
تفاوت تست دستی و ماشینی
در تست های تکرارپذیر، انجام دستی تست ها ممکن است به جهت خطای انسانی، برخی تست ها انجام نشود؛ ولی در تست ماشینی تمامی تست ها بدون کم و زیاد انجام خواهد شد.
در تست های دستی ممکن است تست مورد نظر در زمان مورد نظر انجام نشود؛ ولی تست ماشینی با زمان بندی دقیق در ساعت مورد نظر واقع می شود.
در تست ماشینی، همه تست ها و اتفاقات، اعم از پاس شدن تست یا فیلدشدن تست، همگی ذخیره می شود و تاریخچه ای از اطلاعات تست در دسترس قرار دارد؛ ولی در تست دستی، ایجاد مستندسازی برای تست زمان گیر است و عملاً در دستور تست کنندگان قرار نمی گیرد و انجام نمی شود.
با این حال، برخی تست ها را نمی توان به سادگی ماشینی کرد؛ بعضی تست ها قابلیت تکرارپذیری ندارند و نمی توان آنها را روال مند کرد. ابزار ماشینی کردن همیشه در اختیار نیست یا مستلزم هزینه هستند. همچنین، گاهی برای نوشتن برخی تست ها، به کارشناسان برنامه نویسی نیاز است تا مورد تست را ماشینی کنند.
UI چیست؟
UI، مخفف کلمه User Interface می باشد که به «رابط کاربری» معنا می شود؛ بر خلاف UX که بر احساس کلی کاربر از یک محصول معطوف است. UI به چگونگی صفحه بندی محصول توجه دارد. آنها مسئول طراحی هر صفحه با ابزارها و صورتی هستند که بتواند مسیری که طراح UX طراحی نموده را پیاده سازی و جای گذاری نماید؛ به عنوان مثال، زمانی که یک طراح UI می خواهد یک داشبورد سیستم آمارگیری را پیاده سازی کند، ممکن است تصمیم بگیرد که مهم ترین موضوع صفحه را در بالای صفحه قرار دهد و یا آن را در نوار کناری صفحه و یا با طراحی یک دکمه آن را به گونه ای که به تجربه مشاهده ای کاربر و کلیت طرح کمک نماید، نمایش بدهد.
همنچین، طراحان UI معمولاً وظیفه یکپارچگی سبک طراحی در کل روند محصول را نیز بر عهده دارند؛ به صورتی که به صورت شهودی، نوع چینش و محتوای صفحات با یکدیگر همخوانی داشته باشد و همچنین، زبان طراحی مورد استفاده سازگاری خودش را در تمامی روندها و صفحات محصول حفظ نماید. حفظ این ثبات در نمایش المان ها، نمایش خطاها و سبک طراحی ضروری می باشد.
رابط کاربریِ نرم افزارها، نقطه ارتباط رایانه با کاربران به شمار می رود. به واسطه رابط کاربر است که تعامل بین کاربر و نرم افزارها شکل می گیرد (خالقی، 1385؛ مجد، 1383). در نتیجه، به هر میزان، کاربران بتوانند تعامل آسان، سریع و قابل فهمی با نرم افزارها داشته باشند، کارایی نرم افزار بالاتر می رود و رضایت مندی کاربران از آن در سطح بالاتری قرار می گیرد. خالقی (1385) در مقاله خود، ضمن تأکید بر تأثیر رابط کاربر در جذب کاربران و مطلوبیت نرم افزارها، برای آنها معیارهایی عمومی را برمی شمرد که رعایت آنها در رابط کاربریِ تمامی نرم افزارها ـ یا شاید تمامی محیط های رایانه ای که قرار است با انسان تعامل داشته باشند ـ می تواند به بهبود عملکرد نرم افزار و دستیابی به هدفش در تعامل با کاربر کمک کند. این معیارهای عمومی عبارت اند از:
- ثبات: هر چه صفحات و علمکردهای نرم افزار از ثبات بیشتری برخوردار باشند، زمان کمتری برای یادگیری و انس کاربر با محیط نرم افزار نیاز است. نمونه ثبات در طراحی رابط کاربری در محصولات شرکت مایکروسافت، در مجموعه نرم افزارهای آفیس وجود دارد.
- سادگی و وضوح: سادگی رابط کاربر، علاوه بر آنکه به یادگیری و استفاده کمک می کند، یاریگر ثبات طراحی نیز هست. با دوری از طراحی پیچیده در رابط کاربر نرم افزارها، می توان وضوح و شفافیت را در مسیرهایی که کاربر باید برای انجام کارکرد مورد نظرش پی گیر شود، افزایش داد.
- رهنمونی: ویژگی رهنمونی، به هشدارها و جملاتی اشاره دارد که وظیفه راهنمایی کاربر را در هنگام عملکردهای گوناگون به عهده دارد. پیشنهادهای جست و جویی که گوگل بعد از جست و جو با املای غلط به ما ارائه می دهد، از این دسته اند.
- زیبایی: بدون شک، چشم نواز بودن رابط کاربری در عین سادگی و آسانی عملکرد، می تواند راهبرد مؤثری جهت جذب و تأمین رضایت کاربران باشد.
- گرافیک و ترکیب رنگ ها: لحاظ کردن مفهوم رنگ ها با در نظر گرفتن تفاوت های فرهنگی، در معناداری و تناسب رابط کاربری تأثیر به سزایی دارد.
- استفاده از پیام ها و علائم اخطاردهنده: هشدارها و اخطارهای به موقع و به جا، از ارکان مهم طراحی رابط کاربر نرم افزارهاست که عدم توجه به آن، می تواند نارضایتی کاربران را به همراه داشته باشد.
- انعطاف پذیری: برطرف کردن نیازمندی های متفاوت کاربرانی با سلیقه های متفاوت را می توان به عنوان یکی از معیارهای مهم رابط کاربری های قوی برشمرد. تنوع کارکردها و سازگاری نرم افزارها با برنامه های دیگر، از جمله اساسی ترین ملاک های انتخاب کاربران از بین نرم افزارهای مختلف در یک حوزه است.
- توجه به اصول روان شناسی: آسانی و راحتی کاربری نرم افزارها، از جمله تبعات توجه به اصول روان شناسی است و ملاک مهمی برای موفقیت نرم افزارها به شمار می رود.
- سایر معیارها: تسلط به محیط، صراحت، کاهش حجم کار کاربران و مساعدت، از دیگر ملاک هایی است که خالقی (1385) به عنوان معیارهای عمومی طراحی رابط کاربر برمی شمرد.
UX چیست؟
Ux، مخفف کلمه User Experience می باشد که معنای «تجربه کاربر» می باشد. در حقیقت، طراحان «تجربه کاربر» یا همان UX Designers تمام تلاش خود را می کنند تا بهترین سناریو برای آشنایی یک کاربر با یک محصول و یا خدمات را ایجاد نمایند. از آنجا که این موضوع فرمول خاصی ندارد و متناسب با سوژه های مورد نظر ممکن است راهکارهای فراوانی داشته باشد، کار زمان بر و دشواری است. یک طراح «تجربه کاربر» می خواهد مشکلات کاربر را در مواجهه با سوژه مورد نظر خود، چه از نظر کلامی و لغتی و چه از نظر محل قرارگیری موارد و زیبایی شناختی، مورد بررسی قرار دهد و در پی حل آنها برآید تا به بهترین تجربه کاری کاربر یا همان Best User Experience دست یابد.
مدیریت کیفیت پروژه
مدیریت کیفیت، یکی از بحث های جدید در زمینه تولید و خدمات است. گر چه سابقه آن به ابتدای تاریخ نیز می رسد، اما مفهوم نوین کیفیت، محصول قرن بیستم است. بر طبق یکی از نگرش ها، مدیریت کیفیت، یعنی نظارت بر فرآیند ساخت و تولید محصول برای ایجاد اطمینان از مطابقت محصول با آنچه مورد نظر طراح یا مشتری بوده است. این نظارت، از مرحله دریافت و سفارش مواد اوّلیه تا خدمات پس از فروش را شامل می شود. بدین ترتیب، طیف وسیعی از فعالیت ها را شامل می گردد.(1) از جمله فعالیت های مربوط به مدیریت کیفیت، یکی، تضمین کیفیت و دیگری، کنترل کیفیت است. امروزه، مدیریت کیفیت، نه تنها شامل تولید، بلکه شامل خدمات و حتی خدمات دولتی نیز می شود و مدیریت کیفیت دولت ها و آموزش و پرورش (Graduation)، یکی از مباحث نوین در کیفیت است. مدیریت کیفیت، عموماً شامل برقراری خط مشی کیفیت و اهداف کیفیت، طرح ریزی کیفیت، کنترل کیفیت، تضمین کیفیت و بهبود کیفیت است.
مدیریت کیفیت پروژه، دربرگیرنده فرایندهای مورد نیاز برای حصول اطمینان از برآورده شدن نیازهایی است که پروژه برای آن تعهد شده است. مدیریت کیفیت پروژه، «کلیه فعالیت های کارکرد مدیریت عمومی را که خط مشی و مسئولیت کیفیت را تعیین نموده و آنها را به وسیله ابزارهایی چون: برنامه ریزی کیفیت، تضمین کیفیت، کنترل کیفیت و بهبود کیفیت در قالب سیستم کیفیت اجرا می نماید» شامل می شود. مدیریت کیفیت در pmbok، زیرمجموعه ای از مدیریت پروژه است.
- برنامه ریزی کیفیت: یعنی شناسایی استانداردهای کیفیتی مرتبط با پروژه و تعیین چگونگی تحقق آنها.
- تضمین کیفیت: یعنی ارزیابی عملکرد کلی پروژه بر اساس یک مبنای منظم، به منظور حصول اطمینان از اینکه پروژه استانداردهای کیفیت مرتبط را محقق خواهد ساخت.
- کنترل کیفیت: یعنی نظارت بر نتایج مشخص پروژه، به منظور تعیین انطباق آنها با استانداردهای کیفیت مرتبط و شناسایی راه هایی برای حذف علل عملکرد ناخوشایند. این فرایندها با یکدیگر و همچنین با فرایندهای سایر حوزه های دانش تعامل دارند. ممکن است، هر فرایند بر مبنای نیازهای پروژه تلاش یک یا تعداد بیشتری از افراد یا گروه هایی از آنان را دربرداشته باشد. هر فرایند به طور معمول، دست کم یکبار در هر مرحله پروژه، به وقوع می پیوندد.
ویژگی های کیفیت نرم افزار(2) از دیدگاه کاربر عبارت اند از:
- میزان پوشش دهی وظایف تعیین شده در مستندات نیازمندی ها و موارد ضمنی(Functionality)؛
- قابلیت اطمینان یا قابل اطمینان بودن (Reliability)؛
- قابلیت استفاده یا قابل استفاده بودن (Usability)؛
- کارآیی یا به عبارتی دیگر، پربازده و مؤثر بودن (Efficiency)؛
- قابلیت نگهداشت (aintenanceM)؛
- قابلیت حمل یا به عبارتی دیگر، قابل انتقال بودن (Portability).
ارزیابی نرم افزار
ارزیابی، فرایندی است که به جمع آوری اطلاعات درباره ارزش یک برنامه با هدف تصمیم گیری درباره اثربخشی یا بهبود آن برنامه صورت می گیرد (استون، 2008)؛ به بیانی دیگر، ارزیابی، «اندازه گیری عملکرد یا خدمات یک نظام و بررسی اثر آن در پیشبرد اهداف تعیین شده» است (سلطانی و راستین، 1379). ارزیابی می تواند به عنوان وظیفه ای در نظر گرفته شود که به یک یا چند خروجی می انجامد و در عین حال، هدفی برای برنامه ریزی به شمار می آید. افزون بر این، ویژگی دیگر ارزیابی، «هدف محور» بودنِ آن است. ارزیابی در زمینه گسترش نرم افزارها، از دهه های اخیر که نقش ارزیابی در تعامل انسان و رایانه تغییر یافته، به عنوان یک هدف کاربرد داشته است (گدیگا، هامبورگ و دونش، 2002 به نقل از ساچمن، 1967). تولید روزافزون محصولات نرم افزاری با هدف برطرف کردن نیازهای جدید کاربران، و در نتیجه، نیاز به ارتقا و تکمیل محصولات نرم افزاری، اهمیت ارزیابی نرم افزارها را دوچندان نموده است. نرم افزارها را می توان از دیدگاه های متفاوتی مانند: کارکرد، قابلیت اطمینان، کاربردپذیری، بازدهی، قابلیت نگه داری و یا حمل پذیری بررسی کرد. فرایند ارزیابی نرم افزار، در عمل می تواند دست کم یکی از این سه هدف را دنبال کند: مقایسه نرم افزارها، تعیین میزان کیفیت و یا تعیین نقاط ضعف آنها (گدیگا و همکاران، 2002).(3)
ارزیابی نرم افزار، عبارت است از فرایند بررسی یا اجرای یک نرم افزار یا جزء نرم افزاری به صورت دستی یا خودکار، به منظور ارزیابی تطابق ویژگی های آن با نیازهای از قبل مشخص شده و یا به منظور مقایسه بین نتایج مورد انتظار و نتایج واقعی.(4)
انواع ارزیابی نرم افزار
نرم افزارها را از دیدگاه های گوناگون می توان مورد ارزیابی قرار داد. نوع، کارکرد و هدف خود نرم افزار هم می تواند تعیین کننده نوع ارزیابی باشد. به اعتقاد عده ای از صاحب نظران، ارزیابی نرم افزار، فرایندی هدف محور است (کومی ـ سیرویو، 2004؛ کیچنهام، لینکمن و لاو، 1996؛ گدیگا و همکاران، 2002). مراحل ارزیابی، زمان، هزینه و تمامی فرایند ارزیابی، بستگی به هدفی دارد که به واسطه آن انجام ارزیابی صورت می گیرد. ارزیابی نرم افزارها می تواند با اهداف متفاوتی صورت بپذیرد؛ برای مثال، نرم افزاری را در نظر بگیرید که با هدف نیازسنجی کاربران برای گنجاندن یک سرویس اضافی در سرویس های خود، بررسی عملی این امکان را به همراه ارزیابی نظرات کاربران در این مورد آغاز می کند. در مقابل، نرم افزاری برای ارزیابی نظرات کاربران درباره دسته ای از خدمات خود به کار گرفته می شود تا در صورت نیاز، ارتقای خدمات خود را در تولید نرم افزار لحاظ نماید. مطمئناً اهداف ارزیابی در این دو نرم افزار، یکسان نیست و مراحل، زمان و هزینه های متفاوتی خواهند داشت. در مورد هدف ارزیابی نرم افزارها، حتی می توان مواردی را بیان کرد که ارزیابی نرم افزار به منظور مقایسه و انتخاب آنها برای انطباق با محیط و عملکردهای خاصی که مد نظر یک فرد یا یک سازمان است، انجام می گیرد. با وجود گزینه های مختلف نرم افزارهایی که برای رفع نیازهای فرد یا سازمان وجود دارد، ارزیابی نرم افزارها پیش از انتخاب و خرید و بررسی مطابقت آنها با نیازهای سازمان، اهمیت قابل توجهی دارد و موجب صرفه جویی در زمان و هزینه های فردی و سازمانی می شود. رولی (1992) معتقد است، باید به چنین فرایندهایی که با هدف بررسی و مقایسه نرم افزارها به منظور انتخاب و خرید آنها انجام می شود، از منظر یک پروژه نگاه کرد. برای این کار، باید بعد از مشخص ساختن اهداف، روش شناسی مناسب را اتخاذ نمود و در مرحله بعد، معیارهای متناسب را استخراج کرد و فرایند بررسی را انجام داد. در زمینه مقایسه نرم افزارهای جایگزین، فر، مودیگوندا و الامی (2009) نیز روشی آماری برای مقایسه ارائه داده اند.
از لحاظ استمرار فعالیت های ارزیابی نرم افزار، به طور کلی، می توان دو دسته ارزیابی را تشخیص داد: 1. ارزیابی های مستمر؛ 2. ارزیابی مقطعی.
میوشی، تاگوشی و آزوما (1989)، در یکی از متون قدیمی مربوط به ارزیابی نرم افزارها اشاره می کنند که معمولاً ارزیابی نرم افزار، توسط تولیدکنندگان آن نرم افزارها صورت نمی گیرد. آنها بر پایه اطلاعات استخراج شده از پروژه عملی فست (FASET)، مدلی را ارائه می دهند که به صورتی روشمند، ارزیابی محیط های گسترش نرم افزار را انجام می دهد و به تولیدکنندگان نرم افزارها کمک می کند تا محصولات خود را مورد ارزیابی قرار دهند. در مدل آنها، مراحل مشخصی باید طی شود تا ارزیابی نرم افزارها از دیدگاه کیفی امکان پذیر شود:
- * مشخص ساختن اهداف ارزیابی؛
- * انتخاب ویژگی های کیفی، مطابق با چرخه عمر اهداف ارزیابی؛
- * تصحیح و پالایش تمام ویژگی های کیفی؛
- * تعریف ساختار کیفی؛
- * انتخاب و تعریف سنجه ها؛
- * آزمودن اهمیت یا وزن هرکدام از ویژگی های کیفی؛
- * آزمودن الگوریتم امتیازدهی؛
- * تعریف رهنمودهایی برای بررسی؛
- * آزمودن چگونگی ارائه نتایج ارزیابی.
تحلیلگر کیفیت نرم افزار
تحلیلگر کیفیت نرم افزار، مسئول اعمال اصول و شیوه های تضمین کیفیت نرم افزار در سراسر چرخه عمر توسعه نرم افزار است. نقش تحلیلگر کیفیت نرم افزار، بیشتر با نقش نرم افزار تست اشتباه گرفته می شود. معمول شرکت های نرم افزاری، تعیین تست نرم افزار را به عنوان تضمین کننده کیفیت نرم افزار می بینند؛ درحالی که این نقش ها متفاوت هستند.
نرم افزار تست محصول گرا، تضمین کیفیت نرم افزار فرایندگر است. نقش در تضمین کیفیت نرم افزار، به عنوان مهندسی نرم افزار تضمین کیفیت/کیفیت نرم افزار تحلیلگر/ مشاور فرایند، تعیین شده است. برخی از وظایف تحلیلگران کیفیت نرم افزار، عبارت اند از:
شرکت در جلسات بررسی مدیریت کیفیت؛ تأیید اسناد QMS برای مدیر QA که نویسنده اصلی است؛ انجام ممیزی داخلی کیفیت؛ برنامه و انجام ممیزی های کیفیت از پیمانکاران فرعی؛ حفظ و به روزرسانی پایگاه داده آموزش و ممیزی به ارائه گزارش ها؛ شناسایی مشکلات و یا نقص در محصولات و سیستم مدیریت کیفیت؛ حل مشکلات مسائل پیاده سازی QMS.
فرصت ها و ظرفیت های کنترل کیفیت
موضوع کیفیت و بهبود آن، موضوع مهم و حیاتی در هر سازمان و شرکت است. برخی کیفیت را تنها انطباق با ضوابط از پیش تعیین شده می دانند؛ به عبارت دیگر، کیفیت، مترادف با استاندارد تلقی می شود؛ غافل از آنکه امروزه کیفیت، مفهومی وسیع تر داشته و به معنای پاسخگویی به درخواست های منطقی و حق مدارانه مشتریان نیز هست. اگرچه انطباق با استاندارد نیز در سطوح ملی و بین المللی می تواند درجه ای از کیفیت محسوب شود، اما همه ابعاد کیفیت نیست. بر این اساس، در شرایط کنونی، هدف از کیفیت علاوه بر اجرای استانداردها، کسب رضایت حداکثری مشتری در همه ابعاد محصول را نیز شامل می شود.
شرکت ها و مؤسساتی که در تولید نرم افزار در سطح جهان فعالیت می کنند، شیوه ها و روش های مختلفی برای خود دارند که در چرخه طول عمر نرم افزار از آنها استفاده می کنند تا نرم افزاری طول عمرش تمام بشود و بایگانی یا نسخه تازه تری از آن ارائه شود. پیش تر نیز از این موضوع صحبت کردیم که بیشتر شرکت های بزرگ نرم افزاری یا در حوزه فناوری، اداره یا بخشی به نام کنترل کیفیت محصولات را دارا هستند؛ اما با توجه به نوع محصولاتشان، کارکردهای متفاوتی دارند. در واقع، کنترل کیفیت این فرصت را ایجاد می کنند تا کارشناسانی که فناور، آگاه و مسلط به محصول هستند و از نیازهای کاربر نیز آگاهی داشته و بر مراحل تولید نرم افزار هم نظارت دارند، بتوانند به خوبی محصول را مورد سنجش قرار دهند و در هزینه و وقت صرفه جویی کنند.
طبق نظر پروفسور جوران، «کیفیت» دارای دو مفهوم مکمل است:
اوّل: هدف، کیفیت بالاتر، ایجاد رضایت بیشتر در مشتری و انتظار درآمد بالاتر است. ایجاد ویژگی های بیشتر و بهتر کیفیت، مستلزم سرمایه گذاری و افزایش هزینه است. از این زاویه، کیفیت بالاتر، هزینه بردار است؛ اما برای درآمد افزون تر.
دوم: کیفیت، یعنی عدم عیب و خطا. عیب و خطا موجب ضایعات، تعمیرات، دوباره کاری، محصول مرجوع، نارضایتی مشتری، شکایت، جریمه و از دست دادن مشتری می گردد و همه اینها، هزینه آور هستند. بدین ترتیب، کیفیت بالاتر، حاوی عیب و خطای کمتر و در نتیجه، هزینه کمتر است.
کنترل کیفت نرم افزار که در استانداردهای مختلف با عناوین گوناگون از آن تعبیر می شود، باید بر هر محصولی که می خواهد در چرخه تولید توسعه و پشتیبانی قرار گیرد، نظارت داشته باشد؛ یعنی اوّل مشخص شود که این محصول برای تولید و توسعه پشتیبانی و بایگانی خود، از چه استانداردی استفاده می کند و بعد از آن باید بر این موضوع که محصول بر طبق استاندارد مورد نظر تولید و توسعه پیدا می کند، نظارت داشته باشد که تمامی آیتم های آن استاندار رعایت شود و اگر بخواهند از این آیتم ها عدول کنند، کنترل کیفیت باید در جریان آن باشد و دلایل آن مشخص شود.
در مدیریت کیفیت و مهندسی و تولید صنعتی، بخش کنترل کیفیت (Quality Control، به اختصار QC)، و مهندسی کیفیت به بخشی گفته می شود که به درست کردن روش هایی مشغول است تا کارخانه بتواند به وسیله آن روش ها، از مرغوبیت و مشتری پسند بودن کالاهای تولیدی خود مطمئن گردد. این روش ها و سیستم ها، معمولاً با همکاری با دیگر رشته های مهندسی و بازرگانی طراحی می شوند. کنترل کیفیت، مجموعه عملیاتی نظیر اندازه گیری یا آزمون است که روی یک محصول یا کالا انجام می شود تا مشخص شود آیا آن محصول با مشخصات فنی مورد نظر مطابقت دارد یا خیر. گروه کنترل کیفیت، گروه کوچکی از کارکنان است که ماهیت کار مشابه دارند و برای حل مشکلات و یا بهبود فرایند کاری در راستای اهداف و فعالیت های کنترل کیفیت سازمان، به صورت داوطلب و با انگیزه درونی و بدون هیچ گونه نظارت خارجی و از طریق تشکیل جلسات منظم و حضوری در اوقات فراغت برای افزایش بازده کیفی شرکت یا کارخانه خود تلاش می کنند.(5)
چرخه آزمون نرم افزار
چرخه تست نرم افزار، از هفت فاز کلی تشکیل شده است:
1. طرح ریزی تست (test planning):
این فازی است که مدیر کیفیت و مدیر پروژه باید تصمیم بگیرند که چه مواردی باید تست شوند. طبیعتاً طرح ریزی کافی در این مرحله، به میزان زیاد، ریسک نرم افزارهای بدون کیفیت را کاهش می دهد.
2. تحلیل تست (test analysis):
زمانی که طرح ریزی تست تحقق یافت و روی آن تصمیم گیری شد، مرحله بعدی، کمی کاوش پیرامون پروژه و تصمیم گیری درباره نوع تستی است که باید انجام شود؛ برای مثال، چک لیست تست دستی و خودکار تهیه شود و اینکه هر کدام در چه زمانی انجام شود، بهتر است و گزارش مناسبی به دست خواهد آمد.
3. طراحی تست (test design):
طرح ها و موارد تست باید بازبینی شوند و ماتریس ارزیابی عملکرد نیز بازبینی و نهایی گردد. در این مرحله، معیار ارزیابی تست نیز انجام می شود و موارد تستی را که باید اتومات شود، اتومات کنیم. داده های تست نیز باید جمع آوری شود. برنامه های تست، در این مرحله مشخص می شوند.
4. ساخت و ارزیابی (construction and verification):
در این فاز، باید همه طرح ها و موارد تست کامل شود و باید گزارش باگ هایی که توسط بازبین ها و کارشناسان به دست می آید، به دو قسمت نتایج تست های خودکار و دستی مشخص باشد. تست ها همه در این فاز انجام می شوند و گزارش ها به دست می آیند.
5. چرخه های تست (testing cycles):
در این فاز تمام فازهای قبل توسط کارشناس مورد بازبینی قرار می گیرد تا مطمئن شود تمام مواردی که تعیین شده یک به یک انجام شده است یا خیر؛ چک لیست تست ها، گزارش باگ ها، موارد و معیارهای تست، افزودن تست های جدید (در صورت نیاز) ، بازبینی مجدد تست ها برای اطمینان از صحت.
6. تست کردن نهایی و پیاده سازی (The final test):
در این مرحله، باید تست استرس و کارایی باقیمانده را اجرا کنیم و مستندات تست باید تکمیل شوند. همچنین، تست بار نیز انجام می شود و برنامه نیز پس از یکبار تصحیح، مجدداً مورد بازبینی قرار می گیرد.
7. تست پس از پیاده سازی (post implementation):
در این فاز، فرایند تست ارزیابی می شود و مستندات و تجربیات ثبت می شوند. تمام ارزیابی ها و مسائل مشابه برای استفاده در پروژه های آینده، مشخص و شناسایی و ثبت می شوند.
برنامه ریزی، تضمین و کنترل کیفیت
برنامه ریزی کیفیت، متضمن شناسایی استانداردهای کیفیت مرتبط با پروژه و تعیین چگونگی تحقق آنهاست. برنامه ریزی کیفیت، یکی از فرایندهای کمکی (جانبی) کلیدی در برنامه ریزی پروژه می باشد.
کنترل کیفیت، متضمن نظارت بر نتایج مشخص پروژه به منظور تعیین مطابقت آنها با استانداردهای کیفیت مرتبط و شناسایی راه هایی برای حذف عوامل نتایج ناخوشایند می باشد. این فرایند باید در طول پروژه اجرا گردد. کنترل کیفیت، بیشتر توسط بخش کنترل کیفیت یا با نامی مشابه اجرا می گردد.
تضمین کیفیت، عبارت است از کلیه فعالیت های برنامه ریزی شده و نظام یافته پیاده شده در چارچوب سیستم کیفیت به منظور حصول اطمینان از اینکه پروژه استانداردهای کیفیت مربوطه را محقق خواهد ساخت.
ابزارها و فنون کنترل کیفیت
1. بازرسی: بازرسی، مشتمل است بر فعالیت هایی از قبیل: اندازه گیری، آزمایش و آزمون که برای تعیین مطابقت نتایج با الزامات، تعهد شده اند. بازرسی ها (بررسی) ممکن است، در هر سطحی انجام شوند. بازرسی ها به اشکال مختلفی چون: بازنگری ها، ممیزی ها و بررسی ها نامیده شده اند.
2. نمودارهای کنترلی: منظور، نمایشی تصویری از نتایج یک فرایند در بستر زمان می باشند. از این نمودارها جهت تعیین تحت کنترل بودن فرایند در بستر زمان استفاده می گردد. انحرافات و رویدادهای غیرمعمول، در این نمودار آشکار می شود.
3. نمونه گیری آماری: نمونه گیری آماری، متضمن انتخاب بخشی از جامعه مورد توجه جهت بازرسی می باشد.
4. جریان نمایی: جریان نمایی در کنترل کیفیت، به منظور کمک به تحلیل چگونگی وقوع مشکلات به کار گرفته می شود.
5. تحلیل روند: دو موضوع را تحت نظر می گیرد:
- - عملکرد فنی: اینکه چه تعداد خطا شناسایی شده اند و چه تعداد اصلاح نشده باقی مانده اند.
- - عملکرد هزینه و زمان: در هر دوره زمانی، چه تعداد از فعالیت ها با مغایرت های قابل توجهی خاتمه یافته اند.
خروجی های کنترل کیفیت
این خروجی ها عبارت اند از:
- * بهبود کیفیت؛
- * تصمیمات پذیرشی؛
- * دوباره کاری؛
- * فهرست های وارسی؛
- * تنظیمات فرایند؛
- * مستندات.
پی نوشت ها:
1. این نگرش، مطابق استاندارد ISO9001 می باشد.2. هاشمی. 1389. «استاندارد مهندسی نرم افزار؛ رهنمود عمومی در تعریف کیفیت محصولات نرم افزاری». شورای عالی انفورماتیک.
3. رجب زاده، امیرحسین. 1392. «ارزیابی نرم افزار؛ انواع و کارکردها». فلصنامه ره آورد نور، ش 42: 32 ـ 39.
4. روحانی، مرجان. 1392. «مبانی و مفاهیم نظارت و ارزشیابی سنجش و عملکرد کارآیی و اثربخشی برنامه ها». شورای عالی انفورماتیک، پاییزماه.
5. فقیه، نظام الدین، مهندسی کیفیت و اطمینان.
منابع: