طراحی نرم افزار بدون رعایت اصول مهندسی نرم افزارهمانند ساخت خانه بدون نقشه استاندارد و مهندسی شده است! متاسفانه در بسیاری از شرکتهای تولید کننده نرم افزار جهت تولید محصولات نرم افزاری اصول مهندسی را رعایت نمیکنند ویا تعدادی از مراحل مخصوصا مرحله تست را از چرخه تولید نرم افزار خارج میکنند. این امر باعث کاهش قیمت تولیدی نرم افزار میشود اما هزینه پشتیبانی و نگهداری آن را چندین برابر میکند. چراکه بسیاری از ایرادهای برنامه در مرحله تست برطرف نمیشوند.
مهندس نرم افزار پیش از اعمال روشها در خصوص موارد تست، بایستی اصول اساسی که تست نرم افزار را هدایت میکند، درک کند. مجموعهای از این اصول عبارتند از:
۱) تست با توجه به نیازمندیهای کاربر: همانطور که میدانید شناسایی نیازمندیهای کاربر اولین گام چرخه تولید نرم افزار میباشد. این نیازها طی یک کار تیمی و روشهای متفاوت با مشارکت مشتریان یا کاربران و توسعه دهندگان شناسایی میشوند. سپس نیازهای عمومی، ضروری، اولویت بالا و حداقل نیازها مشخص میگردد. در این پست به همین توضیح خلاصه بسنده کنیم که این بخش حیطه وسیعی از مطالعه و تحقیق نیازدارد. پس از شناخت نیازمندیها، تستها بایستی تاحد خواستههای مشتری قابل ردیابی باشند.
۲) برنامه ریزی قبل از اجرا: پس از شناخت نیازمندیها و مشخص کردن آنها، برای هر بخش نوشتن برنامه تست (test plan) ضروری است. همه تستها را میتوان پیش از تولید هرگونه کد، برنامه ریزی و طراحی کرد.
۳) قانون پارتو: این قانون بدین معنا است که در هرچیزی، میزان اندکی (۲۰ درصد) دارای اهمیت حیاتی و بسیاری (۸۰ درصد) کم اهمیت و یا دارای اهمیت ناچیز است. مدیران پروژهها میدانند که ۲۰ درصد کار(اولین ۱۰ درصد و آخرین ۱۰ درصد) ۸۰ درصد زمان و منابع را مصرف میکند بنابراین با تمرکز برآن ۲۰ درصد، ۸۰ درصد نتایج را میتوان تولید کرد. تست هم از این قاعده مستثنی نیست! یعنی ۸۰ درصد خطاهای کشف نشده در ۲۰ درصد کد است. یا به عبارتی ۲۰ درصد نواقص باعث ۸۰ درصد مشکلات میشوند. این اصل به عنوان یک یادآوری روزانه میتواند درخدمت ما باشد و به ما بگوید که زمان و انرژی خود را بر آنچه که واقعا مهم است، متمرکز کنیم.
۴) شروع تست از اجزای کوچک : تست باید از اجزای کوچک شروع شده و به ابعاد بزرگتر گسترش یابد. اولین تستها بر روی هر یک از مولفهها انجام میشوند. با پیشرفت تست، خطاهای مجموعهای از مولفههای مجتمع و سپس کل برنامه یافت میشود.
۵) تست کامل (exhaustive) ممکن نیست: تعداد مسیرهای ممکن برای تست برنامه زیاد است. لذا اجرای هر ترکیبی از مسیرها امکان پذیر نیست. ولی این امکان وجود دارد که برنامه را در حد کفایت پوشش دهیم. غیرممکن است که بتوان یک برنامه را به طور کامل تست کرد.
رعایت اصول تست نرم افزار باعث افزایش زمان تولید و بهره مندی از متخصصین مرتبط در آن زمینه و افزایش هزینه تولید نرم افزار میشود اما با در نظر گرفتن کاهش چشمگیر هزینههای پشتیبانی و توسعه، نرم افزار تولید شده بسیار مقرون به صرفه تر خواهد بود! در پست بعدی این اصول را ادامه میدهیم.