یادگیری ماشینی و تغییر آینده توسعه و آزمایش نرم افزارها
سایز متن
الف الف
لینک کوتاه در کلیبرد کپی شد!http://akhr.ir/6549217
۱۰۳
۰
ديجياتو/ يادگيري ماشيني (ML) و هوش مصنوعي (AI) دو عنصر مهمي هستند که گفته ميشود رباتها در آينده به کمک آنها به انسان شبيهتر و کامپيوترها در تمام زمينهها هوشمندتر خواهند شد. يادگيري ماشيني در حال حاضر در ميليونها اپليکيشن به کار رفته و زواياي آشکار و پنهان زندگي حرفهاي و شخصي ما را تحت تأثير قرار داده است.
يادگيري ماشيني در فناوريهاي نوظهوري همچون نرم افزار اتومبيلهاي خودران به کار ميرود. نرم افزار ماشينهاي خودران به لطف يادگيري ماشيني خود را به کمک ميليونها شبيه سازي بهبود داده و اتومبيل را حين حرکت با شرايط پيش بيني نشده وفق ميدهد.
يادگيري ماشيني اهميت بيشتري در فرآيندهايي مثل تست نرم افزار (Software Testing) دارد. اما اين فناوري چه تأثيري بر دنياي توسعه و فرآيند آزمايش نرم افزار خواهد گذاشت و اين تعامل در آينده چگونه خواهد بود؟
خلاصهاي از يادگيري ماشيني و هوش مصنوعي
براي شروع بهتر است به تفاوت ميان هوش مصنوعي و يادگيري ماشيني اشاره کنيم، چرا که کاربران اغلب اين دو فناوري را به دليل شباهتها با هم اشتباه ميگيرند. يادگيري ماشيني به سيستمي از الگوريتمها گفته ميشود که براي کمک به بهبود خودکار کامپيوتر از طريق کسب تجربه طراحي شدهاند.
به عبارت ديگر به کمک يادگيري ماشيني عملکرد فناوريهايي همچون تشخيص چهره، رانندگي خودکار، تبديل گفتار به نوشتار و غيره با آزمايشات و اصلاحات به طور پيوسته بهتر و بهتر شده و از ديد کاربر اين طور به نظر ميرسد که در حال «يادگيري» هستند.
هوش مصنوعي نيز همانطور که از نامش پيداست، به هوش و خرد تعريف شده توسط ماشين گفته ميشود و اغلب از يادگيري ماشيني به عنوان پايه و اساس آن استفاده ميشود. ميتوان سيستمي مبتني بر يادگيري ماشيني و بدون هوش مصنوعي توسعه داد، اما توسعه هوش مصنوعي بدون يادگيري ماشيني بسيار مشکل است.
اهميت فرآيند تست نرم افزار
تست نرم افزار عنصري حياتي در فرآيند توسعه نرم افزار بوده و اگر بگوييم مهم ترين عنصر است بيراه نگفتهايم. توسعه دهنده به کمک فرآيند تست نرم افزار از کارکرد صحيح محصول نهايي اطمينان حاصل کرده و در روند توسعه نرم افزار و پيش از انتشار نسخه نهايي محصول بارها از آن استفاده ميکند.
به کمک فرآيند تست نرم افزار ميتوان به شکل فعالانه باگها و ديگر خطاها را پيش از تبديل شدن آنها به مشکلات دردسرساز شناسايي نموده و رفع کرد. علاوه بر اين به کمک آن ميتوان ظرفيت محصول را با انجام آزمايشات سرعت و عملکرد تحت شرايط مختلف ارزيابي کرد. فرآيند تست نرم افزار در نهايت به توليد محصولي بهتر و مطمئنتر منتهي شده و هزينه تعمير و نگهداري آن را کاهش ميدهد.
توليد يک محصول نرم افزاري بدون آزمايش کامل آن همانند احداث يک آسمان خراش بدون فنداسيون محکم است و در صورت عدم آزمايش صحيح، هزينه تعميرات و رفع مشکلات ميتواند ۴ الي ۵ برابر بيشتر از هزينه پروژه تمام شود.
يادگيري ماشيني چگونه فرآيند تست نرم افزار را دگرگون ميکند؟
تسترهاي نرم افزار در حال حاضر از يادگيري ماشيني براي خودکار کردن و بهبود فرآيند آزمايش استفاده ميکنند. اين فناوري معمولاً در کنار متد توسعه چابک نرم افزار (Agile Software Development) مورد استفاده قرار ميگيرد. در متد توسعه چابک نرم افزار به جاي توسعه محصول به شکل کامل، نرم افزار به شکل تدريجي و مبتني بر تکرار ساخته ميشود. محققان معتقدند در آينده هوش مصنوعي و يادگيري ماشيني به طور گسترده در متد توسعه چابک نرم افزار و چارچوب اسکرام (Scrum) به کار گرفته خواهند شد.
يادگيري ماشيني فرآيند تست نرم افزار را با روشهاي زير بهبود خواهد داد:
آزمايشات سريعتر و کم زحمتتر: اغلب روشهاي آزمايش نرم افزار سنتي، به دخالت انسان و اصلاحات دستي وابسته هستند. در اين روشها گروهي از مهندسان نرم افزار و تسترهاي تضمين کيفيت (QA) برنامه را به شکل دستي اجرا کرده و ارورها را پيدا ميکنند. اما به کمک يادگيري ماشيني ميتوان فرآيند تست را خودکار کرده و آزمايشات را با سرعت بسيار بيشتر و بدون نياز به تلف کردن ساعتها وقت از نيروي انساني انجام داد.
آزمايشات پيوسته: تسترهاي تضمين کيفيت تنها در ساعات مشخصي در دسترس هستند و اين مشکل براي شرکتها که به طور پيوسته در حال توسعه نرم افزار هستند، دردسرساز خواهد بود. به کمک سيستم تضمين کيفيت مبتني بر يادگيري ماشيني ميتوان آزمايشات را به صورت پيوسته انجام داده و دائما عملکرد نرم افزار را تحت شرايط مختلف ارزيابي کرد.
آزمايشات بي تناقض: اگر يک آزمايش را براي يک نرم افزار دو بار انجام دادهايد، آيا از انجام آن به طور کاملاً يکسان در هر دو بار مطمئن هستيد؟ پاسخ احتمالاً منفي است، چون درصد خطا در انسان بالاست. الگوريتمهاي يادگيري ماشيني اما يک فرآيند را بارها و به شکل مطمئن تکرار کرده و تناقضات در آزمايشها از بين ميبرند.
دقت بالا در تشخيص: ابزارهاي اعتبارسنجي مبتني بر يادگيري ماشيني توانايي تشخيص خطاها و ارورهايي را دارند که از ديد انسان پنهان ميمانند. به کمک اين ابزارها ميتوان از بکارگيري رنگ صحيح در رابط کاربري و مکان مناسب المانها اطمينان حاصل کرده و باگهاي ديداري را با دقت بالاتر شناسايي و رفع کرد.
آزمايشات چند لايهاي: آزمايش مبتني بر يادگيري ماشيني انجام آزمايشات چند لايهاي بدون نياز به رابط کاربري را امکان پذير ميکند. يک سيستم آزمايش نرم افزار مبتني بر يادگيري ماشيني صحيح ميتواند در رخدادهاي اپليکيشن (Log) شامل سورس کد و فرآيند ذخيره سازي آني عملکرد کلي نرم افزار بکار گرفته شود.
بکارگيري يادگيري ماشيني در فرآيند تست نرم افزار در حال حاضر مزايايي همچون بهبود آزمايشات بدون تناقض، کاهش ارورها، صرفه جويي در وقت و کاهش هزينه را در پي دارد. اين فناوري با پيشرفته تر شدن فرآيند تست را با شيوههايي جديدتر متحول خواهد کرد. پيش بيني ميشود در يک دهه آينده توسعه دهندگان نرم افزار به کمک اين فناوري نرم افزارها را با سرعت بسيار بالا توسعه دهند.
در کانال آيتي و™CanaleIT هم کلي عکس و ويدئوي دسته اول و جذاب داريم