లాభాలు:
- నకిలీ-విశ్వాసం యొక్క మూడు ముఖాలను గుర్తించే సామర్థ్యం (నిశ్చయత లేని, స్వీయ-నిర్ధారణ, అల్పమైన దృక్పథం) మరియు విరుగుడులను వర్తించే సామర్థ్యం
- మ్యుటేషన్ టెస్టింగ్ మరియు మ్యుటేషన్ స్కోర్ని సాధనం లేదా చేతితో చేసిన శాతం కవరేజీ కంటే నాణ్యత యొక్క ఖచ్చితమైన కొలతగా ఉపయోగించగల సామర్థ్యం
- టెస్టింగ్కు వ్యతిరేకంగా AIని రెడ్ టీమ్గా ఉంచగల సామర్థ్యం మరియు ప్రశంసల ఉచ్చులో పడకుండా లొసుగులను పరీక్షించడం కోసం వేటాడటం
ఈ మాడ్యూల్ యొక్క గుండె వద్ద పునరావృతమయ్యే హెచ్చరిక ఉంది: ఆకుపచ్చ గ్లోయింగ్ టెస్ట్ ప్యానెల్ నాణ్యతకు రుజువు కాదు. మీ పరీక్షలు మీకు విశ్వాసాన్ని ఇస్తే, ఆ విశ్వాసం నిజమైనదా లేదా నకిలీదా అని మీరు తెలుసుకోవాలి. ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ (AI) యుగంలో, ఈ ప్రశ్న గతంలో కంటే చాలా క్లిష్టమైనది, ఎందుకంటే AI ద్రవం, మృదువుగా కనిపించే కానీ బోలు పరీక్షలను ఉత్పత్తి చేయడంలో ప్రవీణుడు. తప్పుడు విశ్వాసం — పరీక్షలు ఆకుపచ్చగా ఉన్నందున సాఫ్ట్వేర్ సరైనదని నమ్మడం, నిజానికి పరీక్షలు దేనినీ ధృవీకరించనప్పుడు— QA బృందానికి జరిగే అత్యంత ప్రమాదకరమైన విషయం; ఎందుకంటే ఇది లోపాలు లేవని దాచిపెడుతుంది, కానీ మీరు లోపాలను చూడలేరు. ఈ యూనిట్ మొత్తం మాడ్యూల్ యొక్క ధృవీకరణ తత్వాన్ని ఒకే విభాగంలోకి తీసుకువస్తుంది: మీ పరీక్షలను పరీక్షించడం.
పరీక్ష నాణ్యతను కొలవడానికి బంగారు ప్రమాణం: మ్యుటేషన్ పరీక్ష
ఒక పరీక్ష వాస్తవానికి రక్షిస్తుంది లేదా కాదా అని అర్థం చేసుకోవడానికి అత్యంత శక్తివంతమైన మార్గం మ్యుటేషన్ పరీక్ష (మ్యుటేషన్ టెస్టింగ్ - సోర్స్ కోడ్లో ఉద్దేశపూర్వకంగా చిన్న వక్రీకరణలు/మ్యుటేషన్లను ఉత్పత్తి చేసే సాంకేతికత మరియు పరీక్షలు ఈ వక్రీకరణలను గుర్తించాయో లేదో కొలిచే సాంకేతికత). లాజిక్ చాలా సులభం: మీరు ఉద్దేశపూర్వకంగా కోడ్ను విచ్ఛిన్నం చేస్తే (+ని -, a > లోకి >=, నిజమైనదాన్ని తప్పుగా మార్చడం), మంచి టెస్ట్ సూట్ ఆ అవినీతిని పట్టుకుని ఎరుపు రంగులోకి మారుతుంది. అలా చేయకపోతే, ఆ అంతరాయం మనుగడలో ఉన్న ఉత్పరివర్తన - కాబట్టి మీ పరీక్షలు వాస్తవానికి ఆ ప్రవర్తనను సంరక్షించడం లేదు.
మ్యుటేషన్ స్కోర్ = మ్యుటేషన్ చంపబడింది / మొత్తం మ్యుటేషన్. 90% లైన్ కవరేజ్ ఉన్న ప్యాకేజీ 40% మ్యుటేషన్ స్కోర్ను కలిగి ఉండవచ్చు; ఇది పంక్తులు పని చేస్తున్నాయని సూచిస్తుంది కానీ ప్రవర్తన ధృవీకరించబడలేదు. మ్యుటేషన్ స్కోర్ అనేది శాతం కవరేజీ కంటే నాణ్యత యొక్క మరింత నిజాయితీ కొలత.
చిట్కా: ఆటోమేటిక్ మ్యుటేషన్ టూల్స్ ఉన్నాయి (Java కోసం PIT/Pitest, JavaScript/TypeScript కోసం స్ట్రైకర్, .NET కోసం Stryker.NET, పైథాన్ కోసం mutmut). ఇవి ఆటోమేటిక్గా వందలాది మ్యుటేషన్లను ఉత్పత్తి చేస్తాయి మరియు పరీక్షిస్తాయి. మీకు సాధనం లేకపోతే, మాన్యువల్ "బ్రేక్ ది కోడ్ టెస్ట్" పద్ధతి కూడా క్లిష్టమైన ఫంక్షన్లకు అమూల్యమైనది.
నకిలీ విశ్వాసం యొక్క మూడు ముఖాలు మరియు దాని విరుగుడు
సూడో-ట్రస్ట్ రూపం
లక్షణం
విరుగుడు
నిశ్చయత లేకుండా పరీక్షించండి
కోడ్ పనిచేస్తుంది, ఏదీ ధృవీకరించబడలేదు
ప్రతి పరీక్షలో నిజమైన నిశ్చయత; మ్యుటేషన్తో పరీక్ష
స్వీయ-నిర్ధారణ పరీక్ష
Expected = కోడ్ యొక్క అవుట్పుట్
ఆశించిన విలువను స్వతంత్రంగా లెక్కించండి
పనికిమాలిన వాదన
"శూన్యం కాదు", "200 తిరిగి వచ్చాయి"
వ్యాపార నియమం/వాస్తవ ఫలితాన్ని ధృవీకరించండి
హై స్కోప్ ఫాలసీ
90% పంక్తులు, తక్కువ రక్షణ
మ్యుటేషన్ స్కోర్ని చూడండి
పెళుసైన పరీక్ష సహనం
"మళ్ళీ చిక్కుకుపోయింది, పాస్"
మూల కారణం + నిర్ణయాత్మక పరీక్ష
AI ని "రెడ్ టీమ్"గా ఉపయోగించడం
AI నకిలీ నమ్మకాన్ని సృష్టించగలదు మరియు దానిని వేటాడడంలో శక్తివంతమైన మిత్రదేశంగా ఉంటుంది. మీ స్వంత పరీక్షలకు వ్యతిరేకంగా AIని రెడ్ టీమ్గా ఉపయోగించండి: "ఈ పరీక్షల్లో ఉత్తీర్ణత సాధించే కోడ్ను వ్రాయండి, కానీ తప్పు" లేదా "ఈ పరీక్షలను మోసం చేసే ఉపసంహరణను కనుగొనండి" అని అడగండి. AI మీ పరీక్షలలో లొసుగులను కనుగొంటే, ఆ లొసుగులు నిజమైన ప్రమాదాలు.
హెచ్చరిక: "నా పరీక్ష నాణ్యత బాగుందా?" అని AIని అడగవద్దు. మరియు "అవును, గొప్ప" అనే సమాధానాన్ని హామీగా తీసుకోండి. AI దయగా ఉంటుంది. బదులుగా, ఒక నిర్దిష్ట పనికి AIని సవాలు చేయండి: "ఈ పరీక్షలలో ఉత్తీర్ణత సాధించే బగ్ను ఉత్పత్తి చేయండి." అది ఉత్పత్తి చేయగలిగితే, మీ పరీక్షలు ఆ లోపానికి గుడ్డిగా ఉంటాయి.
సమానమైన ఉత్పరివర్తనలు మరియు స్కోర్ పరిమితులు
మ్యుటేషన్ పరీక్ష శక్తివంతమైనది, కానీ దీనికి క్యాచ్ ఉంది: కొన్ని ఉత్పరివర్తనలు కోడ్ యొక్క ప్రవర్తనను అస్సలు మార్చవు. వీటిని సమానమైన ఉత్పరివర్తనలు అంటారు (ఈక్వివలెంట్ మ్యూటాంట్ — పాడైన కోడ్, అసలైన ఫలితాన్ని సరిగ్గా ఉత్పత్తి చేసే మ్యుటేషన్). ఉదాహరణకు, ఎప్పుడూ ఉపయోగించని వేరియబుల్ యొక్క ప్రారంభ విలువను మార్చడం అవుట్పుట్ను ప్రభావితం చేయదు; ఏ పరీక్ష కూడా దీనిని పట్టుకోకూడదు మరియు పట్టకూడదు. అందువల్ల, 100% మ్యుటేషన్ స్కోర్ తరచుగా ఆచరణలో సాధించలేనిది మరియు లక్ష్యం కాదు. చేతితో సమానమైన ఉత్పరివర్తనాలను తొలగించడం శ్రమతో కూడుకున్న పని; కాబట్టి మ్యుటేషన్ స్కోర్ను సంపూర్ణ పరీక్ష స్కోర్గా చదవవద్దు, కానీ "నా పరీక్షలు నిజంగా రక్షిస్తాయా?" అనే నిజాయితీ సూచికగా చదవవద్దు.
ఆచరణాత్మక విధానం ఇది: మొత్తం కోడ్ బేస్లో నిరంతరం మ్యుటేషన్ పరీక్షను అమలు చేయడానికి బదులుగా, అత్యధిక రిస్క్ మరియు అత్యంత సంక్లిష్టమైన వ్యాపార నియమాలను కలిగి ఉన్న మాడ్యూల్స్లో దీన్ని అమలు చేయండి. ఈ మాడ్యూల్స్లో మనుగడలో ఉన్న ఉత్పరివర్తనాలను ఒక్కొక్కటిగా పరిశీలించండి; ఇది నిజమైన గ్యాప్ అయితే, పరీక్షను జోడించండి; ఇది సమానమైన మ్యుటేషన్ అయితే, దానిని జస్టిఫికేషన్తో గుర్తించి పాస్ చేయండి. మనుగడలో ఉన్న మ్యుటేషన్ సమానమైనదా అని అంచనా వేయడంలో AI ప్రారంభ స్క్రీనింగ్ చేయగలదు; కానీ కోడ్ ఏమి చేస్తుందో తెలిసిన మీరు తుది నిర్ణయం తీసుకుంటారు.
హెచ్చరిక: మ్యుటేషన్ పరీక్ష గణనపరంగా ఖరీదైనది (ప్రతి మ్యుటేషన్ కోసం అన్ని సంబంధిత పరీక్షలు మళ్లీ అమలు చేయబడతాయి). కాబట్టి ఒక సాధారణ మరియు సహేతుకమైన వ్యూహం ఏమిటంటే, ప్రతి విలీనానికి బదులుగా, కీలకమైన మాడ్యూల్ల కోసం ప్రతి వారం లేదా ప్రీ-రిలీజ్ డీప్ చెక్గా షెడ్యూల్ చేయడం.
బలహీనమైన ప్రాంప్ట్ / బలమైన ప్రాంప్ట్
బలహీనం: "నా పరీక్షలు సరిపోతాయా?"
బలమైనది: "ఈ ఫంక్షన్ మరియు టెస్ట్ సూట్ కోసం రెడ్ టీమ్గా వ్యవహరించండి. (1) చంపబడే కోడ్లో 8 మ్యుటేషన్లను రూపొందించండి (ఆపరేటర్ ప్రత్యామ్నాయం, బౌండరీ షిఫ్ట్, కండిషన్ ఇన్వర్షన్, రిటర్న్ వాల్యూ సబ్స్టిట్యూషన్). (2) ప్రతి మ్యుటేషన్కు, ఇప్పటికే ఉన్న టెస్ట్లలో ఏది క్యాచ్ అవుతుందో మరియు ఏది చంపబడదు అని సూచించండి. (3) ప్రతి మ్యుటేషన్ని కూడా వ్రాయవచ్చు ఈ పరీక్షలన్నింటిలో ఉత్తీర్ణత సాధిస్తుంది కానీ వ్యాపార నియమాన్ని ఉల్లంఘిస్తుంది: [అతికించు]"
శక్తివంతమైన ప్రాంప్ట్; ఇది AIని టెస్ట్ బ్రేకింగ్ ఎగ్జామినర్గా ఉంచుతుంది, ప్రశంసించే యంత్రం కాదు.
నాలుగు కాపీ చేయగల టెంప్లేట్లు
1) మాన్యువల్ మ్యుటేషన్ నియంత్రణ:
ఈ కోడ్ కోసం 8 ముఖ్యమైన మ్యుటేషన్లను (చిన్న ఉద్దేశపూర్వక అంతరాయాలు) రూపొందించండి: అంకగణిత ఆపరేటర్ ప్రత్యామ్నాయం, పోలిక పరిమితి (> vs >=), లాజికల్ ఇన్వర్షన్, రిటర్న్/స్థిరమైన ప్రత్యామ్నాయం, కండిషన్ స్కిప్పింగ్. ప్రతి మ్యుటేషన్ కోసం, అందుబాటులో ఉన్న పరీక్షల్లో ఏది క్యాచ్ అవుతుందో లేదో అంచనా వేయండి. కోడ్+పరీక్షలు: [అతికించు]
2) మనుగడలో ఉన్న మ్యుటేషన్ను చంపడం:
కింది మ్యుటేషన్ పరీక్ష నివేదికలో మనుగడలో ఉన్న (పట్టుకోని) ఉత్పరివర్తనలు ఉన్నాయి: [జాబితా/నివేదిక]. ప్రతిదానికీ, ఆ మ్యుటేషన్ను చంపే కనీస పరీక్ష రాయండి (కోడ్ ఆ విధంగా విరిగిపోయినప్పుడు ఎరుపు రంగులోకి మారుతుంది). పరీక్ష ఏ ప్రవర్తనను నిర్ధారిస్తుంది అనే దానిపై వ్యాఖ్యానించండి.
3) రెడ్ టీమ్ - రక్త పరీక్ష:
కింది అన్ని పరీక్షలలో ఉత్తీర్ణత సాధించే కోడ్ను మీరు వ్రాయగలరా, అయితే కింది వ్యాపార నియమాన్ని ఉల్లంఘించవచ్చు: [వ్యాపార నియమం]. అలా అయితే, ఈ పరీక్షల్లోని ఏ లొసుగు దీన్ని అనుమతిస్తుంది? ఆ లొసుగును మూసివేసే పరీక్షను జోడించండి. పరీక్షలు: [అతికించండి]
4) పరీక్ష నాణ్యత తనిఖీ:
నాణ్యత కోసం ఈ టెస్ట్ సూట్ని తనిఖీ చేయండి. ప్రతి పరీక్షకు టిక్ చేయండి:- నిజమైన నిశ్చితార్థం ఉందా లేదా అది ఆధారాలు ఉందా?- ఊహించిన విలువ స్వతంత్రంగా ఉందా, కోడ్ నుండి తీసుకోబడింది?- ఇది వ్యాపార నియమాన్ని లేదా ఏదైనా చిన్నవిషయాన్ని ధృవీకరిస్తారా? చివరగా అంచనా వేయబడిన "నిజమైన నిర్ధారిత స్కోర్" మరియు 3 బలహీనమైన పరీక్షలను ఇవ్వండి. పరీక్షలు: [అతికించండి]
మూడు చిన్న కేసులు
కేసు 1 — కవరేజ్ 92%, మ్యుటేషన్ స్కోర్ 38%. ఒక బృందం అధిక కవరేజీపై ఆధారపడింది. స్ట్రైకర్తో మ్యుటేషన్ పరీక్షను అమలు చేసినప్పుడు, స్కోరు 38%: ఉత్పత్తి చేయబడిన చాలా ఉత్పరివర్తనలు మనుగడలో ఉన్నాయి. పరీక్షలు లైన్లను అమలు చేయడం మరియు ప్రవర్తనను ధృవీకరించడం లేదని ఇది రుజువు. పరీక్ష నాణ్యతలో బృందం మూడు వారాలు పెట్టుబడి పెట్టింది; మ్యుటేషన్ స్కోర్ 81%కి పెరిగింది మరియు తదుపరి విడుదలలో ఈ బీఫ్-అప్ పరీక్షల ద్వారా రెండు వాస్తవ గణన లోపాలు గుర్తించబడ్డాయి.
కేసు 2 - AI పరీక్షను మోసగించింది. "రెడ్ టీమ్" టెంప్లేట్తో, ఒక నిపుణుడు ఇప్పటికే ఉన్న పరీక్షలలో ఉత్తీర్ణత సాధించినప్పటికీ, డిస్కౌంట్ నియమాన్ని ఉల్లంఘించిన కోడ్ కోసం AIని అడిగారు. AI ఎల్లప్పుడూ సున్నా తగ్గింపును తిరిగి ఇచ్చే కోడ్ను వ్రాసింది - మరియు అన్ని పరీక్షలు ఆకుపచ్చగా ఉన్నాయి ఎందుకంటే ఏ పరీక్షలూ అసలు తగ్గింపు విలువను ధృవీకరించలేదు. గ్యాప్ కనిపించింది, నిజమైన నిర్థారణలు జోడించబడ్డాయి.
కేస్ 3 - ప్రశంసల ఉచ్చు. ఒక జూనియర్ టెస్టర్ AIని అడిగాడు, "నా పరీక్షలు బాగున్నాయా?" మరియు "చాలా సమగ్రం" అనే సమాధానం వినడంతో ఉపశమనం కలిగింది. అతని సీనియర్ సహోద్యోగి "పరీక్ష నాణ్యత ఆడిట్" టెంప్లేట్ ఉపయోగించి అదే పరీక్షలను ఆడిట్ చేశారు; 20 పరీక్షల్లో 12 డెకర్ (నిర్ధారణ లేదా వ్యర్థం లేకుండా) అని తేలింది. సరైన ప్రశ్న సరైన సమాధానాన్ని తెచ్చిపెట్టింది.
సాధారణ తప్పులు
- నాణ్యత కోసం పొరపాటు స్కోప్. అధిక వరుస కవరేజీపై ఆధారపడటం మరియు మ్యుటేషన్ స్కోర్ను అస్సలు చూడటం లేదు.
- AI యొక్క ప్రశంసలను విశ్వసిస్తున్నాను. "మీ పరీక్షలు బాగున్నాయా?" అని అడుగుతున్నారు. మరియు సానుకూల సమాధానాన్ని హామీగా పరిగణించడం.
- కోడ్ నుండి ఆశించిన విలువను పొందడం. తప్పు కోడ్ని నిర్ధారించే స్వీయ-ధృవీకరణ పరీక్షలు.
- పనికిమాలిన వాదనలతో సంతృప్తి చెందండి. "శూన్యం కాదు", "200 వాపసు" వంటి వాస్తవ నియమాన్ని ధృవీకరించని తనిఖీలు.
- మనుగడలో ఉన్న ఉత్పరివర్తనాలను విస్మరించడం. మ్యుటేషన్ రిపోర్టులో పట్టుకోని వాటిని పట్టించుకోలేదు.
- క్లిష్టమైన కోడ్ను మాన్యువల్గా మార్చడానికి కూడా ప్రయత్నించడం లేదు. సాధనం అందుబాటులో లేకుంటే "కోడ్ను విచ్ఛిన్నం చేసి పరీక్షించండి" దశను దాటవేయడం.
సారాంశంలో
పరీక్షలు ఆకుపచ్చగా ఉన్నందున సాఫ్ట్వేర్ సరైనదని నకిలీ-ట్రస్ట్ నమ్ముతోంది; అయితే పరీక్షలు దేనినీ నిర్ధారించలేకపోవచ్చు. దీనిని కొలవడానికి గోల్డ్ స్టాండర్డ్ మ్యుటేషన్ టెస్టింగ్: ఉద్దేశపూర్వకంగా కోడ్ను విచ్ఛిన్నం చేయడం మరియు పరీక్షలు దానిని క్యాచ్ చేశాయో లేదో కొలవడం. మ్యుటేషన్ స్కోర్ అనేది శాతం కవరేజీ కంటే నాణ్యత యొక్క మరింత నిజాయితీ కొలత. AI రెండూ నకిలీ-విశ్వాసాన్ని ఉత్పత్తి చేస్తాయి మరియు దానిని వేటాడడంలో శక్తివంతమైన రెడ్ టీమ్గా మారతాయి - "ఈ పరీక్షలలో ఉత్తీర్ణత సాధించే బగ్ను ఉత్పత్తి చేయండి" అని అడగండి. మీ పరీక్షలను పరీక్షించండి: నిజమైన నిశ్చయత, స్వతంత్ర అంచనా విలువ, వ్యాపార నియమ ధ్రువీకరణ మరియు హత్య చేయబడిన ఉత్పరివర్తనలు.
అప్లికేషన్ టాస్క్
మీ స్వంత ప్రాజెక్ట్ నుండి వ్యాపార నియమం మరియు దాని పరీక్షలను కలిగి ఉన్న ఫంక్షన్ను దిగుమతి చేయండి. వీలైతే, మ్యుటేషన్ సాధనాన్ని (స్ట్రైకర్/పిటెస్ట్/మట్మట్) అమలు చేయండి మరియు మ్యుటేషన్ స్కోర్ను కొలవండి; సాధనం లేకపోతే, "మాన్యువల్ మ్యుటేషన్ కంట్రోల్" టెంప్లేట్తో కనీసం 8 మ్యుటేషన్లను రూపొందించండి మరియు వాటిని మాన్యువల్గా ప్రయత్నించండి. మనుగడలో ఉన్న ప్రతి మ్యుటేషన్ కోసం, "కిల్ సర్వైవింగ్ మ్యుటేషన్" టెంప్లేట్తో కొత్త పరీక్ష రాయండి. చివరగా, "రెడ్ టీమ్" నమూనాతో, AI మీ పరీక్షలను మోసం చేసే కోడ్ను ఉత్పత్తి చేయగలదా అని చూడండి. మీ ప్రారంభ మరియు ముగింపు మ్యుటేషన్ స్కోర్ను నివేదించండి (లేదా క్యాచ్/మొత్తం మ్యుటేషన్ రేట్).
చెక్లిస్ట్
- [ ] నేను మ్యుటేషన్ స్కోర్ ద్వారా పరీక్ష నాణ్యతను మూల్యాంకనం చేసాను, కవరేజ్ కాదు.
- [ ] నేను క్లిష్టమైన కోడ్ కోసం మ్యుటేషన్ పరీక్షను (సాధనం ద్వారా లేదా మాన్యువల్గా) అమలు చేసాను.
- [ ] నేను జీవించి ఉన్న ప్రతి మ్యుటేషన్ కోసం కొత్త పరీక్షలు రాశాను.
- [ ] నేను రెడ్ టీమ్గా AIని ఉపయోగించాను మరియు నా పరీక్షల్లో లొసుగుల కోసం శోధించాను.
- [ ] నేను AI యొక్క "మీ పరీక్షలు బాగున్నాయి" అనే ప్రశంసలను భరోసాగా తీసుకోలేదు.
- [ ] నేను ప్రతి పరీక్ష వాస్తవ నిశ్చితార్థం, స్వతంత్ర అంచనా విలువ మరియు వ్యాపార నియమాన్ని ధృవీకరిస్తాయో లేదో తనిఖీ చేసాను.