همزمان با خودکارتر شدن فرایند کدنویسی، تستهای مبتنی بر کد نیز خودمختارتر شدهاند. عاملهای هوش مصنوعی اکنون میتوانند توابع را بنویسند، تستهای کدنویسی تولید کنند و منطق را در همان چرخه کاری اعتبارسنجی کنند. اما نیمه دیگر معادله تست، یعنی اعتبارسنجی سطح سیستم در تستهای بدون نیاز به کدنویسی، همگام پیش نرفته است.
این ناهماهنگی در حال تبدیل شدن به یکی از مهمترین محدودیتها در ارائه نرمافزار مدرن است.
دو دنیای متفاوت تست
امروزه تست دو حوزه کاملاً متفاوت را شامل میشود.
-
تست مبتنی بر کد سریع و خودکار است. تستهای واحد، بررسیهای قرارداد، و اعتبارسنجی اسکیما نزدیک به منبع، درون خطوط CI/CD اجرا میشوند و مشکلات را زود و با هزینه کم شناسایی میکنند.
-
تست بدون نیاز به کدنویسی، جریانهای کاری اپلیکیشن، عملکرد تحت بارهای مختلف، قابلیت استفاده و قابلیت اطمینان در شرایط واقعی را در مرورگرها، دستگاهها و محیطهایی که کاربران واقعی استفاده میکنند، ارزیابی میکند.
هر دو اهمیت دارند. یکی تضمین میکند کد بدون خطا باشد. دیگری تضمین میکند اپلیکیشن برای کاربران واقعی درست کار کند.
شکاف خودمختاری میان تست مبتنی بر کد و تست بدون نیاز به کدنویسی
با تکامل توانایی هوش مصنوعی در نوشتن کد، توانایی آن در تست کردن کد نیز افزایش یافته است. اگر بتواند یک تابع ایجاد کند، میتواند تست واحد مربوط به آن را نیز برای بررسی کار خود تولید کند.
روند تکامل کدنویسی و تست کدنویسی را میتوان با استفاده از چارچوب سطوح خودمختاری مشاهده کرد:
-
سطح ۱: انسانها تمام کد را دستی مینویسند و آن را بهصورت دستی یا با اتوماسیون غیرهوشمند تست میکنند.
-
سطح ۲: هوش مصنوعی قطعاتی از کد را پیشنهاد میدهد و تستهای ساده تولید میکند.
-
سطح ۳: عاملهای چندمرحلهای، تسکهای کامل را انجام میدهند، کد را مینویسند و تحت نظارت انسان آن را با تستهای داخلی اعتبارسنجی میکنند.
-
سطح ۴: توسعهدهندگان نتایج موردنظر را توضیح میدهند و هوش مصنوعی سامانههای قابل اجرا با تستهای خودتأییدکننده میسازد.
-
سطح ۵: عاملها مشخصات را به نرمافزار آماده تولید تبدیل میکنند، با کنترل کیفیت مداوم و خودحاکم.
تست مبتنی بر کد با سرعتی مشابه خود کدنویسی از نردبان خودمختاری بالا رفته است، زیرا در یک زبان مشترک عمل میکنند: کد.
تست بدون نیاز به کدنویسی نیز خودکارتر شده است، اما سرعت آن به اندازه تست مبتنی بر کد نبوده است.
چرا تست بدون نیاز به کدنویسی همگام با کدنویسی هوش مصنوعی حرکت نکرده است؟
با وجود قابلیتهای جدید هوش مصنوعی در صنعت، تستهای غیرکدی همچنان در سطوح پایینتر خودمختاری باقی ماندهاند، زیرا خودکارسازی آن دشوارتر است. دلایل مهمی برای این موضوع وجود دارد:
-
کاربر نهایی. تستهای بدون نیاز به کدنویسی معمولاً به رفتار انسانهایی وابستهاند که محصول را استفاده میکنند. حتی ابزارهای اتوماتیک نیز معمولاً از ضبطکنندههای صفحه برای ثبت تست دستی و تبدیل آن به تست خودکار استفاده میکردهاند.
-
چالش شهود. مسیرهای یک اپلیکیشن مدرن تقریباً بینهایتاند. تشخیص اینکه چه چیزی باید تست شود، چه زمانی و با چه عمقی، نیازمند نوعی هوش است. تاکنون این هوش انسانی بوده، اما اکنون هوش مصنوعی پیشرفتهتر میتواند نقش بیشتری داشته باشد.
-
دنیای واقعی. مشکلات بار و عملکرد تنها در بارهای واقعی و روی دستگاهها، شبکهها و مرورگرهای واقعی ظاهر میشوند.
-
تعریف درستی نتیجه. برخلاف تست واحد که نتیجه درست یا غلط دارد، یک تست انتهابهانتها میتواند مبهم شکست بخورد. این ما را به پرسش وا میدارد: آیا تست اشتباه نوشته شده است؟ آیا ناپایدار است؟ یا اپلیکیشن واقعاً دچار مشکل شده؟
گلوگاه حیاتی کسبوکار
شکاف میان سرعت کدنویسی و سرعت پایینتر تست بدون نیاز به کدنویسی اکنون به یک گلوگاه واقعی در توسعه نرمافزار تبدیل شده است و این وضعیت رو به وخامت است. وقتی کد در چند ساعت توسط هوش مصنوعی نوشته، تست و ادغام شود، اما اعتبارسنجی کامل سیستم همچنان روزها یا هفتهها زمان ببرد، مزایای سرعت کدنویسی خودکار از بین میرود.
نتیجه، انتخابی دشوار میان سرعت و قطعیت است—چیزی که هیچ کسبوکاری نمیخواهد قربانی کند. اگر خیلی سریع حرکت کنید، خطر انتشار نرمافزار بدون اعتبارسنجی را افزایش میدهید. اگر خیلی کند حرکت کنید، مزیتهای کدنویسی خودمختار را از دست میدهید. هیچیک از این مسیرها پایدار نیستند.
ضرورت راهبردی
برای اینکه کسبوکارها بتوانند بهطور کامل از چرخه توسعه نرمافزار شتابگرفته با هوش مصنوعی بهره ببرند، بستن این شکاف ضروری است.
رهبران باید راهبرد کیفیت خود را بر سه اصل بازطراحی کنند:
-
بیشترین بهره را از تست مبتنی بر کد ببرید. مشخصات را بهعنوان داراییهای اصلی در نظر بگیرید تا تستهای سطح کد بتوانند بهطور خودکار از آنها استفاده کنند.
-
QA انسانی را به «اعتبارسنجی ارزش» بازتعریف کنید. انسان باید قضاوت و همدلی با کاربر را در جایی به کار ببرد که بیشترین اهمیت را دارد: ارائه تجربهای شهودی، قابل اعتماد و مطابق با وعده اپلیکیشن.
-
در محیطهای تست بدون نیاز به کدنویسی مبتنی بر عاملها سرمایهگذاری کنید تا تست بتواند از نظر سرعت و هوشمندی با توسعه خودمختار همگام شود.
ایجاد توازن در خودمختاری
کدنویسی خودمختار تا زمانی که تست بدون نیاز به کدنویسی نیز به همان سطح از خودمختاری نرسد، نمیتواند وعده کامل خود را ارائه دهد. اعتماد واقعی به نرمافزار زمانی حاصل میشود که کدنویسی هوشمند و تست هوشمند با هم و در یک مقیاس رشد کنند.
تیمهایی که امروز این شکاف را برطرف کنند، خواهند توانست اپلیکیشنهایی را با سرعت هوش مصنوعی ارائه دهند؛ اپلیکیشنهایی که در هر محیطی برای کاربران نهایی بهدرستی کار میکنند و قابل اعتمادند.
