فعال اکوسیستم استارتاپی | تجربه فعالیت در حوزه های security و E-health و Fintech | مورج و علاقه مند به مدل استارتاپ استودیو و استارتاپ فکتوری
تست نرم افزار و معرفی ابزارهای کاربردی
این روزها در مورد فرآیند های تست نرم افزار و امنیت نرم افزار ها بحث های گسترده ای مطرح است و از آنجا که استارتاپ ها نیز باید به امنیت و تست های این چنین اهمیت دهند به مقاله ای در رابطه با ابزارهای تست امنیت از وبسایت های git.ir و فرآیند باز و تستولوژی اشاره میکنم(که امیدوارم برای دوستان استارتاپی مفید باشد)
در مدیریت محصول و پروژه استارتاپ ها،توسعه نرم افزار عموما با روش های چابک(اجایل) پیش می رود و کمترین زمان برای توسعه محصول در نظر گرفته می شود.
تست نرم افزار چیست؟
تست نرم افزار فرآیند اجرای یک برنامه یا برنامه با هدف پیدا کردن اشکالات نرم افزاری است.
چرا تست نرم افزار ها امری ضروری است؟
- شناسایی خطا ها و نقص های نرم افزار در مراحل توسعه
- تضمین رضایت و اعتماد مشتری به برنامه
- اطمینان از کیفیت محصول
- ارائه امکانات با کیفیت و با هزینه کمتر تعمیرات به مشتریان و حصول نتایج بهتر
- اجرای موثر برنامه کاربردی نرم افزار یا محصول
- اطمینان حاصل کنید که برنامه نباید به هیچ گونه خرابی منجر شود، زیرا در آینده یا در مراحل بعدی توسعه می تواند بسیار گران تمام شود.
- ثابت نگه داشتن شرایط کسب وکار
انواع تست نرم افزار
یا تست واحدUnit testing
کوچکترین قسمت قابل تست یک نرم افزار، واحد می باشد که در طی تست واحد، هر واحد به طور جداگانه و دقیق تست می شود.
یا تست استاتیکStatic testing
یک تکنیک تست نرم افزاری است که در آن نرم افزار بدون اجرای کد مورد آزمایش قرار می گیرد.
یا تست یکپارچه سازیIntegration testing
تست یکپارچه سازی یک فرآیند توسعه نرم افزاری است که واحدهای برنامه را به صورت چند گانه ترکیب و آزمایش می کنند.
یا تست نفوذPenetration Testing
به معنای تست نفوذ، انجام تست سیستم کامپیوتری، شبکه یا برنامه وب برای شناسایی آسیب پذیری هایی است که مهاجم می تواند از آن استفاده کند.
یا تست خودکارAutomated Testing
تست خودکار یک تکنیک می باشد که یک اپلیکیشن یا نرم افزار برای پیاده سازی کل چرخه عمر نرم افزار در زمان کم از آن استفاده و بهره وری و اثربخشی را برای نرم افزار تست فراهم می کند.
ابزارهای تست نرم افزار بر اساس شرکت تولید کننده
امروزه در فرآیند تولید نرم افزار ، ابزارهای بسیاری جهت خودکارسازی روالهای تست ، بوجود آمده است. تولید نرم افزار اختصاصی ، نیازمند داشتن تست خودکار است وگرنه یکپارچگی و کیفیت نرم افزار زیر سوال خواهد رفت. جهت تولید نرم افزار های پیشرفته لازم است که زیرسیستم های متفاوتی تولید کرد که باهم یکپارچه باشند: اپلیکیشن موبایل، ربات تلگرام، وب سایت،فروشگاه، پورتال و سایر مواردی که به کسب و کار شما کمک می کند. برای اطمینان از وجود یکپارچگی در تغییرات خدمات نرم افزاری لازم استتا از ابزارهای خودکار تست استفاده نماییم.
شرکت PARASOFT
دارای سابقه بیست و پنج ساله در زمینه تولید نرم افزارهای بررسی کیفیت نرم افزار میباشد. بیش از 500 شرکت بین المللی برای تضمین کیفیت نرم افزارهای خود از محصولات این شرکت استفاده مینمایند. این شرکت در زمینه های زیر به صورت تخصصی فعالیت میکند:
- پیشگیری از عیب ها به صورت خودکار (Automatic Defect Prevention)
- مدیریت چرخه نرم افزار
- تست های عملکردی (Functional Testing)
- تست بارگذاری بر روی نرم افزار (Load Testing)
- شبیه سازی دانش محور سرویس های نرم افزار (Service Virtualization)
- تحلیل ایستا (Static Analysis)
- تست واحد (Unit Testing)
- بررسی تطابق (Compliance Verification)
از جمله ابزار های این شرکت میتوان به موارد زیر اشاره نمود.
ابزارC/C++test
همانگونه که از اسم ابزار مشخص میباشد برای تست نرم افزار های نوشته شده با زبان های C و C++ مورد استفاده قرار میگیرد. این ابزار پولی بوده و اولین نسخه آن سال 1996 وارد بازار شده است. لینک دانلود به شرح زیر میباشد.
از جمله قابلیت های این نرم افزار میتوان به موارد زیر اشاره نمود.
- تحلیل ایستا برای زبان های C و C++
- ابزار های بازبینی کد
- تست آزمون
- رهگیری اشکالات برنامه در زمان اجرا
ابزارConcerto
این ابزار برای مدیریت چرخه نرم افزار مورد استفاده قرار میگیرد. نرم افزار پولی بوده و از سال 1996 وارد بازار شده است. لینک دانلود نرم افزار به شرح زیر میباشد.
از جمله قابلیت های این نرم افزار میتوان به موارد زیر اشاره نمود.
- مدیریت تست
- مدیریت کیفیت
- مدیریت چرخه نرم افزار (ALM)
- مدیریت برنامه نویسی
- مدیریت نیازمندی ها
- مدیریت پروژه
ابزارdotTEST
ابزاری جامع، برای کنترل کیفیت نرم افزارهای نوشته شده با استفاده از .Net Framework میباشد. این ابزار پولی بوده و از سال 2006 در بازار عرضه شده است. لینک دانلود نرم افزار به شرح زیر میباشد.
ابزارInsure++
این ابزار به منظور تحلیل شرایط اجرا و رهگیری خطا های حافظه برای C و C++ میباشد. پولی میباشد و از سال 1996 در بازار عزضه شده است. لینک دانلود نرم افزار به شرح زیر میباشد.
از جمله مزایای این نرم افزار می توان به موارد زیر اشاره نمود.
- ابزار تست
- سیستم رهگیری خطا
- ابزار گزارش عیب ها
ابزارJTest
از این ابزار برای تست نرم افزار نوشته شده با java استفاده می شود. این ابزار امکان اسکریپت نویسی برای انجام تست را نیز فراهم کرده است که زبان آن نیز جاوا میباشد. این ابزار پولی بوده و از سال 1996 به بازار عرضه شده است. لینک دانلود ابزار به شرح زیر میباشد.
زیر سیستم های این ابزار به صورت کلی به شرح زیر میباشد.
- تحلیل ایستای جاوا
- ابزار بازبینی کد برای جاوا
- ابزار آزمون واحد
- رهگیری اشکالات برنامه در حالت اجرا
- قابلیت ردیابی کدهای معیوب
همچنین ویژگی های کلی این نرم افزار به شرح زیر میباشد.
- تایید صحت کدهای جاوا
- شتیبانی از فریم ورکهای گوگل اندروید، Spring، Hibernate، Eclipse Plugins، TDD، JSF، Strust، JDBC، EJB، JSP، Servlet، Java EE و غیره.
- امکان ادغام با محصول دیگر این کمپانی به نام SOAtest به منظور انجام تستهای عملکردی و بارگذاری بر روی سیستم برای وب، سیستم های سرویس گرا و ابری.
- آشکار سازی معیب سیستم در حال اجرا هنگامی که تست های واحد، دستی و اسکریپ نویسی شده در حال اجرا هستند.
- قدرت شناسایی مسیرهایی از برنامه که میتواند منجر به وفوع معایب در حال اجرا شود.
- بررسی انطباق کدهای نوشته با بیش از 1000 قانون از پیش تعریف شده و قابل شخصی سازی تحلیل ایستا.
- وجود تمپلت برای ده روش برتر OWASP، بیست و پنج روش برتر CWE-SANS، PCI DSS و دیگر استاندارد های ایستای امنیتی.
- اعمال خودکار بیش از 350 قانون.
- امکان شخصی سازی تمامی قوانین با استفاده از واسط گرافیکی.
- تشخیص و جلوگیری از معایب همزمانی مانند بن بست ها، شرایط مسابقه، اخطار های گم شده، حلقه بی پایان، فاسد شدن داده ها و دیگر مشکلات نخ ها در جاوا.
- ایجاد خودکار تست های رگرسیون (تست تاثیر تغییرات در بقیه سیستم).
- تولید تست آزمون کارکردی بر اساس عملکرد واحد.
- ادغام و تکمیل تست های آزمون نوشته شده توسط برنامه نویس.
- اجرای خودکار تست های برگشت معایب به منظور رهگیری عوارض جانبی دور از انتظار.
- رهگیری معایب در حال اجرا هنگام اجرا تست ها.
- امکان پارامتر گزاری test case ها به منظور استفاده از ورودی های متنوع از جمله مقادیر تولید شدخ در حالت اجرا، مقادیر تعریف شده توسط کاربر، مقادیر عملیاتی در پایگاه های داده و غیره.
- محاسبه میزان پوشش آزمون با استفاده از متریک های مختلف.
- اجرای مرحله به مرحله آزمون با استفده از دیباگر.
- محاسبه متریک های عمق ارث بری، کمبود پیوستگی ، Cyclomatic Complexity، عمق بلوک های درونی، تعداد فرزندان.
- ردیابی و اصلاح کدهای تکراری و کدهایی که دیگر استفاده نمیشوند.
- مدیریت فرآند بازبینی کد.
- امکان گزارش گیری در قالب های HTML و PDF.
- گزارش هایی برای نمایش رود افزایشی یا کاهشی کیفیت نرم افزار تحت تست با مرور زمان.
ابزارParasoft SOAtest
نرم افزار جامع این شرکت برای تست کد، سرویس ها، ابرها و تراکنش های حیاتی کسب وکار میباشد. نرم افزار پولی بوده و از سال 2002 به بازار عرضه شده است. لینک دانلود نرم افزار به شرح زیر میباشد.
شرکت IBM
Rational Integration Tester
ابزاری است برای مجازی سازی فرآیند آزمون که در ادغام مداوم (Continuous Integration) مورد استفاده قرار میگیرد. این ابزار با استفاده از روشهای پیاده سازی تکرار شونده و چابک از بروز مشکلا ت در زمان ادغام زیر سیستم ها، ممانعت به عمل می آورد.این ابزار که هم اکنون بخشی از Rational Test Workbench میباشد به منظور ایحاد آزمون های کارکردی و کارایی برای سیستمهای سرویس گرا و اجرای این آزمون ها در محیط محلی مورد استفاده قرار میگیرد. این ابزار توانایی ایجاد شبه کدهای (Stub) قابل استفاده مجدد و نگهداری (بدون نیاز به کد نویسی) را دارا میباشد لذا فرآیند تست در صورت آماده نبودن احزایی از سیستم میتواند پیگیری شود. این ابزار برای نوشتن آزمون ادغام نرم افزارهای ادغام مداوم، پایگاه داده محور و سرویس گرا مورد استفاده قرار میگیرد. همچنین ای ابزار قابلیت ضبط سناریوی آزمون و اجرای خودکار آنرا دارا میباشد. این ابزار پولی بوده و از سال 2012 به بازار عرضه شده است. نام قدیمی ابزار Green Hat میباشد. لینک دانلود این ابزار به شرح زیر میباشد.
http://www.qatestingtools.com/external?url=http://www14.software.ibm.com/webapp/download/home.jsp
این ابزار برای انواع تست زیر به کار گرفته میشود.
- آزمون های عملکردی
- ازمون های ادغام
- ازمون بارگذاری بر روی نرم افزار
- آزمون های کارایی
- آزمون برکشت معایب
از جمله ویژگیهای ابزار نیز میتوان به موارد زیر اشاره نمود.
- ایجاد خودکار اسناد پلن آزمون.
- پشتیبانی از پروتووکلهای متعدد از قبیل JMS، IBM MQ، Sonic MQ، TIBCO، TCP/IP، UDP/IP، Smart Socket و غیره.
- امکان پلاگین نویسی برای پشتیبانی از پروتوکلهای دیگر.
- جعبه ابزار برای شبیه سازی کارکرد های سیستم.
- گزارش گیری خودکار از نتایج اجرای آزمون.
- امکان ضبط و باز پخش پیام ها.
- امکان ویرایش پیام ها با استفده از واسط کاربر گرافیکی.
- امکان اشتراک گذاری پیام ها با دیگر ابزار آزمون شرکت IBM.
ابزارRational Performance Tester
ابزاری است برای آزمون های کارایی که مقیاس پذیری لایه وب و اپلیکیشن سرور را ارزیابی میکند.با استفاده از این ابزار میتوان حضور و دلیل وجود گلوگاه های کارایی را تشخیص داد که این امر منتهی به کاهش پیچیدگی آزمون بارگذاری بر روی سیستم میشود. به صورت کلی میتوان گفت که این ابزار امکان اجرا سریع آزمون های کارایی و تحلیل اثر آمون های بارگذاری بر روی سیستم را فراهم مینماید. این ابزار قابلیت تولید داده های آزمونمدیریت استخرهای داده ای را دارا میباشد. همچنین دارای ابزاری برای نمایش زنده نتایج آزمون های کارایی میباشد.
ابزار پولی میباشد و لینک دانلود آن به شرح زیر میباشد.
از جمله ویژگیهای این ابزار میتوان به موارد زیر اشاره نمود.
- برای ایجاد آزمون های کارایی در این ابزار هیچ نیازی به دانش برنامه نویسی نمیباشد.
- محیط ویرایش پوشه های آزمون.
- امکان اسکریپت نویسی با استفاده از زبان جاوا.
- گزارش گیری زنده و نمایش صفحات وب تحت تست به صورت HTML.
- ادغام اطلاعات منابع سرور ها با داده های کارایی نرم افزار.
- امکان استفاده در سیستم عامل های windows، linux و z/OS.
- شناسایی خودکار و ارتباط پاسخ های پویای سرور.
همچنین ای ابزار دارای افزونه های زیر میباشد.
- افزونه BSD Oracle Apps
- افزونه برای تست کارایی SAP Solutions
- افزونه برای Siebel Test Automation
- افزونه برای SOA Quality
- افزونه برای Citrix Presentation Server
- افزونه برای z/OS
۵ ابزار تست خودکار اندروید نیز طبق معرفی تستولوژی شامل:
ابزارRobotium:
فریمورکی محبوب برای اجرای تستهای خودکار اندروید میباشد که از دلایل محبوبیت آن میتوان سهولت استفاده، اجرای سریع، قابلیت خواندن تستها را نام برد. بنابراین شما با کمترین دانش از تست میتوانید تستهای بسیار قوی را اجرا کنید. این ابزار به صورت متن باز، رایگان و تحت لیسانس آپاچی نسخه ۲٫۰ است که اولین بار در سال ۲۰۱۰ منتشر شد. توسعهدهندگان نرمافزار اغلب از Robotium به عنوان سلنیوم برای اندروید توصیف میکنند. میتوان از آن هم در تست جعبه سفید و هم در تست جعبه سیاه استفاده کرد. اما بیشترین کاربرد آن در تست جعبه خاکستری میباشد. این تست را میتوان در دستگاه شبیه ساز اندروید یا دستگاه واقعی تست کرد. این فریمورک با زبان جاوا پیاده سازی شده و از ساختار JUnit در آن استفاده میشود و نسخه اندروید ۱٫۶ به بالا را پشتیبانی میکند. از معایب آن صرف زمان زیاد در اجرای تست، تعامل ضعیف با سیستم نرمافزار و عدم ذخیره تصاویر را میتوان نام برد.
هدف Robotium برای اجرای تستها، شبیه سازی فعالیتهای کاربر مانند لمس کردن، تایپ کردن و کلیک کردن است، که این شبیه سازی میتواند در سورس کد برنامه یا فقط در فایلهای APK انجام شده و یا در دستگاههای واقعی اجرا شود. برای استفاده از Robotium شما به ابزارهای Eclipse و فایل Robotium.jar نیاز دارید. نسخه ۵٫۲٫۱ آن را میتوانید از این آدرس دریافت کنید.
ابزارMonkeyRunner:
یکی از محبوبترین ابزارهای تست نرمافزار است که برای تست خودکار فانکشنال در اندروید به کار میرود. این ابزار سطحی پایینتر از Robotium دارد و با زبان پایتون پیاده سازی شده است. با این ابزار به دو صورت میتوانید تست انجام دهید، حالت اول به صورت خودکار از اول تا آخر تست را اجرا میکند و حالت دوم میتوانید ورودیها را وارد کرده و بعد عکس العمل برنامه را مشاهده کنید.
از مزایای آن شبیه سازی اتصالات به دستگاههای دیگر، حرکات و رویدادهای صفحه کلید، قابلیت استفاده مجدد اسکریپت تست نوشته شده در ابزارهای دیگر، ذخیره تصاویر اجرای تست را میتوان نام برد. MonkeyRunner از Jython برای اجرای اسکریپتهای خود استفاده میکند. اما از معایب آن نوشتن اسکریپتهای مختلف برای هر مدل گوشی، نوشتن کدهای پیچیده برای تستهای ساده، زمانبر بودن توسعه اسکریپت با توجه به توسعه نرمافزار، هزینه زمانی زیاد، تغییر تستها با تغییر رابط کاربری و عدم شبیه سازی تستهای احراز هویت را میتوان نام برد. در بازیهای نرمافزاری که نیاز به رفتار و عکس العمل سریع و حرکات پیچیده دارند، ابزار مناسبی نمیباشد. تست خودکار با این ابزار نقطه شروع خوبی برای برنامهها میباشد اما ممکن است تستها را با کیفیت پایین اجرا کند.
ابزارRanorex:
ابزار تست نرمافزار قدرتمندی است که از تعداد زیادی تکنولوژیهای مختلف در انواع سیستم عاملها مانند ویندوز، وب و پلتفرمهای موبایل پشتیبانی میکند. به طور مثال از زبانهای برنامه نویسی مانند سی شارپ، ویژوال بیسیک، جاوا، فلش، سیلورلایت و HTML و پلتفرمهای موبایل مانند اندروید و iOS پشتیبانی میکند. این ابزار برای نسخه اندروید ۲٫۲ به بالا استفاده میشود. از مزایای آن، ارائه گزارشهایی با جزییات فراوان همراه با تصاویر، قابلیت اتصال به گوشیهای هوشمند یا تبلت از طریق اینترنت بیسیم، ایجاد تست به سرعت و به راحتی، امکان ورود دادهها از طریق فایلهای Excel، CSV یا پایگاه داده SQL، ذخیره اسکریپت و ماژولهای طراحی شده و استفاده مجدد آنها در پروژههای دیگر
میتوان نام برد. نسخه ۵٫۱٫۱ را میتوانید از این آدرس دریافت کنید.
ابزارAppium:
فریمورکی برای ساخت تستهای خودکار در سیستم عاملهای iOS و اندروید میباشد. ابزاری رایگان بوده و نسخههای اندروید ۲٫۳ و پایینتر از آن را پشتیبانی میکند. بسیاری از زبانهای برنامه نویسی از جمله جاوا، سیشارپ و … را پیشتیبانی میکند. همچنین قابلیت کنترل مرورگرهایی مانند سافاری و کروم بر روی موبایل را دارد، این به آن معناست که اجازه میدهد مرورگرها را در گوشیها تست کنید. با تمام مزایای فوق در تست خودکار ضعیف عمل کرده و گزارش جزیی و پشتیبانی ضعیفی را ارائه میدهد. این ابزار را میتوانید از این آدرس دریافت کنید.
ابزارUI Automator:
این ابزار به تازگی توسط گوگل پرداخته شده و نسخه اندروید ۴٫۱ به بالا را پشتیبانی میکند. از مزایای آن قابلیت قفل گذاری روی تبلت و گوشیهای هوشمند، اجرای اسکریپت ایجاد شده در نسخههای مختلف اندروید، شبیه سازی دکمههایی مانند عقب، جلو، تنظیم صدا، روشن و خاموش کردن، یکپارچه سازی با فریمورک TestNG، ارائه گزارشهای دقیقی مانند ابزار Ranorex ، انجام تست کیفیت
نرمافزار تلفن همراه در نسخههای اندروید را میتوان نام برد. این ابزار را میتوانید از این آدرس دریافت کنید.
با توجه به اینکه این نوشته یک جمع بندی(کپی) از دو مقاله دوستان و همکاران در تستولوژی و فرآیند مدار
و گیت هست دوستان استارتاپی برای بررسی بیشتر به مطالعه منابع اصلی بپردازید...
مطلبی دیگر از این انتشارات
یادگیری برنامهنویسی، مفاهیم و فعالیتهای تولید نرم افزار
مطلبی دیگر از این انتشارات
منابع کنکور کادانی کامپیوتر
مطلبی دیگر از این انتشارات
اشنایی با DOTS و توضیح علمکرد این تکنولوژی در انجین unity