با پیشرفت و توانمندتر شدن هوش مصنوعی (Artificial Intelligence)، این فناوری در حال استفاده در تعداد فزایندهای از موارد استفاده است. نمونههای بیشتری از هوش مصنوعی به عنوان ابزاری توسط توسعهدهندگان نرمافزار استفاده میشود و ظهور اخیر «کدنویسی حسی» (vibe coding) مطمئناً توجه رسانهها را به خود جلب کرده است.
فقط چند ماه پیش، آندری کارپاتی (Andrej Karpathy) این اصطلاح را برای توصیف فرآیند درخواست از مدلهای زبان بزرگ (LLM) مانند ChatGPT و Claude برای نوشتن کد با ارائه دستورالعملهای ساده و زبان طبیعی به آن، ابداع کرد. در حالی که این رویکرد قادر به تولید کد کارآمد است، اما هنوز قادر به تولید برنامههای نرمافزاری پیشرفته به صورت خودکار نیست - حداقل هنوز نه. اما مدلهای زبان بزرگ به عنوان ابزاری توسط توسعهدهندگان در هنگام ساخت نرمافزاری که برای موارد استفاده واقعی در نظر گرفته شده، استفاده میشوند.
نکته کلیدی در اینجا این است که حتی اگر مدلهای زبان بزرگ کد را مینویسند، افرادی که به آن دستور میدهند که این کار را انجام دهد، هنوز قادر به درک آنچه نوشته شده هستند. اگر آنها نمیتوانستند، اشکالزدایی، نگهداری و ایمنسازی مؤثر پایگاه کد غیرممکن خواهد بود. هوش مصنوعی دستیاری است که برای ارائه پیشنهادات استفاده میشود، نه ارائه پاسخهایی که بتوان به طور 100٪ به آنها اعتماد کرد.
مانند سایر بخشهای توسعه نرمافزار، نظارت انسانی هنوز نقش مهمی ایفا میکند. مشارکت انسان در آزمایش قابلیت استفاده (usability) و دسترسیپذیری (accessibility) در نرمافزار از اهمیت ویژهای برخوردار است - اما همچنین بسیار مهم است که انسانها همچنان استاد تمام فرآیندهای آزمایش نرمافزار باقی بمانند.
مدلهای زبان بزرگ میتوانند کد بنویسند - اما آزمایشکنندگان ضعیفی برای قابلیت استفاده هستند
مدلهای زبان بزرگ روی حجم عظیمی از دادهها، تصاویر و متن از منابع متعددی در سراسر اینترنت آموزش داده شدهاند و به گونهای طراحی شدهاند که هنگام انجام وظایفی مانند نوشتن ایمیل، به شیوهای مورد انتظار رفتار کنند. آنها با جذب برنامههای سادهای که توسط مهندسان نرمافزار انسانی نوشته شدهاند، برای کدنویسی آموزش دیدهاند.
همچنین، مدلهای زبان بزرگ برای درک ورودی ناقص نیز آموزش دیدهاند. آنها به گونهای طراحی شدهاند که در همه حال سعی در درک کاربر داشته باشند، بنابراین وقتی کاربر کلمات را رد میکند یا خود را به وضوح بیان نمیکند، سعی میکنند شکافها را پر کنند. این رویکرد «درک به هر قیمتی» با ایده آزمایش قابلیت استفاده در تضاد است.
آزمایش قابلیت استفاده مستلزم این است که توسعهدهندگان تمرکز خود را به چارچوبهای مرجع خاصی تغییر دهند، جایی که میپرسند آیا رفتار نرمافزار واضح است یا با یک گروه متمرکز (focus group) کار میکنند تا ثابت کنند که محصول به طور شهودی قابل استفاده است. مدلهای زبان بزرگ در موقعیت خوبی برای آزمایش هر گونه نقص در قابلیت استفاده نیستند، زیرا برای درک همه چیز آموزش دیدهاند - برای آنها هیچ تفاوتی بین بد و خوب وجود ندارد.
اما برای کاربران انسانی، قابلیت استفاده بر اساس این قضاوت میشود که آیا نرمافزار مطابق با پیشفرضهای آنها عمل میکند یا خیر، که اغلب بر اساس تجربه قبلی است. شما نمیتوانید از انسانها بخواهید رویکرد خود را برای استفاده از نرمافزار دوباره یاد بگیرند - برنامه باید انتظارات آنها را برآورده کند. حتی اگر نرمافزار دارای مستندات باشد، نمیتوانید روی این موضوع حساب کنید که کاربران این دستورالعملها را بخوانند. به همین دلیل است که بخش مهمی از آزمایش قابلیت استفاده اطمینان حاصل کردن از این است که نرمافزار با دانش ضمنی از نحوه عملکرد چیزها باید رفتار کند.
آزمایش دسترسیپذیری نیازمند نظارت انسانی است
دسترسیپذیری ضعیف چیزی است که بر گروههای مختلفی از مردم تأثیر میگذارد - نه فقط افراد دارای معلولیت دائمی. این همچنین شامل اختلالات موقت (مانند بازوی شکسته) و اختلالات موقعیتی (مانند نور شدید خورشید یا صدای پسزمینه) میشود. این مفاهیم که توسط کار طراحی فراگیر (Inclusive Design) مایکروسافت در اواسط دهه 2010 رایج شد، نشان میدهد که دسترسیپذیری فقط مربوط به موارد حاشیهای نیست - بلکه در مورد ساخت نرمافزاری است که برای همه، در هر زمینهای کار میکند.
در حال حاضر، بعید است که مدلهای زبان بزرگ برای تشخیص کنتراست رنگ ضعیفی که میتواند بر کاربران دارای اختلالات بینایی تأثیر بگذارد، آموزش دیده باشند - زیرا آنها برای درک همه چیز آموزش دیدهاند، بنابراین هر پیکسل را بینقص میبینند. همچنین، آنها مشکلات مربوط به ناوبری بد با صفحهکلید، متن با خوانایی ضعیف و فقدان قابلیت بزرگنمایی را تشخیص نخواهند داد. با این حال، کاملاً ممکن است مدلها را برای بررسی مشکلات دسترسیپذیری و ارائه مشاوره به توسعهدهندگان آموزش داد. اما مدلهای زبان بزرگ فقط میتوانند در این سناریوها کمک ارائه دهند - نظارت انسانی برای درک اینکه به دنبال رسیدگی به چه جنبههای دسترسیپذیری هستیم، ضروری خواهد بود.
هوش مصنوعی نمیتواند ریسک را مدیریت کند یا پاسخگو باشد
با برنامههای نرمافزاری بزرگ و پیچیده، آزمایش سیستماتیک قبل از انتشار ضروری است. با این حال، آزمایش جامع امکانپذیر نیست - موارد استفاده و ورودیهای بالقوه بسیار زیادی وجود دارد که برنامه میتواند با آنها مواجه شود. این بدان معناست که باید تصمیماتی در مورد آنچه باید آزمایش شود - و چه آزمایشهایی نیازی به انجام ندارند - گرفته شود.
این بخش مهمی از تضمین کیفیت (QA) است - و نمیتوان آن را به هوش مصنوعی واگذار کرد. تیمهای تضمین کیفیت باید از تجربه، دانش و قضاوت خود برای تصمیمگیری آگاهانه استفاده کنند. آنها باید برنامهریزی، اولویتبندی و ارزیابی ریسک کنند. آنها درک خواهند کرد که باید مصالحههایی انجام شود - اما میتوانند تصمیمات پاسخگو بگیرند و آنها را برای ذینفعان مربوطه توجیه کنند. اگر هوش مصنوعی این تصمیمات را بگیرد، در صورت بروز مشکل، هیچ مسئولیتی وجود نخواهد داشت.
هوش مصنوعی در کجا میتواند آزمایش نرمافزار و مدیریت آزمایش را ساده کند
حوزههای بسیاری در فرآیند آزمایش نرمافزار وجود دارد که هوش مصنوعی میتواند در آن کمک کند. کارهای سنگین زیادی در آزمایش نرمافزار وجود دارد، مانند تهیه دادههای آزمایشی، پیشنهاد سناریوهای خاصی که باید آزمایش شوند و نوشتن تستهای خودکار. عوامل هوش مصنوعی از قبل قادر به انجام برخی از آزمایشهای اساسی امروزی هستند و احتمالاً در آینده نزدیک وظایف آزمایش پیچیدهتری را بر عهده خواهند گرفت.
هوش مصنوعی همچنین برای مدیریت آزمایش نرمافزار کاربرد دارد. میتوان از آن برای کمک به نوشتن مستندات آزمایش و پیشنهاد ایدههایی برای حوزههای کلیدی برای آزمایش استفاده کرد. میتوان از آن برای تحقیق در مورد سایر پروژههای نرمافزاری مشابه برای ارائه دادهها و بینشهای مرتبطی که میتواند به آزمایش کمک کند، استفاده کرد. همچنین میتواند تجزیه و تحلیل دادههای نتایج آزمایش را انجام دهد و به سرعت گزارشهایی را برای ذینفعان مربوطه ایجاد کند تا آنها مجبور نباشند منتظر بمانند تا عوامل انسانی گزارشهای خود را تهیه کنند.
انسانها کاربران نهایی هستند - بنابراین به تخصص انسانی نیاز است
کیفیت در نرمافزار غیرقابل مذاکره است. همه ما داستانهایی درباره عرضه فاجعهبار نرمافزار شنیدهایم که در آن محصولات با مشکلات اساسی عرضه شدهاند که آنها را برای گروه خاصی از افراد کاملاً غیرقابل استفاده کرده است. در حال حاضر، قابلیت استفاده و دسترسیپذیری حوزههای انسانی هستند، بنابراین طبیعی است که از انسانها برای آزمایش این جنبهها استفاده شود.
در عصر هوش مصنوعی، حفظ نظارت انسانی مهم است. اگر از هوش مصنوعی در ایجاد، آزمایش یا مدیریت آزمایش نرمافزار استفاده میشود، بررسی نتایج حیاتی است. تیمهای تضمین کیفیت باید کسانی باشند که مسئولیت فرآیندهای مدیریت آزمایش نرمافزار را بر عهده میگیرند. فقط آنها دانش دامنه و درک اولویتهای تجاری را دارند تا پوشش آزمایشی و سطوح قابل قبول ریسک را تعیین کنند. در حالی که هوش مصنوعی میتواند از این فرآیندها با دادهها و توصیهها پشتیبانی کند، اما در حال حاضر نمیتواند به تنهایی تصمیمات حیاتی تجاری بگیرد.