Yunit 1 / 11

Panimula sa Artipisyal na Katalinuhan sa Pagsubok ng Software at QA: Mga Tungkulin, Hangganan, Panganib sa Pekeng Panganib, at Pagpapatunay

Mga nadagdag:

  • Ang kakayahang matukoy kung saan ang artificial intelligence ay nakakatipid ng totoong oras sa proseso ng QA at kung saan ang mga de-kalidad na desisyon tulad ng 'handa para sa publikasyon' ay ipinaubaya sa mga tao, depende sa antas ng panganib sa gawain
  • Kakayahang kilalanin ang panganib ng mga maling pass at magpatupad ng disiplina sa pag-verify na sumusubok sa bawat pagsubok sa AI sa pamamagitan ng sadyang paglabag sa code
  • Kakayahang protektahan ang data ng pagsubok, personal na data at mga susi, at makuha ang ugali ng pagsasagawa ng pagsubok sa seguridad sa loob lamang ng awtorisasyon at para sa mga layuning nagtatanggol.

Isaalang-alang ang isang gabi ng pagpapalaya. Daan-daang mga pagsubok ang pinatakbo, lahat sila ay nakakuha ng berdeng ilaw, ang koponan ay hinalinhan at ang software ay naging live. Kinaumagahan, iniulat ng customer na nag-crash ang screen ng pagbabayad. Ang mga pagsubok ay berde ngunit hindi niya nakita ang error. Ito ang pinaka mapanlinlang na bangungot ng propesyon ng quality assurance (QA), iyon ay, ang disiplina na sistematikong tinitiyak na ang software ay nasa ninanais na kalidad: ang pagsubok na kumikinang na berde ngunit hindi aktwal na nagpapatunay ng anuman. Kapag ang artificial intelligence (AI — software na kumukuha ng mga pattern mula sa makasaysayang data at bumubuo ng text at code) ay pumasok sa propesyon na ito, mayroong parehong malaking acceleration at isang magnification ng eksaktong bangungot na ito. Ang unang pangako ng modyul na ito ay malinaw: AI ay isang testing assistant, blueprint generator at idea multiplier; Ikaw ang tester na nagsa-sign off sa desisyong "handa na ba ang software na ito para ilabas."

Sa unang yunit na ito ay tututukan natin ang disiplina, hindi ang kasangkapan. Malalaman mo kung saan ang AI ay nagtitipid ng real time sa proseso ng QA, kung saan ito mapanganib, kung bakit ang mapanlinlang na berdeng tinatawag na "false-pass" ang pinakamalaking panganib, kung paano i-verify ang bawat output, at kung anong data ang maibibigay mo sa aling tool. Kung hindi inilalagay ang pundasyong ito, ang mga kasunod na yunit ay mananatili sa hangin.

Saan nagagamit ang AI sa proseso ng pagsubok?

Hatiin natin ang mga pagsubok na trabaho sa dalawang malalaking kumpol. Unang cluster: paulit-ulit, nagagawa, mga draft na trabaho. Pag-draft ng isang test case mula sa isang kinakailangan, paglilista ng mga breakpoint, pagsulat ng isang automation code skeleton para sa isang screen, pagsasalin ng isang kumplikadong kaso ng error sa isang maayos na ulat ng error, pagbubuod ng daan-daang linya ng mga log file, pagkuha ng isang schema mula sa isang tugon ng API. Sa mga gawaing ito, binabawasan ng AI ang minuto hanggang segundo at hindi napapagod.

Pangalawang cluster: mga desisyon na ang resulta ay kalidad, tiwala at responsibilidad. Ang mga desisyon tulad ng "maaari bang maging live ang bersyon na ito", "kritikal ba ang bug na ito o maaari itong ipagpaliban", "sapat ba ang saklaw ng pagsubok na ito", "nakakakuha ba ang sitwasyong ito ng tunay na panganib ng user" atbp. Nangangailangan ng konteksto, kaalaman sa produkto at responsibilidad. Dito, ang AI ay bumubuo ng mga opsyon, mga draft — ngunit nagpasya kang "pass/fail" at "go/no go."

Linawin natin ang pagkakaiba sa isang pangungusap: Malakas ang AI sa "anong mga sitwasyon ang maaaring masuri at kung paano magsulat ng code na sumusubok dito"; Nasa iyo ang desisyon pagdating sa tanong na "Talaga bang gumagana ang software na ito at sino ang nagtitiwala para dito?"

Tip: Bago ibigay ang isang trabaho sa AI, itanong: "Ano ang mangyayari kung mali ang output na ito at hindi ko napapansin?" Kung ang sagot ay "Matatalo ako ng ilang minuto", madaling italaga. Kung ang sagot ay "naging live ang may sira na software", hayaan ang AI na gumawa ng draft at ikaw ang gumawa ng desisyon at pag-verify.

