نقش تضمین کیفیت در توسعه نرم افزار، در کنار روندهای پرهیاهوی صنعت به تکامل خود ادامه می دهد. تضمین کیفیت (QA) تغییر قابل توجهی را تجربه کرده است و فراتر از انجام آزمایش های دستی ساده است. همچنین در مورد مدیریت عملکردهای استراتژیک است. از آنجایی که تست نرم افزار برای نتایج موفقیت آمیز پروژه و محصول ضروری است، تست QA همچنان در اولویت مدیران ارشد اطلاعات (CIOs) قرار دارد. در این پست ، برخی از عناصر مهم تست نرم افزار را بررسی خواهیم کرد.
موارد جدید در تست نرم افزار
- تحول دیجیتال : افزایش سازگاری برنامههای تحول دیجیتال، مانند DevOps، سازمانها را وادار کرده است تا تضمین کیفیت (QA)را از منظر دیجیتالیسازی مورد بازنگری قرار دهند. در نتیجه، تیمها منسجمتر میشوند و درنتیجه سرعت افزایش می یابد و کارایی را به حداکثر میرساند. با این حال، بدون یک استراتژی قوی در تضمین کیفیت (QA)، تصور توسعه(development) و تحویل (delivery) مداوم دشوار است. از این رو، DevOps در حال ادغام به QA است که منجر به یک چارچوب جدید به نام QAOps می شود QAOps. کیفیت نرم افزار را با نزدیک شدن به چهارچوب DevOps حفظ می کند.
- هوش مصنوعی : هوش مصنوعی یک زمینه در حال توسعه است، و این به ویژه در مورد QA صادق است. در حالی که بسیاری از افراد در صنعت در مورد اینکه چگونه هوش مصنوعی آزمایش را تغییر می دهد صحبت می کنند، به نظر می رسد تعداد بسیار کمی آن را پیاده سازی کرده اند. هدف اصلی هوش مصنوعی استفاده از اتوماسیون، یعنی یادگیری ماشین، برای ارائه نتایج بهتر است. ترکیب هوش مصنوعی همچنین مشاغل جدیدی را برای متخصصان خاصی از جمله دانشمندان داده و کارشناسان کیفیت هوش مصنوعی ایجاد می کند.
آزمایشکنندگانی که هم در آزمایش سیستمهای مبتنی بر هوش مصنوعی و هم در استفاده از تکنیکهای آزمایشی مبتنی بر هوش مصنوعی مهارتهای خود را توسعه میدهند، در چند دهه آینده تقاضای زیادی خواهند داشت. ظهور هوش مصنوعی نقش مهندسی تضمین کیفیت (QA)را در تیم توسعه نرم افزار تغییر خواهد داد. همانطور که آزمایش کنندگان نقش های جدیدی را در سازمان خود ایجاد می کنند، صنعت باید در تقویت هوش مصنوعی خلاقانه عمل کند، بدون اینکه اجازه دهد هوش مصنوعی مانع خلاقیت شود.
پیشرفتهای اخیر صنعت فرصتهای جدیدی را در رابطه با استفاده از هوش مصنوعی در آزمایش ایجاد کرده است. الگوریتمهای هوش مصنوعی برای تولید دادههای آزمایشی، گزارشها و موارد آزمایشی بهتر توسعه داده شدهاند، از مدلهای پیشبینیکننده برای کمک به تصمیمگیری بهتر استفاده میشود و تیمهای پشتیبانی تحلیلی مبتنی بر هوش مصنوعی، خطاها را شناسایی میکنند تا مناطق پرخطر و پوشش آزمایشی را بهتر درک کنند.
- مرکز سنجش مرغوبیت (Testing Center of Excellence TCoE) :دنیای تجارت برای ایجاد TCoE در پاسخ به چالش هایی مانند کاهش بودجه و تنوع مدل های تحویل آزمایشی ، تحت فشار است. عوامل دیگر، مانند عملکرد ضعیف آزمایش ها و منابع کم استفاده شده ناشی از فرآیندهای آزمایشی متفاوت درسراسر مناطق جغرافیایی، مکانها و تیمها، نیاز به ایجاد مرکز سنجش مرغوبیت را بیشتر میکند . مرکز سنجش مرغوبیت ؛ عملکردتضمین کیفیت (QA)متمرکز، فرآیندهای منسجم، معیارهای دقیق پروژهها و تحویل مداوم را برای افزایش رضایت مشتری ممکن میسازد. ایجاد یک مرکز سنجش مرغوبیت موفق شامل داشتن اسپانسر ، تبلیغ کردن با تیم های پروژه و ایجاد فرآیندهای واضح، الگوها، گزارشهای وضعیت، گزارشدهی معیارها و کانالهای ارتباطی سرتاسری شفاف است. یک مرکز سنجش مرغوبیت موفق مستلزم ایجاد یک طرح پروژه کامل است که شامل فرآیندهای تعریف شده، روش ها، ابزارها، ارتباطات، و ماتریس انتساب مسئولیت (ماتریسRACI) می باشد. این تضمین می کند که هر عضو تیم از اهداف و مسئولیت های پروژه آگاه است. مدل عملیاتی هدف باید به عنوان معیار ورود هر عضو جدید تیم عمل کند و تیم را به سمت یک هدف مشترک سوق دهد.
- تست سیار : آزمایشگاه های تست سیار باید با سیستم عامل های مختلف راه اندازی شوند. بنابراین، مدیریت دستگاه ها و سیستم عامل های مختلف همچنان یک چالش است. با چندین دستگاه سیارموجود، تخصص تست سیار برای موفقیت کلی عملکرد تضمین کیفیت(QA) ضروری است. علاوه بر این، تست سیار یک حوزه قابل توجه برای همه مشتریان است. از این رو، ایجاد یک آزمایشگاه تست سیار برای تصاحب مالکیت دستگاههای مدیریتی، به کسبوکارها در چشمانداز فعلی برتری میدهد . برخی از ابزارهای مناسب برای تست موبایل عبارتند از Appium، Espresso، XCTest و Calabash. به طور کلی سه نوع برنامه سیار وجود دارد: برنامه های کاربردی بومی( native applications اپلیکیشن بومی ، نرم افزاری است که توسعه دهندگان برای استفاده در یک پلتفرم یا دستگاه خاص می سازند. ) ، برنامه های کاربردی وب و برنامه های کاربردی ترکیبی. بسیاری از سازمانها برنامههای ترکیبی را انتخاب میکنند که میتواند تعداد بیشتری از پلتفرمها را پوشش دهد.
- تست اکتشافی: به زبان ساده، تست اکتشافی پاسخی به چالش توسعه راه حل های با کیفیت ، بدون اتوماسیون است. “چارترینگ” ، یکی از عناصر کلیدی تست اکتشافی ، به معنای تعیین یک مأموریت واضح برای جلسه ای است که قرار است تست شود . به عبارت دیگر، چارترینگ در تست اکتشافی به تعیین هدف و مأموریت مشخصی برای جلسه تست اشاره دارد. این هدف ممکن است شامل مواردی مانند اهداف تست، نقاط کلیدی برای بررسی، مناطق خاصی که باید مورد توجه قرار گیرند، و غیره باشد. این مأموریت معمولاً به منظور جلب توجه به جوانب خاصی از تست یا بررسی میباشد و کمک میکند تا تستر به طور موثرتر و جامعتری تست را انجام دهد. وظیفه آزمایشکننده این است که یک محقق باشد – برای پرسیدن سؤالات در مورد موضوع کاربر و تعریف محدوده مأموریت. آزمایشکننده باید ایمیل، رسانههای اجتماعی و هر چیز دیگری را خاموش کند و به سادگی روی جلسه تمرکز کند. در پایان جلسه، آزمایش کنندگان باید پنج دقیقه وقت بگذارند تا نتیجه را منعکس کنند. کار به صورت تیم دو نفره در حین انجام تست مبتنی بر جلسه موثرتر است. در درجه اول، آزمایش اکتشافی به کاربران امکان می دهد تا خلاقیت خود را برای یافتن اشکالات جدیدی که از طریق آزمایش بدون اسکریپت پیدا نشده اند، به کار گیرند.
- تست اتوماسیون : تغییرکاربری از ابزارهای نرم افزاری دارای مجوز به ابزارهای منبع باز(open source) صورت گرفته است. شرکت هایی که در استفاده از ابزارهای منبع باز مسلط هستند در بازارهای نوظهور پیشرفت خواهند کرد. با این حال، قبل از انجام هر گونه تلاش اتوماسیون، کسب و کارها باید ثابت کنند که ابزار انتخاب شده با موفقیت در محیط مشتری کار می کند. با انجام این کار، آنها اعتماد مشتریان را به راه حل پیشنهادی تضمین می کنند و سرعت اجرا را افزایش می دهند، هزینه را کاهش می دهند، چرخه های رگرسیون سریعتر را فعال می کنند و در نهایت محصولی با کیفیت بالا تولید می کنند. برای تست کاربردی، برخی از محبوب ترین ابزارهای موجود در بازار عبارتند از Selenium, Playwright, Cypress, and Cucumber. Playwrights در این صنعت جذابیت قابل توجهی به دست آورده اند.
- تست یکپارچه سازی مداوم:این آزمایش با یکپارچهسازی مکرر کد در یک محیط شبه تولید همزمان با افزایشهای کوچک انجام میشودتا به شناسایی مشکلات اولیه کمک کند و انتشار با کیفیت بالا و بدون نقص را امکان پذیر کند. از دیگر مزایای تست یکپارچه سازی مداوم می توان به نتایج بهتر پروژه، کاهش خطرات و نرم افزار کاربردیکه به موقع در دسترس است، اشاره کرد. آزمایش یکپارچهسازیمداوم همچنین منجر به افزایش انتشار در بازههای زمانی کوتاهتر و یکپارچهسازی مداوم تنظیمشده و تحویل مداوم/استقرار پیوسته (CI/CD) (continuous integration and continuous delivery)میشود. این همچنین مبنایی برای DevOps است، که منجر به افزایش تعداد انتشار در بازههای زمانی کوتاهتر، با تنظیم شبکه CI/CD و توانایی انجام فوری رفع اشکالات میشود. آزمایش یکپارچهسازیمداوم همچنین آزمایش بتا و آزمایش کاربر را امکان پذیر می کند.
- تست امنیتی : با وجود کار از راه دور و ترکیبی، تست امنیتی به یک نگرانی اصلی برای همه سازمان ها تبدیل شده است. علاوه بر این، ظهور آزمایش مبتنی بر ابر، نگرانیهای امنیتی را افزایش داده است. تست امنیت یک مهارت تخصصی است و داشتن کارمندان و شرکای متخصص برای ایجاد یک سازمان آزمایشی جامع ضروری است. الزامات امنیتی معمولی شامل محرمانه بودن، یکپارچگی، احراز هویت، در دسترس بودن، مجوز و عدم انکار است. از آنجایی که تست امنیتی یک مهارت تخصصی است، نقش مهمی در گفتگوهای ما با مشتریان در مورد کیفیت محصول و فرآیند ایفا می کند.
- جداسازی تضمین کیفیت(QA) و توسعه : ایجاد دیدگاهی مستقل درباره ی کیفیت ، از منظر انطباق بسیار مهم است. خوب است که تیم های توسعه و تضمین کیفیت را از هم جدا کنید تا اطمینان حاصل شود که کیفیت درونی سازی شده است و هیچ سوگیری در نتایج وجود ندارد. با این حال، روند دیگری در حال ظهور است – روندی که در آن تیمهای تضمین کیفیت و توسعه از طریق DevOps ادغام میشوند. ممکن است در نهایت به مرحله ای برسیم که در آن هر دو عملکرد زیر یک چتر قرار گیرند.
- تشخیص زودهنگام نقص : در حال حاضر، سازمانهای فناوری اطلاعات نسبت به قبل، بخش بیشتری از بودجه خود را صرف تضمین کیفیت میکنند. برای اطمینان از عملی بودن افزایش بودجه، برای کسب و کارها ضروری است که تیم تضمین کیفیت را در آغاز چرخه عمر توسعه نرم افزار درگیر کنند. هنگامی که عیوب زود تشخیص داده شوند، کسب و کارها در هزینه های مربوط به رفع آنها و هزینه های کلی مرتبط با کیفیت صرفه جویی می کنند. معیار”انتقال به سمت چپ” (Shifting Left) ، اندازه گیری اثربخشی یک تغییر و تعیین اینکه آیا انتظارات کاربر نهایی را برآورده می کند یا خیر، میباشد.”انتقال به سمت چپ” به معنای انجام تستها، اعتبارسنجیها و ارزیابیهای کیفیت نرمافزار در مراحل زودتر توسعه (مانند توسعه کد یا تست واحد) است. این کارها به تشخیص زودتر مشکلات و بهبود کیفیت نرمافزار کمک میکنند.یکی دیگر از روشهای مفید این است که تضمین کیفیت موارد تست واحد را برای تیمهای توسعه بنویسد تا از طریق توسعه تست محور (test-driven development (TDD)) آزمایش شود.
- مهندسین توسعه نرم افزار در آزمون Software Development Engineers in Test (SDETs) : به عنوان ترکیبی از تست عملکردی و تست اتوماسیون، SDETها آزمایش کننده هایی هستند که قابلیت کدگذاری را برای کمک به سازمان ها برای تولید محصولات برنده ی آینده دارند. SDETها همچنین به تیم های تضمین کیفیت کمک می کنند تا نقص ها را زودتر شناسایی کنند و تست جعبه سفید را که همیشه توسط تیم های تضمین کیفیت انجام نمی شود ، بهبود بخشند. SDET همچنین کیفیت را افزایش می دهد و در عین حال امکان صرفه جویی در هزینه را از طریق راه حل های اتوماسیون فراهم می کند.
- محیط های تست: تیم های تضمین کیفیت باید مهارت هایی را توسعه دهند که آنها را قادر سازد دامنه ها را به طور مستقل مدیریت کنند. از این رو، محیط های آزمایشی باید از تیم های تضمین کیفیت پشتیبانی کنند، زیرا آنها مستقل از تیم های توسعه آزمایش می کنند. سازمانها استراتژیهای محیط آزمایش بیشتری را اتخاذ میکنند، زیرا در دسترس نبودن یا ناسازگاری محیط آزمایش، پروژه آزمایش را متوقف میکند. اطمینان از در دسترس بودن محیط مناسب و تهیه یادداشت های انتشار مناسب برای هر استقرارمهم است. این اقدامات به برقراری ارتباط تغییرات موثر و گسترش انتظارات کمک می کند. نتایج تست واحد و گزارش عیوب نیز برای موفقیت تیم آزمایش بسیار مهم است.
موفقیت در آینده
مدیران ارشد اطلاعات به طور فزاینده ای احساس می کنند که تضمین کیفیت بسیار کارآمد است. از این رو، سرمایه گذاری در تضمین کیفیت برای افزایش درآمد و رضایت مشتری حیاتی است. سازمان های تضمین کیفیت باید برای سال ۲۰۲۴ باید بر روی روندهای ذکر شده در بالا تمرکز کنند.