Kas tai yra
„Meta“ automatizuotas atitikties sukietėjimo (ACH) įrankis yra mutacijų valdomos, LLM pagrįsto bandymo generavimo sistema. „Ach Hardens“ platformos nuo regresijų, sukuriant nenustatytus gedimus (mutantus) šaltinio kode, būdingus tam tikrai susirūpinusiems sritims, ir naudojant tuos pačius mutantus bandymams generuoti. Pvz., ACH taikant privatumą, ACH automatizuoja su privatumu susijusių gedimų paiešką ir neleidžia jiems patekti į mūsų sistemas ateityje, Galiausiai sukietėja mūsų kodo bazės, kad sumažintų bet kokios privatumo regresijos riziką.
ACH automatiškai generuoja vienetų testus, nukreiptus į tam tikrą gedimą. Mes apibūdiname gedimus, kuriuos mums rūpi ACH, paprastu tekstu. Aprašymas gali būti neišsamus ir netgi prieštaringai vertinamas, tačiau ACH vis tiek generuoja testus, kurie, kaip tai įrodo, sugaus tokio pobūdžio klaidas.
Tradiciškai automatizuotų bandymų generavimo būdai, kurių siekiama tik padidinti kodų aprėptį. Kaip žino kiekvienas testeris, tai yra tik sprendimo dalis, nes didėjanti aprėptis nebūtinai randa gedimų.
ACH yra radikalus nukrypimas nuo šios tradicijos, nes jis nukreiptas į konkrečius gedimus, o ne neuždengtą kodą, nors jis dažnai taip pat padidina aprėptį taikant gedimus. Be to, todėl ACH yra pagrįstas principais Užtikrinta LLM pagrįsta programinės įrangos inžinerijatai užtikrina patikimus garantijas, kad jo testai iš tikrųjų sugauna aprašytus gedimus.
Mūsų naujas tiriamasis dokumentas,Mutacijoje valdoma LLM pagrįsta bandymo generacija meta– pateikiama išsami informacija apie pagrindinius ACH mokslinius pagrindus ir tai, kaip mes taikome ACH privatumo testavimui, tačiau šis požiūris gali būti taikomas bet kokiam regresijos bandymui.
Kaip tai veikia
Mutacijų testavimas, kai gedimai (mutantai) yra sąmoningai įvedami į šaltinio kodą (naudojant versijos valdymą, kad jie atitolintų nuo gamybos), kad būtų galima įvertinti, kaip gerai esama testavimo sistema gali aptikti šiuos pakeitimus tyrinėjama dešimtmečius. Nepaisant to, mutacijų testavimą išliko sunku diegti.
Ankstesniuose metoduose patys mutantai būtų automatiškai generuojami (dažniausiai naudojant taisyklėmis pagrįstą metodą). Tačiau šis metodas sukeltų mutantus, kurie nebuvo ypač realūs kalbant apie tai, kiek jie iš tikrųjų kelia susirūpinimą.
Be to, net ir automatiškai sukuriant mutantus, žmonės vis tiek turės rankiniu būdu parašyti testus, kurie užmuštų mutantus (sugautų gedimus).
Šių testų rašymas yra kruopštus ir varginantis procesas. Taigi inžinieriai susidūrė su dvejopu klausimu: net ir atlikus visus darbus parašyti testą, skirtą sugauti mutantą, nebuvo jokios garantijos, kad testas net sugautų automatiškai sukurtą mutantą.
Pasitelkdami LLM, mes galime generuoti mutantus, kurie reprezentuoja realius rūpesčius ir taip pat taupyti žmogaus darbą, generuodami testus, kad taip pat automatiškai sugautų gedimus. ACH susituokia su automatiniais bandymų generavimo metodais su didelių kalbų modelių (LLM) galimybėmis, kad būtų galima generuoti mutantus, kurie yra labai svarbūs bandymo susirūpinimo sričiai, taip pat testai, kuriems garantuojama, kad sugauna klaidas, kurios tikrai svarbios.
Apskritai ACH veikia trimis etapais:
- Inžinierius aprašo, kokias klaidas jiems rūpi.
- ACH naudoja tą aprašą, kad automatiškai sugeneruotų daug klaidų.
- ACH naudoja sugeneruotas klaidas, kad automatiškai sugeneruotų daugybę testų, kurie juos sugauna.
Meta mes Keliose mūsų platformose pritaikytas testavimasįskaitant „Facebook Feed“, „Instagram“, „Messenger“ ir „WhatsApp“. Remdamiesi savo bandymais, mes padarėme išvadą, kad inžinieriai nustatė, kad ACH buvo naudingi kietinant kodą atsižvelgiant į konkrečius susirūpinimą keliančius dalykus ir nustatėme kitų privalumų net tada, kai ACH generuojami testai tiesiogiai nesikreipia į konkretų susirūpinimą.
Kodėl tai svarbu
Meta turi labai daug duomenų sistemų ir naudojimo būdų daug skirtingų programavimo kalbųsistemos ir paslaugos, skirtos maitinti mūsų programų ir produktų šeimą. Tačiau kaip tūkstančiai inžinierių visame pasaulyje užtikrina, kad jų kodas yra patikimas, ir nesukurs klaidų, kurios neigiamai paveiktų programų veiklą, o tai sukelia privatumo riziką? Atsakymas slypi LLM.
LLM pagrįsta bandymų generavimas ir LLM pagrįsta mutantų generavimas nėra naujas, tačiau tai yra pirmas kartas, kai jie buvo sujungti ir dislokuoti didelio masto pramoninėse sistemose. Sukurti mutantus ir juos nužudyti testus buvo tradiciškai sunkūs procesai. Kadangi LLM yra tikimybinės ir nereikia remtis griežtai apibrėžtomis taisyklėmis, kad priimtų sprendimus, jie leidžia mums spręsti abi šios lygties puses – generuojant mutacijas ir bandymus jas nužudyti – labai efektyviai ir aukštai tiksliai.
Šis naujas požiūris žymiai modernizuoja šią automatinio testų generavimo formą ir padeda programinės įrangos inžinieriams imtis susirūpinimo iš įvairių šaltinių (ankstesnių gedimų, kolegų, vartotojo reikalavimų, reguliavimo reikalavimų ir kt.) Ir efektyviai paversti juos „Freeform“ tekstu į veiksmingus testus – su bandymais – naudojant bandymus su bandomaisiais bandymais – naudojant bandymus – naudodami Garantuojama, kad testas užklups jų ieškomą gedimą.
ACH gali būti pritaikytas bet kuriai gedimų klasei ir daro didelę įtaką grūdinimui nuo būsimų regresijų ir optimizuojant pačią testavimą.
Kas bus toliau
Mūsų naujas požiūris sujungia LLM pagrįstą testų ir mutantų generavimą, kuris padės automatizuoti sudėtingas technines organizacines darbo eigas šioje erdvėje. Ši naujovė gali supaprastinti rizikos vertinimus, sumažinti kūrėjų pažintinę apkrovą ir galiausiai sukurti saugesnę internetinę ekosistemą. Mes esame įsipareigoję plėsti diegimo sritis, kurdami mutantų aktualumo įvertinimo metodus ir aptikti esamus gedimus, kad būtų galima naudoti visos pramonės automatizuotą testų generavimą laikantis.
Mes pasidalinsime daugiau pokyčių ir paskatinsime jus žiūrėti šią erdvę.
Perskaitykite dokumentą
Mutacijoje valdoma LLM pagrįsta bandymo generacija meta