Maling pass: ang numero unong panganib ng AI sa QA

Kapag ang isang pagsubok ay umilaw na berde, maaari itong mangahulugan ng dalawang bagay: alinman sa software ay aktwal na gumagana nang tama, o hindi nito nakikita ang bug dahil ang pagsubok ay naisulat nang hindi tama. Ang pangalawa ay tinatawag na false pass — ang test ay nagsasabing "pass" ngunit hindi talaga nagkukumpirma ng anuman. Ang panganib na ito ay tumataas nang malaki sa mga pagsubok na ginawa gamit ang AI, dahil ang AI ay napakatagumpay sa pagsulat ng matatas, makinis ngunit walang laman na mga pagsubok.

Ang tatlong pinakakaraniwang anyo ng pseudo-pass ay: (1) Pagsubok nang walang assertion — tumatakbo ang code, walang mga assert, palaging pumasa. (2) Self-verifying test — ang inaasahang halaga ng pagsusulit ay kinakalkula mula sa output ng code na sinusuri; Iyon ay, anuman ang ginawa ng code, tinatanggap ng pagsubok bilang "tama". (3) Pagsubok na nagpapatunay sa maling bagay — igiit na umiiral, ngunit sinusuri nito ang isang bagay na walang kabuluhan (hal. "ang tugon ay hindi null"), hindi ang aktwal na panuntunan sa negosyo.

Mag-ingat: Ang berdeng panel ng pagsubok ay hindi patunay ng kalidad; Sa pinakamahusay na sinasabi nito "ang mga kontrol na isinulat namin ay hindi nasira ngayon". Huwag maaliw sa pamamagitan ng makita ang isang "pass" sa pagsubok na ginawa ng AI — ang tunay na tanong ay: magiging pula ba ang pagsubok na ito kung sinasadya kong sirain ang code? Kung hindi ito umiikot, ang pagsubok na iyon ay isang dekorasyon.

Ang ginintuang tuntunin na umuulit sa buong module na ito: subukan ang bawat pagsubok sa AI sa pamamagitan ng sadyang pagsira sa code. Kung berde pa rin ang pagsubok, hindi gumagana ang pagsubok na iyon. (Palalimin natin ang ideyang ito bilang pagsusuri ng mutation sa unit 10.)

Disiplina sa pagpapatunay: tatlong hakbang

Ang AI ay nagsasalita nang may kumpiyansa; Hindi ibig sabihin nito ay totoo. Bumuo ng three-step reflex para ilapat sa bawat resulta:

  1. Itali ito sa kinakailangan. Ang bawat kaso ng pagsubok at iginiit na ginagawa ng AI ay dapat na nakabatay sa isang tunay na kinakailangan o pamantayan sa pagtanggap (mga kundisyon na dapat matugunan ng isang trabaho upang maituring na "tapos na"). "Aling panuntunan ang kinukumpirma ng senaryo na ito?" magtanong.
  2. Tingnan ang pula. Patakbuhin ang nabuong pagsubok nang isang beses, sinira ang code. Kung hindi ito nagiging pula, ang pagsubok ay hindi wasto. Ito ang hindi mapag-usapan na hakbang sa pagsubok ng AI.
  3. Ipasa ito sa filter ng konteksto. Ang output ba ay tumutugma sa alam mong pag-uugali ng produkto, arkitektura, aktwal na daloy ng gumagamit? Ang iyong kaalaman sa domain ay ang panghuling filter.

Pagkapribado at seguridad ng data: saan pupunta?

Ang data na pinagtatrabahuhan mo sa kapaligiran ng pagsubok ay kadalasang sensitibo: mga totoong tala ng customer, mga kopya ng database ng produksyon, mga API key, mga address ng panloob na system, mga feature na hindi pa inaanunsyo. Gumawa ng simpleng pag-uuri: Ang bukas na data (nakadokumento, available sa publiko) ay maaaring pumasok sa anumang sasakyan. Internal na data (mga fragment ng source code, panloob na dokumentasyon) sa mga tool na inaprubahan ng ahensya. Ang kumpidensyal na data (tunay na data ng customer, impormasyon ng pagkakakilanlan, mga detalye ng kahinaan, mga susi) ay pumapasok lamang sa mga kinontratang tool ng institusyon, na ang data ay hindi napupunta sa pagsasanay sa modelo, mas mainam na nakamaskara.

