مفاهیم کاربردی در تست و خطایابی نرمافزار – به زبان ساده
چرا گاهی یک سیستم نرمافزاری به درستی کار نمیکند؟ مساله آن است که انسانها خطا میکنند! اگر کسی در استفاده از نرمافزار «خطا» (error) یا «اشتباه» (mistake) مرتکب شود، این امر ممکن است منجر به یک مشکل شود، به عبارت دیگر، نرمافزار به گونه اشتباهی مورد استفاده قرار گرفته و بنابراین به شیوه مورد انتظار عمل نمیکند. اگرچه، علاوه بر استفاده از نرمافزارها، این انسانها هستند که آنها را طراحی کرده و میسازند و بنابراین ممکن است در طول این فرآیندها نیز اشتباهاتی داشته باشند. وجود این خطاها به معنای وجود ایراداتی در خود نرمافزار است. به همین دلیل است که در فرآیند طراحی و ساخت یک برنامه کامپیوتری، نیاز به انجام تست و خطایابی نرمافزار است.
معایب بیان شده را گاهی «نقص» (defect)، و گاهی «باگ» (bug)، «اشکال» (fault) یا Glitch مینامند. مساله مهم آن است که معنای واژگان یاد شده برخلاف آنکه ظاهرا مشابه به نظر میرسد، متفاوت با یکدیگر است و این کلمات نباید به اشتباه به جای هم به کار روند. هنگامی که کد نرمافزار ساخته شد، اجرا میشود و سپس هر «نقصی» (defect) ممکن است موجب شود که سیستم در انجام کاری که باید انجام دهد (یا حتی کاری که نباید انجام دهد) شکست (fail) بخورد، و در واقع عیب موجود منجر به یک «شکست» (failure) میشود. همه نقصها الزاما منجر به شکست نمیشوند. برخی از نقصها در کد پنهان و خاموش هستند و ممکن است کاربران و سازندههای نرمافزار هرگز از وجود آنها آگاه نشوند.
خطا یا اشتباه چیست؟
«خطا» (Error)، اقدام انسانی است که منجر به تولید نتایج غلط میشود. در واقع، خطا یک انحراف از مقادیر کنونی و مورد انتظار است. «اشتباهاتی» (Mistakes) که توسط برنامهنویس اتفاق افتادهاند را خطا مینامند.
این خطاها ممکن است به دلایل زیر به وقوع بپیوندند:
- سردرگمی در شناخت و درک نیازمندیهای نرمافزار
- محاسبات اشتباه برخی مقادیر
- تفسیر غلط برخی مقادیر
این موارد نشان میدهند که اشتباهی توسط انسانها انجام شده و وجود اشتباه در برنامه منجر به خطا میشود.
باگ چیست؟
«باگ» (Bug) نتیجه خطای برنامهنویسی یا «اشکال» (Fault) در برنامه است که منجر به عملکرد ناخواسته یا غیرمنتظره نرمافزار میشود. وجود باگ شاهدی بر وجود اشکال در برنامه است. باگها از اشتباهات و خطاهایی نشات میگیرند که توسط انسان انجام میشود، و در کد منبع یا مرحله طراحی نرمافزار به وقوع میپیوندند.
معمولا، باگهایی در همه نرمافزارهای مفید وجود دارند، اما برنامههایی که به خوبی نوشته شدهاند دارای باگهای نسبتا کمی هستند که معمولا مانع از انجام کار نرمافزار نمیشوند.
نقص یا اشکال چیست؟
«نقص» (Defect) یک انحراف از الزامات است. یک نقص نرمافزاری شرایطی است که طی آن یک محصول نرمافزاری نیازمندیهای برنامه (آنچه در مهندسی و مشخصهسازی خواستهها بیان شده) یا آنچه مورد انتظار کاربر نهایی است را برآورده نمیکند. به عبارت دیگر، یک نقص، خطایی در برنامهنویسی یا منطق برنامه است که منجر به اشکال در عملکرد آن یا تولید نتایج غلط/غیرمنتظره میشود. این نقص ممکن است به سختافزار، نرمافزار، شبکه، اجرا، فرمت یا عملکرد مربوط باشد.
شکست چیست؟
«شکست» (Failure)، انحراف نرمافزار از اهداف مورد انتظار آن است. شکست در واقع عجز و ناتوانی سیستم یا مولفههای آن از اجرای کارکردهای مورد انتظار و الزامات کارایی تعیین شده است. شکست پس از آنکه اشکال اجرایی شد به وقوع میپیوندد.
Glitch چیست؟
Glitch یک اشکال با عمر کم در سیستم است که خود به خود تصحیح میشود و بنابراین عیبیابی آن را با مشکل مواجه میسازد. این اصطلاح در صنایع کامپیوتر و الکترونیک بسیار مطرح است. یک Glitch ناچیز و موقت از باگهای جدی نرمافزار که منجر به مشکل عملکردی شده و یا به شکست سیستم منتهی میشوند متفاوت است.
«الکس پایشل» (Alex Pieschel) در «Arcade Review» پیرامون این مبحث چنین مینویسد: «باگ معمولا وزندارتر و قابل سرزنشتر محسوب میشود، در حالیکه Glitch چیزی مرموزتر و ناشناختهتر است که جرقه آن با ورودیهای عجیب یا چیزهایی خارج از قلمرو کد زده میشود».
نتیجهگیری
باگ نتیجه خطای برنامهنویسی است و نقص یک انحراف از خواستهها محسوب میشود. نقص الزاما به معنای وجود یک باگ در کد نیست، بلکه ممکن است عملکردی باشد که پیادهسازی نشده اما در فاز مهندسی خواستههای نرمافزار توسط ذینفعان اعلام شده است.
اگر مطلب بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشود:
- مجموعه آموزشهای برنامهنویسی
- مجموعه آموزشهای برنامهنویسی اندروید
- مجموعه آموزشهای طراحی و برنامهنویسی وب
- مجموعه آموزشهای PHP
- آموزشهای رایگان PHP
- مجموعه آموزشهای پروژه محور سی شارپ
- مجموعه آموزشهای ابزارهای مهندسی کامپیوتر
^^
برای تعاریفی که ارائه کردید از کدام مراجع استفاده کردید؟