سود:
- توانایی تشخیص اینکه کجا هوش مصنوعی در فرآیند QA در زمان واقعی صرفه جویی می کند و تصمیمات کیفی مانند "آماده برای انتشار" بسته به سطح خطر کار به انسان واگذار می شود.
- توانایی تشخیص خطر قبولی های نادرست و اجرای یک رشته تأیید که هر آزمایش هوش مصنوعی را با شکستن عمدی کد آزمایش می کند.
- امکان محافظت از دادههای آزمایشی، دادههای شخصی و کلیدها و کسب عادت انجام تستهای امنیتی فقط در چارچوب مجوز و برای اهداف دفاعی.
شب آزادی را در نظر بگیرید. صدها آزمایش انجام شد، همه آنها چراغ سبز گرفتند، تیم راحت شد و نرم افزار به صورت زنده اجرا شد. صبح روز بعد، مشتری گزارش داد که صفحه پرداخت از کار افتاده است. تست ها سبز بودند اما خطا را ندید. این موذیترین کابوس حرفه تضمین کیفیت (QA) است، یعنی رشتهای که به طور سیستماتیک تضمین میکند که نرمافزار از کیفیت مطلوب برخوردار است: آزمایشی که سبز میدرخشد اما در واقع چیزی را تأیید نمیکند. وقتی هوش مصنوعی (AI - نرم افزاری که الگوها را از داده های تاریخی استخراج می کند و متن و کد تولید می کند) وارد این حرفه می شود، هم شتاب عظیمی به وجود می آید و هم دقیقاً این کابوس بزرگ می شود. وعده اولیه این ماژول روشن است: هوش مصنوعی یک دستیار آزمایش، تولید کننده طرح و چند برابر ایده است. شما آزمایش کننده ای هستید که تصمیم «آیا این نرم افزار آماده انتشار است» را امضا می کند.
در این بخش اول ما بر روی نظم تمرکز خواهیم کرد، نه ابزار. شما خواهید آموخت که هوش مصنوعی در کجا در فرآیند QA در زمان واقعی صرفه جویی می کند، کجا خطرناک است، چرا به اصطلاح "گذر نادرست" سبز فریبنده بزرگترین خطر است، چگونه هر خروجی را تأیید کنید، و چه داده هایی را می توانید به کدام ابزار بدهید. بدون گذاشتن این پایه، واحدهای بعدی در هوا باقی خواهند ماند.
هوش مصنوعی کجا در فرآیند آزمایش مفید است؟
بیایید کارهای آزمایشی را به دو خوشه بزرگ تقسیم کنیم. خوشه اول: کارهای تکراری، قابل تولید، پیش نویس. تهیه پیش نویس یک مورد آزمایشی از یک نیاز، فهرست کردن نقاط شکست، نوشتن یک اسکلت کد اتوماسیون برای یک صفحه، ترجمه یک مورد خطای پیچیده به یک گزارش خطای منظم، خلاصه کردن صدها خط فایل گزارش، استخراج یک طرح واره از یک پاسخ API. در این کارها هوش مصنوعی دقیقه ها را به ثانیه کاهش می دهد و خسته نمی شود.
خوشه دوم: تصمیماتی که نتیجه آن کیفیت، اعتماد و مسئولیت است. تصمیماتی مانند «آیا این نسخه میتواند فعال شود»، «آیا این باگ حیاتی است یا میتوان آن را به تعویق انداخت»، «آیا این پوشش آزمایشی کافی است»، «آیا این سناریو خطر واقعی کاربر را در بر میگیرد» و غیره نیاز به زمینه، دانش محصول و مسئولیت دارد. در اینجا هوش مصنوعی گزینهها، پیشنویسها را تولید میکند – اما شما تصمیم میگیرید «گذر/شکست» و «برو/نه برو».
بیایید این تمایز را در یک جمله روشن کنیم: هوش مصنوعی در "چه موقعیت هایی را می توان آزمایش کرد و چگونه کدی را که آن را آزمایش می کند بنویسید" قوی است. تصمیم با شما در مورد این سوال است که "آیا این نرم افزار واقعا کار می کند و چه کسی آن را تضمین می کند؟"
نکته: قبل از اینکه کار را به هوش مصنوعی بسپارید، بپرسید: "اگر این خروجی اشتباه باشد و من متوجه نشدم چه اتفاقی میافتد؟" اگر پاسخ «چند دقیقه ای را از دست خواهم داد» است، به راحتی تفویض اختیار کنید. اگر پاسخ این است که "نرم افزار معیوب فعال می شود"، اجازه دهید هوش مصنوعی پیش نویس را تولید کند و شما تصمیم و تأیید را بگیرید.
پاس اشتباه: خطر شماره یک هوش مصنوعی در QA
وقتی یک تست سبز روشن میشود، میتواند به معنای دو چیز باشد: یا نرمافزار در واقع به درستی کار میکند، یا به دلیل اشتباه نوشته شدن تست، باگ را نمیبیند. دومی، پاس نادرست نامیده میشود - تست میگوید «گذر» اما در واقع چیزی را تأیید نمیکند. این خطر در آزمایشهایی که با هوش مصنوعی تولید میشوند به طور قابل توجهی افزایش مییابد، زیرا هوش مصنوعی در نوشتن تستهای روان، روان اما خالی بسیار موفق است.
سه شکل متداول شبه پاس عبارتند از: (1) آزمایش بدون ادعا - کد اجرا میشود، حاوی هیچ ادعایی نیست، همیشه قبول میشود. (2) آزمایش خود تأیید - مقدار مورد انتظار آزمون از خروجی کد مورد آزمایش محاسبه می شود. یعنی هر چیزی که کد تولید کند، آزمون به عنوان "درست" می پذیرد. (3) آزمایشی که چیز اشتباه را تأیید میکند - ادعا وجود دارد، اما چیزی بیاهمیت را بررسی میکند (مثلاً "پاسخ خالی نیست")، نه قانون واقعی تجاری.
احتیاط: یک پنل تست سبز دلیل کیفیت نیست. در بهترین حالت می گوید "کنترل هایی که ما نوشتیم در حال حاضر خراب نیستند". با دیدن یک "گذر" در تستی که هوش مصنوعی تولید می کند، آرام نشوید - سوال اصلی این است: اگر من عمدا کد را بشکنم، آیا این تست قرمز می شود؟ اگر نچرخد، آن تست تزیین است.
قانون طلایی که در این ماژول تکرار می شود: هر تست هوش مصنوعی را با شکستن عمدی کد آزمایش کنید. اگر تست هنوز سبز است، آن تست کار نمی کند. (ما این ایده را به عنوان آزمایش جهش در واحد 10 عمیق تر خواهیم کرد.)
نظم و انضباط تأیید: سه مرحله
هوش مصنوعی با اطمینان صحبت می کند. این به این معنی نیست که درست است. یک رفلکس سه مرحله ای را برای اعمال در هر نتیجه ایجاد کنید:
- آن را به نیاز گره بزنید. هر مورد آزمایشی و ادعایی که AI تولید می کند باید بر اساس یک نیاز واقعی یا معیارهای پذیرش باشد (شرایطی که یک کار باید داشته باشد تا "انجام شده" در نظر گرفته شود). "این سناریو کدام قانون را تایید می کند؟" بپرسید
- قرمز را ببینید. تست تولید شده را یکبار اجرا کنید و کد را شکسته کنید. اگر قرمز نشد، آزمایش نامعتبر است. این مرحله غیر قابل مذاکره در تست هوش مصنوعی است.
- آن را از فیلتر زمینه عبور دهید. آیا خروجی با آنچه می دانید رفتار محصول، معماری، جریان کاربر واقعی است مطابقت دارد؟ دانش دامنه شما فیلتر نهایی است.
حریم خصوصی و امنیت داده ها: چه چیزی به کجا می رود؟
دادههایی که در محیط آزمایشی با آنها کار میکنید اغلب حساس هستند: سوابق مشتری واقعی، نسخههای پایگاه داده تولید، کلیدهای API، آدرسهای سیستم داخلی، ویژگیهایی که هنوز اعلام نشدهاند. یک طبقه بندی ساده ایجاد کنید: داده های باز (مستند، در دسترس عموم) می توانند وارد هر خودرویی شوند. داده های داخلی (قطعات کد منبع، اسناد داخلی) فقط به ابزارهای تأیید شده توسط آژانس. دادههای محرمانه (دادههای واقعی مشتری، اطلاعات هویتی، جزئیات آسیبپذیری، کلیدها) فقط وارد ابزارهای قراردادی مؤسسه میشود که دادههای آن به آموزش مدل نمیرود، ترجیحاً پوشیده شده است.
یک محدودیت اضافی در زمینه تست امنیتی وجود دارد: همه چیزهایی که در این ماژول آموخته می شود برای اهداف دفاعی است - برای آزمایش معتبر امنیت محصول خود. استفاده از هوش مصنوعی برای نفوذ به سیستم شخص دیگری بدون اجازه، ایجاد سلاح در آسیبپذیریهای واقعی یا آزمایش سیستمی که برای آن هیچ اختیاری ندارید، هم غیراخلاقی و هم جنایتکارانه است. هیچ آزمایش توهین آمیزی بدون مجوز (حوزه و مجوز) انجام نخواهد شد.
نکته: از داده های آزمایشی مصنوعی (تولید شده مصنوعی) به جای داده های واقعی مشتری استفاده کنید. درخواست از هوش مصنوعی برای "تولید داده های آزمایشی واقعی اما کاملاً تخیلی" هم حریم خصوصی را حفظ می کند و هم موارد لبه را متنوع می کند.
سه کیف کوچک
مورد 1 - صرفه جویی در زمان در مکان مناسب. آزمایشکننده یک تیم Ekomerce 6 ساعت به صورت دستی یک سناریوی آزمایشی از سند الزامات 30 صفحهای برای هر نسخه ایجاد کرد. او سند (بخشی که حاوی اسرار تجاری نبود) را به YZ داد و خواستار پیشنویس سناریوی ساختاریافته شد. زمان به 90 دقیقه کاهش یافت. او زمان صرفه جویی شده را به تأیید خود اختصاص داد و موارد لبه قوانین تجاری را که هوش مصنوعی از دست داده بود، اضافه کرد. هوش مصنوعی کار تکراری را از بین برد و قضاوت را به انسان واگذار کرد.
مورد 2 - عبور جعلی دستگیر شد. یک توسعهدهنده از هوش مصنوعی خواسته بود که ۱۲ تست واحد را برای یک تابع محاسباتی بنویسد. همه سبز بودند آزمایشکننده مرحله «قرمز را ببینید» را اجرا کرد: تغییر عمدی علامت جمع در داخل تابع به ضرب. فقط 3 مورد از 12 تست قرمز شد. 9 آزمایش دیگر هیچ تایید واقعی ارائه نکردند. فقط گفته بود "خطایی ایجاد نکرد". 9 تست تزئینی حذف شد و 5 تست واقعی به جای آن نوشته شد.
مورد 3 - بازگشت از نقض حریم خصوصی. یک کارآموز یک گزارش خطا حاوی ایمیلهای واقعی مشتری و چهار رقم آخر کارت را از پایگاه داده تولید در یک ابزار عمومی قرار داد و گفت: «این خطا را توضیح دهید». رهبر QA مداخله کرد: این اطلاعات شخصی خارج از کنترل و نقض KVKK (قانون حفاظت از داده های شخصی) بود. همین کار در یک وسیله نقلیه تایید شده توسط موسسه انجام شد و قسمتهای شخصی را پوشانده و تنها ردی از پشته باقی گذاشت.
چهار قالب قابل کپی
1) ارزیابی شایستگی شغلی:
نقش شما: رهبر ارشد QA. من یک کار آزمایشی را برای شما شرح می دهم. به من بگویید (1) آیا این کار یک کار پیش نویس/تحلیل است که می تواند به طور ایمن به هوش مصنوعی واگذار شود یا تصمیمی با کیفیت است که انسان باید بگیرد، (2) هزینه احتمالی خروجی نادرست، (3) تأییدی که باید قبل از تفویض اختیار انجام دهم. شغل: [کار را در اینجا وارد کنید]
2) کنترل شبه پاس:
تست زیر را بررسی کنید. به من بگویید: - این آزمایش چه رفتاری را تایید می کند؟ (یک جمله)- چگونه می توانم کد مورد آزمایش را بشکنم تا تست قرمز شود؟- آیا نقطه ضعفی وجود دارد که باعث شود این آزمون همیشه قبول شود (مطالعه گمشده، تأیید خودکار، بررسی بی اهمیت)؟
3) آزمایش کنترل پوشش داده ها:
گزارش/دادههایی که به شما میدهم ممکن است حاوی فیلدهای شخصی یا محرمانه باشد (ایمیل، نام، کارت، کلید، آدرس داخلی). ابتدا فیلدهایی را که باید پوشانده شوند فهرست کنید. ماسکش میکنم و دوباره میفرستم. آن را همانطور که هست تحلیل نکنید.
4) تولید داده های آزمایش مصنوعی:
20 ردیف داده آزمایشی کاملاً تخیلی و واقعی برای [ساختار زمینه زیر] ایجاد کنید. از داده های شخص/سازمان واقعی استفاده نکنید. موارد لبه را نیز شامل شود: فضای خالی، متن بسیار طولانی، مقادیر محدود، قالب نامعتبر.
اعلان ضعیف / اعلان قوی
ضعیف: "نوشتن تست بر روی این کد."
Strong: "این را محاسبه کنید تست های واحد را برای تابع تخفیف محاسبه کنید. معیارهای پذیرش برای تابع: 10% تخفیف بیش از 1000 TL، 20% تخفیف بیش از 5000 TL؛ مقدار منفی باید یک خطا ایجاد کند. با یک خط نظر مشخص کنید که کدام قانون را برای هر تست تایید می کنید. مقادیر حد را آزمایش کنید (9090,50,10,90,50,1,90,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0. -1) به طور جداگانه از عبارات واقعی استفاده کنید که اگر کد را خالی کنم یا آن را بی اهمیت ننویسم، قرمز می شوند.
اعلان قدرتمند؛ معیارهای پذیرش، مقادیر حدی، انتظارات اعتبارسنجی و دستورالعمل های صریح ضد جعل را ارائه می دهد. اعلان ضعیف هوش مصنوعی را به نوشتن یک تست تزئینی دعوت می کند.
اشتباهات رایج
- اعتماد به سبز تصور اینکه قبولی در آزمون اثبات است. سوال اصلی این است: آیا با شکستن کد قرمز می شود؟
- درخواست تست بدون ذکر دلیل. هوش مصنوعی بدون اینکه بداند چه چیزی باید تأیید شود، آزمایشهای عمومی و اغلب بیفایده تولید میکند.
- رد شدن از تأیید. گفتن "AI آن را نوشته است، احتمالا درست است". مسئولیت با شخصی است که از خروجی استفاده می کند.
- چسباندن داده های واقعی/حساس در ابزار. کار با داده های تولید، کلیدها یا داده های شخصی.
- تست امنیتی غیرمجاز تلاش برای آزمایش تهاجمی بدون محدوده و مجوز.
- استفاده از هوش مصنوعی برای واگذاری تصمیم گیری با طرح سوال "آیا این نسخه قابل عرضه است؟" به هوش مصنوعی و قرار دادن پاسخ در امضا.
به طور خلاصه
هوش مصنوعی یک دستیار قدرتمند در فرآیند QA است که کارهای تکراری و قابل تولید را سرعت می بخشد. اما مسئولیت تصمیم گیری کیفیت بر عهده انسان است. خطر شماره یک هوش مصنوعی در این حرفه، پاسی کاذب است: آزمایشهای سبزی که مرتب به نظر میرسند اما چیزی را تایید نمیکنند. هر تست هوش مصنوعی را با شکستن عمدی کد تست کنید. اگر قرمز نشد آن تست تزیین است. آن را به نیاز گره بزنید، قرمز را ببینید، آن را از فیلتر زمینه عبور دهید. داده های محرمانه را پنهان کنید، تست های امنیتی را فقط برای اهداف مجاز و دفاعی انجام دهید.
وظیفه کاربردی
5 تست واحد تولید شده توسط هوش مصنوعی (یا AI) را از پروژه خود انجام دهید. برای هر کدام: (1) در یک جمله بنویسید که کدام رفتار را تأیید می کند، (2) عمدا کد مورد آزمایش را شکسته و اجرا کنید و توجه داشته باشید که چه تعداد قرمز می شوند، (3) مواردی را که قرمز نمی شوند به عنوان "تست دکور" علامت بزنید و آنها را با ادعای واقعی بازنویسی کنید. نتیجه را در یک جدول قرار دهید: نام آزمایش / قانون تأیید شد / آیا هنگام شکستن شکسته شد / عمل.
چک لیست
- [ ] قبل از تحویل کار این سوال را مطرح کردم که "اگر خراب شود چه چیزی را از دست خواهم داد؟"
- [ ] من هر تست هوش مصنوعی را با شکستن کد آزمایش کردم. اونی که قرمز نشد با تست واقعی عوض کردم.
- [ ] من موارد آزمایشی را به الزامات/معیارهای پذیرش واقعی مرتبط کردم.
- [ ] من داده های حساس/واقعی را بدون دادن آن به ابزار پنهان کردم. در صورت امکان از داده های مصنوعی استفاده کردم.
- [ ] من آزمایش امنیتی را فقط در چارچوب اختیارات و برای اهداف دفاعی در نظر گرفتم.
- [ ] تصمیم «آیا نسخه منتشر خواهد شد» را به خودم واگذار کردم، نه هوش مصنوعی.