May karagdagang limitasyon sa konteksto ng pagsubok sa seguridad: lahat ng natutunan sa modyul na ito ay para sa mga layuning pandepensa — upang makapangyarihang subukan ang seguridad ng iyong sariling produkto. Ang paggamit ng AI upang makalusot sa system ng ibang tao nang walang pahintulot, gumamit ng mga tunay na kahinaan, o subukan ang isang sistema kung saan wala kang awtoridad ay parehong hindi etikal at kriminal. Walang offensive na pagsubok ang gagawin nang walang pahintulot (saklaw at pahintulot).

Tip: Gumamit ng synthetic (artipisyal na ginawa) na data ng pagsubok sa halip na tunay na data ng customer. Ang paghiling sa AI na "bumuo ng makatotohanan ngunit ganap na kathang-isip na data ng pagsubok" ay parehong nagpapanatili ng privacy at nag-iiba-iba ng mga edge case.

tatlong mini case

Case 1 — Time saver sa tamang lugar. Ang tester ng isang Ekomerce team ay gumugol ng 6 na oras nang manu-mano sa paggawa ng isang test scenario mula sa 30-page na dokumento ng mga kinakailangan para sa bawat release. Ibinigay niya ang dokumento (ang bahagi na hindi naglalaman ng mga lihim ng kalakalan) kay YZ at humiling ng isang structured scenario draft; Ang oras ay nabawasan sa 90 minuto. Inilaan niya ang oras na natipid sa pag-verify nang mag-isa sa pagdaragdag ng mga kaso sa gilid ng panuntunan ng negosyo na napalampas ng AI. Inalis ng AI ang paulit-ulit na gawain, iniiwan ang paghatol sa tao.

Kaso 2 — Nahuli ang pekeng pagpasa. Ang isang developer ay nagkaroon ng AI na sumulat ng 12 unit test para sa isang compute function; lahat sila ay berde. Ipinatupad ng tester ang hakbang na "see red": sadyang binabago ang addition sign sa loob ng function sa multiplication. 3 lamang sa 12 pagsubok ang nagbalik ng pula. Ang iba pang 9 na pagsusulit ay hindi nagbigay ng tunay na kumpirmasyon; Ang sabi lang nito ay "it didn't throw an error". 9 na pandekorasyon na pagsubok ang tinanggal at 5 tunay na pagsubok ang isinulat sa halip.

Kaso 3 — Bumalik mula sa paglabag sa privacy. Nag-paste ang isang intern ng error log na naglalaman ng mga totoong email ng customer at ang huling apat na digit ng card mula sa database ng produksyon sa isang pampublikong tool at sinabing "ipaliwanag ang error na ito." Ang pinuno ng QA ay namagitan: ito ay personal na data na wala sa kontrol at isang paglabag sa KVKK (Personal Data Protection Law). Ang parehong gawain ay ginawa sa isang sasakyang inaprubahan ng institusyon, na nagtatakip ng mga personal na lugar at nag-iiwan lamang ng isang stack trace.

Apat na maaaring kopyahin na mga template

1) Pagsusuri sa pagiging angkop sa trabaho:

Ang iyong tungkulin: senior QA leader. Ilalarawan ko sa iyo ang isang pagsubok na trabaho. Sabihin sa akin (1) kung ang gawaing ito ay pagbalangkas/pagsusuri ng gawain na maaaring ligtas na italaga sa AI o isang de-kalidad na desisyon na dapat gawin ng tao, (2) ang potensyal na halaga ng maling output, (3) ang pagpapatunay na dapat kong gawin bago magtalaga. Trabaho: [ipasok ang trabaho dito]

2) Pseudo-pass control:

Tingnan ang pagsubok sa ibaba. Sabihin sa akin:- Anong pag-uugali ang kinukumpirma ng pagsubok na ito? (isang pangungusap)- Paano ko masisira ang code sa ilalim ng pagsubok upang ang pagsubok ay maging RED?- Mayroon bang kahinaan na maaaring maging sanhi ng pagsubok na ito na laging pumasa (nawawalang paninindigan, pagpapatunay sa sarili, walang kuwentang pagsusuri)? Pagsusuri: [idikit ang pagsubok dito]

3) Test data masking control:

Ang log/data na ibibigay ko sa iyo ay maaaring naglalaman ng mga personal o kumpidensyal na field (e-mail, pangalan, card, susi, panloob na address). Una, ilista ang mga patlang na kailangang i-mask; Itatakpan ko ito at ipapadala muli. Huwag pag-aralan ito bilang ito ay.

4) Sintetikong pagbuo ng data ng pagsubok:

Bumuo ng 20 row ng ganap na kathang-isip, makatotohanang data ng pagsubok para sa [kasunod na istraktura ng field]. Huwag gumamit ng totoong data ng tao/organisasyon. Isama rin ang mga edge case: bakanteng espasyo, masyadong mahaba ang text, limitahan ang mga value, di-wastong format.

Mahinang prompt / Malakas na prompt

Mahina: "Sumulat ng mga pagsubok sa code na ito."
Strong: "Kalkulahin ito Write unit tests para sa discount function. Acceptance criteria for the function: 10% discount over 1000 TL, 20% discount over 5000 TL; negative amount should throw a error. Tukuyin gamit ang comment line kung aling panuntunan ang iyong pinapatunayan para sa bawat test. Subukan ang limit values (999, 1000, 5, 1001) really. paggigiit na magiging pula kung masira ko ang code na walang laman o hindi magsulat ng walang kuwentang paninindigan."

Napakahusay na prompt; Nagbibigay ito ng pamantayan sa pagtanggap, mga halaga ng limitasyon, mga inaasahan sa pagpapatunay, at tahasang mga tagubilin sa anti-spoofing. Iniimbitahan ng mahinang prompt ang AI na magsulat ng isang pandekorasyon na pagsubok.

Mga karaniwang pagkakamali

  • Nagtitiwala sa berde. Ang pag-iisip na ang pagpasa sa pagsusulit ay patunay. Ang totoong tanong ay: nagiging pula ba ito kapag sinira mo ang code?
  • Humihiling ng pagsusulit nang hindi nagbibigay ng anumang dahilan. Gumagawa ang AI ng mga generic, kadalasang walang silbi na mga pagsubok nang hindi nalalaman kung ano ang kailangang i-verify.
  • Nilaktawan ang pag-verify. Sinasabing "sinulat ito ng AI, malamang na totoo ito". Ang responsibilidad ay nakasalalay sa taong gumagamit ng output.
  • Pag-paste ng tunay/sensitibong data sa tool. Paggawa gamit ang data ng produksyon, mga susi o personal na data.
  • Hindi awtorisadong pagsubok sa seguridad. Pagsubok ng nakakasakit na pagsubok nang walang saklaw at pahintulot.
  • Paggamit ng AI upang italaga ang paggawa ng desisyon. Pagtatanong sa tanong na "Maaari bang ilabas ang bersyon na ito?" sa AI at ilagay ang sagot sa pirma.

Sa buod

Ang AI ay isang makapangyarihang katulong sa proseso ng QA na nagpapabilis ng paulit-ulit at nagagawang gawain; Ngunit ang responsibilidad para sa kalidad ng desisyon ay nakasalalay sa tao. Ang numero unong panganib ng AI sa propesyon na ito ay pseudo-pass: mga berdeng pagsubok na mukhang maayos ngunit walang kinukumpirma. Subukan ang bawat pagsubok sa AI sa pamamagitan ng sadyang pagsira sa code; Kung hindi ito nagiging pula, ang pagsubok na iyon ay isang dekorasyon. Itali ito sa kinakailangan, tingnan ang pula, ipasa ito sa filter ng konteksto. Magtakpan ng kumpidensyal na data, magsagawa ng pagsubok sa seguridad para lamang sa mga awtorisado at depensibong layunin.

Gawain ng aplikasyon

Kumuha ng 5 AI-generated (o AI-generated) unit test mula sa sarili mong proyekto. Para sa bawat: (1) isulat sa isang pangungusap kung aling pag-uugali ang pinatutunayan nito, (2) sadyang sirain at patakbuhin ang code sa ilalim ng pagsubok at tandaan kung ilan ang nagiging pula, (3) markahan ang mga hindi nagiging pula bilang "mga pagsubok sa dekorasyon" at muling isulat ang mga ito gamit ang totoong paninindigan. Ilagay ang resulta sa isang talahanayan: pangalan ng pagsubok / panuntunan na na-verify ito / nasira ba ito kapag nasira / aksyon.

checklist

  • [ ] Bago ibigay ang trabaho, tinanong ko ang tanong na "ano ang mawawala sa akin kung magkamali?"
  • [ ] Sinubukan ko ang bawat pagsubok sa AI sa pamamagitan ng pagsira sa code; Pinalitan ko ang hindi naging pula ng tunay na pagsubok.
  • [ ] Iniugnay ko ang mga kaso ng pagsubok sa aktwal na pamantayan ng kinakailangan/pagtanggap.
  • [ ] Nagmaskara ako ng sensitibo/totoong data nang hindi ito ibinibigay sa tool; Gumamit ako ng sintetikong data kung maaari.
  • [ ] Isinaalang-alang ko ang pagsubok sa seguridad sa loob lamang ng awtoridad at para sa mga layuning pandepensa.
  • [ ] Ipinaubaya ko sa aking sarili ang desisyon ng "kung ilalabas ba ang bersyon", hindi sa AI.